Hi Geoff: your implementation of derived edges requires a convention about where to put the arguments. I was wondering which one you use. Let's assume we have a class DJavaNaming which has a method lookup which returns a DJava-object. lookup takes as argument a String-object. We would like to turn lookup into a derived edge. DJavaNaming = DObject. Now the get_lookup method will need to know where the argument is stored. There are two natural possibilities where we can hide the argument: in an immediate optional part of DJavaNaming or in an indirect optional part. Which one do you prefer? In either case, when we want to do a traversal we will have to make sure that the arguments are at the right places. -- Karl