add I/O event feature