added validations and more associations