In general I think it would be useful to have a methods to simply operate on all the (also indirectly) contained elements. In my applications I frequently needed to perform the same operation also on the root object: maybe we could use a flag or two slight variants of the same methods (a "traverse" and a "traverse_children" methods, the first including the root of the subtree, the second don't).