diff --git a/src/main/java/de/ids_mannheim/korap/KrillQuery.java b/src/main/java/de/ids_mannheim/korap/KrillQuery.java
index 8853064..0bcde58 100644
--- a/src/main/java/de/ids_mannheim/korap/KrillQuery.java
+++ b/src/main/java/de/ids_mannheim/korap/KrillQuery.java
@@ -319,11 +319,19 @@
 
                 // Term has attribute
                 if (json.has("attr")) {
+
+                    JsonNode wrap = json.get("wrap");
                     JsonNode attrNode = json.get("attr");
+                    if (wrap.has("foundry")) {
+                        ((ObjectNode)attrNode).put("foundry", wrap.get("foundry"));
+                    };
+                    if (wrap.has("layer")) {
+                        ((ObjectNode)attrNode).put("layer", wrap.get("layer"));
+                    };
                     ((ObjectNode)json.get("wrap")).put("attr",attrNode);
                 };
                 
-                // Get wrapped token
+// Get wrapped token
                 return this._segFromJson(json.get("wrap"));
 
             case "koral:span":                
@@ -340,7 +348,15 @@
 
                 // Term has attribute
                 if (json.has("attr")) {
+
+                    JsonNode wrap = json.get("wrap");
                     JsonNode attrNode = json.get("attr");
+                    if (wrap.has("foundry")) {
+                        ((ObjectNode)attrNode).put("foundry", wrap.get("foundry"));
+                    };
+                    if (wrap.has("layer")) {
+                        ((ObjectNode)attrNode).put("layer", wrap.get("layer"));
+                    };
                     ((ObjectNode)json.get("wrap")).put("attr",attrNode);
                 };
                 
@@ -609,7 +625,7 @@
             }
             else{
                 relationTermWrapper =
-                        _termFromJson(relation.get("wrap"), false, direction);
+                    _termFromJson(relation.get("wrap"), false, false, direction);
                 spanRelationWrapper = new SpanRelationWrapper(relationTermWrapper, operand1, operand2);
             }
             
@@ -1121,16 +1137,22 @@
 
     private SpanQueryWrapper _termFromJson (JsonNode json)
             throws QueryException {
-        return this._termFromJson(json, false, null);
+        return this._termFromJson(json, false, false, null);
     }
     private SpanQueryWrapper _termFromJson (JsonNode json, boolean isSpan)
             throws QueryException {
-        return this._termFromJson(json, isSpan, null);
+        return this._termFromJson(json, isSpan, false, null);
     }
 
+    // Attribute term
+    private SpanQueryWrapper _termFromJson (JsonNode json, boolean isSpan, boolean isAttr)
+            throws QueryException {
+        return this._termFromJson(json, isSpan, true, null);
+    }
+    
     // Deserialize koral:term
     // TODO: Not optimal as it does not respect non-term
