refactoring (major)