update and refine