both send and receive are now in autonomous threads; both sending and receiving is done by operating on thread-safe queues