See comments above; I'm not sure the formatter should completely fail on bad input.  I think it should be lenient so messages don't get thrown away completely just because one field is wrong.