better datacomponent event handling