add initial single-producer-multi-consumer implementation