1st refactoring