get rid of queues, just use channels