use queue instead of list as event buffer