Move validation to the model, DRY.