protocol rearranging