used custom ModelValidation object for validation instead of many checks in is_valid functions in resources