touch ups
little optimization, passes tests
I suspect something was causing infinite recursion