added semaphores