merge from xiaoqin