diffing behaviour now correct -- that was tricky