hmm this is a fairly smart protocol, but it seems like a lot of unneeded overhead :/