rearranged basic structure