refactored product show