prepare to refactoring...