improved event propagation (todo: scopeimpl & its scope)