Require event dispatcher interface instead of concrete class