Hi Mira: Is the following a convenient set of primitives for visitor entries? A | on-entering ->A,b,B | | | when-visiting ->A,b,B | | V on-exiting ->A,b,B on-entering B B when-visiting B on-exiting B start s (@ ... @) during s { any of the above } finish s (@ ... @) Your example slightly modified: GenericDFTVisitor(Strategy s: {-> Graph Adjacency stop -> Adjacency Vertex -> Vertex Adjacency} Adjacency { boolean mark; return (@ mark @) on-entering (@ if (mark==false) {mark=true;}; @) } ConnectivityVisitor modifies GenericDFTVisitor{ Integer count; return (@ count @) during {-> Graph Adjacency stop} { Adjacency { on-entering (@ if (next.return()=false) // check whether unmarked {count+=1; next()};@)}}} -- Karl