add more optimization codes. have not finished