[126] refactoring application logic based on experience part1;