code: function route(method, path, handler, config) {
  
      if( (typeof method !== 'string' && !Array.isArray(method))
          || (typeof path !== 'string')
          || (typeof handler !== 'function' && typeof handler !== 'string' && typeof handler !== 'object')
          || (config != null && typeof config !== 'object') ) {
          throw new TypeError('Bad arguments');
      }
  
      if (typeof method === 'string') {
          method = method.toUpperCase().replace(/\s+/g, ' ').trim().replace(/^DEL$/, 'DELETE');
          if (method.match(/ /)) {
              method = method.split(' ');
          }
      }
      if (Array.isArray(method)) {
          method = method.map(function (x) {
              return x.toUpperCase().replace(/\s+/g, ' ').trim().replace(/^DEL$/, 'DELETE');
          });
          method.forEach(function (elem) {
              if (elem.match(/[^A-Z*]/)) {
                  throw new TypeError('Bad arguments');
              }
          });
      }
      return {
          method: method,
          path: path,
          handler: handler,
          config: config
      };
  }
docs: /*
  method is a string or array (required where present)
  path is a string (required)
  handler is a function, string or object (required)
  config is an object (optional)
  ---
  vhost is not supported yet