tree struct basics plus descendent logic