beginning of big refactoring
one test passing after refactor
tree diff broken, but refactoring is getting closer
more refactoring. tree rerooting passing again
order properties refactored