v3 with semaphore