and behavior of crosscutting concerns in OO systems. We further argue that aspects must be defined as first-class abstractions in order to be manipulated as such and thus to provide for reusability and dynamic adaptability as well as for the creation of dynamically loadable aspect repositories