Changed listener to abstract instead of interface for less listener code