event refactoring and add design.....