以oo的方式重构event，模块拆分更细
modify event
fix the delegate function