added cachable eventlistener