core event
cached listener