class OrderedHash

def merge!(other_hash)

def merge!(other_hash)
  if block_given?
    other_hash.each {|k, v| self[k] = key?(k) ? yield(k, self[k], v) : v}
  else
    other_hash.each {|k, v| self[k] = v}
  end
  self
end