Don't use a strings.Reader where a bytes.Reader will do.

There are several places where a []byte is converted to a string
and then fed into strings.NewReader().
Don't convert []byte to string unnecessarily.
Don't use a Printf where a Print will do.
A few spelling/grammar corrections.
Don't use an interface{} where a string will do.