implemented DIFF again
checkpoint