diff --git a/src/main/java/de/ids_mannheim/korap/query/serialize/AnnisQueryProcessor.java b/src/main/java/de/ids_mannheim/korap/query/serialize/AnnisQueryProcessor.java
index ee56fac..6c930ab 100644
--- a/src/main/java/de/ids_mannheim/korap/query/serialize/AnnisQueryProcessor.java
+++ b/src/main/java/de/ids_mannheim/korap/query/serialize/AnnisQueryProcessor.java
@@ -26,6 +26,7 @@
 import de.ids_mannheim.korap.query.object.KoralMatchOperator;
 import de.ids_mannheim.korap.query.object.KoralOperation;
 import de.ids_mannheim.korap.query.object.KoralTermGroupRelation;
+import de.ids_mannheim.korap.query.object.KoralType;
 import de.ids_mannheim.korap.query.parse.annis.AqlLexer;
 import de.ids_mannheim.korap.query.parse.annis.AqlParser;
 import de.ids_mannheim.korap.query.serialize.util.Antlr4DescriptiveErrorListener;
@@ -437,8 +438,21 @@
                 term.putAll(qNameParse);
             }
             else {
+
                 object = KoralObjectGenerator.makeSpan();
-                object.putAll(qNameParse);
+                if (node.getChildCount() == 3) {
+                    Map<String, Object> term = KoralObjectGenerator.makeTerm();
+                    term.putAll(parseTextSpec(node.getChild(2)));
+                    term.putAll(qNameParse);
+                    object.put("wrap", term);
+                }
+                // EM: koral:span without key but layer and foundry should generally 
+                // not be allowed except as relation type
+                else{
+                    addError(StatusCodes.MALFORMED_QUERY,
+                            "Malformed query.");
+                }
+                
             }
         }
         else if (firstChildNodeCat.equals("textSpec")) {
@@ -448,20 +462,14 @@
             term.put("layer", "orth");
             term.putAll(parseTextSpec(node.getChild(0)));
         }
