Restore concurrency with checks to make sure all threads are done before finishing