Hi Mira: I have written down some ideas probably relevant to our paper. For example, how to handle strategy types. -- Karl based on your picture, it looks like we need the following concepts: strategy types defines family of strategies strategies path-set equivalence two strategies are path-set equivalent if for all class graphs they define the same path set path-set extending s1 is path-set extending, if for all class graphs, s1 defines a larger path set than s2. adjuster types defines interface to adjuster adjusters a reusable microarchitecture? parameterized by strategy type compose adjusters: an adjuster may modify at most one other adjuster Each adjuster adds more behavior. Incremental behavior composition. class graph types defines interface to class graph class graphs object equivalence object extending A strategy type defines a family of strategies. A strategy type is defined by a strategy st. A strategy s conforms to type st, if st selects the entire strategy graph s viewed as a class graph. How to deal with constraint maps? Example: st = from A via B to C s = from A via X via B via Y to C. class graph corresponding to s: A=X. X=B. B=Y. Y=C. A class graph type defines an interface to a class graph. A class graph type is defined by a class graph gt. Some of the edges are functional edges expressed in terms of a lower level class graph. Methods are expressed in terms of strategy type instantiations (= strategies) and adjuster compositions. Finally, class graphs freeze the programs.