Moved validation specification into the model, to make frontend cleaner
simplifying the view layer: incomplete