add semaphore unlock feature