#42 Product refactor