-        if (node.getChildCount() == 3) {
-            // (foundry/)?layer=key specification
-            if (object.get("@type").equals("koral:token")) {
-                HashMap<String, Object> term = (HashMap<String, Object>) object
-                        .get("wrap");
-                term.putAll(parseTextSpec(node.getChild(2)));
-                term.put("match", parseMatchOperator(
-                        getFirstChildWithCat(node, "eqOperator")));
-            }
-            else {
-                object.putAll(parseTextSpec(node.getChild(2)));
-                object.put("match", parseMatchOperator(
-                        getFirstChildWithCat(node, "eqOperator")));
-            }
+        // (foundry/)?layer=key specification
+        if (object.get("@type").equals("koral:token")
+                && node.getChildCount() == 3) {
+            HashMap<String, Object> term = (HashMap<String, Object>) object
+                    .get("wrap");
+            term.putAll(parseTextSpec(node.getChild(2)));
+            term.put("match", parseMatchOperator(
+                    getFirstChildWithCat(node, "eqOperator")));
         }
 
         // Check if there's a unary relation defined for this node
@@ -718,8 +726,13 @@
                     if (operatorGroup.containsKey("edgeValue")) {
                         String edgeValue = (String) operatorGroup
                                 .get("edgeValue");
-                        attribute = inheritFoundryAndLayer(edgeValue, operand1,
-                                operand2);
+                        attribute = KoralObjectGenerator.makeTerm();
+                        attribute.put("key", edgeValue);
+                        attribute.put("match",
+                                KoralMatchOperator.EQUALS.toString());
+                        if (!inheritFoundryAndLayer(attribute, operand1)){
+                            inheritFoundryAndLayer(attribute, operand2);
+                        }
                     }
 
                     if (operatorGroup.containsKey("edgeType") && !operatorGroup
@@ -898,10 +911,11 @@
     private String searchMap (Map<String, Object> operand, String key) {
 
         String type = (String) operand.get("@type");
-        if (type.equals("koral:token") && operand.containsKey("wrap")) {
+        if (type.equals(KoralType.TOKEN.toString())
+                && operand.containsKey("wrap")) {
             return searchMap((Map<String, Object>) operand.get("wrap"), key);
         }
-        else if (type.equals("koral:span")) {
+        else if (type.equals(KoralType.SPAN.toString())) {
             // EM: legacy, should be deprecated later
             if (operand.containsKey(key)) {
                 return (String) operand.get(key);
@@ -911,7 +925,7 @@
                         key);
             }
         }
-        else if (type.equals("koral:term")) {
+        else if (type.equals(KoralType.TERM.toString())) {
             if (operand.containsKey(key)) {
                 return (String) operand.get(key);
             }
@@ -926,32 +940,25 @@
     }
 
 
-    private Map<String, Object> inheritFoundryAndLayer (String edgeValue,
-            Map<String, Object> operand1, Map<String, Object> operand2) {
+    private boolean inheritFoundryAndLayer (
+            Map<String, Object> attribute, Map<String, Object> operand) {
 
-        Map<String, Object> attribute = KoralObjectGenerator.makeTerm();
-        attribute.put("key", edgeValue);
-        attribute.put("match", KoralMatchOperator.EQUALS.toString());
-
-        if (operand1.containsKey("layer")) {
-            attribute.put("layer", operand1.get("layer"));
-            if (operand1.containsKey("foundry")) {
-                attribute.put("foundry", operand1.get("foundry"));
+        if (operand.containsKey("wrap")) {
+            operand = (Map<String, Object>) operand.get("wrap");
+            if (operand.containsKey("layer")) {
+                attribute.put("layer", operand.get("layer"));
+                if (operand.containsKey("foundry")) {
+                    attribute.put("foundry", operand.get("foundry"));
+                }
+                return true;
             }
-        }
-        else if (operand2.containsKey("layer")) {
-            attribute.put("layer", operand2.get("layer"));
-            if (operand2.containsKey("foundry")) {
-                attribute.put("foundry", operand2.get("foundry"));
+            else if (operand.containsKey("foundry")) {
+                attribute.put("foundry", operand.get("foundry"));
+                return true;
             }
+            
         }
-        else if (operand1.containsKey("foundry")) {
-            attribute.put("foundry", operand1.get("foundry"));
-        }
-        else if (operand2.containsKey("foundry")) {
-            attribute.put("foundry", operand2.get("foundry"));
-        }
-        return attribute;
+        return false;
     }
 
 
@@ -1005,7 +1012,7 @@
 
             if (edgeSpecNode != null) {
                 Map<String, Object> edgeSpec = parseEdgeSpec(edgeSpecNode);
-                relation.put("edgeValue", edgeSpec.get("value"));
+                relation.put("edgeValue", edgeSpec.get("key"));
             }
             if (star != null)
                 relation.put("boundary",
@@ -1144,24 +1151,25 @@
     private Map<String, Object> parseEdgeAnno (ParseTree edgeAnnoSpec) {
         Map<String, Object> edgeAnno = KoralObjectGenerator.makeTerm();
         ParseTree textSpecNode = getFirstChildWithCat(edgeAnnoSpec, "textSpec");
-//        ignored
-//        ParseTree keyNode = getFirstChildWithCat(edgeAnnoSpec, "key");
-//        ParseTree layerNode = getFirstChildWithCat(edgeAnnoSpec, "layer");
-//        ParseTree foundryNode = getFirstChildWithCat(edgeAnnoSpec, "foundry");
+        //        ignored
+        //        ParseTree keyNode = getFirstChildWithCat(edgeAnnoSpec, "key");
+        //        ParseTree layerNode = getFirstChildWithCat(edgeAnnoSpec, "layer");
+        //        ParseTree foundryNode = getFirstChildWithCat(edgeAnnoSpec, "foundry");
         ParseTree matchOperatorNode = getFirstChildWithCat(edgeAnnoSpec,
                 "eqOperator");
-//        if (foundryNode != null)
-//            edgeAnno.put("foundry",
-//                    foundryNode.getChild(0).toStringTree(parser));
-//        if (layerNode != null)
-//            edgeAnno.put("layer", layerNode.getChild(0).toStringTree(parser));
-//        if (keyNode != null)
-//            edgeAnno.put("key", keyNode.getChild(0).toStringTree(parser));
+        //        if (foundryNode != null)
+        //            edgeAnno.put("foundry",
+        //                    foundryNode.getChild(0).toStringTree(parser));
+        //        if (layerNode != null)
+        //            edgeAnno.put("layer", layerNode.getChild(0).toStringTree(parser));
+        //        if (keyNode != null)
+        //            edgeAnno.put("key", keyNode.getChild(0).toStringTree(parser));
         edgeAnno.putAll(parseTextSpec(textSpecNode, "key"));
         edgeAnno.put("match", parseMatchOperator(matchOperatorNode));
         return edgeAnno;
     }
 
+
     private Map<String, Object> boundaryFromRangeSpec (ParseTree rangeSpec) {
         return boundaryFromRangeSpec(rangeSpec, true);
     }
diff --git a/src/test/java/de/ids_mannheim/korap/query/test/annis/AnnisQueryProcessorTest.java b/src/test/java/de/ids_mannheim/korap/query/test/annis/AnnisQueryProcessorTest.java
index effe058..58a1ea5 100644
--- a/src/test/java/de/ids_mannheim/korap/query/test/annis/AnnisQueryProcessorTest.java
+++ b/src/test/java/de/ids_mannheim/korap/query/test/annis/AnnisQueryProcessorTest.java
@@ -62,11 +62,12 @@
         res = mapper.readTree(qs.toJSON());
         assertEquals("koral:token", res.at("/query/@type").asText());
 
+        // EM: this query should not be allowed
         query = "Mann"; // no special keyword -> defaults to layer name
         qs.setQuery(query, "annis");
         res = mapper.readTree(qs.toJSON());
         assertEquals("koral:span", res.at("/query/@type").asText());
-        assertEquals("Mann", res.at("/query/layer").asText());
+        assertEquals(StatusCodes.MALFORMED_QUERY, res.at("/errors/0/0").asInt());
     }
 
 
@@ -81,15 +82,15 @@
         qs.setQuery(query, "annis");
         res = mapper.readTree(qs.toJSON());
         assertEquals("koral:span", res.at("/query/@type").asText());
-        assertEquals("np", res.at("/query/key").asText());
-        assertEquals("c", res.at("/query/layer").asText());
+        assertEquals("np", res.at("/query/wrap/key").asText());
+        assertEquals("c", res.at("/query/wrap/layer").asText());
 
         query = "cat=\"NP\"";
         qs.setQuery(query, "annis");
         res = mapper.readTree(qs.toJSON());
         assertEquals("koral:span", res.at("/query/@type").asText());
-        assertEquals("NP", res.at("/query/key").asText());
-        assertEquals("c", res.at("/query/layer").asText());
+        assertEquals("NP", res.at("/query/wrap/key").asText());
+        assertEquals("c", res.at("/query/wrap/layer").asText());
     }
 
 
@@ -120,16 +121,16 @@
         qs.setQuery(query, "annis");
         res = mapper.readTree(qs.toJSON());
         assertEquals("koral:span", res.at("/query/@type").asText());
-        assertEquals("np", res.at("/query/key").asText());
-        assertEquals("c", res.at("/query/layer").asText());
+        assertEquals("np", res.at("/query/wrap/key").asText());
+        assertEquals("c", res.at("/query/wrap/layer").asText());
 
         query = "cnx/c=\"np\"";
         qs.setQuery(query, "annis");
         res = mapper.readTree(qs.toJSON());
         assertEquals("koral:span", res.at("/query/@type").asText());
-        assertEquals("np", res.at("/query/key").asText());
-        assertEquals("c", res.at("/query/layer").asText());
-        assertEquals("cnx", res.at("/query/foundry").asText());
+        assertEquals("np", res.at("/query/wrap/key").asText());
+        assertEquals("c", res.at("/query/wrap/layer").asText());
+        assertEquals("cnx", res.at("/query/wrap/foundry").asText());
 
         query = "tt/pos=\"np\"";
         qs.setQuery(query, "annis");
@@ -154,7 +155,7 @@
         assertEquals("frames:startsWith", res.at("/query/frames/0").asText());
         assertEquals("koral:span", res.at("/query/operands/0/operands/0/@type")
                 .asText());
-        assertEquals("S", res.at("/query/operands/0/operands/0/key").asText());
+        assertEquals("S", res.at("/query/operands/0/operands/0/wrap/key").asText());
         assertEquals("koral:group", res
                 .at("/query/operands/0/operands/1/@type").asText());
         assertEquals("operation:class",
@@ -165,7 +166,7 @@
                 res.at("/query/operands/0/operands/1/operands/0/@type")
                         .asText());
         assertEquals("NP", res
-                .at("/query/operands/0/operands/1/operands/0/key").asText());
+                .at("/query/operands/0/operands/1/operands/0/wrap/key").asText());
         assertEquals("koral:reference", res.at("/query/operands/1/@type")
                 .asText());
         assertEquals("operation:focus", res.at("/query/operands/1/operation")
@@ -185,7 +186,7 @@
         assertEquals("frames:endsWith", res.at("/query/frames/0").asText());
         assertEquals("koral:span", res.at("/query/operands/0/operands/0/@type")
                 .asText());
-        assertEquals("S", res.at("/query/operands/0/operands/0/key").asText());
+        assertEquals("S", res.at("/query/operands/0/operands/0/wrap/key").asText());
         assertEquals("koral:group", res
                 .at("/query/operands/0/operands/1/@type").asText());
         assertEquals("operation:class",
@@ -196,7 +197,7 @@
                 res.at("/query/operands/0/operands/1/operands/0/@type")
                         .asText());
         assertEquals("NP", res
-                .at("/query/operands/0/operands/1/operands/0/key").asText());
+                .at("/query/operands/0/operands/1/operands/0/wrap/key").asText());
         assertEquals("koral:reference", res.at("/query/operands/1/@type")
                 .asText());
         assertEquals("operation:focus", res.at("/query/operands/1/operation")
@@ -414,17 +415,17 @@
                         .asText());
         assertEquals(
                 "A",
-                res.at("/query/operands/0/operands/0/operands/0/operands/0/operands/0/operands/0/key")
+                res.at("/query/operands/0/operands/0/operands/0/operands/0/operands/0/operands/0/wrap/key")
                         .asText());
         assertEquals(
                 "B",
-                res.at("/query/operands/0/operands/0/operands/0/operands/0/operands/1/key")
+                res.at("/query/operands/0/operands/0/operands/0/operands/0/operands/1/wrap/key")
                         .asText());
         assertEquals(
                 "C",
-                res.at("/query/operands/0/operands/0/operands/1/operands/0/key")
+                res.at("/query/operands/0/operands/0/operands/1/operands/0/wrap/key")
                         .asText());
-        assertEquals("D", res.at("/query/operands/1/key").asText());
+        assertEquals("D", res.at("/query/operands/1/wrap/key").asText());
 
         query = "cat=\"A\" & cat=\"B\" & cat=\"C\" & cat=\"D\" & cat=\"E\" & cat=\"F\" & #1 . #2 & #3 . #4 & #5 . #6 & #1 > #3 & #3 > #5";
         // the resulting query should be equivalent to PQ+:   focus(3:dominates(focus(2:dominates(focus(1:{1:<A>}<B>),{2:<C>}))<D>,{3:<E>}))<F> 
@@ -460,25 +461,25 @@
                         .asText());
         assertEquals(
                 "A",
-                res.at("/query/operands/0/operands/0/operands/0/operands/0/operands/0/operands/0/operands/0/operands/0/operands/0/operands/0/key")
+                res.at("/query/operands/0/operands/0/operands/0/operands/0/operands/0/operands/0/operands/0/operands/0/operands/0/operands/0/wrap/key")
                         .asText());
         assertEquals(
                 "B",
-                res.at("/query/operands/0/operands/0/operands/0/operands/0/operands/0/operands/0/operands/0/operands/0/operands/1/key")
+                res.at("/query/operands/0/operands/0/operands/0/operands/0/operands/0/operands/0/operands/0/operands/0/operands/1/wrap/key")
                         .asText());
         assertEquals(
                 "C",
-                res.at("/query/operands/0/operands/0/operands/0/operands/0/operands/0/operands/0/operands/1/operands/0/key")
+                res.at("/query/operands/0/operands/0/operands/0/operands/0/operands/0/operands/0/operands/1/operands/0/wrap/key")
                         .asText());
         assertEquals(
                 "D",
-                res.at("/query/operands/0/operands/0/operands/0/operands/0/operands/1/key")
+                res.at("/query/operands/0/operands/0/operands/0/operands/0/operands/1/wrap/key")
                         .asText());
         assertEquals(
                 "E",
-                res.at("/query/operands/0/operands/0/operands/1/operands/0/key")
+                res.at("/query/operands/0/operands/0/operands/1/operands/0/wrap/key")
                         .asText());
-        assertEquals("F", res.at("/query/operands/1/key").asText());
+        assertEquals("F", res.at("/query/operands/1/wrap/key").asText());
 
         query = "cat=\"A\" & cat=\"B\" & cat=\"C\" & cat=\"D\" & #1 . #2 & #3 . #4";
         // the resulting query should be equivalent to PQ+:  focus(2:dominates(focus(1:{1:<A>}<B>),{2:<C>}))<D> 
@@ -613,7 +614,7 @@
                         .asText());
         assertEquals(
                 "NP",
-                res.at("/query/operands/0/operands/0/operands/0/operands/0/operands/1/key")
+                res.at("/query/operands/0/operands/0/operands/0/operands/0/operands/1/wrap/key")
                         .asText());
         assertEquals("koral:group",
                 res.at("/query/operands/0/operands/0/operands/1/@type")
@@ -626,9 +627,9 @@
                         .asInt());
         assertEquals(
                 "VP",
-                res.at("/query/operands/0/operands/0/operands/1/operands/0/key")
+                res.at("/query/operands/0/operands/0/operands/1/operands/0/wrap/key")
                         .asText());
-        assertEquals("PP", res.at("/query/operands/1/key").asText());
+        assertEquals("PP", res.at("/query/operands/1/wrap/key").asText());
 
     }
 
@@ -662,7 +663,7 @@
                         .asText());
         assertEquals(
                 "NP",
-                res.at("/query/operands/0/operands/0/operands/0/operands/0/key")
+                res.at("/query/operands/0/operands/0/operands/0/operands/0/wrap/key")
                         .asText());
         assertEquals("operation:class",
                 res.at("/query/operands/0/operands/0/operands/1/operation")
@@ -672,7 +673,7 @@
                         .asInt());
         assertEquals(
                 "VP",
-                res.at("/query/operands/0/operands/0/operands/1/operands/0/key")
+                res.at("/query/operands/0/operands/0/operands/1/operands/0/wrap/key")
                         .asText());
         assertEquals("koral:reference", res.at("/query/operands/1/@type")
                 .asText());
@@ -756,9 +757,9 @@
                         .asInt());
         assertEquals(
                 "VP",
-                res.at("/query/operands/0/operands/0/operands/1/operands/0/key")
+                res.at("/query/operands/0/operands/0/operands/1/operands/0/wrap/key")
                         .asText());
-        assertEquals("NP", res.at("/query/operands/1/key").asText());
+        assertEquals("NP", res.at("/query/operands/1/wrap/key").asText());
 
         query = "node & \"Mann\" & #2 _o_ #1";
         qs.setQuery(query, "annis");
@@ -909,7 +910,7 @@
                         .asInt());
         assertEquals(
                 "NP",
-                res.at("/query/operands/0/operands/0/operands/0/operands/0/operands/0/operands/0/key")
+                res.at("/query/operands/0/operands/0/operands/0/operands/0/operands/0/operands/0/wrap/key")
                         .asText());
         assertEquals(
                 130,
@@ -950,9 +951,9 @@
         qs.setQuery(query, "annis");
         res = mapper.readTree(qs.toJSON());
         assertEquals("koral:span", res.at("/query/@type").asText());
-        assertEquals("cnx", res.at("/query/foundry").asText());
-        assertEquals("c", res.at("/query/layer").asText());
-        assertEquals("NP", res.at("/query/key").asText());
+        assertEquals("cnx", res.at("/query/wrap/foundry").asText());
+        assertEquals("c", res.at("/query/wrap/layer").asText());
+        assertEquals("NP", res.at("/query/wrap/key").asText());
         assertEquals("koral:term", res.at("/query/attr/@type").asText());
         assertEquals("koral:boundary", res.at("/query/attr/tokenarity/@type")
                 .asText());
@@ -969,10 +970,10 @@
         qs.setQuery(query, "annis");
         res = mapper.readTree(qs.toJSON());
         assertEquals("koral:span", res.at("/query/@type").asText());
-        assertEquals("cnx", res.at("/query/foundry").asText());
-        assertEquals("c", res.at("/query/layer").asText());
-        assertEquals("NP", res.at("/query/key").asText());
-        assertEquals("match:eq", res.at("/query/match").asText());
+        assertEquals("cnx", res.at("/query/wrap/foundry").asText());
+        assertEquals("c", res.at("/query/wrap/layer").asText());
+        assertEquals("NP", res.at("/query/wrap/key").asText());
+        assertEquals("match:eq", res.at("/query/wrap/match").asText());
         assertEquals("koral:term", res.at("/query/attr/@type").asText());
         assertEquals(true, res.at("/query/attr/root").asBoolean());
 
@@ -980,9 +981,9 @@
         qs.setQuery(query, "annis");
         res = mapper.readTree(qs.toJSON());
         assertEquals("koral:span", res.at("/query/@type").asText());
-        assertEquals("cnx", res.at("/query/foundry").asText());
-        assertEquals("c", res.at("/query/layer").asText());
-        assertEquals("NP", res.at("/query/key").asText());
+        assertEquals("cnx", res.at("/query/wrap/foundry").asText());
+        assertEquals("c", res.at("/query/wrap/layer").asText());
+        assertEquals("NP", res.at("/query/wrap/key").asText());
         assertEquals("koral:termGroup", res.at("/query/attr/@type").asText());
         assertEquals("koral:term", res.at("/query/attr/operands/0/@type")
                 .asText());
@@ -1000,9 +1001,9 @@
         assertEquals("koral:group", res.at("/query/@type").asText());
         assertEquals("operation:hierarchy", res.at("/query/operation").asText());
         assertEquals("koral:span", res.at("/query/operands/0/@type").asText());
-        assertEquals("cnx", res.at("/query/operands/0/foundry").asText());
-        assertEquals("c", res.at("/query/operands/0/layer").asText());
-        assertEquals("NP", res.at("/query/operands/0/key").asText());
+        assertEquals("cnx", res.at("/query/operands/0/wrap/foundry").asText());
+        assertEquals("c", res.at("/query/operands/0/wrap/layer").asText());
+        assertEquals("NP", res.at("/query/operands/0/wrap/key").asText());
         assertEquals("koral:term", res.at("/query/operands/0/attr/@type")
                 .asText());
         assertEquals("koral:boundary",
@@ -1051,13 +1052,13 @@
                 res.at("/query/operands/0/operands/0/operands/1/@type")
                         .asText());
         assertEquals("NP", res
-                .at("/query/operands/0/operands/0/operands/1/key").asText());
+                .at("/query/operands/0/operands/0/operands/1/wrap/key").asText());
         assertEquals("c",
-                res.at("/query/operands/0/operands/0/operands/1/layer")
+                res.at("/query/operands/0/operands/0/operands/1/wrap/layer")
                         .asText());
         assertEquals("koral:span", res.at("/query/operands/1/@type").asText());
-        assertEquals("VP", res.at("/query/operands/1/key").asText());
-        assertEquals("c", res.at("/query/operands/1/layer").asText());
+        assertEquals("VP", res.at("/query/operands/1/wrap/key").asText());
+        assertEquals("c", res.at("/query/operands/1/wrap/layer").asText());
 
         query = "cat=\"NP\" & cat=\"VP\" & cat=\"PP\" & #1 $ #2 $ #3";
         qs.setQuery(query, "annis");
@@ -1085,11 +1086,11 @@
         assertEquals("operation:disjunction", res.at("/query/operation")
                 .asText());
         assertEquals("koral:span", res.at("/query/operands/0/@type").asText());
-        assertEquals("NP", res.at("/query/operands/0/key").asText());
-        assertEquals("c", res.at("/query/operands/0/layer").asText());
+        assertEquals("NP", res.at("/query/operands/0/wrap/key").asText());
+        assertEquals("c", res.at("/query/operands/0/wrap/layer").asText());
         assertEquals("koral:span", res.at("/query/operands/1/@type").asText());
-        assertEquals("VP", res.at("/query/operands/1/key").asText());
-        assertEquals("c", res.at("/query/operands/1/layer").asText());
+        assertEquals("VP", res.at("/query/operands/1/wrap/key").asText());
+        assertEquals("c", res.at("/query/operands/1/wrap/layer").asText());
     }
 
     //		
