Change Profile#merge_changes! to Profile#append!, and behavior changes along with it, appending a whole profile shifted by some offset, but only adding changes if values are different.
Roll version.
Extra Half class should be DottedHalf.