refine interface