Move more of the message handling into the ExecutorService