before last refactoring