diff --git a/src/main/java/de/ids_mannheim/korap/query/parse/fcsql/FCSSRUQueryParser.java b/src/main/java/de/ids_mannheim/korap/query/parse/fcsql/FCSSRUQueryParser.java
index c4d0fa1..3babf9c 100644
--- a/src/main/java/de/ids_mannheim/korap/query/parse/fcsql/FCSSRUQueryParser.java
+++ b/src/main/java/de/ids_mannheim/korap/query/parse/fcsql/FCSSRUQueryParser.java
@@ -2,6 +2,7 @@
 
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Collections;
 import java.util.List;
 
 import de.ids_mannheim.korap.query.object.KoralContext;
@@ -125,7 +126,7 @@
     private KoralGroup parseWithinQuery(QueryWithWithin queryNode)
             throws KoralException {
         KoralGroup koralGroup = new KoralGroup(KoralOperation.POSITION);
-        koralGroup.setFrames(Arrays.asList(KoralFrame.IS_AROUND));
+        koralGroup.setFrames(Collections.singletonList(KoralFrame.IS_AROUND));
 
         List<KoralObject> operands = new ArrayList<KoralObject>();
         operands.add(parseQueryNode(queryNode.getWithin()));
diff --git a/src/main/java/de/ids_mannheim/korap/query/serialize/Cosmas2QueryProcessor.java b/src/main/java/de/ids_mannheim/korap/query/serialize/Cosmas2QueryProcessor.java
index 4bc806a..f2ed6e1 100644
--- a/src/main/java/de/ids_mannheim/korap/query/serialize/Cosmas2QueryProcessor.java
+++ b/src/main/java/de/ids_mannheim/korap/query/serialize/Cosmas2QueryProcessor.java
@@ -1550,14 +1550,13 @@
                     Pattern.compile("(\\+|-)?(sa|se|pa|pe|ta|te)");
             Matcher conditionMatcher =
                     conditionPattern.matcher(conditionsString);
-            String replacement = "#BED(" + m.group(1) + " , ";
+            StringBuilder replacement = new StringBuilder("#BED(" + m.group(1) + " , ");
             while (conditionMatcher.find()) {
-                replacement = replacement + conditionMatcher.group() + ",";
+                replacement.append(conditionMatcher.group()).append(",");
             }
             // remove trailing comma and close parenthesis
-            replacement =
-                    replacement.substring(0, replacement.length() - 1) + ")";
-            rewrittenQuery = rewrittenQuery.replace(match, replacement);
+            replacement = new StringBuilder(replacement.substring(0, replacement.length() - 1) + ")");
+            rewrittenQuery = rewrittenQuery.replace(match, replacement.toString());
         }
         return rewrittenQuery;
     }
diff --git a/src/main/java/de/ids_mannheim/korap/query/serialize/PoliqarpPlusQueryProcessor.java b/src/main/java/de/ids_mannheim/korap/query/serialize/PoliqarpPlusQueryProcessor.java
index aed8c3d..7cde9c1 100644
--- a/src/main/java/de/ids_mannheim/korap/query/serialize/PoliqarpPlusQueryProcessor.java
+++ b/src/main/java/de/ids_mannheim/korap/query/serialize/PoliqarpPlusQueryProcessor.java
@@ -639,9 +639,7 @@
         CollectionQueryProcessor cq = new CollectionQueryProcessor(
                 node.getChild(1).getText());
         requestMap.put("collection", cq.getRequestMap().get("collection"));
-        for (ParseTree child : getChildren(node)) {
-            visited.add(child);
-        }
+        visited.addAll(getChildren(node));
     }
 
 
diff --git a/src/main/java/de/ids_mannheim/korap/query/serialize/QueryUtils.java b/src/main/java/de/ids_mannheim/korap/query/serialize/QueryUtils.java
index 47b5e09..5845f70 100644
--- a/src/main/java/de/ids_mannheim/korap/query/serialize/QueryUtils.java
+++ b/src/main/java/de/ids_mannheim/korap/query/serialize/QueryUtils.java
@@ -73,87 +73,86 @@
                 break;
         }
 
