abstract the validator class and add support for validator messages in exceptions
implement the repository design patter