refactor CRUD for Product