Changed listener design to be single-listener