Wouldn't this make it so the user can alter the default formats? Is this intentional? 

Instead of creating a new object every time, wouldn't it make more sense to do `extend({}, MessageFormat .FORMATS, formats)`?