Full implementation of event dispatcher abstraction