tree interface refactor