make events and listener adaptors tightly coupled