diff --git a/src/main/antlr/cosmas/c2ps.g b/src/main/antlr/cosmas/c2ps.g
index ed62c4b..1499f4a 100644
--- a/src/main/antlr/cosmas/c2ps.g
+++ b/src/main/antlr/cosmas/c2ps.g
@@ -143,7 +143,7 @@
 	;
 	
 OP_MORPH:	'MORPH(' 
-				MORPHEXPR (' '* '&' ' '* MORPHEXPR)* 
+				MORPHEXPR (' '* '&' ' '* MORPHEXPR)* ' '* 
 			')' ;
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
diff --git a/src/main/java/de/ids_mannheim/korap/query/serialize/AbstractSyntaxTree.java b/src/main/java/de/ids_mannheim/korap/query/serialize/AbstractQueryProcessor.java
similarity index 99%
rename from src/main/java/de/ids_mannheim/korap/query/serialize/AbstractSyntaxTree.java
rename to src/main/java/de/ids_mannheim/korap/query/serialize/AbstractQueryProcessor.java
index 8232617..2b899ab 100644
--- a/src/main/java/de/ids_mannheim/korap/query/serialize/AbstractSyntaxTree.java
+++ b/src/main/java/de/ids_mannheim/korap/query/serialize/AbstractQueryProcessor.java
@@ -13,7 +13,7 @@
 import de.ids_mannheim.korap.query.serialize.util.StatusCodes;
 import de.ids_mannheim.korap.query.serialize.util.QueryException;
 
