before rational refactoring