Modified by LiQing.