added abstract ProducerManager