refactoring [ci skip]