tests with recursion