Moved the point of validation so Factory.build can be invalid.