changed EventListener to an interface