-Change: Reworked reading/writing to use a protocol descriptor rather than a dict.

For speed, mainly...