refac to event relay cascade: deliver()