diff --git a/Changes b/Changes
index 2411416..d769cec 100644
--- a/Changes
+++ b/Changes
@@ -1,4 +1,4 @@
-0.52 2015-06-27
+0.52 2015-06-30
         - [bugfix] Fixed payload filtering in FocusSpans (margaretha)
 	- [workaround] Reintroduced empty collection support,
 	  as Koral still creates them (diewald)
@@ -19,7 +19,7 @@
 	- [bugfix] JSON-serialization bug in match in case of error messages (diewald)
 	- [bugfix] 'fields' serialization (diewald)
 	- [bugfix] Deserialization of group:disjunction (diewald)
-	- [bugfix] Deserialization of spn/wrap (diewald)
+	- [bugfix] Deserialization of span/wrap (diewald)
 
 0.51 2015-03-17
         - This is a major version (prepared for the GitHub release)
diff --git a/src/main/java/de/ids_mannheim/korap/KrillQuery.java b/src/main/java/de/ids_mannheim/korap/KrillQuery.java
index fa649ab..72fc389 100644
--- a/src/main/java/de/ids_mannheim/korap/KrillQuery.java
+++ b/src/main/java/de/ids_mannheim/korap/KrillQuery.java
@@ -304,7 +304,8 @@
                 if (!json.has("wrap"))
                     return this._termFromJson(json);
 
-                return this._termFromJson(json.get("wrap"));
+                // This is an ugly hack
+                return this._termFromJson(json.get("wrap"), "<>:");
         };
 
         // Unknown query type
@@ -1031,6 +1032,7 @@
 
 
     // Deserialize koral:term
+    // TODO: Not optimal as it does not respect non-term
     private SpanQueryWrapper _termFromJson (JsonNode json, String direction)
             throws QueryException {
         if (!json.has("key") || json.get("key").asText().length() < 1) {
@@ -1048,6 +1050,13 @@
                 : false;
         Boolean isCaseInsensitive = false;
 
+
+        // Ugly direction hack
+        if (direction != null && direction.equals("<>:")) {
+            isTerm = false;
+            direction = null;
+        };
+
         // <legacy>
         if (json.has("caseInsensitive")
                 && json.get("caseInsensitive").asBoolean()) {
diff --git a/src/test/java/de/ids_mannheim/korap/query/TestKrillQueryJSON.java b/src/test/java/de/ids_mannheim/korap/query/TestKrillQueryJSON.java
index 6914dd7..b906609 100644
--- a/src/test/java/de/ids_mannheim/korap/query/TestKrillQueryJSON.java
+++ b/src/test/java/de/ids_mannheim/korap/query/TestKrillQueryJSON.java
@@ -481,7 +481,7 @@
         SpanQueryWrapper sqwi = jsonQuery(getClass().getResource(
                 "/queries/bugs/unspecified_key_bug.jsonld").getFile());
 
-        assertEquals(sqwi.toQuery().toString(), "spanContain(tokens:s, spanDistance(tokens:s:Erde, tokens:s:Sonne, [(w[0:100], ordered, notExcluded)]))");
+        assertEquals(sqwi.toQuery().toString(), "spanContain(<tokens:s />, spanDistance(tokens:s:Erde, tokens:s:Sonne, [(w[0:100], ordered, notExcluded)]))");
     };
 
 