-    private SpanQueryWrapper _termFromJson (JsonNode json, boolean isSpan, RelationDirection direction)
+    private SpanQueryWrapper _termFromJson (JsonNode json, boolean isSpan, boolean isAttr, RelationDirection direction)
             throws QueryException {
 
         if (!json.has("@type")) {
@@ -1204,7 +1226,9 @@
 
         if (direction != null)
             value.append(direction.value());
-            
+        else if (isAttr)
+            value.append("@:");
+        
         if (json.has("foundry") &&
             json.get("foundry").asText().length() > 0) {
             value.append(json.get("foundry").asText()).append('/');
@@ -1467,7 +1491,7 @@
         if ("relation:and".equals(relation)) {
             List<SpanQueryWrapper> wrapperList = new ArrayList<SpanQueryWrapper>();
             for (JsonNode operand : operands) {
-                attrWrapper = _termFromJson(operand);
+                attrWrapper = _termFromJson(operand, false, true);
                 if (attrWrapper == null) {
                     throw new QueryException(747, "Attribute is null");
                 }
@@ -1486,7 +1510,7 @@
             SpanAlterQueryWrapper saq = new SpanAlterQueryWrapper(field);
             SpanWithAttributeQueryWrapper saqw;
             for (JsonNode operand : operands) {
-                attrWrapper = _termFromJson(operand);
+                attrWrapper = _termFromJson(operand, false, true);
                 if (attrWrapper == null) {
                     throw new QueryException(747, "Attribute is null");
                 }
@@ -1512,7 +1536,7 @@
             throws QueryException {
 
         if (attrNode.has("key")) {
-            return _termFromJson(attrNode);
+            return _termFromJson(attrNode, false, true);
         }
         else if (attrNode.has("tokenarity") || attrNode.has("arity")) {
             this.addWarning(770, "Arity attributes are currently not supported"
diff --git a/src/main/java/de/ids_mannheim/korap/index/TermInfo.java b/src/main/java/de/ids_mannheim/korap/index/TermInfo.java
index 60b177d..efb5535 100644
--- a/src/main/java/de/ids_mannheim/korap/index/TermInfo.java
+++ b/src/main/java/de/ids_mannheim/korap/index/TermInfo.java
@@ -94,7 +94,7 @@
                 // pos
                 this.type = "attr";
                 ttype = 4;
-                tterm = tterm.substring(1);
+                tterm = tterm.substring(2);
                 break;
 
             default:
diff --git a/src/main/java/de/ids_mannheim/korap/query/spans/AttributeSpans.java b/src/main/java/de/ids_mannheim/korap/query/spans/AttributeSpans.java
index 5ee5e75..0e96652 100644
--- a/src/main/java/de/ids_mannheim/korap/query/spans/AttributeSpans.java
+++ b/src/main/java/de/ids_mannheim/korap/query/spans/AttributeSpans.java
@@ -164,8 +164,10 @@
         ByteBuffer payloadBuffer = ByteBuffer.wrap(payload.get(0));
 
         byte payloadTypeIdentifier = payloadBuffer.get(0);
-        short spanId = payloadBuffer.getShort(5);
-        int end = payloadBuffer.getInt(1);
+        // short spanId = payloadBuffer.getShort(5);
+        // int end = payloadBuffer.getInt(1);
+        short spanId = payloadBuffer.getShort(1);
+        int end = payloadBuffer.getInt(3);
 
         return new CandidateAttributeSpan(firstSpans, payloadTypeIdentifier,
                 spanId, end);
diff --git a/src/test/java/de/ids_mannheim/korap/index/TestAttributeIndex.java b/src/test/java/de/ids_mannheim/korap/index/TestAttributeIndex.java
index 3fc9ea5..b69bc75 100644
--- a/src/test/java/de/ids_mannheim/korap/index/TestAttributeIndex.java
+++ b/src/test/java/de/ids_mannheim/korap/index/TestAttributeIndex.java
@@ -2,6 +2,8 @@
 
 import static org.junit.Assert.assertEquals;
 
+import static de.ids_mannheim.korap.TestSimple.*;
+
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
@@ -11,13 +13,17 @@
 import org.apache.lucene.search.spans.SpanTermQuery;
 import org.junit.Test;
 
+import de.ids_mannheim.korap.Krill;
 import de.ids_mannheim.korap.KrillIndex;
 import de.ids_mannheim.korap.query.SpanAttributeQuery;
 import de.ids_mannheim.korap.query.SpanElementQuery;
 import de.ids_mannheim.korap.query.SpanNextQuery;
 import de.ids_mannheim.korap.query.SpanWithAttributeQuery;
+import de.ids_mannheim.korap.query.wrap.SpanQueryWrapper;
 import de.ids_mannheim.korap.response.Result;
 
+import de.ids_mannheim.korap.util.QueryException;
+
 public class TestAttributeIndex {
 
     private KrillIndex ki = new KrillIndex();
@@ -37,28 +43,28 @@
                 + "<>:s$<b>64<i>0<i>5<i>5<b>0<s>3|"
                 + "<>:div$<b>64<i>0<i>2<i>2<b>0<s>2|"
                 + "<>:div$<b>64<i>0<i>3<i>3<b>0<s>1|"
-                + "@:class=header$<b>17<i>3<s>1|@:class=header$<b>17<i>2<s>2]"
+                + "@:class=header$<b>17<s>1<i>3|@:class=header$<b>17<s>2<i>2]"
 
                 + "[(1-2)s:e|_2$<i>1<i>2|"
-                + "<>:a$<b>64<i>1<i>2<i>2<b>0<s>1|@:class=header$<b>17<i>2<s>1]"
+                + "<>:a$<b>64<i>1<i>2<i>2<b>0<s>1|@:class=header$<b>17<s>1<i>2]"
 
                 + "[(2-3)s:e|_3$<i>2<i>3|"
-                + "<>:div$<b>64<i>2<i>5<i>5<b>0<s>1|@:class=time$<b>17<i>5<s>1]"
+                + "<>:div$<b>64<i>2<i>5<i>5<b>0<s>1|@:class=time$<b>17<s>1<i>5]"
 
                 + "[(3-4)s:a|_4$<i>3<i>4|"
-                + "<>:div$<b>64<i>3<i>5<i>5<b>0<s>1|@:class=header$<b>17<i>5<s>1]"
+                + "<>:div$<b>64<i>3<i>5<i>5<b>0<s>1|@:class=header$<b>17<s>1<i>5]"
 
                 + "[(4-5)s:b|_5$<i>4<i>5|" + "<>:a$<b>64<i>4<i>5<i>5<b>0<s>2|"
                 + "<>:div$<b>64<i>4<i>5<i>5<b>0<s>1|"
-                + "@:class=header$<b>17<i>5<s>2]"
+                + "@:class=header$<b>17<s>2<i>5]"
 
                 + "[(5-6)s:d|_6$<i>5<i>6|" + "<>:div$<b>64<i>5<i>6<i>6<b>0<s>2|"
                 + "<>:s$<b>64<i>5<i>6<i>6<b>0<s>1|"
-                + "@:class=header$<b>17<i>6<s>1]"
+                + "@:class=header$<b>17<s>1<i>6]"
 
                 + "[(6-7)s:d|_7$<i>6<i>7|" + "<>:s$<b>64<i>6<i>7<i>7<b>0<s>2|"
                 + "<>:div$<b>64<i>6<i>7<i>7<b>0<s>1"
-                + "|@:class=header$<b>17<i>7<s>1|@:class=header$<b>17<i>7<s>2]");
+                + "|@:class=header$<b>17<s>1<i>7|@:class=header$<b>17<s>2<i>7]");
 
         return fd;
     }
@@ -70,26 +76,26 @@
         fd.addTV("base", "bcbabd", "[(0-1)s:b|_1$<i>0<i>1|"
                 + "<>:s<b>64<i>0<i>5<i>5<b>0<s>2|"
                 + "<>:div$<b>64<i>0<i>3<i>3<b>0<s>1|"
-                + "@:class=header$<b>17<i>3<s>1|@:class=title$<b>17<i>3<s>1|@:class=book$<b>17<i>3<s>1]"
+                + "@:class=header$<b>17<s>1<i>3|@:class=title$<b>17<s>1<i>3|@:class=book$<b>17<s>1<i>3]"
 
                 + "[(1-2)s:c|_2$<i>1<i>2|" + "<>:div$<b>64<i>1<i>2<i>2<b>0<s>1|"
-                + "@:class=header$<b>17<i>2<s>1|@:class=title$<b>17<i>2<s>1]"
+                + "@:class=header$<b>17<s>1<i>2|@:class=title$<b>17<s>1<i>2]"
 
                 + "[(2-3)s:b|_3$<i>2<i>3|"
-                + "<>:div$<b>64<i>2<i>5<i>5<b>0<s>1|@:class=book$<b>17<i>5<s>1]"
+                + "<>:div$<b>64<i>2<i>5<i>5<b>0<s>1|@:class=book$<b>17<s>1<i>5]"
 
                 + "[(3-4)s:a|_4$<i>3<i>4|"
-                + "<>:div$<b>64<i>3<i>5<i>5<b>0<s>1|@:class=title$<b>17<i>5<s>1]"
+                + "<>:div$<b>64<i>3<i>5<i>5<b>0<s>1|@:class=title$<b>17<s>1<i>5]"
 
                 + "[(4-5)s:b|_5$<i>4<i>5|" + "<>:div$<b>64<i>4<i>5<i>5<b>0<s>1|"
-                + "@:class=header$<b>17<i>5<s>1|@:class=book$<b>17<i>5<s>1|@:class=title$<b>17<i>5<s>1]"
+                + "@:class=header$<b>17<s>1<i>5|@:class=book$<b>17<s>1<i>5|@:class=title$<b>17<s>1<i>5]"
 
                 + "[(5-6)s:d|_6$<i>5<i>6|" + "<>:s$<b>64<i>5<i>6<i>6<b>0<s>2|"
-                + "<>:div$<b>64<i>5<i>6<i>6<b>0<s>1|@:class=header$<b>17<i>6<s>1]"
+                + "<>:div$<b>64<i>5<i>6<i>6<b>0<s>1|@:class=header$<b>17<s>1<i>6]"
 
                 + "[(6-7)s:d|_7$<i>6<i>7|" + "<>:s$<b>64<i>6<i>7<i>7<b>0<s>2|"
                 + "<>:div$<b>64<i>6<i>7<i>7<b>0<s>1|"
-                + "@:class=header$<b>17<i>7<s>1|@:class=title$<b>17<i>7<s>1]");
+                + "@:class=header$<b>17<s>1<i>7|@:class=title$<b>17<s>1<i>7]");
 
         return fd;
     }
@@ -101,28 +107,28 @@
         fd.addTV("base", "bcbabd", "[(0-1)s:b|_1$<i>0<i>1|"
                 + "<>:div$<b>64<i>0<i>3<i>3<b>0<s>2|"
                 + "<>:s$<b>64<i>0<i>5<i>5<b>0<s>1|"
-                + "@:class=header$<b>17<i>3<s>2|@:class=book$<b>17<i>5<s>1|@:class=book$<b>17<i>3<s>2]"
+                + "@:class=header$<b>17<s>2<i>3|@:class=book$<b>17<s>1<i>5|@:class=book$<b>17<s>2<i>3]"
 
                 + "[(1-2)s:e|_2$<i>1<i>2|" + "<>:a$<b>64<i>1<i>2<i>2<b>0<s>2|"
                 + "<>:div$<b>64<i>1<i>2<i>2<b>0<s>1|"
-                + "@:class=book$<b>17<i>2<s>2|@:class=header$<b>17<i>2<s>1]"
+                + "@:class=book$<b>17<s>2<i>2|@:class=header$<b>17<s>1<i>2]"
 
                 + "[(2-3)s:b|_3$<i>2<i>3|" + "<>:a$<b>64<i>1<i>2<i>2<b>0<s>2|"
                 + "<>:div$<b>64<i>2<i>3<i>5<b>0<s>1|"
-                + "@:class=header$<b>17<i>2<s>2|@:class=book$<b>17<i>5<s>1]"
+                + "@:class=header$<b>17<s>2<i>2|@:class=book$<b>17<s>1<i>5]"
 
                 + "[(3-4)s:a|_4$<i>3<i>4|"
-                + "<>:div$<b>64<i>3<i>5<i>5<b>0<s>1|@:class=title$<b>17<i>5<s>1]"
+                + "<>:div$<b>64<i>3<i>5<i>5<b>0<s>1|@:class=title$<b>17<s>1<i>5]"
 
                 + "[(4-5)s:b|_5$<i>4<i>5|"
-                + "<>:div$<b>64<i>4<i>5<i>5<b>0<s>1|@:class=header$<b>17<i>5<s>1|@:class=book$<b>17<i>5<s>1]"
+                + "<>:div$<b>64<i>4<i>5<i>5<b>0<s>1|@:class=header$<b>17<s>1<i>5|@:class=book$<b>17<s>1<i>5]"
 
                 + "[(5-6)s:d|_6$<i>5<i>6|" + "<>:s$<b>64<i>5<i>6<i>6<b>0<s>1|"
-                + "<>:div$<b>64<i>5<i>6<i>6<b>0<s>1|@:class=header$<b>17<i>6<s>1]"
+                + "<>:div$<b>64<i>5<i>6<i>6<b>0<s>1|@:class=header$<b>17<s>1<i>6]"
 
                 + "[(6-7)s:d|_7$<i>6<i>7|" + "<>:s$<b>64<i>6<i>7<i>7<b>0<s>2|"
                 + "<>:div$<b>64<i>6<i>7<i>7<b>0<s>1|"
-                + "@:class=header$<b>17<i>7<s>1|@:class=book$<b>17<i>7<s>2]");
+                + "@:class=header$<b>17<s>1<i>7|@:class=book$<b>17<s>2<i>7]");
 
         return fd;
     }
@@ -223,6 +229,11 @@
         sq = new SpanWithAttributeQuery(new SpanElementQuery("base", "div"),
                 sql, true);
 
+        assertEquals("spanElementWithAttribute(<base:div />, "+
+                     "[spanAttribute(base:@:class=header), "+
+                     "spanAttribute(!base:@:class=book), "+
+                     "spanAttribute(!base:@:class=title)])", sq.toString());
+        
         kr = ki.search(sq, (short) 10);
         assertEquals((long) 1, kr.getTotalResults());
         assertEquals(5, kr.getMatch(0).getStartPos());
@@ -452,4 +463,45 @@
         kr = ki.search(swaq, (short) 10);
     }
 
+
+    @Test
+    public void testAttributeRealIndex () throws QueryException, IOException {
+        // Construct index
+        KrillIndex ki = new KrillIndex();
+        // Indexing test files
+        ki.addDoc(getClass().getResourceAsStream("/others/REDEW-DOC1-00001.json.gz"),
+                    true);
+        ki.commit();
+
+        SpanTermQuery stq = new SpanTermQuery(new Term("tokens", "@:dereko/s:mode:direct"));
+        kr = ki.search(stq, (short) 10);
+        assertEquals((long) 4, kr.getTotalResults());
+        
+
+        SpanAttributeQuery saq = new SpanAttributeQuery(
+            new SpanTermQuery(new Term("tokens", "@:dereko/s:mode:direct")), true);
+
+        SpanElementQuery seq = new SpanElementQuery("tokens", "dereko/s:said");
+
+        // div with @class=header
+        SpanQuery sq = new SpanWithAttributeQuery(seq, saq, true);
+        assertEquals("spanElementWithAttribute(<tokens:dereko/s:said />, " +
+                     "spanAttribute(tokens:@:dereko/s:mode:direct))", sq.toString());
+
+        kr = ki.search(sq, (short) 10);
+        assertEquals((long) 4, kr.getTotalResults());
+
+
+        String filepath = getClass()
+                .getResource(
+                        "/queries/attribute/element-single-attribute-2.jsonld")
+                .getFile();
+
+        SpanQueryWrapper sqw = getJsonQuery(filepath);        
+        Krill krill = new Krill(sqw);
+        assertEquals("spanElementWithAttribute(<tokens:dereko/s:said />, " +
+                     "spanAttribute(tokens:@:dereko/s:mode:direct))", krill.getSpanQuery().toString());
+        Result kr = krill.apply(ki);
+        assertEquals(kr.getTotalResults(), 4);
+    }
 }
diff --git a/src/test/java/de/ids_mannheim/korap/index/TestRelationIndex.java b/src/test/java/de/ids_mannheim/korap/index/TestRelationIndex.java
index 8f50f41..e232499 100644
--- a/src/test/java/de/ids_mannheim/korap/index/TestRelationIndex.java
+++ b/src/test/java/de/ids_mannheim/korap/index/TestRelationIndex.java
@@ -161,8 +161,8 @@
                         + "<:child-of$<b>35<i>0<i>38<i>0<i>3<i>7<i>0<i>1<s>2<s>3<s>0|"
                         + "<:child-of$<b>35<i>0<i>38<i>4<i>9<i>7<i>1<i>7<s>2<s>2<s>0|"
                         + "<:dep$<b>32<i>0<s>1<s>1<s>0|"
-                        + "@:func=sbj$<b>18<i>7<s>4|" // attribute belongs to a relation
-                        + "@:case=nominative$<b>18<i>1<s>3]" // attribute belongs to a relation node
+                        + "@:func=sbj$<b>18<s>4<i>7|" // attribute belongs to a relation
+                        + "@:case=nominative$<b>18<s>3<i>1]" // attribute belongs to a relation node
 
                         + "[(1-2)s:kaufe|_1$<i>4<i>9|pos:V$<s>1|<>:vp$<b>64<i>4<i>38<i>7<b>0<s>2|"
                         + ">:child-of$<b>35<i>4<i>38<i>0<i>38<i>7<i>0<i>7<s>2<s>2<s>0|"
@@ -185,16 +185,16 @@
                         + "<:child-of$<b>35<i>10<i>38<i>21<i>38<i>7<i>4<i>7<s>4<s>2<s>0|"
                         + ">:parent-of$<b>35<i>10<i>38<i>21<i>38<i>7<i>4<i>7<s>4<s>2<s>0|"
                         + "<:dep$<b>32<i>3<s>1<s>1<s>3|"
-                        + "@:func=head$<b>18<i>4<s>3|"
-                        + "@:case=accusative$<b>18<i>4<s>3|" // attribute belongs to a relation node
-                        + "@:case=accusative$<b>18<i>7<s>2]" // attribute belongs to a relation node
+                        + "@:func=head$<b>18<s>3<i>4|"
+                        + "@:case=accusative$<b>18<s>3<i>4|" // attribute belongs to a relation node
+                        + "@:case=accusative$<b>18<s>2<i>7]" // attribute belongs to a relation node
 
                         + "[(3-4)s:Blümen|_3$<i>14<i>20|pos:NN$<s>1|"
                         + ">:child-of$<b>33<i>10<i>24<i>2<i>4<s>1<s>3<s>0|"
                         + "<:dep$<b>32<i>1<s>1<s>1<s>0|"
                         + ">:dep$<b>32<i>2<s>1<s>1<s>2|"
                         + ">:dep$<b>32<i>4<s>1<s>1<s>0|"
-                        + "@:func=obj$<b>18<i>4<s>2]"
+                        + "@:func=obj$<b>18<s>2<i>4]"
 
                         + "[(4-5)s:für|_4$<i>21<i>24|pos:PREP$<s>1|<>:pp$<b>64<i>21<i>38<i>7<b>0<s>2|"
                         + ">:child-of$<b>33<i>21<i>38<i>4<i>7<s>1<s>2<s>0|"
@@ -212,8 +212,8 @@
                         + "<:child-of$<b>34<i>25<i>38<i>7<i>5<s>2<s>1<s>0|"
                         + "<:child-of$<b>34<i>25<i>38<i>7<i>6<s>2<s>1<s>0|"
                         + "<:dep$<b>32<i>6<s>1<s>1<s>3<s>0|"
-                        + "@:func=head$<b>18<i>7<s>3|"
-                        + "@:case=accusative$<b>18<i>7<s>2]" // attribute belongs to a relation node
+                        + "@:func=head$<b>18<s>3<i>7|"
+                        + "@:case=accusative$<b>18<s>2<i>7]" // attribute belongs to a relation node
 
                         + "[(6-7)s:Mutter.|_6$<i>31<i>38|pos:NN$<s>1|"
                         + ">:child-of$<b>33<i>25<i>38<i>5<i>7<s>1<s>2<s>0|"
diff --git a/src/test/java/de/ids_mannheim/korap/index/TestTermInfo.java b/src/test/java/de/ids_mannheim/korap/index/TestTermInfo.java
index 1458000..a0080ab 100644
--- a/src/test/java/de/ids_mannheim/korap/index/TestTermInfo.java
+++ b/src/test/java/de/ids_mannheim/korap/index/TestTermInfo.java
@@ -124,5 +124,20 @@
         assertEquals("startChar", term.getStartChar(), 20);
         assertEquals("endChar", term.getEndChar(), 25);
         assertEquals("depth", term.getDepth(), 0);
+
+        bb.clear();
+        bb.put((byte) 17);   // att PTI
+        bb.putShort((short)1);
+        bb.putInt(25);
+        term = new TermInfo("@:dereko/s:mode:direct", 20, bb).analyze();
+        assertEquals("type", term.getType(), "attr");
+        assertEquals("value", term.getValue(), "mode:direct");
+        assertEquals("foundry", term.getFoundry(), "dereko");
+        assertEquals("layer", term.getLayer(), "s");
+        assertEquals("startPos", term.getStartPos(), 20);
+        assertEquals("endPos", term.getEndPos(), 20);
+        assertEquals("startChar", term.getStartChar(), -1);
+        assertEquals("endChar", term.getEndChar(), -1);
+        assertEquals("depth", term.getDepth(), 0);
     };
 };
