add ProducerConsumer class