In many application domains, there are certain aspects that cannot be modeled in an adequate way by using generalization - although it may be the concept of choice at first sight. Sometimes common associations such as interaction or aggregation will fail as well. In those cases, delegation often proves to allow for an appropriate abstraction. While delegation has been an important concept in different areas of computer science (mainly within AI and programming languages) for a long time, it is not explicitly offered by any of the major object-oriented modeling languages. In this paper, we introduce a concept of delegation as part of an object-oriented modeling language. First, we will analyze why both inheritance and common associations sometimes fail to model certain aspects of the real world. Against this background, it will be shown how delegation allows to fill this conceptual gap. The semantics of delegation as a modeling concept is specified in a metamodel. In order to foster the appropriate use of delegation, we provide a few examples together with a number of general design criteria.