refactoring by sato