diff --git a/src/test/java/de/ids_mannheim/korap/query/TestSpanRelationQueryJSON.java b/src/test/java/de/ids_mannheim/korap/query/TestSpanRelationQueryJSON.java
index 3a55968..99b2e54 100644
--- a/src/test/java/de/ids_mannheim/korap/query/TestSpanRelationQueryJSON.java
+++ b/src/test/java/de/ids_mannheim/korap/query/TestSpanRelationQueryJSON.java
@@ -29,7 +29,7 @@
         assertEquals(
                 "focus(#[1,2]spanSegment(<tokens:c:vp />, "
                         + "focus(#2: spanSegment(spanRelation(tokens:>:mate/d:HEAD), "
-                        + "spanWithAttribute(spanAttribute(tokens:type:case:accusative))),sorting)),sorting)",
+                        + "spanWithAttribute(spanAttribute(tokens:@:type:case:accusative))),sorting)),sorting)",
                 sq.toString());
     }
 
@@ -47,7 +47,7 @@
                 // +
                 // "<tokens:c:vp />)), spanWithAttribute(spanAttribute(tokens:type:case:accusative))))",
                 //
-                "focus(#[1,2]spanSegment(spanWithAttribute(spanAttribute(tokens:type:case:accusative)), "
+                "focus(#[1,2]spanSegment(spanWithAttribute(spanAttribute(tokens:@:type:case:accusative)), "
                         + "focus(#2: spanSegment(spanRelation(tokens:>:mate/d:HEAD), "
                         + "<tokens:c:vp />),sorting)),sorting)",
                 sq.toString());
