after first refactoring