recursive method, begone!