-        StringBuffer buffer = new StringBuffer();
-        buffer.append("<query><cypher><![CDATA[");
-        buffer.append(cypher);
-        buffer.append("]]></cypher>");
-        buffer.append("<wordAliasPrefix>wtok_</wordAliasPrefix>");
-        buffer.append("<contextColumn>sent</contextColumn>");
-        buffer.append("<contextIdColumn>sid</contextIdColumn>");
-        buffer.append("<textColumn>txt</textColumn>");
-        buffer.append("<startIndex>");
-        buffer.append(page);
-        buffer.append("</startIndex>");
-        buffer.append("<itemsPerPage>");
-        buffer.append(limit);
-        buffer.append("</itemsPerPage>");
-        buffer.append("<context>");
-        buffer.append("<left>");
-        buffer.append("<" + sctypel + ">");
-        buffer.append(cl);
-        buffer.append("</" + sctypel + ">");
-        buffer.append("</left>");
-        buffer.append("<right>");
-        buffer.append("<" + sctyper + ">");
-        buffer.append(cr);
-        buffer.append("</" + sctyper + ">");
-        buffer.append("</right>");
-        buffer.append("</context>");
-        buffer.append("</query>");
-        return buffer.toString();
+        return new StringBuffer()
+                .append("<query><cypher><![CDATA[")
+                .append(cypher)
+                .append("]]></cypher>")
+                .append("<wordAliasPrefix>wtok_</wordAliasPrefix>")
+                .append("<contextColumn>sent</contextColumn>")
+                .append("<contextIdColumn>sid</contextIdColumn>")
+                .append("<textColumn>txt</textColumn>")
+                .append("<startIndex>")
+                .append(page)
+                .append("</startIndex>")
+                .append("<itemsPerPage>")
+                .append(limit)
+                .append("</itemsPerPage>")
+                .append("<context>")
+                .append("<left>")
+                .append("<").append(sctypel).append(">")
+                .append(cl)
+                .append("</").append(sctypel).append(">")
+                .append("</left>")
+                .append("<right>")
+                .append("<").append(sctyper).append(">")
+                .append(cr)
+                .append("</").append(sctyper).append(">")
+                .append("</right>")
+                .append("</context>")
+                .append("</query>")
+                .toString();
     }
 
 
     public static String buildDotQuery (long sid, String graphdb_id) {
-        StringBuffer b = new StringBuffer();
-        b.append("<query>");
-        b.append("<sentenceId>");
-        b.append(sid);
-        b.append("</sentenceId>");
-        b.append("<gdbId>");
-        b.append(graphdb_id);
-        b.append("</gdbId>");
-        b.append("<hls>");
-        b.append("<hl>");
-        b.append(40857);
-        b.append("</hl>");
-        b.append("<hl>");
-        b.append(40856);
-        b.append("</hl>");
-        b.append("</hls>");
-        b.append("</query>");
-
-        return b.toString();
+        return new StringBuffer()
+                .append("<query>")
+                .append("<sentenceId>")
+                .append(sid)
+                .append("</sentenceId>")
+                .append("<gdbId>")
+                .append(graphdb_id)
+                .append("</gdbId>")
+                .append("<hls>")
+                .append("<hl>")
+                .append(40857)
+                .append("</hl>")
+                .append("<hl>")
+                .append(40856)
+                .append("</hl>")
+                .append("</hls>")
+                .append("</query>")
+                .toString();
     }
 
 
     public String buildaggreQuery (String query) {
-        StringBuffer b = new StringBuffer();
-        b.append("<query><cypher><![CDATA[");
-        b.append(query);
-        b.append("]]></cypher>");
-        b.append("<columns>");
-        b.append("<column agg='true' sum='false'>");
-        b.append("<cypherAlias>");
-        b.append("aggBy");
-        b.append("</cypherAlias>");
-        b.append("<displayName>");
-        b.append("Aggregate");
-        b.append("</displayName>");
-        b.append("</column>");
+        return new StringBuffer()
+                .append("<query><cypher><![CDATA[")
+                .append(query)
+                .append("]]></cypher>")
+                .append("<columns>")
+                .append("<column agg='true' sum='false'>")
+                .append("<cypherAlias>")
+                .append("aggBy")
+                .append("</cypherAlias>")
+                .append("<displayName>")
+                .append("Aggregate")
+                .append("</displayName>")
+                .append("</column>")
 
-        b.append("<column agg='fals' sum='true'>");
-        b.append("<cypherAlias>");
-        b.append("cnt");
-        b.append("</cypherAlias>");
-        b.append("<displayName>");
-        b.append("Count");
-        b.append("</displayName>");
-        b.append("</column>");
-        b.append("</columns>");
+                .append("<column agg='fals' sum='true'>")
+                .append("<cypherAlias>")
+                .append("cnt")
+                .append("</cypherAlias>")
+                .append("<displayName>")
+                .append("Count")
+                .append("</displayName>")
+                .append("</column>")
+                .append("</columns>")
 
-        b.append("</query>");
-        return b.toString();
+                .append("</query>")
+                .toString();
     }
 
 
