forked from: EventListener

