renamed recursive method