also, I really don't like that `options.read`; why can't we use `message.read` where appropriate ?