changed DoRecursive, only to make it clear. No logic changes