Implementing full protocol, untested, waiting for a working client