just a bit of refactoring
shut down all thread pools
more organization
ShutDownThreadPools after RunShutDownTasks
This will give shut down tasks the opportunity to terminate their own threads nicely