refine struct