diff --git a/src/main/java/de/ids_mannheim/korap/query/serialize/IdWriter.java b/src/main/java/de/ids_mannheim/korap/query/serialize/IdWriter.java
index 7249df7..77dfafc 100644
--- a/src/main/java/de/ids_mannheim/korap/query/serialize/IdWriter.java
+++ b/src/main/java/de/ids_mannheim/korap/query/serialize/IdWriter.java
@@ -62,6 +62,7 @@
 
     }
 
+    @Deprecated
     public JsonNode getFinalNode() {
         return this.node;
     }
diff --git a/src/main/java/de/ids_mannheim/korap/query/serialize/MetaQueryBuilder.java b/src/main/java/de/ids_mannheim/korap/query/serialize/MetaQueryBuilder.java
index d49e314..09c3c1a 100644
--- a/src/main/java/de/ids_mannheim/korap/query/serialize/MetaQueryBuilder.java
+++ b/src/main/java/de/ids_mannheim/korap/query/serialize/MetaQueryBuilder.java
@@ -30,7 +30,7 @@
      * @param rightType
      * @return
      */
-    public MetaQueryBuilder addContext(Integer left, String leftType,
+    public MetaQueryBuilder setContext(Integer left, String leftType,
                                        Integer right, String rightType) {
         this.spanContext = new SpanContext(left, leftType, right, rightType);
         return this;
@@ -47,15 +47,13 @@
      * @param context
      * @return
      */
-    public MetaQueryBuilder addContext(String context) {
+    public MetaQueryBuilder setContext(String context) {
         if (context.startsWith("s") | context.startsWith("p"))
-//            addEntry("context", context);
             this.spanContext = new SpanContext(context);
         else {
             String[] ct = context.split(",");
             String[] lc = ct[0].split("-");
             String[] rc = ct[1].split("-");
-//            addContext(Integer.valueOf(lc[0]), lc[1], Integer.valueOf(rc[0]), rc[1]);
             this.spanContext = new SpanContext(Integer.valueOf(lc[0]), lc[1], Integer.valueOf(rc[0]), rc[1]);
         }
         return this;
@@ -71,7 +69,7 @@
         if (pageLength != null)
             this.addEntry("count", pageLength);
         if (ctx != null)
-            this.addContext(ctx);
+            this.setContext(ctx);
         if (cutoff != null)
             this.addEntry("cutOff", cutoff);
         return this;
@@ -135,16 +133,5 @@
                 meta.put("context", this.context);
             return meta;
         }
-
-        @Override
-        public String toString() {
-            return "SpanContext{" +
-                    "left_type='" + left_type + '\'' +
-                    ", right_type='" + right_type + '\'' +
-                    ", left_size=" + left_size +
-                    ", right_size=" + right_size +
-                    ", context='" + context + '\'' +
-                    '}';
-        }
     }
 }
diff --git a/src/main/java/de/ids_mannheim/korap/query/serialize/QuerySerializer.java b/src/main/java/de/ids_mannheim/korap/query/serialize/QuerySerializer.java
index 0aac8d6..950befa 100644
--- a/src/main/java/de/ids_mannheim/korap/query/serialize/QuerySerializer.java
+++ b/src/main/java/de/ids_mannheim/korap/query/serialize/QuerySerializer.java
@@ -157,7 +157,7 @@
             String cli, String cri, int cls, int crs,
             int num, int pageIndex) {
         MetaQueryBuilder meta = new MetaQueryBuilder();
-        meta.addContext(cls, cli, crs, cri);
+        meta.setContext(cls, cli, crs, cri);
         meta.addEntry("startIndex", pageIndex);
         meta.addEntry("count", num);
         this.meta = meta.raw();
@@ -168,7 +168,7 @@
         MetaQueryBuilder meta = new MetaQueryBuilder();
         meta.addEntry("startIndex", pageidx);
         meta.addEntry("count", num);
-        meta.addContext(context);
+        meta.setContext(context);
         return this;
     }
 
