function Router(options) {

  options = options || {};
  this.sails = options.sails;
  this.defaultHandlers = defaultHandlers(this.sails);

  // Expose router on `sails` object
  this.sails.router = this;

  // Instantiate the private router as an instance of `router.
  this._privateRouter = router();

  // Return the array of sorted route addresses, cloned for our protection.
  this.getSortedRouteAddresses = function() { return _.clone(sortedRouteAddresses); };

  // Bind the context of all instance methods
  this.load = _.bind(this.load, this);
  this.bind = _.bind(this.bind, this);
  this.unbind = _.bind(this.unbind, this);
  this.reset = _.bind(this.reset, this);
  this.flush = _.bind(this.flush, this);
  this.route = _.bind(this.route, this);
  this.getActionIdentityForTarget = _.bind(this.getActionIdentityForTarget, this);
}
Initialize a new `Router`

@param {Object} options
@api private