restructed and redesign