In addition to consolidating the functionality common to trees of subclasses of a model,
this fixes a bug wherein attributes did not properly passthrough to children (similar to the bug that led to the implementation of a custom get_path method on Nodes).