implement working but incomplete EventDispatcher