merged Li's changes into mine