add structure and validations