added single producer single consumer queue