Opening drill
Using SemaphoreSlim for concurrency limits | Aporeon