@@ -70,7 +70,7 @@
                 "focus(#[1,2]spanSegment(<tokens:c:vp />, "
                         + "focus(#2: spanSegment(spanRelation(tokens:>:mate/d:HEAD), "
                         + "spanElementWithAttribute(<tokens:c:np />, "
-                        + "spanAttribute(tokens:type:case:accusative))),sorting)),sorting)",
+                        + "spanAttribute(tokens:@:type:case:accusative))),sorting)),sorting)",
                 sq.toString());
     }
 
@@ -86,10 +86,10 @@
         SpanQuery sq = sqwi.toQuery();
         assertEquals(
                 "focus(#[1,2]spanSegment(spanElementWithAttribute(<tokens:c: />, "
-                        + "spanAttribute(tokens:type:case:accusative)), "
+                        + "spanAttribute(tokens:@:type:case:accusative)), "
                         + "focus(#2: spanSegment(spanRelation(tokens:>:mate/d:HEAD), "
                         + "spanElementWithAttribute(<tokens:c: />, "
-                        + "spanAttribute(tokens:type:case:accusative))),sorting)),sorting)",
+                        + "spanAttribute(tokens:@:type:case:accusative))),sorting)),sorting)",
                 sq.toString());
     }
 
@@ -173,7 +173,7 @@
         SpanQuery sq = sqwi.toQuery();
         assertEquals(
                 "focus(#[1,2]spanSegment(<tokens:c:vp />, focus(#2: spanSegment(spanRelation(tokens:>:mate/d:HEAD), "
-                        + "spanElementWithAttribute(<tokens:c:s />, spanAttribute(tokens:type:top))),sorting)),sorting)",
+                        + "spanElementWithAttribute(<tokens:c:s />, spanAttribute(tokens:@:type:top))),sorting)),sorting)",
                 sq.toString());
     }
 
