diff --git a/dev/js/src/vc.js b/dev/js/src/vc.js
index 985b64b..35734ad 100644
--- a/dev/js/src/vc.js
+++ b/dev/js/src/vc.js
@@ -146,13 +146,13 @@
 
       var l;
       if (keyList) {
-         l = keyList.slice();
+        l = keyList.slice();
         l.unshift(['referTo', 'ref']);
       }
       else {
         l = [['referTo', 'ref']];
       }
-
+      
       // Create key menu
       KorAP._vcKeyMenu = menuClass.create(l);
       KorAP._vcKeyMenu.limit(6);
@@ -254,9 +254,11 @@
      */
     root : function(obj) {
       if (arguments.length === 1) {
-        var e = this.element();
+        var e = this.builder();
 
         if (e.firstChild !== null) {
+
+          // Object not yet set
           if (e.firstChild !== obj.element()) {
             e.replaceChild(obj.element(), e.firstChild);
           };
@@ -276,12 +278,24 @@
       return this._root;
     },
 
+
+    /**
+     * Get the wrapper element associated with the vc
+     */
+    builder : function () {
+
+      // Initialize if necessary
+      if (this._builder !== undefined)
+        return this._builder;
+
+      this.element();
+      return this._builder;
+    },
+    
     /**
      * Get the element associated with the virtual collection
      */
     element : function() {
-
-      
       if (this._element !== undefined) {
         return this._element;
       };
@@ -289,17 +303,11 @@
       this._element = document.createElement('div');
       this._element.setAttribute('class', 'vc');
 
+      this._builder = this._element.addE('div');
+      this._builder.setAttribute('class', 'builder');
+
       // Initialize root
-      this._element.appendChild(this._root.element());
-      
-      /*
-       * TODO by Helge Hack! additional div, because statistic button is
-       * removed after choosing and/or/x in vc builder. REMOVE this lines
-       * after solving the problem!!!!
-       */
-      this._element.addE('div');
-      this._element.addE('div');
-      this._element.addE('div');
+      this._builder.appendChild(this._root.element());      
       
       // Add panel to display corpus statistic, ...
       this.addVcInfPanel();
diff --git a/dev/js/src/vc/docgroup.js b/dev/js/src/vc/docgroup.js
index d3097e9..7ce2fed 100644
--- a/dev/js/src/vc/docgroup.js
+++ b/dev/js/src/vc/docgroup.js
@@ -13,12 +13,10 @@
 ], function (jsonldClass,
 	           unspecClass,
 	           docClass,
-            docGroupRefClass) {
+             docGroupRefClass) {
 
   const _validGroupOpRE = new RegExp("^(?:and|or)$");
 
-  const loc = KorAP.Locale;
-
   const docGroupClass = {
     _ldType : "docGroup",
 
