refactor to allow different commodities