reorganizd the structure