rearrange struct