Hi Pengcheng and Sergei: Doug has proposed a better model for DAJ based on the idea that cutting down a class graph to a smaller size is really strategy intersection. The class dictionary is in: /proj/tools/www/DAJ/dec02 Example: aspect A { // V1 and V2 are visitor interfaces declare ClassGraph cg; declare Strategy s1 = "from A to B"; declare Method public R f(A a) s1(V1,V2); declare Strategy s2 = ( && "from A to B" "from * bypassing ->*,tail,* to *"); declare Method public R f(A a) s2(V1); declare Strategy filter = "from * bypassing ->*,tail,* to *"; declare Method public R f(A a) (&& filter "from X to Y")(V1); // method argument is given to constructor of visitor as in DemeterJ } Advantages: Need only one class graph declaration: declare ClassGraph Don't have to mention class graph in method declaration. In addition we need two new declarations in AspectJ: declare Strategy declare Method Disadvantage: Have to use && in combination with a filter in Method definitions. We need to decide whether to implement this in DAJ. How do you like this new approach? Please can you suggest a better cd. -- Karl