REFACTOR validations and associations