rearranged the structure