todo: move protocol version "agreement" into handshake