Separate protocol and encoding handler, and force things into the Object-in/Object-out RPC flow