Hand traversable XP structures through to serializer

This is done in a "streaming" fashion, it is not iterated and stuffed
into an array but instead an iterator itself is returned