refactoring [begin]