We've covered a lot of ground so far. You now know the basics of COM and how it solves certain software distribution and integration problems. You know how to create a COM server from scratch and how to add COM classes to your server by driving ATL's Object Wizard. However, there's more than one way to compose a COM class. This chapter will show you some of the details of composing more complex COM classes using ATL's interface maps. First we'll go over the meaning of COM identity. Understanding COM identity is central to understanding the various techniques for composing COM classes. Then we'll present some alternative techniques for composing COM classes. These techniques include composing classes with dual interface implementations as well as some more esoteric composition techniques, such as tear-off interfaces and aggregation. Let's start with a comprehensive examination of COM identity.