List diff

Still needs many tests, and needs to handle the scenario of renaming.