recursion close enough to done