products refactoring