code: function Virgilio(options) {
      if (!(this instanceof Virgilio)) {
          return new Virgilio(options);
      }
      EventEmitter.call(this);
      this.options$ = options = options || {};
      this.util$.validateArg('Virgilio', 'options', options, 'object');
      var logOptions = { level: 10, name: 'virgilio' };
      this.util$.extend(logOptions, options.logger || {});
      this.log$ = bunyan.createLogger(logOptions);
      //This will come to contain an array of all loaded modules.
      this.loadedModules$ = {};
      //Keep a reference to this base instance. Usefull when trying to extend it.
      this.baseVirgilio$ = this;
      //Set the path of this (the base virgilio) namespace.
      this.path$ = 'virgilio';
      //**requires** allows to distribute to all modules the global requires.
      //In this way we can require modules during initialization and then access
      //to them without requiring them in every submodule.
      this.require$ = {
          bunyan: bunyan,
          bluebird: Promise
      };
  }
docs: Virgilio is meant to be very hackable. To prevent accidental overwrites, all internal variables end with a `$`-sign.