分离替换过程，重用代码