how we manage semafores is wrong