diff --git a/dev/js/spec/vcSpec.js b/dev/js/spec/vcSpec.js
index 0c86d85..482d384 100644
--- a/dev/js/spec/vcSpec.js
+++ b/dev/js/spec/vcSpec.js
@@ -1986,6 +1986,36 @@
       expect(doc.element().classList.contains('rewritten')).toBeTruthy();
     });
 
+    it('should be described in a title attribute', function () {
+
+            doc = docClass.create(
+        undefined,
+        {
+          "@type":"koral:doc",
+          "key":"Titel",
+          "value":"Baum",
+          "match":"match:eq",
+          "rewrites" : [
+            {
+              "@type" : "koral:rewrite",
+              "operation" : "operation:modification",
+              "src" : "querySerializer",
+              "scope" : "tree"
+            },
+            {
+              "@type" : "koral:rewrite",
+              "operation" : "operation:injection",
+              "src" : "me"
+            }
+          ]
+        });
+      
+      expect(doc.element().classList.contains('doc')).toBeTruthy();
+      expect(doc.element().classList.contains('rewritten')).toBeTruthy();
+      expect(doc.element().lastChild.getAttribute("title")).toEqual("querySerializer: tree (modification)\nme (injection)");
+    });
+
+    
     xit('should be deserialized by docGroups', function () {
       var docGroup = docGroupClass.create(
         undefined,
diff --git a/dev/js/src/vc/rewritelist.js b/dev/js/src/vc/rewritelist.js
index cec95ff..8e68fa0 100644
--- a/dev/js/src/vc/rewritelist.js
+++ b/dev/js/src/vc/rewritelist.js
@@ -32,22 +32,32 @@
 
       this._element = document.createElement('div');
       this._element.setAttribute('class', 'rewrite');
+      var comments = [];
       for (var x in this._list) {
 	      var rewrite = this._list[x];
+
+        // This is a blind element
 	      var span = document.createElement('span');
 
 	      // Set class attribute
 	      span.setAttribute('class', rewrite.operation());
 
 	      // Append source information
-	      span.addT(rewrite.src());
+	      var rewriteText = rewrite.src();
 
 	      // Append scope information
 	      if (rewrite.scope() !== undefined) {
-	        span.addT(': ' + rewrite.scope());
+	        rewriteText += ': ' + rewrite.scope();
 	      };
+
+	      // Append source information
+	      span.addT(rewriteText);
+
+        comments.push(rewriteText + ' (' + rewrite.operation() + ')');
+        
 	      this._element.appendChild(span);
       };
+      this._element.setAttribute("title", comments.join("\n"))
       return this._element;
     }
   };
diff --git a/dev/scss/header/vc.scss b/dev/scss/header/vc.scss
index 7cc528d..02c8b54 100644
--- a/dev/scss/header/vc.scss
+++ b/dev/scss/header/vc.scss
@@ -38,21 +38,21 @@
     &[data-operation] {
       > .doc:first-child::before,
       > .docGroup:first-child::before {
-	content: none;
+        content: none;
       }
       > .doc::before,
       > .docGroup::before {
-	display: inline-block;
-	position: absolute;
-	text-align: right;
-	width: $left-padding;
-	margin-left: -1 * ($left-padding + .5em); // -28pt
-	color: $dark-green;
-	line-height: 1.5em;
-	border-top: $border-size solid transparent;
+        display: inline-block;
+        position: absolute;
+        text-align: right;
+        width: $left-padding;
+        margin-left: -1 * ($left-padding + .5em); // -28pt
+        color: $dark-green;
+        line-height: 1.5em;
+        border-top: $border-size solid transparent;
       }
       > .docGroup::before {
-	margin-left: -1 * ($left-padding + .5em) + (-1 * $bracket-size);
+        margin-left: -1 * ($left-padding + .5em) + (-1 * $bracket-size);
       }
     }
 
@@ -61,8 +61,8 @@
       border-color: $dark-orange;
       > .doc::before,
       > .docGroup::before {
-	// This will be overruled by JS!
-	content: "or";
+        // This will be overruled by JS!
+        content: "or";
       }
     }
 
