diff --git a/Changes b/Changes
index 912ea72..51e3dbb 100644
--- a/Changes
+++ b/Changes
@@ -1,4 +1,4 @@
-0.28 2018-01-08
+0.28 2018-01-10
 	- Added some enums for koral:operation (margaretha)
 	- Fixed node serialization of Annis QL containing lemma (margaretha)
 	- Added serialization for Annis keyword "lemma" (margaretha)
@@ -6,6 +6,7 @@
 	- Fixed Annis regex bug regarding slash after foundry (margaretha)
   - Fixed use of regular expressions in corpus queries
     (margaretha, diewald)
+  - Fixed treatment of 'AND' and 'and' in vc serialization (diewald)
 	
 0.27 2017-09-12
 	- Changed Cosmas2 wildcards serialization as regex (margaretha)  
diff --git a/src/main/antlr/collection/CollectionQueryLexer.g4 b/src/main/antlr/collection/CollectionQueryLexer.g4
index 059ad82..190481a 100644
--- a/src/main/antlr/collection/CollectionQueryLexer.g4
+++ b/src/main/antlr/collection/CollectionQueryLexer.g4
@@ -31,8 +31,8 @@
 LEQ					: '<=';
 GEQ					: '>=';
 EQ					: '=';
-AND					: '&' | 'AND' | 'and' | 'UND' | 'und' ;
-OR					: '|' | 'OR' | 'or' | 'ODER' | 'oder' ;
+AND					: '&' | 'AND' | 'and';
+OR					: '|' | 'OR' | 'or';
 NEG					: '!';
 QMARK				: '?';
 SLASH				: '/';
diff --git a/src/main/java/de/ids_mannheim/korap/query/serialize/CollectionQueryProcessor.java b/src/main/java/de/ids_mannheim/korap/query/serialize/CollectionQueryProcessor.java
index b87d4a0..9f449c9 100644
--- a/src/main/java/de/ids_mannheim/korap/query/serialize/CollectionQueryProcessor.java
+++ b/src/main/java/de/ids_mannheim/korap/query/serialize/CollectionQueryProcessor.java
@@ -97,8 +97,13 @@
          */
 
         if (nodeCat.equals("relation")) {
-            String operator = getNodeCat(node.getChild(1).getChild(0)).equals(
-                    "&") ? "and" : "or";
+			String operator = getNodeCat(node.getChild(1).getChild(0));
+			if (operator.equals("&") || operator.equals("and") || operator.equals("AND")) {
+				operator = "and";
+			}
+			else {
+				operator = "or";
+			};
             Map<String, Object> relationGroup = KoralObjectGenerator
                     .makeDocGroup(operator);
             putIntoSuperObject(relationGroup);
diff --git a/src/test/java/de/ids_mannheim/korap/query/test/collection/CollectionQueryProcessorTest.java b/src/test/java/de/ids_mannheim/korap/query/test/collection/CollectionQueryProcessorTest.java
index 08d2cda..5e407aa 100644
--- a/src/test/java/de/ids_mannheim/korap/query/test/collection/CollectionQueryProcessorTest.java
+++ b/src/test/java/de/ids_mannheim/korap/query/test/collection/CollectionQueryProcessorTest.java
@@ -79,8 +79,6 @@
         assertEquals("match:eq", res.at("/collection/wrap/match").asText());
     }
 
-    ;
-
 
     @Test
     public void testContains () throws JsonProcessingException, IOException {
@@ -607,17 +605,16 @@
 
 	@Test
     public void testRegexInGroup () throws JsonProcessingException, IOException {
-        collection = "corpusSigle = /HMP[0-9][0-9]/ and (textTypeArt=/.*Kommentar.*/ or textTypeArt=/.*Leitartikel.*/)";
+        collection = "corpusSigle = /HMP[0-9][0-9]/ AND (textTypeArt=/.*Kommentar.*/ or textTypeArt=/.*Leitartikel.*/)";
         qs.setQuery(query, ql);
         qs.setCollection(collection);
         res = mapper.readTree(qs.toJSON());
-		/*
-        assertEquals("koral:doc", res.at("/collection/@type").asText());
-        assertEquals("pubDate", res.at("/collection/key").asText());
-        assertEquals("2000-02", res.at("/collection/value").asText());
-        assertEquals("type:date", res.at("/collection/type").asText());
-        assertEquals("match:eq", res.at("/collection/match").asText());
-		*/
+        assertEquals("corpusSigle", res.at("/collection/operands/0/key").asText());
+        assertEquals("HMP[0-9][0-9]", res.at("/collection/operands/0/value").asText());
+        assertEquals("operation:or", res.at("/collection/operands/1/operation").asText());
+        assertEquals("textTypeArt", res.at("/collection/operands/1/operands/0/key").asText());
+        assertEquals(".*Kommentar.*", res.at("/collection/operands/1/operands/0/value").asText());
+        assertEquals("operation:and", res.at("/collection/operation").asText());
 	}	
 
     @Test
