added more complex validations to all the models