add event queue implementation