diff --git a/src/test/java/de/ids_mannheim/korap/query/TestSpanWithAttributeJSON.java b/src/test/java/de/ids_mannheim/korap/query/TestSpanWithAttributeJSON.java
index 23a1beb..481949d 100644
--- a/src/test/java/de/ids_mannheim/korap/query/TestSpanWithAttributeJSON.java
+++ b/src/test/java/de/ids_mannheim/korap/query/TestSpanWithAttributeJSON.java
@@ -25,7 +25,7 @@
         SpanQueryWrapper sqwi = getJsonQuery(filepath);
         SpanQuery sq = sqwi.toQuery();
         assertEquals(
-                "spanElementWithAttribute(<tokens:head />, spanAttribute(tokens:type:top))",
+                "spanElementWithAttribute(<tokens:head />, spanAttribute(tokens:@:type:top))",
                 sq.toString());
     }
 
@@ -38,7 +38,8 @@
         SpanQueryWrapper sqwi = getJsonQuery(filepath);
         SpanQuery sq = sqwi.toQuery();
         assertEquals(
-                "spanElementWithAttribute(<tokens:dereko/s:said />, spanAttribute(tokens:mode:indirects))",
+                "spanElementWithAttribute(<tokens:dereko/s:said />, " +
+                "spanAttribute(tokens:@:dereko/s:mode:direct))",
                 sq.toString());
     }
 
