add abstract tree structure class
update test