diff --git a/Changes b/Changes
index c21f150..c565ebe 100644
--- a/Changes
+++ b/Changes
@@ -1,6 +1,8 @@
 0.55.2 2016-02-13
         - [bugfix] Fixed support for corpus and doc IDs containing
-	  dashes (diewald)       
+	  dashes (diewald)
+	- [bugfix] Support "s" layer without meaning "surface" -
+	  this is a hack (diewald)
 
 0.55.1 2016-02-10
         - [bugfix] Fixed attribute serialization in MatchInfo (diewald)
diff --git a/src/main/java/de/ids_mannheim/korap/KrillQuery.java b/src/main/java/de/ids_mannheim/korap/KrillQuery.java
index 56fb027..b12829b 100644
--- a/src/main/java/de/ids_mannheim/korap/KrillQuery.java
+++ b/src/main/java/de/ids_mannheim/korap/KrillQuery.java
@@ -1035,6 +1035,7 @@
     // 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) {
             if (!json.has("attr"))
                 throw new QueryException(740,
@@ -1105,8 +1106,8 @@
                     break;
 
                 case "orth":
-                    // TODO: THIS IS A BUG! AND SHOULD BE NAMED "SURFACE" or . OR *
-                    layer = "s";
+                    // TODO: THIS IS AN UGLY HACK! AND SHOULD BE NAMED "SURFACE" or . OR *
+                    layer = ".";
                     break;
 
                 case "struct":
@@ -1119,7 +1120,7 @@
             };
 
             if (isCaseInsensitive && isTerm) {
-                if (layer.equals("s"))
+                if (layer.equals("."))
                     layer = "i";
                 else {
                     this.addWarning(767,
@@ -1128,8 +1129,13 @@
             };
 
             // Ignore foundry for orth layer
-            if (layer.equals("s") || layer.equals("i"))
+            if (layer.equals(".")) {
+                layer = "s"; 
                 value.setLength(0);
+            }
+            else if (layer.equals("i")) {
+                value.setLength(0);
+            };
 
             value.append(layer).append(':');
         };
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 3663623..0ca30cc 100644
--- a/src/test/java/de/ids_mannheim/korap/query/TestKrillQueryJSON.java
+++ b/src/test/java/de/ids_mannheim/korap/query/TestKrillQueryJSON.java
@@ -520,6 +520,23 @@
     };
 
 
+    @Test
+    public void queryJSONelement () throws QueryException {
+        // <base/s=s>
+        try {
+            String json = getString(getClass().getResource(
+                    "/queries/element/simple-element.jsonld").getFile());
+            KrillQuery kq = new KrillQuery("tokens");
+
+            assertEquals(kq.fromJson(json).toQuery().toString(),
+                    "<tokens:base/s:s />");
+        }
+        catch (QueryException e) {
+            fail(e.getMessage());
+        };
+    };
+
+
     public static String getString (String path) {
         StringBuilder contentBuilder = new StringBuilder();
         try {
diff --git a/src/test/resources/queries/element/simple-element.jsonld b/src/test/resources/queries/element/simple-element.jsonld
new file mode 100644
index 0000000..1841740
--- /dev/null
+++ b/src/test/resources/queries/element/simple-element.jsonld
@@ -0,0 +1,13 @@
+{
+  "@context":"http://ids-mannheim.de/ns/KorAP/json-ld/v0.3/context.jsonld",
+  "collection":null,
+  "query":{
+    "wrap": {
+      "layer": "s",
+      "foundry": "base",
+      "key": "s",
+      "@type": "koral:term"
+    },
+    "@type": "koral:span"
+  }
+}
