updated product logic