producer pattern update