I think the executor service should be passed in, along with some config that holds the number of threads, then we can construct this once