we should probably limit the number of threads this can run concurrently to avoid overloading the master