[feature020] refactoring