diff --git a/src/main/java/de/ids_mannheim/korap/KrillQuery.java b/src/main/java/de/ids_mannheim/korap/KrillQuery.java
index af1db1d..b5ea08d 100644
--- a/src/main/java/de/ids_mannheim/korap/KrillQuery.java
+++ b/src/main/java/de/ids_mannheim/korap/KrillQuery.java
@@ -914,7 +914,8 @@
                 }
 
                 // Use default foundry and layer - currently only base is supported!
-                else if (unit.equals("s") || unit.equals("p")) {
+                else if (unit.equals("s") || unit.equals("p")
+                        || unit.equals("t")) {
                     StringBuilder value = new StringBuilder();
                     unit = value.append("base/s:").append(unit).toString();
                 };
diff --git a/src/main/java/de/ids_mannheim/korap/query/SpanFocusQuery.java b/src/main/java/de/ids_mannheim/korap/query/SpanFocusQuery.java
index 5f18ff1..db51707 100644
--- a/src/main/java/de/ids_mannheim/korap/query/SpanFocusQuery.java
+++ b/src/main/java/de/ids_mannheim/korap/query/SpanFocusQuery.java
@@ -39,6 +39,7 @@
     private boolean removeTemporaryClasses = false;
     private int windowSize = 10;
 
+
     /**
      * Construct a new SpanFocusQuery.
      * 
@@ -60,6 +61,7 @@
         this.classNumbers = classNumbers;
     };
 
+
     /**
      * Construct a new SpanFocusQuery. The class to focus on defaults
      * to
@@ -209,12 +211,12 @@
     }
 
 
-    public int getWindowSize() {
+    public int getWindowSize () {
         return windowSize;
     }
 
 
-    public void setWindowSize(int windowSize) {
+    public void setWindowSize (int windowSize) {
         this.windowSize = windowSize;
     }
 
diff --git a/src/main/java/de/ids_mannheim/korap/query/SpanSubspanQuery.java b/src/main/java/de/ids_mannheim/korap/query/SpanSubspanQuery.java
index c547edc..9ec9632 100644
--- a/src/main/java/de/ids_mannheim/korap/query/SpanSubspanQuery.java
+++ b/src/main/java/de/ids_mannheim/korap/query/SpanSubspanQuery.java
@@ -140,11 +140,12 @@
     }
 
 
-    public int getWindowSize() {
+    public int getWindowSize () {
         return windowSize;
     }
 
-    public void setWindowSize(int windowSize) {
+
+    public void setWindowSize (int windowSize) {
         this.windowSize = windowSize;
     }
 }
diff --git a/src/main/java/de/ids_mannheim/korap/query/spans/CandidateSpanComparator.java b/src/main/java/de/ids_mannheim/korap/query/spans/CandidateSpanComparator.java
index 0ba3c29..c351891 100644
--- a/src/main/java/de/ids_mannheim/korap/query/spans/CandidateSpanComparator.java
+++ b/src/main/java/de/ids_mannheim/korap/query/spans/CandidateSpanComparator.java
@@ -5,10 +5,11 @@
 public class CandidateSpanComparator implements Comparator<CandidateSpan> {
 
     @Override
-    public int compare(CandidateSpan o1, CandidateSpan o2) {
+    public int compare (CandidateSpan o1, CandidateSpan o2) {
         if (o1.doc == o2.doc) {
             if (o1.getStart() == o2.getStart()) {
-                if (o1.getEnd() == o2.getEnd()) return 0;
+                if (o1.getEnd() == o2.getEnd())
+                    return 0;
                 if (o1.getEnd() > o2.getEnd())
                     return 1;
                 else
diff --git a/src/main/java/de/ids_mannheim/korap/query/spans/FocusSpans.java b/src/main/java/de/ids_mannheim/korap/query/spans/FocusSpans.java
index 202d3d4..e566637 100644
--- a/src/main/java/de/ids_mannheim/korap/query/spans/FocusSpans.java
+++ b/src/main/java/de/ids_mannheim/korap/query/spans/FocusSpans.java
@@ -61,6 +61,7 @@
     private PriorityQueue<CandidateSpan> candidates;
     private CandidateSpanComparator comparator;
 
+
     /**
      * Construct a FocusSpan for the given {@link SpanQuery}.
      * 
@@ -139,8 +140,8 @@
             if (firstSpans.isPayloadAvailable()
                     && updateSpanPositions(cs = new CandidateSpan(firstSpans))) {
                 if (cs.getDoc() == prevDoc && cs.getStart() < prevStart) {
-                    log.warn("Span (" + cs.getStart() + ", "
-                            + cs.getEnd() + ") is out of order and skipped.");
+                    log.warn("Span (" + cs.getStart() + ", " + cs.getEnd()
+                            + ") is out of order and skipped.");
                 }
                 else {
                     candidates.add(cs);
@@ -150,6 +151,7 @@
         }
     }
 
+
     private void setMatch (CandidateSpan cs) {
         matchStartPosition = cs.getStart();
         prevStart = matchStartPosition;
diff --git a/src/main/java/de/ids_mannheim/korap/query/spans/SubSpans.java b/src/main/java/de/ids_mannheim/korap/query/spans/SubSpans.java
index 52b657e..57f8362 100644
--- a/src/main/java/de/ids_mannheim/korap/query/spans/SubSpans.java
+++ b/src/main/java/de/ids_mannheim/korap/query/spans/SubSpans.java
@@ -43,6 +43,7 @@
     private PriorityQueue<CandidateSpan> candidates;
     private CandidateSpanComparator comparator;
 
+
     /**
      * Constructs SubSpans for the given {@link SpanSubspanQuery}
      * specifiying the start offset and the length of the subspans.
@@ -65,7 +66,8 @@
         candidates = new PriorityQueue<>(windowSize, comparator);
 
         if (DEBUG) {
-            log.trace("Init SubSpan at {} with length {}", this.startOffset, this.length);
+            log.trace("Init SubSpan at {} with length {}", this.startOffset,
+                    this.length);
         };
         hasMoreSpans = firstSpans.next();
     }
@@ -109,7 +111,8 @@
         return false;
     }
 
-    private void collectCandidates() throws IOException {
+
+    private void collectCandidates () throws IOException {
 
         while (hasMoreSpans && candidates.size() < windowSize
                 && firstSpans.doc() == currentDoc) {
@@ -127,12 +130,13 @@
         }
     }
 
+
     /**
      * Sets the properties of the current match/subspan.
      * 
      * @throws IOException
      */
-    public boolean findMatch(CandidateSpan cs) throws IOException {
+    public boolean findMatch (CandidateSpan cs) throws IOException {
 
         // Check at span ending
         if (this.startOffset < 0) {
@@ -174,16 +178,16 @@
         cs.setDoc(firstSpans.doc());
 
         if (DEBUG) {
-            log.trace("Start at absolute position {} " +
-                      "and end at absolute position {}",
-                    cs.getStart(),
+            log.trace("Start at absolute position {} "
+                    + "and end at absolute position {}", cs.getStart(),
                     cs.getEnd());
         };
 
         return true;
     }
 
-    private void setMatch(CandidateSpan cs) {
+
+    private void setMatch (CandidateSpan cs) {
         matchStartPosition = cs.getStart();
         prevStart = matchStartPosition;
         matchEndPosition = cs.getEnd();
@@ -193,6 +197,7 @@
         matchPayload.addAll(cs.getPayloads());
     }
 
+
     @Override
     public boolean skipTo (int target) throws IOException {
         if (candidates.size() > 0) {
diff --git a/src/main/java/de/ids_mannheim/korap/query/spans/WithinSpans.java b/src/main/java/de/ids_mannheim/korap/query/spans/WithinSpans.java
index 31a0e12..9234716 100644
--- a/src/main/java/de/ids_mannheim/korap/query/spans/WithinSpans.java
+++ b/src/main/java/de/ids_mannheim/korap/query/spans/WithinSpans.java
@@ -238,7 +238,8 @@
                     if (this.embeddedDoc != this.wrapDoc) {
 
                         if (DEBUG) {
-                            log.trace("(A) Embedded span is in a new document {}",
+                            log.trace(
+                                    "(A) Embedded span is in a new document {}",
                                     _currentEmbedded().toString());
                             log.trace("Reset current embedded doc");
                         };
@@ -268,7 +269,8 @@
                     if (this.embeddedDoc != this.wrapDoc) {
 
                         if (DEBUG) {
-                            log.trace("(B) Embedded span is in a new document {}",
+                            log.trace(
+                                    "(B) Embedded span is in a new document {}",
                                     _currentEmbedded().toString());
                             log.trace("Reset current embedded doc");
                         };
@@ -706,7 +708,7 @@
 
                 this.storeEmbedded();
                 this.nextSpanA();
-                
+
                 if (DEBUG)
                     _logCurrentCase((byte) 15);
                 return false;
