generalize printing a tube's position to not rely on grandparent and greatgrandparent, but to loop over all ancestors. move much of this functionality to model itself (not view)