abstract tree