diff --git a/Changes b/Changes
index 67ca7b1..c02f7ff 100644
--- a/Changes
+++ b/Changes
@@ -3,6 +3,9 @@
       (margaretha, diewald)
     - [bugfix] Fixed setting candidates in element distance spans.
       (margaretha, diewald)
+    - [cleanup] Change contains' frame to be only "contains", for
+      compatibility with future changes; isAround is deprecated
+      for now (diewald)
 
 0.59.4 2021-07-27
     - [cleanup] Upgrade dependencies (diewald)
diff --git a/src/main/java/de/ids_mannheim/korap/KrillQuery.java b/src/main/java/de/ids_mannheim/korap/KrillQuery.java
index a913460..c10d93c 100644
--- a/src/main/java/de/ids_mannheim/korap/KrillQuery.java
+++ b/src/main/java/de/ids_mannheim/korap/KrillQuery.java
@@ -663,7 +663,7 @@
             throw new QueryException(705,
                     "Number of operands is not acceptable");
 
-        String frame = "isAround";
+        String frame = "contains";
         // Temporary workaround for wrongly set overlaps
         if (json.has("frames")) {
             JsonNode frameN = json.get("frames");
@@ -688,14 +688,27 @@
 
         // Byte flag - should cover all 13 cases, i.e. two bytes long
         byte flag = WITHIN;
+        JsonNode operand;
         switch (frame) {
-            case "isAround":
-                JsonNode operand = operands.get(0);
+            case "contains":
+                operand = operands.get(0);
                 if (operand.get("@type").asText().equals("koral:token")){
                     throw new QueryException(StatusCodes.INVALID_QUERY, 
                             "Token cannot contain another token or element.");
                 }
                 break;
+            case "isAround":
+                operand = operands.get(0);
+                if (operand.get("@type").asText().equals("koral:token")){
+                    throw new QueryException(StatusCodes.INVALID_QUERY, 
+                            "Token cannot contain another token or element.");
+                }
+                this.addMessage(
+                    0,
+                    "'isAround' will have a different meaning in the future and is therefore temporarily deprecated in favor of 'contains'"
+                    );
+
+                break;
             case "strictlyContains":
                 flag = REAL_WITHIN;
                 break;
diff --git a/src/test/java/de/ids_mannheim/korap/index/TestWithinIndex.java b/src/test/java/de/ids_mannheim/korap/index/TestWithinIndex.java
index 5e06cfa..b7c2416 100644
--- a/src/test/java/de/ids_mannheim/korap/index/TestWithinIndex.java
+++ b/src/test/java/de/ids_mannheim/korap/index/TestWithinIndex.java
@@ -1,6 +1,7 @@
 package de.ids_mannheim.korap.index;
 
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
 import java.io.*;
@@ -1105,8 +1106,9 @@
     public void queryJSONpoly2 () throws QueryException, IOException {
         String jsonPath = getClass().getResource("/queries/poly2.json").getFile();
         String jsonPQuery = getJsonString(jsonPath);
-        SpanQueryWrapper sqwi = new KrillQuery("tokens").fromKoral(jsonPQuery);
-
+        KrillQuery kq = new KrillQuery("tokens");
+        SpanQueryWrapper sqwi = kq.fromKoral(jsonPQuery);
+        
         SpanWithinQuery sq = (SpanWithinQuery) sqwi.toQuery();
 
         KrillIndex ki = new KrillIndex();
@@ -1118,6 +1120,12 @@
 
         ki.commit();
         Result kr = ki.search(sq, (short) 10);
+        assertTrue(!kq.hasErrors());
+        assertTrue(!kq.hasWarnings());
+        assertTrue(kq.hasMessages());
+        assertEquals("'isAround' will have a different meaning in the future and is therefore temporarily deprecated in favor of 'contains'",
+                     kq.getMessage(0).getMessage());
+
         assertEquals(2, kr.getTotalResults());
         assertEquals(0, kr.getMatch(0).getLocalDocID());
         assertEquals(76, kr.getMatch(0).getStartPos());
diff --git a/src/test/java/de/ids_mannheim/korap/query/TestSpanSubspanQueryJSON.java b/src/test/java/de/ids_mannheim/korap/query/TestSpanSubspanQueryJSON.java
index 1738125..010df59 100644
--- a/src/test/java/de/ids_mannheim/korap/query/TestSpanSubspanQueryJSON.java
+++ b/src/test/java/de/ids_mannheim/korap/query/TestSpanSubspanQueryJSON.java
@@ -2,10 +2,12 @@
 
 import static de.ids_mannheim.korap.TestSimple.*;
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
 
 import org.apache.lucene.search.spans.SpanQuery;
 import org.junit.Test;
 
+import de.ids_mannheim.korap.KrillQuery;
 import de.ids_mannheim.korap.query.wrap.SpanQueryWrapper;
 import de.ids_mannheim.korap.util.QueryException;
 
@@ -54,7 +56,16 @@
         String filepath = getClass()
                 .getResource("/queries/submatch/simpleElement.jsonld")
                 .getFile();
-        SpanQueryWrapper sqwi = getJsonQuery(filepath);
+        // SpanQueryWrapper sqwi = getJsonQuery(filepath);
+
+        String jsonPQuery = getJsonString(filepath);
+        KrillQuery kq = new KrillQuery("tokens");
+        SpanQueryWrapper sqwi = kq.fromKoral(jsonPQuery);
+
+        assertTrue(!kq.hasErrors());
+        assertTrue(!kq.hasWarnings());
+        assertTrue(!kq.hasMessages());
+        
         SpanQuery sq = sqwi.toQuery();
         assertEquals(
                 "subspan(spanContain(<tokens:s />, tokens:tt/l:Haus), 1, 4)",
diff --git a/src/test/resources/queries/submatch/simpleElement.jsonld b/src/test/resources/queries/submatch/simpleElement.jsonld
index a48b56e..043df8f 100644
--- a/src/test/resources/queries/submatch/simpleElement.jsonld
+++ b/src/test/resources/queries/submatch/simpleElement.jsonld
@@ -16,7 +16,7 @@
          {
             "@type" : "koral:group",
             "frames" : [
-               "frames:isAround"
+               "frames:contains"
             ],
             "operands" : [
                {