diff --git a/src/test/java/de/ids_mannheim/korap/query/test/annis/DominanceTests.java b/src/test/java/de/ids_mannheim/korap/query/test/annis/DominanceTests.java
index 6993424..659522d 100644
--- a/src/test/java/de/ids_mannheim/korap/query/test/annis/DominanceTests.java
+++ b/src/test/java/de/ids_mannheim/korap/query/test/annis/DominanceTests.java
@@ -82,9 +82,9 @@
                 res.at("/query/operation").asText());
         assertEquals("edgetype", res.at("/query/edgeType").asText());
         assertEquals("koral:span", res.at("/query/operands/0/@type").asText());
-        assertEquals("np", res.at("/query/operands/0/key").asText());
-        assertEquals("c", res.at("/query/operands/0/layer").asText());
-        assertEquals("cnx", res.at("/query/operands/0/foundry").asText());
+        assertEquals("np", res.at("/query/operands/0/wrap/key").asText());
+        assertEquals("c", res.at("/query/operands/0/wrap/layer").asText());
+        assertEquals("cnx", res.at("/query/operands/0/wrap/foundry").asText());
         assertEquals("koral:span", res.at("/query/operands/1/@type").asText());
     }
 
@@ -101,9 +101,9 @@
         assertEquals("edgetype", res.at("/query/edgeType").asText());
         assertEquals("koral:span", res.at("/query/operands/0/@type").asText());
         assertEquals("koral:span", res.at("/query/operands/1/@type").asText());
