diff --git a/Changes b/Changes
index de6a342..d99749f 100644
--- a/Changes
+++ b/Changes
@@ -1,4 +1,5 @@
-0.35 2019-09-25
+0.35 2019-11-12
+    - Added a method to add warnings in QuerySerializer (margaretha)
 
 0.34 2019-08-27
     - [bugfix] Ignore min:max order in distance operators
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 9ae9b77..44221a9 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
@@ -350,4 +350,15 @@
         map.put("collection", collection);
         return mapper.writeValueAsString(map);
     }
+    
+    public void addWarning (int statusCode, String message,
+            List<String> entities) {
+        ArrayList<Object> warning = new ArrayList<>();
+        warning.add(statusCode);
+        warning.add(message);
+        if (entities != null) {
+            warning.addAll(entities);
+        }
+        this.warnings.add(warning);
+    }
 }
diff --git a/src/test/java/de/ids_mannheim/korap/query/test/EmptyResultsTest.java b/src/test/java/de/ids_mannheim/korap/query/test/EmptyResultsTest.java
index 43845b4..a1a202f 100644
--- a/src/test/java/de/ids_mannheim/korap/query/test/EmptyResultsTest.java
+++ b/src/test/java/de/ids_mannheim/korap/query/test/EmptyResultsTest.java
@@ -7,6 +7,9 @@
 
 import org.junit.Assert;
 import org.junit.Test;
+import java.util.List;
+import java.util.ArrayList;
+
 
 import static org.junit.Assert.assertEquals;
 
@@ -49,4 +52,22 @@
         assertEquals(node.has("meta"), false);
     }
 
+    @Test
+    public void testWarnings () {
+        QuerySerializer s = new QuerySerializer();
+        s.setQuery("[base=Wort]", "poliqarp");
+        List<String> l = new ArrayList<String>(1);
+        l.add("Hui");
+        s.addWarning(14, "Beispiel", l);
+        s.addWarning(16, "Beispiel 2", null);
+
+        JsonNode node = mapper.valueToTree(s.build());
+        assertEquals(true, node.has("warnings"));
+        assertEquals(14, node.at("/warnings/0/0").asInt());
+        assertEquals("Beispiel", node.at("/warnings/0/1").asText());
+        assertEquals("Hui", node.at("/warnings/0/2").asText());
+        assertEquals(16, node.at("/warnings/1/0").asInt());
+        assertEquals("Beispiel 2", node.at("/warnings/1/1").asText());
+        assertEquals(false, node.has("/warnings/1/2"));
+    }    
 }
