merge from Xiaoqin