added recursive traversal thingy

with tests\!