added models, associations, and validations