indent_up();
     out <<
         indent() << "if _, err := iprot.ReadStructBegin(); err != nil {" << endl <<
-        indent() << "  return fmt.Errorf(\"%T read error\", p)" << endl <<
+        indent() << "  return fmt.Errorf(\"%T read error: %s\", p, err)" << endl <<
         indent() << "}" << endl;
     // Loop over reading in fields
     indent(out) << "for {" << endl;
 
 func main() {
        flag.Usage = Usage
        server := flag.Bool("server", false, "Run server")
-       protocol := flag.String("P", "binary", "Specify the protocol (binary, compact, simplejson)")
+       protocol := flag.String("P", "binary", "Specify the protocol (binary, compact, json, simplejson)")
        framed := flag.Bool("framed", false, "Use framed transport")
        buffered := flag.Bool("buffered", false, "Use buffered transport")
        addr := flag.String("addr", "localhost:9090", "Address to listen to")