Something's wrong with _splay(). The tree is being constructed improperly. See l 84 in the test.pl for an example. next() and prev() need to be merged. next() and prev() don't have null tree checks. But I don't think it needs them. _query(), maximum() and minimum() have their own checks. Should Tree::Base::insert() use Node::insert() or Base::_query() & perform the insertion itself? I'll go with query() for now. I'm just not going to bother defining Tree::Base::delete() or Tree::Base::Node::insert() or delete(). Too complicated and any subclass will overload them anyway. Look into the chaining problem!!! --DONE When new nodes are created... how's that done? Fix the _TRUE/_FALSE problem. ---DONE Note: Merge child() and link() - DONE Finish off Tree::Base::_traverse - DONE Reconsile the whole failing to find something thing. --DONE Using Tree::Base::_root rather than accessing it directing -- DONE Use Tree::Base::_find to access nodes (rather than just their value) rather than Tree::Base::Node::find - DONE Write Tree::Smart::Storage. new() # Duh. hang() # Hang a subtree. Acts like link() _root() # Set/return which root of the tree. _bottom() # Set/return which bottom of the tree. --- DONE Write Tree::Base::addToChain & removeFromChain --- DONE Split Tree::Base::find into find, _find and _query -- DONE