Hi Mira: In the APPC language Bill is working on we can write: Z{ int f() via A to B (SummingAPPC, CountingAPPC); } I think this is important that we can give two or more APPCs to the same traversal. And we might want to have collaboration between the APPCs. I guess we need to extend the syntax so that we can specify a mapping: Z{ int f() via A to B (SummingAPPC with ... , CountingAPPC with ... ); } We need to typecheck that the two APPCs are compatible. We need to agree on which APPC will return a value. The first one? How do we want to handle this? An alternative would be to define merge-composition of traversal-style APPCs and only give one APPC to a traversal, always. We would define MyAPPC = merge( components (SummingAPPC with ... , CountingAPPC ... ) output from SummingAPPC ) Z{ int f() via A to B MyAPPC with ... ; } -- Karl