@@ -51,7 +52,7 @@
         SpanQueryWrapper sqwi = getJsonQuery(filepath);
         SpanQuery sq = sqwi.toQuery();
         assertEquals(
-                "spanElementWithAttribute(<tokens:head />, spanAttribute(!tokens:type:top))",
+                "spanElementWithAttribute(<tokens:head />, spanAttribute(!tokens:@:type:top))",
                 sq.toString());
     }
 
@@ -64,7 +65,7 @@
         SpanQueryWrapper sqwi = getJsonQuery(filepath);
         SpanQuery sq = sqwi.toQuery();
         assertEquals(
-                "spanElementWithAttribute(<tokens:head />, spanAttribute(!tokens:type:top))",
+                "spanElementWithAttribute(<tokens:head />, spanAttribute(!tokens:@:type:top))",
                 sq.toString());
     }
     
@@ -78,8 +79,8 @@
         SpanQueryWrapper sqwi = getJsonQuery(filepath);
         SpanQuery sq = sqwi.toQuery();
         assertEquals(
-                "spanElementWithAttribute(<tokens:div />, [spanAttribute(tokens:type:Zeitschrift), "
-                        + "spanAttribute(!tokens:complete:Y), spanAttribute(tokens:n:0)])",
+                "spanElementWithAttribute(<tokens:div />, [spanAttribute(tokens:@:type:Zeitschrift), "
+                        + "spanAttribute(!tokens:@:complete:Y), spanAttribute(tokens:@:n:0)])",
                 sq.toString());
     }
 
