updated with rearranged sections