continuing i/o events refactor