transport: type Server -> Listener
crypto: define the Protocol interface