Adds validations and callbacks to Product