added a new interface IProducer