Ooh, should we factor closed, message, and hash out into a Message struct that gets embedded in the Reader and WriteCloser variants?