加入一些注释，重写一些细节