docs: function LogInterceptor($options, $callbackFn)
  {
      if (arguments.length === 1)
      {
          if (_.isFunction(arguments[0]))
          {
              $options    = false;
              $callbackFn = arguments[0];
          }
          else if ($options === true)
          {
              $options = { 'passDown': true };
          }
          else if ($options === false)
          {
              $options = { 'passDown': false };
          }
      }
      else if (arguments.length >= 2 && !_.isFunction($callbackFn))
      {
          // when the 2nd arg is set but not a function, unset it
          $callbackFn = null;
      }
  
      // when options is not a valid object, use the default options
      var $extend = [{}, LogInterceptor._config];
      if ($options && _.isObject($options) && !_.isArray($options))
      {
          $extend.push($options);
      }
  
      $options = _.extend.apply(null, $extend);
  
      // load Level class when not already loaded. don't load at the top of this
      // file, otherwise the LogInterceptor referenced in level.js is empty
      if (!Level)
      {
          Level = require('./level.js');
      }
  
      // create new interceptor level
      var $level = new Level($options, $callbackFn);
      LogInterceptor._levels.push($level);
  
      // this is where the magic starts. replace the stdout write function with
      // an interceptor function wich allows us to capture the output from
      // `console.log` and process it anyway we like
      if (process.stdout.write !== LogInterceptor._interceptor)
      {
          process.stdout.write = LogInterceptor._interceptor;
      }
  }