-        assertEquals("np", res.at("/query/operands/1/key").asText());
-        assertEquals("c", res.at("/query/operands/1/layer").asText());
-        assertEquals("cnx", res.at("/query/operands/1/foundry").asText());
+        assertEquals("np", res.at("/query/operands/1/wrap/key").asText());
+        assertEquals("c", res.at("/query/operands/1/wrap/layer").asText());
+        assertEquals("cnx", res.at("/query/operands/1/wrap/foundry").asText());
     }
 
 
@@ -119,11 +119,11 @@
                 res.at("/query/operation").asText());
         assertEquals("edgetype", res.at("/query/edgeType").asText());
         assertEquals("koral:span", res.at("/query/operands/0/@type").asText());
-        assertEquals("PP", res.at("/query/operands/0/key").asText());
-        assertEquals("c", res.at("/query/operands/0/layer").asText());
+        assertEquals("PP", res.at("/query/operands/0/wrap/key").asText());
+        assertEquals("c", res.at("/query/operands/0/wrap/layer").asText());
         assertEquals("koral:span", res.at("/query/operands/1/@type").asText());
-        assertEquals("NP", res.at("/query/operands/1/key").asText());
-        assertEquals("c", res.at("/query/operands/1/layer").asText());
+        assertEquals("NP", res.at("/query/operands/1/wrap/key").asText());
+        assertEquals("c", res.at("/query/operands/1/wrap/layer").asText());
     }
 
 
