init() {
    // create message container element if debug mode is enabled
    if (this.config.debug) {
      createMessageContainer(this.config.messageClassName);
    }
    if (this.config.elementId) {
      // setup container
      this.config.container = document.getElementById(this.config.elementId);

      if (this.config.container) {
        // setup file collections
        this.initFileCollections(() => {
          // check for hash changes
          this.view.addEventListener('hashchange', this.route.bind(this), false);
          // start router by manually triggering hash change
          this.view.dispatchEvent(new HashChangeEvent('hashchange'));
          // register plugins and run onload events
          this.ready = true;
          this.registerPlugins();
          this.config.onload();
        });
      } else {
        handleMessage(this.config.debug, msg['ELEMENT_ID_ERROR']);
      }
    } else {
      handleMessage(this.config.debug, msg['ELEMENT_ID_ERROR']);
    }
  }
Init
@method
@description
Initializes the application based on the configuration. Sets up up config object,
hash change event listener for router, and loads the content.