diff --git a/src/main/java/de/ids_mannheim/korap/query/serialize/MetaTypes.java b/src/main/java/de/ids_mannheim/korap/query/serialize/MetaTypes.java
index cee079a..628c777 100644
--- a/src/main/java/de/ids_mannheim/korap/query/serialize/MetaTypes.java
+++ b/src/main/java/de/ids_mannheim/korap/query/serialize/MetaTypes.java
@@ -16,9 +16,6 @@
  */
 public class MetaTypes {
 
-    public static final String Y = "yyyy";
-    public static final String YM = "yyyy-mm";
-    public static final String YMD = "yyyy-mm-dd";
     private ObjectMapper mapper;
 
     public MetaTypes() {
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 a1aacdd..2a92eea 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
@@ -3,9 +3,7 @@
 import com.fasterxml.jackson.core.JsonGenerationException;
 import com.fasterxml.jackson.databind.JsonMappingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
-
 import de.ids_mannheim.korap.util.QueryException;
-
 import org.slf4j.LoggerFactory;
 
 import java.io.File;
@@ -29,7 +27,7 @@
 
     /**
      * @param args
-     * @throws QueryException 
+     * @throws QueryException
      */
     public static void main(String[] args) {
         /*
@@ -86,8 +84,8 @@
             } catch (IOException e) {
                 e.printStackTrace();
             } catch (QueryException e) {
-				e.printStackTrace();
-			}
+                e.printStackTrace();
+            }
         }
     }
 
@@ -101,7 +99,7 @@
      * @throws JsonGenerationException
      * @throws JsonMappingException
      * @throws IOException
-     * @throws QueryException 
+     * @throws QueryException
      */
     public void run(String query, String queryLanguage, String outFile)
             throws JsonGenerationException, JsonMappingException, IOException, QueryException {
@@ -120,7 +118,7 @@
 
     public String run(String query, String ql, List<String> parents,
                       String cli, String cri, int cls, int crs, int page, int num)
-            throws QueryException{
+            throws QueryException {
         if (ql.toLowerCase().equals("poliqarp")) {
             ast = new PoliqarpPlusTree(query);
 //		} else if (ql.toLowerCase().equals("cosmas")) {
@@ -137,7 +135,7 @@
         try {
             requestMap.put("meta", metaQuery.raw());
             requestMap = QueryUtils.addParameters(requestMap, page, num,
-                    cli, cri, cls, crs);
+                    cli, cri, cls, crs, true);
             String res = mapper.writeValueAsString(requestMap);
             return res;
         } catch (IOException e) {
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 4491abe..6ea8db0 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
@@ -117,7 +117,7 @@
     }
 
     public static Map addParameters(Map request, int page, int num, String cli, String cri,
-                                    int cls, int crs) {
+                                    int cls, int crs, boolean cutoff) {
         Map ctx = new LinkedHashMap();
         List left = new ArrayList();
         left.add(cli);
@@ -131,6 +131,7 @@
         request.put("startPage", page);
         request.put("count", num);
         request.put("context", ctx);
+        request.put("cutOff", cutoff);
 
         return request;
     }
