created EventListener class (untested)