implement DIFF