refact callback, model event, introduce some base activity and ui event annotation