most of the validations