transform refactoring(not finish)