1. Does `changed_attributes` have an API for manipulation?  If so, we should use it.  I don't like directly manipulating state like this.
2. Why do `merge!` for one key-value pair?  It allocates a hash and calls a method.  You could just use `Hash#[]=` and not allocate a hash.