Use interfaces and for Producers/Consumers