some restructure