diff --git a/dev/js/spec/tourSpec.js b/dev/js/spec/tourSpec.js
index 55307b4..4bb71ef 100644
--- a/dev/js/spec/tourSpec.js
+++ b/dev/js/spec/tourSpec.js
@@ -65,13 +65,35 @@
           "</div>"; 
   
   
+  var preDefinedStat={
+      "documents":12,
+      "tokens":2323,
+      "sentences":343434,
+      "paragraphs":45454545
+      };
+
+  
+  KorAP.API.getCorpStat = function(collQu, cb){
+    return cb(preDefinedStat);
+  }; 
+  
 
   let template = document.createElement('template');
-  html = introKorAP.trim(); // Do not return a text node of whitespace as the result
+  let html = introKorAP.trim(); // Do not return a text node of whitespace as the result
   template.innerHTML = html;
-  intrkorap = template.content;
+  let intrkorap = template.content;
   
+  let vc= vcClass.create().fromJson({
+    '@type' : 'koral:doc',
+    'key' : 'title', 
+    'match': 'match:eq',
+    'value' : 'TestTour!',
+    'type'  : 'type:string'      
+  });
+  
+  KorAP.vc = vc;
   //TODO Add hint and vc-choose, they are not part of the generated file
+  
   describe('KorAP.GuidedTour', function(){
     it('IDs and classes, that are needed for the guided tour should be in existence', function(){
       expect(intrkorap.querySelector('#searchbar')).not.toBeNull();
@@ -83,21 +105,20 @@
       expect(intrkorap.querySelector('#glimpse')).not.toBeNull();
       expect(intrkorap.querySelector('#view-tutorial')).not.toBeNull();
       expect(intrkorap.querySelector('#qsubmit')).not.toBeNull();
-      let vc= vcClass.create().fromJson({
-        '@type' : 'koral:doc',
-        'key' : 'title', 
-        'match': 'match:eq',
-        'value' : 'TestTour!',
-        'type'  : 'type:string'      
-      });
-      var show = document.createElement('div');
+      let show = document.createElement('div');
       show.appendChild(vc.element());
-      expect(show.querySelector('.statistic')).not.toBeNull();
+      let statbut = show.querySelector('.statistic');
+      expect(statbut).not.toBeNull();
+      statbut.click();
+      expect(show.querySelector('.stattable')).not.toBeNull();
     });
     
    
   
    it('Guided Tour should be started and display steps and labels in the right order', function(){
+   
+     let vcpanel = intrkorap.getElementById("vc-view");
+     vcpanel.appendChild(vc.element());
      let searchTour = tourClass.gTstartSearch(intrkorap);
      searchTour.start();
      let totalSteps = searchTour.stepCount;
@@ -110,6 +131,7 @@
      for(let i = 2; i <= totalSteps; i++){
        searchTour.goToStepNumber(i);
        expect(document.querySelector(".introjs-tooltiptext").textContent).toEqual(searchTour.testIntros[i-1]);
+       
        if(i == totalSteps){
          expect(document.querySelector(".introjs-donebutton").textContent).toEqual(loc.TOUR_seargo);
          expect(document.querySelector(".introjs-prevbutton").textContent).toEqual(loc.TOUR_lprev);
diff --git a/dev/js/src/loc/de.js b/dev/js/src/loc/de.js
index 99d3fa3..467adc4 100644
--- a/dev/js/src/loc/de.js
+++ b/dev/js/src/loc/de.js
@@ -50,10 +50,11 @@
   loc.TOUR_annotAss = "Der Annotationsassistent erleichert die Formulierung von Suchanfragen mit Annotationen.";
   loc.TOUR_vccho1 = "Öffnen des Korpusassistenten";
   loc.TOUR_vccho2 = "Eigene Definition von Subkorpora durch Verknüpfung beliebiger Metadatenfelder.";
-  loc.TOUR_vcStat = "Anzeigen der Korpusstatistik";
+  loc.TOUR_vcStat1 = "Es besteht die Möglichkeit, die Korpusstatistik anzuzeigen.";
+  loc.TOUR_vcStat2 = "Korpusstatistik";
   loc.TOUR_qlfield = "Auswahl der Suchanfragesprache";
   loc.TOUR_glimpse = "Beim Wählen dieser Option wird festgelegt ob nur die ersten Treffer in zufälliger Reihenfolge ausgewählt werden.";
-  loc.TOUR_help = "Hier finden Sie Hilfe zu KorAP.";
+  loc.TOUR_help = "Hilfe zu KorAP";
   loc.TOUR_seargo = "Suchanfrage starten";
   
   //Guided Tour: explain the result
diff --git a/dev/js/src/loc/dereko.js b/dev/js/src/loc/dereko.js
index 1bd7a57..b90e8c4 100644
--- a/dev/js/src/loc/dereko.js
+++ b/dev/js/src/loc/dereko.js
@@ -4,7 +4,18 @@
  * @author Helge Stallkamp
  */
 
-define(function () {
+define(['vc', 'vc/doc'], function (vcClass, docClass) {
   const loc = KorAP.Locale;
-  loc.TOUR_Qexample = loc.TOUR_Qexample || "laufen";
-});
\ No newline at end of file
+  
+  //Query example for guided tour
+  loc.TOUR_Qexample = "laufen";
+
+  /* To define vc for guided tour */
+  loc.TOUR_vcQuery = {
+      '@type' : 'koral:doc',
+      'key' : 'docSigle', 
+      'match': 'match:eq',
+      'value' : 'GOE/AGI',   
+    };
+  
+});
diff --git a/dev/js/src/tour/tours.js b/dev/js/src/tour/tours.js
index 660338e..6ae961c 100644
--- a/dev/js/src/tour/tours.js
+++ b/dev/js/src/tour/tours.js
@@ -4,7 +4,7 @@
  * @author Helge Stallkamp
  */
 
-define(['lib/intro', 'vc'], function(introClass, vcClass) {
+define(['lib/intro', 'vc', 'vc/doc', 'vc/docgroup'], function(introClass, vcClass, docClass, docGroup) {
 
   //needed for localization of labels and contents of the tour
   const loc   = KorAP.Locale;
@@ -18,11 +18,12 @@
   //localization guided tour gTstartSearch
   loc.TOUR_sear1 = loc.TOUR_sear1 || "Enter your search enquiry here.";
   loc.TOUR_sear2 = loc.TOUR_sear2 || "For example the search for '" +  loc.TOUR_Qexample + "'.";
-  loc.TOUR_searAnnot = loc.TOUR_searAnnot || "Annotation helper: By clicking here, the annotations of the differents layers are displayed and can be selected.";
+  loc.TOUR_searAnnot = loc.TOUR_searAnnot || "Annotation helper: By clicking, the annotations of the differents layers are displayed and can be selected.";
   loc.TOUR_annotAss =  loc.TOUR_annotAss || "The annoation assistant helps to formulate queries with annotations";
-  loc.TOUR_vccho1 = loc.TOUR_vccho1 || "Choose corpus by clicking here.";  
+  loc.TOUR_vccho1 = loc.TOUR_vccho1 || "Choose corpus";  
   loc.TOUR_vccho2 = loc.TOUR_vccho2 || "Define your corpus here.";
-  loc.TOUR_vcStat = loc.TOUR_vcStat || "Display corpus statistic.";
+  loc.TOUR_vcStat1 = loc.TOUR_vcStat1 || "Click here to display corpus statistic.";
+  loc.TOUR_vcStat2 = loc.TOUR_vcStat2 || "Corpus statistic";
   loc.TOUR_qlfield = loc.TOUR_qlfield|| "You can use KorAP with different query languages, select the query language here.";  
   loc.TOUR_help = loc.TOUR_help || "Help and more information about KorAP.";
   loc.TOUR_glimpse = loc.TOUR_glimpse || "Select to show only the first hits in arbitrary order.";
@@ -45,7 +46,6 @@
      * Guided Tour gTstartSearch: Explains the search functionality
      */
     gTstartSearch:function(elparam){
-
       let intro = introClass();
       intro.setOptions(labelOptions);
       intro.setOption('doneLabel', loc.TOUR_seargo);
@@ -89,10 +89,15 @@
         }, 
         {
           element: doe.querySelector('.statistic'),
-          intro: loc.TOUR_vcStat,
+          intro: loc.TOUR_vcStat1,
           position: "left",
         },
         {
+          element: doe.querySelector('.stattable'),
+          intro: loc.TOUR_vcStat2,
+          position: "bottom",
+        },
+        {
           element: doe.querySelector('#ql-field').parentNode,
           intro: loc.TOUR_qlfield,
           position: "bottom",
@@ -147,15 +152,15 @@
           vchoo = doe.querySelector("#vc-choose");
           vcv = doe.querySelector("#vc-view");  
           KorAP._delete.apply(KorAP.vc.root());
-          KorAP.vc.root().key("creationDate").update();
-          KorAP.vc.root().value("1820").update();  
+    
+          KorAP.vc.fromJson(loc.TOUR_vcQuery);
           if(!(vcv.querySelector(".active"))){
             vchoo.click();
             /*
              * Intro.js caches elements at the beginning, so element and position has to be set again.
              */
-            intro._introItems[5].element = doe.querySelector(".statistic");
-            intro._introItems[5].position = "bottom";
+            intro._introItems[5].element = doe.querySelector('.statistic');
+            intro._introItems[5].position = "left";
           }   
           break;   
           
@@ -170,14 +175,20 @@
             intro.setOption('hideNext', true);
           break;
         } 
+        
+        if(this._currentStep == 6){
+          let statbut = doe.querySelector('.statistic');
+          statbut.click();
+          intro._introItems[6].element = doe.querySelector(".stattable");
+          intro._introItems[6].position = "bottom";
+        }
       });
 
 
       // Execute at the end of the tour (By clicking at the done-Button)
       intro.oncomplete(function(){
         KorAP.session.set("tour", true);
-        let form = doe.getElementById("searchform");
-        form.submit();
+        doe.getElementById("qsubmit").click();
         //input.value="";
         //KorAP._delete.apply(KorAP.vc.root()); 
       });
