refine strcuture