add tests for recurse