refactored product structure