diff --git a/pom.xml b/pom.xml
index 245c08c..4f38935 100644
--- a/pom.xml
+++ b/pom.xml
@@ -41,7 +41,7 @@
 		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>		
 		<jackson.version>2.21.3</jackson.version>
 		<jackson.annotations.version>2.21</jackson.annotations.version>
-		<antlr4.version>4.9.3</antlr4.version>
+		<antlr4.version>4.13.2</antlr4.version>
 		<antlr3.version>3.5.3</antlr3.version>
 		<java.version>21</java.version>
 		<log4j.version>2.25.4</log4j.version>
@@ -151,7 +151,7 @@
 		<dependency>
 			<groupId>eu.clarin.sru.fcs</groupId>
 			<artifactId>fcs-simple-endpoint</artifactId>
-			<version>1.8.0</version>
+			<version>2.0.0</version>
 		</dependency>
   </dependencies>
 	<build>
diff --git a/src/main/java/de/ids_mannheim/korap/query/parse/fcsql/ExpressionParser.java b/src/main/java/de/ids_mannheim/korap/query/parse/fcsql/ExpressionParser.java
index c4184d4..2858397 100644
--- a/src/main/java/de/ids_mannheim/korap/query/parse/fcsql/ExpressionParser.java
+++ b/src/main/java/de/ids_mannheim/korap/query/parse/fcsql/ExpressionParser.java
@@ -15,15 +15,15 @@
 import de.ids_mannheim.korap.query.object.KoralToken;
 import de.ids_mannheim.korap.query.serialize.util.KoralException;
 import de.ids_mannheim.korap.query.serialize.util.StatusCodes;
