Another attempt to do proper recursion.

Need to step back and think about it.