merge xie's update