Listener refactor