-import eu.clarin.sru.server.fcs.parser.Expression;
-import eu.clarin.sru.server.fcs.parser.ExpressionAnd;
-import eu.clarin.sru.server.fcs.parser.ExpressionGroup;
-import eu.clarin.sru.server.fcs.parser.ExpressionNot;
-import eu.clarin.sru.server.fcs.parser.ExpressionOr;
-import eu.clarin.sru.server.fcs.parser.ExpressionWildcard;
-import eu.clarin.sru.server.fcs.parser.Operator;
-import eu.clarin.sru.server.fcs.parser.QueryNode;
-import eu.clarin.sru.server.fcs.parser.RegexFlag;
+import eu.clarin.sru.fcs.qlparser.fcs.Expression;
+import eu.clarin.sru.fcs.qlparser.fcs.ExpressionAnd;
+import eu.clarin.sru.fcs.qlparser.fcs.ExpressionGroup;
+import eu.clarin.sru.fcs.qlparser.fcs.ExpressionNot;
+import eu.clarin.sru.fcs.qlparser.fcs.ExpressionOr;
+import eu.clarin.sru.fcs.qlparser.fcs.ExpressionWildcard;
+import eu.clarin.sru.fcs.qlparser.fcs.Operator;
+import eu.clarin.sru.fcs.qlparser.fcs.QueryNode;
+import eu.clarin.sru.fcs.qlparser.fcs.RegexFlag;
 
 /**
  * This class handles and parses various FCSQL expressions (e.g.
@@ -81,16 +81,15 @@
             List<QueryNode> operands = queryNode.getChildren();
             if (isNot) {
                 return parseBooleanExpression(operands,
-                        KoralTermGroupRelation.OR, isToken);
+                        KoralTermGroupRelation.OR, isNot, isToken);
             }
             else {
                 return parseBooleanExpression(operands,
-                        KoralTermGroupRelation.AND, isToken);
+                        KoralTermGroupRelation.AND, isNot, isToken);
             }
         }
         else if (queryNode instanceof ExpressionGroup) {
-            // Ignore the group
-            return parseExpression(queryNode.getFirstChild(), false, isToken);
+            return parseExpression(queryNode.getFirstChild(), isNot, isToken);
         }
         else if (queryNode instanceof ExpressionNot) {
             boolean negation = isNot ? false : true;
@@ -100,11 +99,11 @@
             List<QueryNode> operands = queryNode.getChildren();
             if (isNot) {
                 return parseBooleanExpression(operands,
-                        KoralTermGroupRelation.AND, isToken);
+                        KoralTermGroupRelation.AND, isNot, isToken);
             }
             else {
                 return parseBooleanExpression(operands,
-                        KoralTermGroupRelation.OR, isToken);
+                        KoralTermGroupRelation.OR, isNot, isToken);
             }
         }
         else if (queryNode instanceof ExpressionWildcard) {
@@ -129,10 +128,10 @@
      * @throws KoralException
      */
     private KoralObject parseBooleanExpression(List<QueryNode> operands,
-            KoralTermGroupRelation relation, boolean isToken) throws KoralException {
+            KoralTermGroupRelation relation, boolean isNot, boolean isToken) throws KoralException {
         List<KoralObject> terms = new ArrayList<>();
         for (QueryNode node : operands) {
-            terms.add(parseExpression(node, false, false));
+            terms.add(parseExpression(node, isNot, false));
         }
         
         KoralTermGroup termGroup = new KoralTermGroup(relation, terms);
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 3babf9c..4039001 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
@@ -16,15 +16,15 @@
 import de.ids_mannheim.korap.query.object.KoralOperation;
 import de.ids_mannheim.korap.query.object.KoralSpan;
 import de.ids_mannheim.korap.query.object.KoralTerm;
-import eu.clarin.sru.server.fcs.parser.ExpressionWildcard;
-import eu.clarin.sru.server.fcs.parser.QueryDisjunction;
-import eu.clarin.sru.server.fcs.parser.QueryGroup;
-import eu.clarin.sru.server.fcs.parser.QueryNode;
-import eu.clarin.sru.server.fcs.parser.QuerySegment;
-import eu.clarin.sru.server.fcs.parser.QuerySequence;
-import eu.clarin.sru.server.fcs.parser.QueryWithWithin;
-import eu.clarin.sru.server.fcs.parser.SimpleWithin;
-import eu.clarin.sru.server.fcs.parser.SimpleWithin.Scope;
+import eu.clarin.sru.fcs.qlparser.fcs.ExpressionWildcard;
+import eu.clarin.sru.fcs.qlparser.fcs.QueryDisjunction;
+import eu.clarin.sru.fcs.qlparser.fcs.QueryGroup;
+import eu.clarin.sru.fcs.qlparser.fcs.QueryNode;
+import eu.clarin.sru.fcs.qlparser.fcs.QuerySegment;
+import eu.clarin.sru.fcs.qlparser.fcs.QuerySequence;
+import eu.clarin.sru.fcs.qlparser.fcs.QueryWithWithin;
+import eu.clarin.sru.fcs.qlparser.fcs.SimpleWithin;
+import eu.clarin.sru.fcs.qlparser.fcs.SimpleWithin.Scope;
 
 /** This class handles FCS query nodes from the FCSParser converting FCSQL to Java objects. 
  * 
diff --git a/src/main/java/de/ids_mannheim/korap/query/serialize/FCSQLQueryProcessor.java b/src/main/java/de/ids_mannheim/korap/query/serialize/FCSQLQueryProcessor.java
index 671f505..54e347a 100644
--- a/src/main/java/de/ids_mannheim/korap/query/serialize/FCSQLQueryProcessor.java
+++ b/src/main/java/de/ids_mannheim/korap/query/serialize/FCSQLQueryProcessor.java
@@ -8,9 +8,9 @@
 import de.ids_mannheim.korap.query.serialize.util.StatusCodes;
 import eu.clarin.sru.server.SRUQueryBase;
 import eu.clarin.sru.server.fcs.Constants;
-import eu.clarin.sru.server.fcs.parser.QueryNode;
-import eu.clarin.sru.server.fcs.parser.QueryParser;
-import eu.clarin.sru.server.fcs.parser.QueryParserException;
+import eu.clarin.sru.fcs.qlparser.QueryParserException;
+import eu.clarin.sru.fcs.qlparser.fcs.QueryNode;
+import eu.clarin.sru.fcs.qlparser.fcs.QueryParser;
 
 /** FCSQLQueryProcessor is accountable for the serialization of FCSQL 
  *  to KoralQuery. The KoralQuery is structured as a map containing 
diff --git a/src/test/java/de/ids_mannheim/korap/query/test/fcsql/FCSQLQueryProcessorTest.java b/src/test/java/de/ids_mannheim/korap/query/test/fcsql/FCSQLQueryProcessorTest.java
index 41f37fe..521abc8 100644
--- a/src/test/java/de/ids_mannheim/korap/query/test/fcsql/FCSQLQueryProcessorTest.java
+++ b/src/test/java/de/ids_mannheim/korap/query/test/fcsql/FCSQLQueryProcessorTest.java
@@ -284,11 +284,7 @@
                 + " operands:["
                 + "{@type: koral:term, key: sein, foundry: tt, layer: l, type:type:regex, match: match:ne},"
                 + "{@type: koral:term, key: PPOSS, foundry: tt, layer: p, type:type:regex, match: match:ne}]}}";
-        //FCSQLQueryProcessorTest.runAndValidate(query, jsonLd);
-        
-        error = getError(new FCSQLQueryProcessor(query));
-        assertEquals(399, error.get(0));
-        assertTrue(error.get(1).toString().startsWith("Query cannot be parsed"));
+        FCSQLQueryProcessorTest.runAndValidate(query, jsonLd);
     }
 
     @Test
