diff --git a/Changes b/Changes
index 1b35355..b10606e 100644
--- a/Changes
+++ b/Changes
@@ -1,3 +1,7 @@
+# version 1.0.1
+
+- Add an exception for missing layer.
+
 # version 1.0
 
 HOT PATCH 1: Reorder tasks for new VC.
diff --git a/src/main/java/de/ids_mannheim/korap/exceptions/StatusCodes.java b/src/main/java/de/ids_mannheim/korap/exceptions/StatusCodes.java
index 5c1e3fd..97f824d 100644
--- a/src/main/java/de/ids_mannheim/korap/exceptions/StatusCodes.java
+++ b/src/main/java/de/ids_mannheim/korap/exceptions/StatusCodes.java
@@ -42,6 +42,7 @@
     public static final int MISSING_ATTRIBUTE = 202;
     public static final int INVALID_ATTRIBUTE = 203;
     public static final int UNSUPPORTED_VALUE = 204;
+    public static final int MISSING_LAYER = 205;
 
     /**
      * 300 status codes for query language and serialization
diff --git a/src/main/java/de/ids_mannheim/korap/rewrite/FoundryInject.java b/src/main/java/de/ids_mannheim/korap/rewrite/FoundryInject.java
index f57bbeb..0247b27 100644
--- a/src/main/java/de/ids_mannheim/korap/rewrite/FoundryInject.java
+++ b/src/main/java/de/ids_mannheim/korap/rewrite/FoundryInject.java
@@ -6,12 +6,12 @@
 
 import de.ids_mannheim.korap.config.KustvaktConfiguration;
 import de.ids_mannheim.korap.exceptions.KustvaktException;
+import de.ids_mannheim.korap.exceptions.StatusCodes;
 import de.ids_mannheim.korap.user.User;
 import de.ids_mannheim.korap.user.UserSettingProcessor;
 
 /**
  * @author hanl, margaretha
- * @date 30/06/2015
  */
 public class FoundryInject implements RewriteTask.IterableRewritePath {
 
@@ -27,19 +27,21 @@
         if (koralNode.get("@type").equals("koral:span")) {
             if (!koralNode.isMissingNode("/wrap")) {
                 koralNode = koralNode.at("/wrap");
-                JsonNode term = rewriteQuery(koralNode, config, user, apiVersion).rawNode();
-                koralNode.replaceAt("/wrap", term,
+				JsonNode term = rewriteQuery(koralNode, config, user,
+						apiVersion).rawNode();
+				koralNode.replaceAt("/wrap", term,
                         new RewriteIdentifier("koral:term", "replace", ""));
             }
         }
         else if (koralNode.get("@type").equals("koral:term")
                 && !koralNode.has("foundry")) {
-            String layer;
+            String layer = "";
             if (koralNode.has("layer")) {
                 layer = koralNode.get("layer");
             }
             else {
-                layer = koralNode.get("key");
+				throw new KustvaktException(StatusCodes.MISSING_LAYER,
+						"Layer is missing.");
             }
             UserSettingProcessor settingProcessor = null;
             if (user != null) {
