diff and patch, another way