try to pull xie's change
add xie's changes