the queue doesn't need to be a thread