修改程序结构，加入更多事件通知