wrote some of enqueue, changed cmpxchng wrapper