add up, revert, and diff