split new base treemaker, not very good abstraction, but ok