#22 add client-initiated renegotiate function