add all channel commands; send/recv EOF error handling needs attention; send blocks on a cap-1 channel: off-by-one?