Having this global mutable state makes me itchy. Can we pass the semaphore into create_server instead?