Introduce interface for Producer
Add ConsumerInterface