@@ -92,8 +93,8 @@
         SpanQueryWrapper sqwi = getJsonQuery(filepath);
         SpanQuery sq = sqwi.toQuery();
         assertEquals(
-                "spanElementWithAttribute(<tokens:div />, [spanAttribute(tokens:type:Zeitschrift), "
-                        + "spanAttribute(!tokens:complete:Y), spanAttribute(tokens:n:0)])",
+                "spanElementWithAttribute(<tokens:div />, [spanAttribute(tokens:@:type:Zeitschrift), "
+                        + "spanAttribute(!tokens:@:complete:Y), spanAttribute(tokens:@:n:0)])",
                 sq.toString());
     }
     
@@ -107,9 +108,9 @@
         SpanQueryWrapper sqwi = getJsonQuery(filepath);
         SpanQuery sq = sqwi.toQuery();
         assertEquals(
-                "spanOr([spanElementWithAttribute(<tokens:div />, spanAttribute(tokens:type:Zeitschrift)), "
-                        + "spanElementWithAttribute(<tokens:div />, spanAttribute(tokens:complete:Y)), "
-                        + "spanElementWithAttribute(<tokens:div />, spanAttribute(tokens:n:0))])",
+                "spanOr([spanElementWithAttribute(<tokens:div />, spanAttribute(tokens:@:type:Zeitschrift)), "
+                        + "spanElementWithAttribute(<tokens:div />, spanAttribute(tokens:@:complete:Y)), "
+                        + "spanElementWithAttribute(<tokens:div />, spanAttribute(tokens:@:n:0))])",
                 sq.toString());
     }
 
