code: function(suppliedConfig, global) {
  
      // Allows mokcing the window object if passed
      global = global || window;
      config.setGlobal(global)
  
      // Make sure that SDK is ready and debug flag is checked early
      var localConfig = config.setDefaults(suppliedConfig || {});
      config.update(localConfig);
      utils.logDebug(['Version:', getVersion()]);
      utils.logDebug(['Supplied config:', suppliedConfig]);
  
      // Set rootTarget to the target element and clean before child nodes before continuing
      try {
        render.prepareDOM(suppliedConfig || {});
      } catch (e) {
        utils.logError(e)
        return this
      }
  
      // Check whether a config is supplied
      if (!utils.doesConfigExist(suppliedConfig)) {
        render.triggerError('No configuration was supplied. Please supply a config object upon library initialization');
        return this
      }
  
      // Start from local config
      if (!utils.isRemoteProject(suppliedConfig) || suppliedConfig.disable_remote_load) {
        var mergedConfig = config.setDefaultsWithoutProject(suppliedConfig)
        return startWithConfig(mergedConfig)
      }
  
      // Load remote embedded config
      if (utils.isEmbeddedProject(suppliedConfig)) {
        loadRemoteEmbeddedProject(suppliedConfig)
      }
  
      // Load remote hosted config
      if (utils.isHostedProject(suppliedConfig)) {
        loadRemoteHostedProject(suppliedConfig)
      }
  
      return this
    }
docs: Initilization method