hierarchical diffing
tidy