refactoring 3