Hi Predrag: Your APPC/AspectJ project page http://www.ccs.neu.edu/home/predrag/example1-APPC.html contains some good ideas: You use the interface class graph to specify which methods to modify. You use the behavior part of the APPC to specify how to modify the methods. You use instantiation to map to a specific class structure. This looks good. But those APPCs have a different purpose. An ordinary APPC adds a "main-entry" and all that goes with it to an application. The APPC youhave here adds code to a bunch of classes. Let's call them advise APPCs and introduce a new keyword: advise APPC ShowAccesses { See: /proj/adaptive/www/course/f98/projects/AspectJ/aspectj-manual -- Karl PS. Your example needs polishing. Many pages are incomplete. // APPC APPC ShowAccesses { Interface-Class-Graph: Object = . Object { void set(*); // * means: "any parameters" float get(); Object(*); } Behavior: Object { before set(float x){ System.out.println("W"); } before float get() { System.out.println("R"); } before Object(*) { System.out.println("C"); } } } // Mapping - first proposal Point::+{ ShowAccesses with { Object = Point [set = {setX, setY, set}; // one function in APPC can be mapped get = {getX, getY} ] // in set of functions in ConcreteClassGgaph } } Line::+ { ShowAccesses with { Object = Line [set = setX1; get = getX1 ] } }