revised by Wei
small revise