added trampoline() for mutual recursion