Shouldn't the `provider` be available as a field of the product?  Doesn't seem like it needs to be passed as an explicit argument.