change way to create model, set data and validate data before save