Use channels to represent event queue