Refine, and there are some flaw need to repair