tree optimisations