Event dispatcher class with specs.

@srbiv :eyes: