symmetric tree reimpl