merge from chenshuo master