docs: function (options) {
      if (typeof options === 'undefined') {
        _options = {
          depthFirst: true
        }
      }
      else if (typeof options !== 'object') {
        throw 'options must be an object.'
      }
      else {
        if (typeof options.depthFirst === 'undefined') {
          options.depthFirst = true;
        }
        _options = options;
      }
  
      _uses.forEach(function (fn){
        router.use(fn);
      });
  
      _params.forEach(function (param) {
        router.param(param.name, param.handler);
      });
  
      _gets.sort(sortRoutes).forEach(function (route) {
        router.get(route.path, route.handler);
      });
  
      _posts.sort(sortRoutes).forEach(function (route) {
        router.post(route.path, route.handler);
      })
  
      return router;
    }