refactoring product !!!