added key exchange