DgTree is abstract, other classes can implement different rotation etc