revised -- 调整以后的代码