Added Listener class, untested