refine iteration