@@ -70,8 +70,8 @@
     &[data-operation=and] {
       > .doc::before,
       > .docGroup::before {
-	// This will be overruled by JS!
-	content: "and";
+        // This will be overruled by JS!
+        content: "and";
       }
     }
 
@@ -86,10 +86,10 @@
       vertical-align: middle;
       left: 3px;
       > span:first-child {
-	      border: {
-	      top-left-radius: 0;
-	      bottom-left-radius: 0;
-	    }
+        border: {
+        top-left-radius: 0;
+        bottom-left-radius: 0;
+      }
       }
       margin-left: 100%;
       padding: 0;
@@ -112,10 +112,11 @@
     > span.value {
       font-weight: bold;
       &[data-type=regex] {
-	font-style: italic;
-	&::after, &::before {
-	  content: '/';
-	}
+        font-style: italic;
+        &::after,
+        &::before {
+          content: '/';
+        }
       }
     }
 
@@ -129,8 +130,8 @@
     > span.key {
       position: relative;
       > ul {
-	      margin: 0;
-	      margin-left: 3.3em;
+        margin: 0;
+        margin-left: 3.3em;
       }
     }
   }
@@ -141,16 +142,16 @@
       display: inline-block;
       color: $dark-orange;
       &::after {
-	      font: {
-	      family: FontAwesome;
-	      style: normal;
-	      weight: normal;
-	    }
-	      content: $fa-rewrite;
-	      text-decoration: underline;
+        font: {
+          family: FontAwesome;
+          style: normal;
+          weight: normal;
+        }
+        content: $fa-rewrite;
+        text-decoration: underline;
       }
-      span {
-	      display: none;
+      > span {
+        display: none;
       }
     }
   }
@@ -208,28 +209,28 @@
       padding: 2pt;
       cursor: pointer;
       font: {
-	size: 80%;
-	style: italic;
+        size: 80%;
+        style: italic;
       }
       display: inline-block;
       @include choose-item;
       border: {
-	width: $border-size;
-	style: solid;
-	radius: $standard-border-radius;
+        width: $border-size;
+        style: solid;
+        radius: $standard-border-radius;
       }
 
       &:hover {
-	@include choose-hover;
+        @include choose-hover;
       }
     }
     &.regex {
       > input {
-	font-style: italic;
+        font-style: italic;
       }
 
       > div {
-	@include choose-active;
+        @include choose-active;
       }
     }
   }
@@ -250,27 +251,27 @@
     }
     .docGroup {
       > .operators {
-	z-index: $dg-index + 2;
+        z-index: $dg-index + 2;
       }
       .docGroup {
-	> .operators {
-	  z-index: $dg-index + 3;
-	}
-	.docGroup {
-	  > .operators {
-	    z-index: $dg-index + 4;
-	  }
-	  .docGroup {
-	    > .operators {
-	      z-index: $dg-index + 5;
-	    }
-	    .docGroup {
-	      > .operators {
-		z-index: $dg-index + 6;
-	      }
-	    }
-	  }
-	}
+        > .operators {
+          z-index: $dg-index + 3;
+        }
+        .docGroup {
+          > .operators {
+            z-index: $dg-index + 4;
+          }
+          .docGroup {
+            > .operators {
+              z-index: $dg-index + 5;
+            }
+            .docGroup {
+              > .operators {
+                z-index: $dg-index + 6;
+              }
+            }
+          }
+        }
       }
     }
   }
@@ -287,12 +288,12 @@
     color: $dark-orange;
     padding: 0;
     padding-left: 4px;
-	  font: {
-	    family: FontAwesome;
-	    style: normal;
-	    weight: normal;
-	  }
-	  content: $fa-rewrite;
-	  text-decoration: underline;
+    font: {
+      family: FontAwesome;
+      style: normal;
+      weight: normal;
+    }
+    content: $fa-rewrite;
+    text-decoration: underline;
   }
 }
