Refactor Diff logic, take 1