reasonable refactoring