docs: function CommandBase(pbRequestName, pbResponseName, callback) {
      var requestCode = ProtoBufFactory.getCodeFor(pbRequestName);
      this.expectedCode = ProtoBufFactory.getCodeFor(pbResponseName);
      this.pbBuilder = ProtoBufFactory.getProtoFor(pbRequestName);
  
      var schema = Joi.func().required();
      var self = this;
      Joi.validate(callback, schema, function(err, option) {
         if (err) {
             throw new Error('callback is required and must be a function');
         }
         self.callback = callback;
      });
     
      this.header = new Buffer(5);
      this.header.writeUInt8(requestCode, 4);
      
      this.remainingTries = 1;
      
      // This is to facilitate debugging what pb messages this Command represents
      this.name = util.format('%s-%d', pbRequestName, cid);
      cid++;
  
      this.validateOptions = function (arg_options, arg_schema, arg_joi_opts) {
          var self = this;
          Joi.validate(arg_options, arg_schema, arg_joi_opts, function(err, opts) {
              if (err) {
                  throw err;
              }
              self.options = opts;
          });
      };
  }