with semafor