validations and conditions