@@ -123,9 +124,9 @@
         SpanQueryWrapper sqwi = getJsonQuery(filepath);
         SpanQuery sq = sqwi.toQuery();
         assertEquals(
-                "spanOr([spanElementWithAttribute(<tokens:div />, spanAttribute(tokens:type:Zeitschrift)), "
-                        + "spanElementWithAttribute(<tokens:div />, spanAttribute(tokens:complete:Y)), "
-                        + "spanElementWithAttribute(<tokens:div />, spanAttribute(tokens:n:0))])",
+                "spanOr([spanElementWithAttribute(<tokens:div />, spanAttribute(tokens:@:type:Zeitschrift)), "
+                        + "spanElementWithAttribute(<tokens:div />, spanAttribute(tokens:@:complete:Y)), "
+                        + "spanElementWithAttribute(<tokens:div />, spanAttribute(tokens:@:n:0))])",
                 sq.toString());
     }
     
@@ -138,7 +139,7 @@
                 .getFile();
         SpanQueryWrapper sqwi = getJsonQuery(filepath);
         SpanQuery sq = sqwi.toQuery();
-        assertEquals("spanWithAttribute(spanAttribute(tokens:type:top))",
+        assertEquals("spanWithAttribute(spanAttribute(tokens:@:type:top))",
                 sq.toString());
     }
 
@@ -152,9 +153,9 @@
         SpanQueryWrapper sqwi = getJsonQuery(filepath);
         SpanQuery sq = sqwi.toQuery();
         assertEquals(
-                "spanOr([spanWithAttribute(spanAttribute(tokens:type:Zeitschrift)), "
-                        + "spanWithAttribute(spanAttribute(tokens:complete:Y)), "
-                        + "spanWithAttribute(spanAttribute(tokens:n:0))])",
+                "spanOr([spanWithAttribute(spanAttribute(tokens:@:type:Zeitschrift)), "
+                        + "spanWithAttribute(spanAttribute(tokens:@:complete:Y)), "
+                        + "spanWithAttribute(spanAttribute(tokens:@:n:0))])",
                 sq.toString());
     }
 
@@ -169,8 +170,8 @@
         SpanQueryWrapper sqwi = getJsonQuery(filepath);
         SpanQuery sq = sqwi.toQuery();
         assertEquals(
-                "spanWithAttribute([spanAttribute(tokens:type:Zeitschrift), "
-                        + "spanAttribute(!tokens:complete:Y), spanAttribute(tokens:n:0)])",
+                "spanWithAttribute([spanAttribute(tokens:@:type:Zeitschrift), "
+                        + "spanAttribute(!tokens:@:complete:Y), spanAttribute(tokens:@:n:0)])",
                 sq.toString());
     }
 
@@ -187,5 +188,4 @@
         SpanQuery sq = sqwi.toQuery();
         //        assertEquals("tokens:???", sq.toString());
     }
-
 }
diff --git a/src/test/resources/others/REDEW-DOC1-00001.json.gz b/src/test/resources/others/REDEW-DOC1-00001.json.gz
new file mode 100644
index 0000000..d551bfb
--- /dev/null
+++ b/src/test/resources/others/REDEW-DOC1-00001.json.gz
Binary files differ
diff --git a/src/test/resources/queries/attribute/element-single-attribute-2.jsonld b/src/test/resources/queries/attribute/element-single-attribute-2.jsonld
index 59d0c74..79d682a 100644
--- a/src/test/resources/queries/attribute/element-single-attribute-2.jsonld
+++ b/src/test/resources/queries/attribute/element-single-attribute-2.jsonld
@@ -10,7 +10,7 @@
       "@type": "koral:term",
       "key": "mode",
       "match": "match:eq",
-      "value": "indirects"
+      "value": "direct"
     },
     "wrap": {
       "@type": "koral:term",
