started abstracting Tree