changed by lawrence'dev branch
merge from other person, and change the last line to lawrence