implement the diff, first attempt