feature refactoring