The first clients were all closed source software. However, initialization data for the encryption algorithms is sent in the clear and no public key encryption is used, so reverse engineering was made comparatively easy. In 2003, open source programmers succeeded in reverse-engineering the portion of the protocol dealing with client-supernode communication, but the supernode-supernode communication protocol remains largely unknown. [citation needed]