[wip] add global event dispatcher