docs: function() {
              var history, search, staticView, componentInfo, cssProps;
              var instance = this;
              if (instance.isBrowserWithHistory()) {
                  instance.history = history = createHistory();
                  // because the initial state has no `state`-property, we will define it ourselves:
                  search = WINDOW.location.search;
                  staticView = (search!=='') ? false : controller.isStaticView();
                  instance.initialLocation = {
                      pathname: WINDOW.location.pathname,
                      search: search,
                      state: {
                          path: WINDOW.location, // need to be set: to check for changes when using the same view
                          title: controller.getTitle(),
                          view: controller.getView(),
                          componentId: controller.getComponentId(),
                          requireId: controller.getRequireId(),
                          staticView: staticView,
                          lang: controller.getProps().__lang
                      }
                  };
  
                  // specify that this view is already in use:
                  componentInfo = {
                      ioComponentPromise: controller.getBodyComponent(),
                      ioPropsPromise: staticView && Promise.resolve(controller.getProps())
                  };
                  cssProps = controller.getCss();
                  if (cssProps) {
                      componentInfo.ioCssPromise = Promise.resolve(cssProps);
                  }
                  instance.registerViewComponent(controller.getView(), componentInfo);
  
                  instance.unlistenHistory = history.listen(function(location) {
                      var hashNode;
                      location.state || (location = instance.initialLocation);
                      if (location.state && (location.state.view===controller.getView()) && (location.state.path===WINDOW.location) && (location.state.lang==controller.getLang())) {
                          hashNode = location.hash && DOCUMENT.getElementById(location.hash.substr(1));
                          hashNode && instance.scrollToNode(hashNode);
                          instance._saveHistoryHash(location.hash); // fire event without save history
                      }
                      else {
                          instance.loadView(location);
                      }
                  });
              }
          }