implement message as io.Reader
decode