Using component/events instead of component/delegates