use listento for event memory optimization