docs: function init(options, callback, proxies, logLevel) {
  
        if (! callback) {
          log.error("The end callback is not defined");
        }
  
        // Default options
        globalOptions = createDefaultOptions();
  
        // Merge default options values & overridden values provided by the arg options
        if (options) {
          _.extend(globalOptions, options);
        }
  
        // if using rateLimits we want to use only one connection with delay between requests
        if (globalOptions.rateLimits !== 0) {
            globalOptions.maxConnections = 1;
        }
  
        // create the crawl store
        store.createStore(globalOptions.storeModuleName, globalOptions.storeParams ? globalOptions.storeParams : null);
  
        // If the options object contains an new implementation of the updateDepth method
        if (globalOptions.updateDepth) {
          updateDepthFn = globalOptions.updateDepth;
        }
  
        // Init the crawl queue
        endCallback = callback;
        requestQueue.init(globalOptions, crawl, recrawl, endCallback, proxies);
  
        if (logLevel) {
          console.log("Change Log level into :" + logLevel);
          log.level(logLevel);
        }
        else {
          log.level("info"); // By default debug level is not activated
        }
    }