diff --git a/src/main/java/de/ids_mannheim/korap/KrillMeta.java b/src/main/java/de/ids_mannheim/korap/KrillMeta.java
index 8ef1028..743b450 100644
--- a/src/main/java/de/ids_mannheim/korap/KrillMeta.java
+++ b/src/main/java/de/ids_mannheim/korap/KrillMeta.java
@@ -43,24 +43,13 @@
 
         // Lift following fields per default
         // These fields are chosen for <legacy /> reasons
-        for (String field : new String[] {
-                "ID",
-                "UID",
-                "textSigle",
-                "corpusID",
-                "author",
-                "title",
-                "subTitle",
-                "textClass",
-                "pubPlace",
-                "pubDate",
+        for (String field : new String[] { "ID", "UID", "textSigle",
+                "corpusID", "author", "title", "subTitle", "textClass",
+                "pubPlace", "pubDate",
                 // "foundries",
                 // "tokenization",
                 // New:
-                "layerInfos",
-                "docSigle",
-                "corpusSigle",
-            }) {
+                "layerInfos", "docSigle", "corpusSigle", }) {
             fields.add(field);
         };
 
diff --git a/src/main/java/de/ids_mannheim/korap/response/Match.java b/src/main/java/de/ids_mannheim/korap/response/Match.java
index 272a027..f68e389 100644
--- a/src/main/java/de/ids_mannheim/korap/response/Match.java
+++ b/src/main/java/de/ids_mannheim/korap/response/Match.java
@@ -656,7 +656,7 @@
 
         // Get prefix string corpus/doc
         if (this.getTextSigle() != null) {
-            id.setTextSigle(this.getTextSigle());            
+            id.setTextSigle(this.getTextSigle());
         }
         // LEGACY
         else {
diff --git a/src/main/java/de/ids_mannheim/korap/response/match/DocIdentifier.java b/src/main/java/de/ids_mannheim/korap/response/match/DocIdentifier.java
index 9b16727..660a831 100644
--- a/src/main/java/de/ids_mannheim/korap/response/match/DocIdentifier.java
+++ b/src/main/java/de/ids_mannheim/korap/response/match/DocIdentifier.java
@@ -7,10 +7,9 @@
 // TODO: This should only use textSigle!
 
 public class DocIdentifier {
-    protected String
-        textSigle,
-        corpusID, // LEGACY
-        docID;    // LEGACY
+    protected String textSigle, corpusID, // LEGACY
+            docID;    // LEGACY
+
 
     // Legacy
     public String getCorpusID () {
@@ -37,10 +36,12 @@
             this.docID = id;
     };
 
+
     public String getTextSigle () {
         return this.textSigle;
     };
 
+
     public void setTextSigle (String id) {
         if (id != null && !id.contains("!"))
             this.textSigle = id;
diff --git a/src/main/java/de/ids_mannheim/korap/response/match/MatchIdentifier.java b/src/main/java/de/ids_mannheim/korap/response/match/MatchIdentifier.java
index 7247d17..b559b67 100644
--- a/src/main/java/de/ids_mannheim/korap/response/match/MatchIdentifier.java
+++ b/src/main/java/de/ids_mannheim/korap/response/match/MatchIdentifier.java
@@ -93,8 +93,7 @@
             sb.append(this.docID);
         };
 
-        sb.append('-')
-            .append(this.getPositionString());
+        sb.append('-').append(this.getPositionString());
         return sb.toString();
     };
 
