Purpose of the Book This book presents an approach to improve the standard object-oriented pro gramming model. The proposal is aimed at supporting a larger range of incre mental behavior variations and thus promises to be more effective in mastering the complexity of today's software. The ability of dealing with the evolutionary nature of software is one of main merits of object-oriented data abstraction and inheritance. Object-orientation allows to organize software in a structured way by separating the description of different kinds of an abstract data type into different classes and loosely connecting them by the inheritance hierarchy. Due to this separation, the soft ware becomes free of conditional logics previously needed for distinguishing between different kinds of abstractions and can thus more easily be incremen tally extended to support new kinds of abstractions. In other words, classes and inheritance are means to properly model variations of behavior related to the existence of different kinds of an abstract data type. The support for extensi bility and reuse with respect to such kind-specific behavior variations is among the main reasons for the increasing popularity of object-oriented programming in the last two decades. However, this popularity does not prevent us from questioning the real effec tiveness of current object-oriented techniques in supporting incremental vari ations. In fact, this popularity makes a critical investigation of the variations that can actually be performed incrementally even more important.