Moving more common functionality into Tree::Impl