using threads and ZMQ to do asyncronous work.