修改后的代码，请注意同步