Introduce ProducerInterface for better testing and dependency resolution