@@ -138,8 +138,8 @@
                 res.at("/query/operation").asText());
         assertEquals("edgetype", res.at("/query/edgeType").asText());
         assertEquals("koral:span", res.at("/query/operands/0/@type").asText());
-        assertEquals("NP", res.at("/query/operands/0/key").asText());
-        assertEquals("c", res.at("/query/operands/0/layer").asText());
+        assertEquals("NP", res.at("/query/operands/0/wrap/key").asText());
+        assertEquals("c", res.at("/query/operands/0/wrap/layer").asText());
         assertEquals("koral:token", res.at("/query/operands/1/@type").asText());
         assertEquals("ADJ", res.at("/query/operands/1/wrap/key").asText());
         assertEquals("p", res.at("/query/operands/1/wrap/layer").asText());
@@ -173,13 +173,13 @@
                 res.at("/query/operation").asText());
         assertEquals("koral:span", res.at("/query/operands/0/@type").asText());
         assertEquals("koral:span", res.at("/query/operands/0/@type").asText());
-        assertEquals("vp", res.at("/query/operands/0/key").asText());
-        assertEquals("c", res.at("/query/operands/0/layer").asText());
-        assertEquals("cnx", res.at("/query/operands/0/foundry").asText());
+        assertEquals("vp", res.at("/query/operands/0/wrap/key").asText());
+        assertEquals("c", res.at("/query/operands/0/wrap/layer").asText());
+        assertEquals("cnx", res.at("/query/operands/0/wrap/foundry").asText());
         assertEquals("koral:span", res.at("/query/operands/1/@type").asText());
