recursion skeleton has been rewritten