So we can have higher level protocol stuff (marshaling, unmarshaling etc.) in one place. Currently serialization is in Sender and deserialization is in Middleware.
We can have a jsonrpc.Conn which implements neptulon.Conn and feed it to the neptulon.Client which is used by the jsonrpc.Client.
On the other hand, we can rename neptulon.Conn and jsonrpc.Sender both to Protocol as they are nothing more than implementations of the underlying communication protocols.