more fixups, and cleanups.  the crypto class is pretty simple now, and i'm pretty sure i see what's going on.  one of the key insights is just to let _read() do nothing in particular.