Added recursion - still needs some work.