-        assertEquals("np", res.at("/query/operands/1/key").asText());
-        assertEquals("c", res.at("/query/operands/1/layer").asText());
-        assertEquals("cnx", res.at("/query/operands/1/foundry").asText());
+        assertEquals("np", res.at("/query/operands/1/wrap/key").asText());
+        assertEquals("c", res.at("/query/operands/1/wrap/layer").asText());
+        assertEquals("cnx", res.at("/query/operands/1/wrap/foundry").asText());
     }
 
 
@@ -210,8 +210,8 @@
         qs.setQuery(query, "annis");
         res = mapper.readTree(qs.toJSON());
 
-        assertEquals("c", res.at("/query/operands/0/layer").asText());
-        assertEquals("c", res.at("/query/operands/1/layer").asText());
+        assertEquals("c", res.at("/query/operands/0/wrap/layer").asText());
+        assertEquals("c", res.at("/query/operands/1/wrap/layer").asText());
         assertEquals(2, res.at("/query/boundary/min").asInt());
         assertEquals(4, res.at("/query/boundary/max").asInt());
         assertTrue(res.at("/errors").isMissingNode());
@@ -234,8 +234,8 @@
         assertEquals("operation:hierarchy",
                 res.at("/query/operation").asText());
         assertEquals("koral:span", res.at("/query/operands/0/@type").asText());
