diff generation is now simply sticking the op on an array, no more fancy optimizing.