refine algo part