-        assertEquals("NP", res.at("/query/operands/0/key").asText());
-        assertEquals("c", res.at("/query/operands/0/layer").asText());
+        assertEquals("NP", res.at("/query/operands/0/wrap/key").asText());
+        assertEquals("c", res.at("/query/operands/0/wrap/layer").asText());
         assertEquals("koral:token", res.at("/query/operands/1/@type").asText());
         assertEquals("ADJ", res.at("/query/operands/1/wrap/key").asText());
         assertEquals("p", res.at("/query/operands/1/wrap/layer").asText());
@@ -259,11 +259,11 @@
         assertEquals("operation:hierarchy",
                 res.at("/query/operation").asText());
         assertEquals("koral:span", res.at("/query/operands/0/@type").asText());
-        assertEquals("NP", res.at("/query/operands/0/key").asText());
-        assertEquals("c", res.at("/query/operands/0/layer").asText());
+        assertEquals("NP", res.at("/query/operands/0/wrap/key").asText());
+        assertEquals("c", res.at("/query/operands/0/wrap/layer").asText());
         assertEquals("koral:span", res.at("/query/operands/1/@type").asText());
-        assertEquals("PP", res.at("/query/operands/1/key").asText());
-        assertEquals("c", res.at("/query/operands/1/layer").asText());
+        assertEquals("PP", res.at("/query/operands/1/wrap/key").asText());
+        assertEquals("c", res.at("/query/operands/1/wrap/layer").asText());
     }
 
 
@@ -307,10 +307,8 @@
         assertEquals("match:eq",
                 res.at("/query/operands/0/attr/match").asText());
         assertEquals("SBJ", res.at("/query/operands/0/attr/key").asText());
-        assertTrue("SBJ",
-                res.at("/query/operands/0/attr/layer").isMissingNode());
-        assertTrue("SBJ",
-                res.at("/query/operands/0/attr/value").isMissingNode());
+        assertEquals("orth", res.at("/query/operands/0/attr/layer").asText());
+        assertTrue(res.at("/query/operands/0/attr/value").isMissingNode());
     }
 
 
