refactored ProductFetcher