refactoring 1/2