code: function makeMenu(message, validator, warning) {
      var _properties = 
          {
            name: 'input', 
            required: true,
            message: message,
            validator: validator,
            warning: warning
          };
      
      var _menu = {
          properties: _properties,
          
          setProperties: function (message, validator, warning) {
              _properties.message = message;
              _properties.validator = validator;
              _properties.warning = warning;
              return _menu;
          },
          
          show: function() {
              // just in case we haven't used the prompt before //
              prmpt.start();
              prmpt.get([_properties], function (err, result) {
                  if (err) { return onErr(err); }
                  _menu.emit('input', result.input);
              });
              return _menu;
          },
          
          onInputOnce: function (callback) {
              _menu.once('input', callback);
              return _menu;
          },
          
          onInput: function (callback) {
              _menu.on('input', callback);
              return _menu;
          }
      };
      deepExtend(_menu, new EventEmitter());
      return _menu;
  }
docs: makeMenu A factory that returns a menu object capable of prompting a user
  for input. On input, the menu dispatches the 'input' event along with the input.
  @param {String} message The menu selection text to be shown to the user,
  usually someting like (1) Show, (2) Add, (q) Quit:.
  @param {RegEx} validator A regular expression to validate user input.
  @param {String} warning The warning message displayed to the user if their
  input is invalid.
  
  @extends {events.EventEmitter}