dirty pthread hack
revisited update()