semaphoreapp wrapper