major semaphore improvements (performance and correctness)