add semaphore check