add more tree recursion staff