@@ -318,7 +316,6 @@
     public void testDominanceWithEdgetypeAndLabel ()
             throws JsonProcessingException, IOException {
         query = "node & node & #2 >edgetype[func=\"SBJ\"] #1";
-        //coordinates the func=SB term and requires a "c"-layer term (consituency relation/dominance)
         qs.setQuery(query, "annis");
         res = mapper.readTree(qs.toJSON());
         assertEquals("operation:hierarchy",
@@ -337,16 +334,15 @@
     @Test
     public void testDominanceWithTypeAndLabel ()
             throws JsonProcessingException, IOException {
-        query = "rst & rst & #2 >rst[rst:name=\"evidence\"] #1";
-        //coordinates the func=SB term and requires a "c"-layer term (consituency relation/dominance)
+        query = "rst=\"segment\" & rst=\"segment\" & #2 >rst[rst:name=\"evidence\"] #1";
         qs.setQuery(query, "annis");
         res = mapper.readTree(qs.toJSON());
         assertEquals("operation:relation", res.at("/query/operation").asText());
         assertEquals("rst", res.at("/query/edgeType").asText());
         assertEquals("koral:span", res.at("/query/operands/0/@type").asText());
-        assertEquals("rst", res.at("/query/operands/0/layer").asText());
+        assertEquals("rst", res.at("/query/operands/0/wrap/layer").asText());
         assertEquals("koral:span", res.at("/query/operands/1/@type").asText());
-        assertEquals("rst", res.at("/query/operands/1/layer").asText());
+        assertEquals("rst", res.at("/query/operands/1/wrap/layer").asText());
 
         assertEquals("koral:term",
                 res.at("/query/relType/wrap/@type").asText());
@@ -388,10 +384,12 @@
                 res.at("/query/operands/0/operands/0/operation").asText());
         assertEquals("koral:span", res
                 .at("/query/operands/0/operands/0/operands/0/@type").asText());
-        assertEquals("c", res
-                .at("/query/operands/0/operands/0/operands/0/layer").asText());
+        assertEquals("c",
+                res.at("/query/operands/0/operands/0/operands/0/wrap/layer")
+                        .asText());
         assertEquals("CP",
-                res.at("/query/operands/0/operands/0/operands/0/key").asText());
+                res.at("/query/operands/0/operands/0/operands/0/wrap/key")
+                        .asText());
         assertEquals("koral:group", res
                 .at("/query/operands/0/operands/0/operands/1/@type").asText());
         assertEquals("operation:class",
@@ -401,7 +399,7 @@
                 res.at("/query/operands/0/operands/0/operands/1/classOut")
                         .asInt());
         assertEquals("VP",
-                res.at("/query/operands/0/operands/0/operands/1/operands/0/key")
+                res.at("/query/operands/0/operands/0/operands/1/operands/0/wrap/key")
                         .asText());
     }
 
@@ -423,8 +421,8 @@
                 res.at("/query/operands/0/operation").asText());
         assertEquals(130, res.at("/query/operands/0/classRef/0").asInt());
 
-        assertEquals("c", res.at("/query/operands/1/layer").asText());
-        assertEquals("DP", res.at("/query/operands/1/key").asText());
+        assertEquals("c", res.at("/query/operands/1/wrap/layer").asText());
+        assertEquals("DP", res.at("/query/operands/1/wrap/key").asText());
 
         assertEquals("koral:group",
                 res.at("/query/operands/0/operands/0/@type").asText());
@@ -443,14 +441,14 @@
                 res.at("/query/operands/0/operands/0/operands/1/classOut")
                         .asInt());
         assertEquals("NP",
-                res.at("/query/operands/0/operands/0/operands/1/operands/0/key")
+                res.at("/query/operands/0/operands/0/operands/1/operands/0/wrap/key")
                         .asText());
 
         assertEquals("c",
-                res.at("/query/operands/0/operands/0/operands/0/operands/0/operands/0/layer")
+                res.at("/query/operands/0/operands/0/operands/0/operands/0/operands/0/wrap/layer")
                         .asText());
         assertEquals("CP",
-                res.at("/query/operands/0/operands/0/operands/0/operands/0/operands/0/key")
+                res.at("/query/operands/0/operands/0/operands/0/operands/0/operands/0/wrap/key")
                         .asText());
         assertEquals("koral:group",
                 res.at("/query/operands/0/operands/0/operands/0/operands/0/operands/1/@type")
@@ -462,7 +460,7 @@
                 res.at("/query/operands/0/operands/0/operands/0/operands/0/operands/1/classOut")
                         .asInt());
         assertEquals("VP",
-                res.at("/query/operands/0/operands/0/operands/0/operands/0/operands/1/operands/0/key")
+                res.at("/query/operands/0/operands/0/operands/0/operands/0/operands/1/operands/0/wrap/key")
                         .asText());
 
     }
