basic tree impl