-public abstract class AbstractSyntaxTree {
+public abstract class AbstractQueryProcessor {
 	
 	public abstract void process(String query) throws QueryException;
 	
@@ -55,7 +55,7 @@
 	private ArrayList<List<Object>> messages = new ArrayList<List<Object>>();
 	LinkedHashMap<String, Object> collection = new LinkedHashMap<String,Object>();
 	
-	AbstractSyntaxTree() {
+	AbstractQueryProcessor() {
 		requestMap.put("@context", "http://ids-mannheim.de/ns/KorAP/json-ld/v0.2/context.jsonld");
 		requestMap.put("errors", errors);
 		requestMap.put("warnings", warnings);
diff --git a/src/main/java/de/ids_mannheim/korap/query/serialize/AqlTree.java b/src/main/java/de/ids_mannheim/korap/query/serialize/AnnisQueryProcessor.java
similarity index 98%
rename from src/main/java/de/ids_mannheim/korap/query/serialize/AqlTree.java
rename to src/main/java/de/ids_mannheim/korap/query/serialize/AnnisQueryProcessor.java
index 58e5a16..8f89546 100644
--- a/src/main/java/de/ids_mannheim/korap/query/serialize/AqlTree.java
+++ b/src/main/java/de/ids_mannheim/korap/query/serialize/AnnisQueryProcessor.java
@@ -30,8 +30,8 @@
  * @author joachim
  *
  */
-public class AqlTree extends Antlr4AbstractSyntaxTree {
-	private static Logger log = LoggerFactory.getLogger(AqlTree.class);
+public class AnnisQueryProcessor extends Antlr4AbstractQueryProcessor {
+	private static Logger log = LoggerFactory.getLogger(AnnisQueryProcessor.class);
 	/**
 	 * Flag that indicates whether token fields or meta fields are currently being processed
 	 */
@@ -86,7 +86,7 @@
 	 * @param tree The syntax tree as returned by ANTLR
 	 * @param parser The ANTLR parser instance that generated the parse tree
 	 */
-	public AqlTree(String query) {
+	public AnnisQueryProcessor(String query) {
 		try {
 			process(query);
 		} catch (QueryException e) {
diff --git a/src/main/java/de/ids_mannheim/korap/query/serialize/Antlr3AbstractSyntaxTree.java b/src/main/java/de/ids_mannheim/korap/query/serialize/Antlr3AbstractQueryProcessor.java
similarity index 95%
rename from src/main/java/de/ids_mannheim/korap/query/serialize/Antlr3AbstractSyntaxTree.java
rename to src/main/java/de/ids_mannheim/korap/query/serialize/Antlr3AbstractQueryProcessor.java
index f07fd5c..33adaca 100644
--- a/src/main/java/de/ids_mannheim/korap/query/serialize/Antlr3AbstractSyntaxTree.java
+++ b/src/main/java/de/ids_mannheim/korap/query/serialize/Antlr3AbstractQueryProcessor.java
@@ -8,7 +8,7 @@
 import org.antlr.runtime.Parser;
 import org.antlr.runtime.tree.Tree;
 
-public abstract class Antlr3AbstractSyntaxTree extends AbstractSyntaxTree {
+public abstract class Antlr3AbstractQueryProcessor extends AbstractQueryProcessor {
 	
 	public Parser parser;
 
diff --git a/src/main/java/de/ids_mannheim/korap/query/serialize/Antlr4AbstractSyntaxTree.java b/src/main/java/de/ids_mannheim/korap/query/serialize/Antlr4AbstractQueryProcessor.java
similarity index 97%
rename from src/main/java/de/ids_mannheim/korap/query/serialize/Antlr4AbstractSyntaxTree.java
rename to src/main/java/de/ids_mannheim/korap/query/serialize/Antlr4AbstractQueryProcessor.java
index 8b726c0..da09f3c 100644
--- a/src/main/java/de/ids_mannheim/korap/query/serialize/Antlr4AbstractSyntaxTree.java
+++ b/src/main/java/de/ids_mannheim/korap/query/serialize/Antlr4AbstractQueryProcessor.java
@@ -9,7 +9,7 @@
 import org.antlr.v4.runtime.Parser;
 import org.antlr.v4.runtime.tree.ParseTree;
 
-public abstract class Antlr4AbstractSyntaxTree extends AbstractSyntaxTree {
+public abstract class Antlr4AbstractQueryProcessor extends AbstractQueryProcessor {
 
 	/**
 	 * Parser object deriving the ANTLR parse tree.
diff --git a/src/main/java/de/ids_mannheim/korap/query/serialize/CollectionQueryBuilder2.java b/src/main/java/de/ids_mannheim/korap/query/serialize/CollectionQueryBuilder2.java
index 333fd30..324a939 100644
--- a/src/main/java/de/ids_mannheim/korap/query/serialize/CollectionQueryBuilder2.java
+++ b/src/main/java/de/ids_mannheim/korap/query/serialize/CollectionQueryBuilder2.java
@@ -48,7 +48,7 @@
     }
 
     public CollectionQueryBuilder2 setQuery(String query) throws QueryException {
-        CollectionQueryTree tree = new CollectionQueryTree();
+        CollectionQueryProcessor tree = new CollectionQueryProcessor();
         tree.process(query);
         this.groups = tree.getRequestMap();
         return this;
diff --git a/src/main/java/de/ids_mannheim/korap/query/serialize/CollectionQueryBuilder3.java b/src/main/java/de/ids_mannheim/korap/query/serialize/CollectionQueryBuilder3.java
index f3a1bbd..d87da4a 100644
--- a/src/main/java/de/ids_mannheim/korap/query/serialize/CollectionQueryBuilder3.java
+++ b/src/main/java/de/ids_mannheim/korap/query/serialize/CollectionQueryBuilder3.java
@@ -68,7 +68,7 @@
         if (!this.rq.isEmpty())
             list.addAll(this.rq);
         System.out.println("RAW QUERY " + this.builder.toString());
-        CollectionQueryTree tree = new CollectionQueryTree(this.verbose);
+        CollectionQueryProcessor tree = new CollectionQueryProcessor(this.verbose);
         tree.process(this.builder.toString());
         list.add(tree.getRequestMap());
         return list;
diff --git a/src/main/java/de/ids_mannheim/korap/query/serialize/CollectionQueryTree.java b/src/main/java/de/ids_mannheim/korap/query/serialize/CollectionQueryProcessor.java
similarity index 97%
rename from src/main/java/de/ids_mannheim/korap/query/serialize/CollectionQueryTree.java
rename to src/main/java/de/ids_mannheim/korap/query/serialize/CollectionQueryProcessor.java
index 82a46aa..932e34d 100644
--- a/src/main/java/de/ids_mannheim/korap/query/serialize/CollectionQueryTree.java
+++ b/src/main/java/de/ids_mannheim/korap/query/serialize/CollectionQueryProcessor.java
@@ -20,9 +20,9 @@
  * @author hanl, bingel
  * @date 06/12/2013
  */
-public class CollectionQueryTree extends Antlr4AbstractSyntaxTree {
+public class CollectionQueryProcessor extends Antlr4AbstractQueryProcessor {
 
-	private static Logger log = LoggerFactory.getLogger(CollectionQueryTree.class);
+	private static Logger log = LoggerFactory.getLogger(CollectionQueryProcessor.class);
     private Parser parser;
     private static boolean verbose;
     private List<ParseTree> visited = new ArrayList<ParseTree>();
@@ -41,14 +41,14 @@
     LinkedList<Integer> objectsToPop = new LinkedList<Integer>();
     Integer stackedObjects = 0;
     
-    public CollectionQueryTree() {
+    public CollectionQueryProcessor() {
 	}
     
-    public CollectionQueryTree(boolean verbose) {
-    	CollectionQueryTree.verbose = verbose;
+    public CollectionQueryProcessor(boolean verbose) {
+    	CollectionQueryProcessor.verbose = verbose;
 	}
     
-    public CollectionQueryTree(String query) throws QueryException {
+    public CollectionQueryProcessor(String query) throws QueryException {
 		process(query);
 	}
 
diff --git a/src/main/java/de/ids_mannheim/korap/query/serialize/CosmasTree.java b/src/main/java/de/ids_mannheim/korap/query/serialize/Cosmas2QueryProcessor.java
similarity index 99%
rename from src/main/java/de/ids_mannheim/korap/query/serialize/CosmasTree.java
rename to src/main/java/de/ids_mannheim/korap/query/serialize/Cosmas2QueryProcessor.java
index c2d846a..7023a94 100644
--- a/src/main/java/de/ids_mannheim/korap/query/serialize/CosmasTree.java
+++ b/src/main/java/de/ids_mannheim/korap/query/serialize/Cosmas2QueryProcessor.java
@@ -27,9 +27,9 @@
  * @author Joachim Bingel (bingel@ids-mannheim.de)
  * @version 0.2
  */
-public class CosmasTree extends Antlr3AbstractSyntaxTree {
+public class Cosmas2QueryProcessor extends Antlr3AbstractQueryProcessor {
 
-	private static Logger log = LoggerFactory.getLogger(CosmasTree.class);
+	private static Logger log = LoggerFactory.getLogger(Cosmas2QueryProcessor.class);
 
 	LinkedList<LinkedHashMap[]> toWrapStack = new LinkedList<LinkedHashMap[]>();
 	/**
@@ -96,7 +96,7 @@
 	 * @param parser The ANTLR parser instance that generated the parse tree
 	 * @throws QueryException
 	 */
-	public CosmasTree(String query) throws QueryException {
+	public Cosmas2QueryProcessor(String query) throws QueryException {
 		this.query = query;
 		process(query);
 		log.info(">>> " + requestMap.get("query") + " <<<");
diff --git a/src/main/java/de/ids_mannheim/korap/query/serialize/CQLTree.java b/src/main/java/de/ids_mannheim/korap/query/serialize/CqlQueryProcessor.java
similarity index 96%
rename from src/main/java/de/ids_mannheim/korap/query/serialize/CQLTree.java
rename to src/main/java/de/ids_mannheim/korap/query/serialize/CqlQueryProcessor.java
index 15e4f0e..5a06c1a 100644
--- a/src/main/java/de/ids_mannheim/korap/query/serialize/CQLTree.java
+++ b/src/main/java/de/ids_mannheim/korap/query/serialize/CqlQueryProcessor.java
@@ -13,7 +13,7 @@
  * @author margaretha
  * @date 	09.05.14
  */
-public class CQLTree extends AbstractSyntaxTree {
+public class CqlQueryProcessor extends AbstractQueryProcessor {
 
     private static final String VERSION_1_1 = "1.1";
     private static final String VERSION_1_2 = "1.2";
@@ -31,15 +31,15 @@
     private String version;
     private boolean isCaseSensitive; // default true
     
-    public CQLTree(String query) throws QueryException {
+    public CqlQueryProcessor(String query) throws QueryException {
         this(query, VERSION_1_2, true);
     }
 
-    public CQLTree(String query, String version) throws QueryException {
+    public CqlQueryProcessor(String query, String version) throws QueryException {
         this(query, version, true);                
     }
 
-    public CQLTree(String query, String version, boolean isCaseSensitive) throws QueryException {
+    public CqlQueryProcessor(String query, String version, boolean isCaseSensitive) throws QueryException {
         this.version = version;
         this.isCaseSensitive = isCaseSensitive;
         this.requestMap = new LinkedHashMap<>();
diff --git a/src/main/java/de/ids_mannheim/korap/query/serialize/PoliqarpPlusTree.java b/src/main/java/de/ids_mannheim/korap/query/serialize/PoliqarpPlusQueryProcessor.java
similarity index 98%
rename from src/main/java/de/ids_mannheim/korap/query/serialize/PoliqarpPlusTree.java
rename to src/main/java/de/ids_mannheim/korap/query/serialize/PoliqarpPlusQueryProcessor.java
index f3c51e3..d509ccb 100644
--- a/src/main/java/de/ids_mannheim/korap/query/serialize/PoliqarpPlusTree.java
+++ b/src/main/java/de/ids_mannheim/korap/query/serialize/PoliqarpPlusQueryProcessor.java
@@ -19,9 +19,9 @@
  *
  * @author Joachim Bingel (bingel@ids-mannheim.de)
  */
-public class PoliqarpPlusTree extends Antlr4AbstractSyntaxTree {
+public class PoliqarpPlusQueryProcessor extends Antlr4AbstractQueryProcessor {
 
-	private static Logger log = LoggerFactory.getLogger(PoliqarpPlusTree.class);
+	private static Logger log = LoggerFactory.getLogger(PoliqarpPlusQueryProcessor.class);
 	private int classCounter = 128;
 
 	/**
@@ -33,7 +33,7 @@
 	 * @param query The syntax tree as returned by ANTLR
 	 * @throws QueryException
 	 */
-	public PoliqarpPlusTree(String query) throws QueryException {
+	public PoliqarpPlusQueryProcessor(String query) throws QueryException {
 		process(query);
 		log.info(">>> " + requestMap.get("query") + " <<<");
 	}
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 fb8104f..e590957 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
@@ -25,21 +25,21 @@
 		POLIQARPPLUS, ANNIS, COSMAS2, CQL, CQP
 	}
 	
-	static HashMap<String, Class<? extends AbstractSyntaxTree>> qlProcessorAssignment;
+	static HashMap<String, Class<? extends AbstractQueryProcessor>> qlProcessorAssignment;
 
 	static {
-		qlProcessorAssignment  = new HashMap<String, Class<? extends AbstractSyntaxTree>>();
-		qlProcessorAssignment.put("poliqarpplus", PoliqarpPlusTree.class);
-		qlProcessorAssignment.put("cosmas2", CosmasTree.class);
-		qlProcessorAssignment.put("annis", AqlTree.class);
-		qlProcessorAssignment.put("cql", CQLTree.class);
+		qlProcessorAssignment  = new HashMap<String, Class<? extends AbstractQueryProcessor>>();
+		qlProcessorAssignment.put("poliqarpplus", PoliqarpPlusQueryProcessor.class);
+		qlProcessorAssignment.put("cosmas2", Cosmas2QueryProcessor.class);
+		qlProcessorAssignment.put("annis", AnnisQueryProcessor.class);
+		qlProcessorAssignment.put("cql", CqlQueryProcessor.class);
 	}
 	
 	
     private Logger qllogger = KorAPLogger.initiate("ql");
     public static String queryLanguageVersion;
 
-    private AbstractSyntaxTree ast;
+    private AbstractQueryProcessor ast;
     private Object collection;
     private Map meta;
     private List errors;
@@ -101,15 +101,15 @@
     public void run(String query, String queryLanguage, String outFile)
             throws IOException, QueryException {
         if (queryLanguage.equals("poliqarp")) {
-            ast = new PoliqarpPlusTree(query);
+            ast = new PoliqarpPlusQueryProcessor(query);
         } else if (queryLanguage.toLowerCase().equals("cosmas2")) {
-            ast = new CosmasTree(query);
+            ast = new Cosmas2QueryProcessor(query);
         } else if (queryLanguage.toLowerCase().equals("poliqarpplus")) {
-            ast = new PoliqarpPlusTree(query);
+            ast = new PoliqarpPlusQueryProcessor(query);
         } else if (queryLanguage.toLowerCase().equals("cql")) {
-            ast = new CQLTree(query);
+            ast = new CqlQueryProcessor(query);
         } else if (queryLanguage.toLowerCase().equals("annis")) {
-            ast = new AqlTree(query);
+            ast = new AnnisQueryProcessor(query);
         } else {
             throw new QueryException(queryLanguage + " is not a supported query language!");
         }
@@ -124,18 +124,18 @@
 
         try {
             if (ql.equalsIgnoreCase("poliqarp")) {
-                ast = new PoliqarpPlusTree(query);
+                ast = new PoliqarpPlusQueryProcessor(query);
             } else if (ql.equalsIgnoreCase("cosmas2")) {
-                ast = new CosmasTree(query);
+                ast = new Cosmas2QueryProcessor(query);
             } else if (ql.equalsIgnoreCase("poliqarpplus")) {
-                ast = new PoliqarpPlusTree(query);
+                ast = new PoliqarpPlusQueryProcessor(query);
             } else if (ql.equalsIgnoreCase("cql")) {
                 if (version == null)
-                    ast = new CQLTree(query);
+                    ast = new CqlQueryProcessor(query);
                 else
-                    ast = new CQLTree(query, version);
+                    ast = new CqlQueryProcessor(query, version);
             } else if (ql.equalsIgnoreCase("annis")) {
-                ast = new AqlTree(query);
+                ast = new AnnisQueryProcessor(query);
             } else {
                 throw new QueryException(ql + " is not a supported query language!");
             }
@@ -229,7 +229,7 @@
     }
 
     public QuerySerializer setCollection(String collection) throws QueryException {
-        CollectionQueryTree tree = new CollectionQueryTree();
+        CollectionQueryProcessor tree = new CollectionQueryProcessor();
         Map collectionRequest = tree.getRequestMap();
         tree.process(collection);
         this.collection = collectionRequest.get("collection");
diff --git a/src/main/java/de/ids_mannheim/korap/query/serialize/TreeTemplate.java b/src/main/java/de/ids_mannheim/korap/query/serialize/TreeTemplate.java
index d64e983..1c20f96 100644
--- a/src/main/java/de/ids_mannheim/korap/query/serialize/TreeTemplate.java
+++ b/src/main/java/de/ids_mannheim/korap/query/serialize/TreeTemplate.java
@@ -24,7 +24,7 @@
  * @author bingel
  *
  */
-public class TreeTemplate extends Antlr4AbstractSyntaxTree {
+public class TreeTemplate extends Antlr4AbstractQueryProcessor {
 	/**
 	 * Keeps track of open node categories
 	 */
