refine by junjun's feedback