Hi Geoff: I read your paper and have the following comments: The example which says that adaptive methods cannot distinguish between private and public parts seems a bit oversimplified. What we want to say is probably that traversals should be expressible in terms of interfaces and not in terms of representations. A good example where we need this are repetition classes. R ~ {S}. This defines a default implementation and R ~ [MyImpl] {S}. implements the repetition by MyImpl. I think this is related to your implementation edges. MyImpl could be defined by a cd like: R = S [ R] [ R]. and a behavior file. Since the implementation space is large, we use a GenVoca style specification of the implementation. The appearance of R in aspect descriptions will also influence R's implementation. So we need to modify the implementation based on the aspects. We could extend the above idea and have for some classes in the cd two entries: interface A = B C C. C = D. implementation A = X. X = B C D. (for example) with a behavior file for the implementation. The traversals wouldbe expressed in terms of the interface part. Your figure 9 describes such a situation. Of course, this brings back the problem of arguments which is solved with multi-sourced edges in Greg's paper. What will you write about the "derived edges with arguments problem" in your paper? -- Karl