refactored products object