refine data struct