use eventListeners on IO