I claim: If an aspect-oriented language does not allow for structure-shy expression of the interaction between concerns, it is not useful. Here is an argument that tries to support the above claim. Crosscutting is about using a specification of a set of points related to the base program. In order to be practical, the specification must be structure-shy using only little information about the details of the base program. Now the crosscutting thing ought to be some abstraction that is relevant to a concern of the programmer. Programmers think in terms recurring concerns, chunks of knowledge that have some reusibility value so that it is worthwhile remembering them. Look at Fred which is centered around decision points that describe a tree structure. We can navigate in this graph using dp-previous and we can inspect the nodes using dp-msg and dp-args and dp-source. When we write Fred programs we watch the messages being sent and we pick out interesting ones involving certain arguments and earlier decision points. Checking arguments (types and values) is structure-shy provided we don't inspect complex objects in a naive way. dp-previous is typically used in a structure-shy way by using a loop that searches for certain elements on the run-time stack. (As David pointed out, "adaptive" (= structure-shyness, which means adaptiveness with respect to some graph structure that is part of an aspect) is a somewhat restrictive use of the word adaptive. The general form of adaptiveness means adaptiveness with respect to any aspect, not just the structural aspect. But it turns out, that graphs are so dominant that it is not much of a restriction to use structure-shyness as a synonym for adaptive) -- Karl ===================== Hi Mitch: you discussed my use of the phrase: "AspectJ pointcuts are adaptive". Do you like this kind of description: A pointcut is adaptive in that it works with an entire family of structurally diverse base programs that satisfy the constraints expressed by the pointcut. A pointcut combined with advice qualifies as an adaptive program that enhances an entire family of structurally diverse base programs. We use the following informal definition (AP book 1996): An adaptive program enhances a family of structurally diverse base programs and the adaptive program is expressed using a property-based specification of a crosscutting set of points related to the base program. In AspectJ pointcuts may be formulated with various degrees of adaptiveness. My book introduces AP as a high-level idea and it says that there are many implementations. I view the following as implementations of the high-level AP idea: Fred Demeter/C++ DemeterJ DJ AspectJ Aspectual Collaborations ? More details at: http://www.ccs.neu.edu/research/demeter/demeter-method/LawOfDemeter/check-with-AspectJ/aspectj-LoD.html I believe that we will see more and more structure-shy programs. -- Karl PS. 1. Here is what Gregor said about this topic: AspectJ has numerous other 'structure-shy' constructs, for example wildcards, within, target, this etc. That's what crosscutting is all about after all. Karl's remark: Gregor means by "other" : besides cflow(). structure-shy is a synonym for adaptive.