refactored list_matching_products, broken into smaller methods