Tons of changes. Refactored out the diff tool to a different class, so that alternatives like block-based or hash path independent approaches can be used in the future