Using `multiprocessing` makes the code a bit ugly and hard to debug. (Go would shine here. Yay concurrency! )