Implemented negotiation, completely untested