diff --git a/Changes b/Changes
index 04373a8..2411416 100644
--- a/Changes
+++ b/Changes
@@ -18,7 +18,8 @@
 	- [bugfix] Remove legacy error handling in Match (diewald)
 	- [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 group:disjunction (diewald)
+	- [bugfix] Deserialization of spn/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 19377fd..fa649ab 100644
--- a/src/main/java/de/ids_mannheim/korap/KrillQuery.java
+++ b/src/main/java/de/ids_mannheim/korap/KrillQuery.java
@@ -301,7 +301,10 @@
                 return this._segFromJson(json.get("wrap"));
 
             case "koral:span":
-                return this._termFromJson(json);
+                if (!json.has("wrap"))
+                    return this._termFromJson(json);
+
+                return this._termFromJson(json.get("wrap"));
         };
 
         // Unknown query type
@@ -503,7 +506,6 @@
     private JsonNode _extractReferentClass (JsonNode node, int classNum) {
         JsonNode referent;
         if (node.has("classOut") && node.get("classOut").asInt() == classNum) {
-            // System.out.println("found: " + node.toString());
             return node;
         }
         else {
@@ -1031,7 +1033,6 @@
     // Deserialize koral:term
     private SpanQueryWrapper _termFromJson (JsonNode json, String direction)
             throws QueryException {
-
         if (!json.has("key") || json.get("key").asText().length() < 1) {
             if (!json.has("attr"))
                 throw new QueryException(740,
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 4ffbb78..6914dd7 100644
--- a/src/test/java/de/ids_mannheim/korap/query/TestKrillQueryJSON.java
+++ b/src/test/java/de/ids_mannheim/korap/query/TestKrillQueryJSON.java
@@ -476,6 +476,16 @@
 
 
     @Test
+    public void queryJSONspanWrapDeserializationBug () throws QueryException {
+        // contains(<s>, Erde  []* Sonne)
+        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)]))");
+    };
+
+
+    @Test
     public void queryJSONflags2 () throws QueryException {
         // buchstabe/i
         try {
diff --git a/src/test/resources/queries/bugs/unspecified_key_bug.jsonld b/src/test/resources/queries/bugs/unspecified_key_bug.jsonld
new file mode 100644
index 0000000..afc434c
--- /dev/null
+++ b/src/test/resources/queries/bugs/unspecified_key_bug.jsonld
@@ -0,0 +1,66 @@
+{
+  "@context":"http://korap.ids-mannheim.de/ns/koral/0.3/context.jsonld",
+  "errors":[],
+  "warnings":[],
+  "messages":[
+    [303,"Deprecated 2014-07-24: 'min' and 'max' to be supported until 3 months from deprecation date."]
+  ],
+  "query":{
+    "@type":"koral:group",
+    "operation":"operation:position",
+    "frames":[
+      "frames:isAround"
+    ],
+    "operands":[
+      {
+	"@type":"koral:span",
+	"wrap":{
+	  "@type":"koral:term",
+	  "key":"s"
+	}
+      },
+      {
+	"@type":"koral:group",
+	"operation":"operation:sequence",
+	"operands":[
+	  {
+	    "@type":"koral:token",
+	    "wrap":{
+	      "@type":"koral:term",
+	      "layer":"orth",
+	      "key":"Erde",
+	      "match":"match:eq"
+	    }
+	  },
+	  {
+	    "@type":"koral:token",
+	    "wrap":{
+	      "@type":"koral:term",
+	      "layer":"orth",
+	      "key":"Sonne",
+	      "match":"match:eq"
+	    }
+	  }
+	],
+	"inOrder":true,
+	"distances":[
+	  {
+	    "@type":"koral:distance",
+	    "key":"w",
+	    "boundary":{
+	      "@type":"koral:boundary",
+	      "min":0
+	    },
+	    "min":0
+	  }
+	]
+      }
+    ]
+  },
+  "meta":{
+    "startPage":1,
+    "count":25,
+    "cutOff":true,
+    "context":"base/s:p"
+  }
+}
