maybe we can do some validation in the model instead