basic structure refine