updated product-loop