Foldable / Traversable

Not sure if everything is how we want it yet, but thought i'd create this pull request to make it easier to see the changes.