We might want this to be configurable. Also, isn't `scala.concurrent` providing functionality that makes it easier to manage thread pools, their sizes, etc? Would we want to use an ExecutionContext here?