add new refine function