added explicit containment hierarchy, for practical traversal