diff --git a/src/main/java/de/ids_mannheim/korap/rewrite/KoralRewrite.java b/src/main/java/de/ids_mannheim/korap/rewrite/KoralRewrite.java
index 86e5863..ea82e69 100644
--- a/src/main/java/de/ids_mannheim/korap/rewrite/KoralRewrite.java
+++ b/src/main/java/de/ids_mannheim/korap/rewrite/KoralRewrite.java
@@ -24,8 +24,8 @@
         this.map.put("scope", scope);
     }
     
-    public void setSource(Object source) {
-        this.map.put("source", source);
+    public void setOriginal(Object original) {
+        this.map.put("original", original);
     }
     
     public void setComment(String comment) {
diff --git a/src/main/java/de/ids_mannheim/korap/rewrite/KoralRewriteBuilder.java b/src/main/java/de/ids_mannheim/korap/rewrite/KoralRewriteBuilder.java
index a5824a1..83979d8 100644
--- a/src/main/java/de/ids_mannheim/korap/rewrite/KoralRewriteBuilder.java
+++ b/src/main/java/de/ids_mannheim/korap/rewrite/KoralRewriteBuilder.java
@@ -35,8 +35,8 @@
 		if (ri.getScope() != null) {
 			rewrite.setScope(ri.getScope());
 		}
-		if (ri.getSource() != null) {
-			rewrite.setSource(ri.getSource());
+		if (ri.getOriginal() != null) {
+			rewrite.setOriginal(ri.getOriginal());
 		}
 		if (ri.getComment() != null) {
 			rewrite.setComment(ri.getComment());
diff --git a/src/main/java/de/ids_mannheim/korap/rewrite/RewriteIdentifier.java b/src/main/java/de/ids_mannheim/korap/rewrite/RewriteIdentifier.java
index ad56a3b..583c9ec 100644
--- a/src/main/java/de/ids_mannheim/korap/rewrite/RewriteIdentifier.java
+++ b/src/main/java/de/ids_mannheim/korap/rewrite/RewriteIdentifier.java
@@ -3,17 +3,17 @@
 public class RewriteIdentifier {
 
     private String scope,comment = "";
-    private Object source;
+    private Object original;
 
     public RewriteIdentifier (String scope, String value, String comment) {
         this.scope = scope;
-        this.source = value;
+        this.original = value;
         this.comment = comment;
     }
     
 	public RewriteIdentifier (String scope, Object source, String comment) {
 		this.scope = scope;
-		this.source = source;
+		this.original = source;
 		this.comment = comment;
 	}
     
@@ -21,8 +21,8 @@
         return scope;
     }
     
-    public Object getSource () {
-        return source;
+    public Object getOriginal () {
+        return original;
     }
     
     public String getComment () {
diff --git a/src/test/java/de/ids_mannheim/korap/rewrite/QueryContextRewriteTest.java b/src/test/java/de/ids_mannheim/korap/rewrite/QueryContextRewriteTest.java
index ccf6f1c..699fba2 100644
--- a/src/test/java/de/ids_mannheim/korap/rewrite/QueryContextRewriteTest.java
+++ b/src/test/java/de/ids_mannheim/korap/rewrite/QueryContextRewriteTest.java
@@ -72,12 +72,12 @@
         assertEquals("Kustvakt", context.at("/rewrites/0/editor").asText());
         assertEquals("operation:override", context.at("/rewrites/0/operation").asText());
         assertEquals("left", context.at("/rewrites/0/scope").asText());
-        assertEquals("token", context.at("/rewrites/0/source/0").asText());
-        assertEquals(60, context.at("/rewrites/0/source/1").asInt());
+        assertEquals("token", context.at("/rewrites/0/original/0").asText());
+        assertEquals(60, context.at("/rewrites/0/original/1").asInt());
         
         assertEquals("right", context.at("/rewrites/1/scope").asText());
-        assertEquals("token", context.at("/rewrites/1/source/0").asText());
-        assertEquals(60, context.at("/rewrites/1/source/1").asInt());
+        assertEquals("token", context.at("/rewrites/1/original/0").asText());
+        assertEquals(60, context.at("/rewrites/1/original/1").asInt());
         
     }
 }
diff --git a/src/test/java/de/ids_mannheim/korap/rewrite/QueryReferenceRewriteTest.java b/src/test/java/de/ids_mannheim/korap/rewrite/QueryReferenceRewriteTest.java
index c40811f..d6da757 100644
--- a/src/test/java/de/ids_mannheim/korap/rewrite/QueryReferenceRewriteTest.java
+++ b/src/test/java/de/ids_mannheim/korap/rewrite/QueryReferenceRewriteTest.java
@@ -42,8 +42,8 @@
         assertEquals(1, node.size());
         assertEquals("Kustvakt", node.at("/0/editor").asText());
         assertEquals("operation:override", node.at("/0/operation").asText());
-        assertEquals("koral:queryRef", node.at("/0/source/@type").asText());
-        assertEquals("system-q", node.at("/0/source/ref").asText());
+        assertEquals("koral:queryRef", node.at("/0/original/@type").asText());
+        assertEquals("system-q", node.at("/0/original/ref").asText());
         assertTrue(node.at("/0/scope").isMissingNode());
     }
 
@@ -65,8 +65,8 @@
         assertEquals(1, node.size());
         assertEquals("Kustvakt", node.at("/0/editor").asText());
         assertEquals("operation:override", node.at("/0/operation").asText());
-        assertEquals("koral:queryRef", node.at("/0/source/@type").asText());
-        assertEquals("dory/dory-q", node.at("/0/source/ref").asText());
+        assertEquals("koral:queryRef", node.at("/0/original/@type").asText());
+        assertEquals("dory/dory-q", node.at("/0/original/ref").asText());
         assertTrue(node.at("/0/scope").isMissingNode());
     }
 }
diff --git a/src/test/java/de/ids_mannheim/korap/rewrite/VirtualCorpusReferenceRewriteTest.java b/src/test/java/de/ids_mannheim/korap/rewrite/VirtualCorpusReferenceRewriteTest.java
index d851a52..3cb9156 100644
--- a/src/test/java/de/ids_mannheim/korap/rewrite/VirtualCorpusReferenceRewriteTest.java
+++ b/src/test/java/de/ids_mannheim/korap/rewrite/VirtualCorpusReferenceRewriteTest.java
@@ -75,7 +75,7 @@
         assertEquals("Kustvakt", node.at("/0/editor").asText());
         assertEquals("operation:override", node.at("/0/operation").asText());
         assertEquals("ref", node.at("/0/scope").asText());
-        assertEquals("system/named-vc1", node.at("/0/source").asText());
+        assertEquals("system/named-vc1", node.at("/0/original").asText());
     }
 
     @Test
@@ -100,8 +100,8 @@
         
         node = node.at("/operands/1/rewrites/0");
         assertEquals("operation:override", node.at("/operation").asText());
-        assertEquals("koral:docGroupRef", node.at("/source/@type").asText());
-        assertEquals("system-vc", node.at("/source/ref").asText());    
+        assertEquals("koral:docGroupRef", node.at("/original/@type").asText());
+        assertEquals("system-vc", node.at("/original/ref").asText());    
     }
 
     @Test
@@ -136,8 +136,8 @@
         
         node = node.at("/operands/1/rewrites/0");
         assertEquals("operation:override", node.at("/operation").asText());
-        assertEquals("koral:docGroupRef", node.at("/source/@type").asText());
-        assertEquals("system/system-vc", node.at("/source/ref").asText());
+        assertEquals("koral:docGroupRef", node.at("/original/@type").asText());
+        assertEquals("system/system-vc", node.at("/original/ref").asText());
     }
 
     @Test
@@ -162,8 +162,8 @@
         
         node = node.at("/operands/1/rewrites/0");
         assertEquals("operation:override", node.at("/operation").asText());
-        assertEquals("koral:docGroupRef", node.at("/source/@type").asText());
-        assertEquals("dory/dory-vc", node.at("/source/ref").asText());
+        assertEquals("koral:docGroupRef", node.at("/original/@type").asText());
+        assertEquals("dory/dory-vc", node.at("/original/ref").asText());
         
     }
 }
diff --git a/src/test/java/de/ids_mannheim/korap/web/controller/AvailabilityTest.java b/src/test/java/de/ids_mannheim/korap/web/controller/AvailabilityTest.java
index 2500f17..a087682 100644
--- a/src/test/java/de/ids_mannheim/korap/web/controller/AvailabilityTest.java
+++ b/src/test/java/de/ids_mannheim/korap/web/controller/AvailabilityTest.java
@@ -25,19 +25,19 @@
     @Autowired
     public FullConfiguration config;    
 
-	private void checkAndFree (String json, JsonNode source)
+	private void checkAndFree (String json, JsonNode original)
 			throws KustvaktException {
 		JsonNode node = JsonUtils.readTree(json).at("/collection");
 		assertEquals("availability", node.at("/operands/0/key").asText());
 		assertEquals("CC.*", node.at("/operands/0/value").asText());
 		assertEquals("operation:override",
 				node.at("/rewrites/0/operation").asText());
-		assertEquals(source, node.at("/rewrites/0/source"));
+		assertEquals(original, node.at("/rewrites/0/original"));
 		assertEquals(freeCorpusAccess,
 				node.at("/rewrites/0/_comment").asText());
 	}
 
-	private void checkAndPublic (String json, JsonNode source)
+	private void checkAndPublic (String json, JsonNode original)
 			throws KustvaktException {
 		JsonNode node = JsonUtils.readTree(json).at("/collection");
 		assertNotNull(node);
@@ -45,7 +45,7 @@
 		assertEquals("koral:rewrite", node.at("/rewrites/0/@type").asText());
 		assertEquals("Kustvakt", node.at("/rewrites/0/editor").asText());
 		assertEquals("operation:override", node.at("/rewrites/0/operation").asText());
-		assertEquals(source, node.at("/rewrites/0/source"));
+		assertEquals(original, node.at("/rewrites/0/original"));
 		assertEquals(publicCorpusAccess,
 				node.at("/rewrites/0/_comment").asText());
 		
@@ -64,7 +64,7 @@
 		
 	}
 
-    private void checkAndAllWithACA (String json, JsonNode source)
+    private void checkAndAllWithACA (String json, JsonNode original)
 			throws KustvaktException {
 		JsonNode node = JsonUtils.readTree(json).at("/collection");
 		assertEquals("operation:and", node.at("/operation").asText());
@@ -72,7 +72,7 @@
 		assertEquals("koral:rewrite", node.at("/rewrites/0/@type").asText());
 		assertEquals("Kustvakt", node.at("/rewrites/0/editor").asText());
 		assertEquals("operation:override", node.at("/rewrites/0/operation").asText());
-		assertEquals(source, node.at("/rewrites/0/source"));
+		assertEquals(original, node.at("/rewrites/0/original"));
 		assertEquals(allCorpusAccess,
 				node.at("/rewrites/0/_comment").asText());
 
@@ -249,7 +249,7 @@
     public void testFreeWithoutAvailabilityOr () throws KustvaktException {
         Response response = searchQuery("corpusSigle=GOE | textClass=politik");
         assertEquals(Status.OK.getStatusCode(), response.getStatus());
-        String source = """
+        String original = """
             {
               "operands" : [ {
                 "@type" : "koral:doc",
@@ -267,14 +267,14 @@
             }	
         	""";
         checkAndFree(response.readEntity(String.class),
-				JsonUtils.readTree(source));
+				JsonUtils.readTree(original));
     }
 
     @Test
     public void testFreeWithoutAvailability () throws KustvaktException {
         Response response = searchQuery("corpusSigle=GOE");
         assertEquals(Status.OK.getStatusCode(), response.getStatus());
-        String source = """
+        String original = """
             {
               "@type" : "koral:doc",
               "match" : "match:eq",
@@ -283,7 +283,7 @@
             }	
         	""";
         checkAndFree(response.readEntity(String.class),
-				JsonUtils.readTree(source));
+				JsonUtils.readTree(original));
     }
 
     
@@ -324,7 +324,7 @@
         Response response = searchQuery("availability = CC-BY-SA");
         assertEquals(Status.OK.getStatusCode(), response.getStatus());
         
-        String source = """
+        String original = """
         	{
               "@type" : "koral:doc",
               "match" : "match:eq",
@@ -334,14 +334,14 @@
         	""";
         
 		checkAndFree(response.readEntity(String.class),
-				JsonUtils.readTree(source));
+				JsonUtils.readTree(original));
     }
     
     @Test
     public void testFreeAvailabilityUnauthorized () throws KustvaktException {
         Response response = searchQuery("availability = ACA-NC");
         assertEquals(Status.OK.getStatusCode(), response.getStatus());
-        String source = """
+        String original = """
         	{
               "@type" : "koral:doc",
               "match" : "match:eq",
@@ -350,7 +350,7 @@
             }
         	""";
         checkAndFree(response.readEntity(String.class),
-				JsonUtils.readTree(source));
+				JsonUtils.readTree(original));
     }
 
     @Test
@@ -358,7 +358,7 @@
             throws KustvaktException {
         Response response = searchQuery("availability = /.*BY.*/");
         assertEquals(Status.OK.getStatusCode(), response.getStatus());
-        String source = """
+        String original = """
         	{
               "@type" : "koral:doc",
               "match" : "match:eq",
@@ -368,7 +368,7 @@
             }
         	""";
         checkAndFree(response.readEntity(String.class),
-				JsonUtils.readTree(source));
+				JsonUtils.readTree(original));
     }
 
     
@@ -377,7 +377,7 @@
             throws KustvaktException {
         Response response = searchQuery("availability = /ACA.*/");
         assertEquals(Status.OK.getStatusCode(), response.getStatus());
-        String source = """
+        String original = """
         	{
               "@type" : "koral:doc",
               "match" : "match:eq",
@@ -387,7 +387,7 @@
             }
         	""";
         checkAndFree(response.readEntity(String.class),
-				JsonUtils.readTree(source));
+				JsonUtils.readTree(original));
     }
     
     @Test
@@ -395,7 +395,7 @@
             throws KustvaktException {
         Response response = searchQuery("availability = /.*NC.*/");
         assertEquals(Status.OK.getStatusCode(), response.getStatus());
-        String source = """
+        String original = """
         	{
               "@type" : "koral:doc",
               "match" : "match:eq",
@@ -405,7 +405,7 @@
             }
         	""";
         checkAndFree(response.readEntity(String.class),
-				JsonUtils.readTree(source));
+				JsonUtils.readTree(original));
     }
     
     @Test
@@ -413,7 +413,7 @@
         Response response = searchQuery(
                 "availability=/CC.*/ | availability=/ACA.*/");
         assertEquals(Status.OK.getStatusCode(), response.getStatus());
-        String source = """
+        String original = """
         	{
               "operands" : [ {
                 "@type" : "koral:doc",
@@ -433,14 +433,14 @@
             }
         	""";
         checkAndFree(response.readEntity(String.class),
-				JsonUtils.readTree(source));
+				JsonUtils.readTree(original));
     }
     @Test
     public void testFreeAvailabilityOrCorpusSigle () throws KustvaktException {
         Response response = searchQuery(
                 "availability=/CC.*/ | corpusSigle=GOE");
         assertEquals(Status.OK.getStatusCode(), response.getStatus());
-        String source = """
+        String original = """
             {
               "operands" : [ {
                 "@type" : "koral:doc",
@@ -459,7 +459,7 @@
             }	
         	""";
         checkAndFree(response.readEntity(String.class),
-				JsonUtils.readTree(source));
+				JsonUtils.readTree(original));
     }
 
     
@@ -468,7 +468,7 @@
             throws KustvaktException {
         Response response = searchQuery("availability != /CC.*/");
         assertEquals(Status.OK.getStatusCode(), response.getStatus());
-        String source = """
+        String original = """
         	{
               "@type" : "koral:doc",
               "match" : "match:ne",
@@ -478,7 +478,7 @@
             }
         	""";
         checkAndFree(response.readEntity(String.class),
-				JsonUtils.readTree(source));
+				JsonUtils.readTree(original));
     }
 
     @Test
@@ -486,7 +486,7 @@
             throws KustvaktException {
         Response response = searchQuery("availability != /.*BY.*/");
         assertEquals(Status.OK.getStatusCode(), response.getStatus());
-        String source = """
+        String original = """
         	{
               "@type" : "koral:doc",
               "match" : "match:ne",
@@ -496,7 +496,7 @@
             }
         	""";
         checkAndFree(response.readEntity(String.class),
-				JsonUtils.readTree(source));
+				JsonUtils.readTree(original));
     }
 
     @Test
@@ -505,7 +505,7 @@
         Response response = searchQuery(
                 "availability = /CC.*/ | availability != /CC.*/");
         assertEquals(Status.OK.getStatusCode(), response.getStatus());
-        String source = """
+        String original = """
         	{
               "operands" : [ {
                 "@type" : "koral:doc",
@@ -525,7 +525,7 @@
             }
         	""";
         checkAndFree(response.readEntity(String.class),
-				JsonUtils.readTree(source));
+				JsonUtils.readTree(original));
     }
 
     @Test
@@ -534,7 +534,7 @@
         Response response = searchQuery(
                 "textClass=politik & availability != /CC.*/");
         assertEquals(Status.OK.getStatusCode(), response.getStatus());
-        String source = """
+        String original = """
         	{
               "operands" : [ {
                 "@type" : "koral:doc",
@@ -553,7 +553,7 @@
             }
         	""";
         checkAndFree(response.readEntity(String.class),
-				JsonUtils.readTree(source));
+				JsonUtils.readTree(original));
     }
 
     @Test
@@ -562,7 +562,7 @@
         Response response = searchQuery(
                 "textClass=politik & availability=ACA-NC");
         assertEquals(Status.OK.getStatusCode(), response.getStatus());
-        String source = """
+        String original = """
         	{
               "operands" : [ {
                 "@type" : "koral:doc",
@@ -580,7 +580,7 @@
             }
         	""";
         checkAndFree(response.readEntity(String.class),
-				JsonUtils.readTree(source));
+				JsonUtils.readTree(original));
     }
 
     @Test
@@ -589,7 +589,7 @@
         Response response = searchQuery(
                 "textClass=politik & availability=/.*NC.*/");
         assertEquals(Status.OK.getStatusCode(), response.getStatus());
-        String source = """
+        String original = """
         	{
               "operands" : [ {
                 "@type" : "koral:doc",
@@ -608,7 +608,7 @@
             }
         	""";
         checkAndFree(response.readEntity(String.class),
-				JsonUtils.readTree(source));
+				JsonUtils.readTree(original));
     }
     
     @Test
@@ -628,7 +628,7 @@
         Response response = searchQueryWithIP("availability=ACA-NC",
                 "149.27.0.32");
         assertEquals(Status.OK.getStatusCode(), response.getStatus());
-        String source = """
+        String original = """
         	{
                 "@type" : "koral:doc",
                 "match" : "match:eq",
@@ -638,7 +638,7 @@
         	""";
         
 		checkAndPublic(response.readEntity(String.class),
-				JsonUtils.readTree(source));
+				JsonUtils.readTree(original));
     }
 
     @Test
@@ -647,7 +647,7 @@
                 "149.27.0.32");
         assertEquals(Status.OK.getStatusCode(), response.getStatus());
         
-        String source = """
+        String original = """
         	{
                   "@type" : "koral:doc",
                   "match" : "match:eq",
@@ -656,7 +656,7 @@
             }
         	""";
 		checkAndPublic(response.readEntity(String.class),
-				JsonUtils.readTree(source));
+				JsonUtils.readTree(original));
     }
 
     @Test
@@ -665,7 +665,7 @@
         Response response = searchQueryWithIP("availability= /ACA.*/",
                 "149.27.0.32");
         assertEquals(Status.OK.getStatusCode(), response.getStatus());
-        String source = """
+        String original = """
         	{
                 "@type" : "koral:doc",
                 "match" : "match:eq",
@@ -675,7 +675,7 @@
             }
             	""";
 		checkAndPublic(response.readEntity(String.class),
-				JsonUtils.readTree(source));
+				JsonUtils.readTree(original));
     }
 
     @Test
@@ -684,7 +684,7 @@
         Response response = searchQueryWithIP("availability != ACA-NC",
                 "149.27.0.32");
         assertEquals(Status.OK.getStatusCode(), response.getStatus());
-        String source = """
+        String original = """
                 {
                   "@type" : "koral:doc",
                   "match" : "match:ne",
@@ -693,7 +693,7 @@
                 }	
         	""";
 		checkAndPublic(response.readEntity(String.class),
-				JsonUtils.readTree(source));
+				JsonUtils.readTree(original));
     }
 
     @Test
@@ -702,7 +702,7 @@
         Response response = searchQueryWithIP("availability != /ACA.*/",
                 "149.27.0.32");
         assertEquals(Status.OK.getStatusCode(), response.getStatus());
-        String source = """
+        String original = """
             {
               "@type" : "koral:doc",
               "match" : "match:ne",
@@ -712,7 +712,7 @@
             }	
         	""";
 		checkAndPublic(response.readEntity(String.class),
-				JsonUtils.readTree(source));
+				JsonUtils.readTree(original));
     }
 
     @Test
@@ -722,7 +722,7 @@
                 "textClass=politik & availability=QAO-NC-LOC:ids",
                 "149.27.0.32");
         assertEquals(Status.OK.getStatusCode(), response.getStatus());
-        String source = """
+        String original = """
             {
               "operands" : [ {
                 "@type" : "koral:doc",
@@ -740,7 +740,7 @@
             }	
         	""";
 		checkAndPublic(response.readEntity(String.class),
-				JsonUtils.readTree(source));
+				JsonUtils.readTree(original));
     }
 
     @Test
@@ -750,7 +750,7 @@
                 "textClass=politik & availability!=QAO-NC-LOC:ids",
                 "149.27.0.32");
         assertEquals(Status.OK.getStatusCode(), response.getStatus());
-        String source = """
+        String original = """
             {
               "operands" : [ {
                 "@type" : "koral:doc",
@@ -768,7 +768,7 @@
             }	
         	""";
 		checkAndPublic(response.readEntity(String.class),
-				JsonUtils.readTree(source));
+				JsonUtils.readTree(original));
     }
 
     @Test
@@ -776,7 +776,7 @@
         Response response = searchQueryWithIP("availability= /ACA.*/",
                 "10.27.0.32");
         assertEquals(Status.OK.getStatusCode(), response.getStatus());
-        String source = """
+        String original = """
         	{
                 "@type" : "koral:doc",
                 "match" : "match:eq",
@@ -787,6 +787,6 @@
             }
         	""";
         checkAndAllWithACA(response.readEntity(String.class),
-        		JsonUtils.readTree(source));
+        		JsonUtils.readTree(original));
     }
 }
diff --git a/src/test/java/de/ids_mannheim/korap/web/controller/SearchPublicMetadataTest.java b/src/test/java/de/ids_mannheim/korap/web/controller/SearchPublicMetadataTest.java
index dfa3553..0ca1efc 100644
--- a/src/test/java/de/ids_mannheim/korap/web/controller/SearchPublicMetadataTest.java
+++ b/src/test/java/de/ids_mannheim/korap/web/controller/SearchPublicMetadataTest.java
@@ -129,8 +129,8 @@
         assertEquals(node.at("/rewrites/0/operation").asText(),
                 "operation:override");
         assertEquals("koral:docGroupRef",
-                node.at("/rewrites/0/source/@type").asText());
-        assertEquals("system-vc", node.at("/rewrites/0/source/ref").asText());
+                node.at("/rewrites/0/original/@type").asText());
+        assertEquals("system-vc", node.at("/rewrites/0/original/ref").asText());
     }
 
     @Test
diff --git a/src/test/java/de/ids_mannheim/korap/web/controller/vc/VirtualCorpusReferenceTest.java b/src/test/java/de/ids_mannheim/korap/web/controller/vc/VirtualCorpusReferenceTest.java
index d9dee82..ad0ba98 100644
--- a/src/test/java/de/ids_mannheim/korap/web/controller/vc/VirtualCorpusReferenceTest.java
+++ b/src/test/java/de/ids_mannheim/korap/web/controller/vc/VirtualCorpusReferenceTest.java
@@ -192,9 +192,9 @@
         assertEquals(node.at("/rewrites/0/operation").asText(),
                 "operation:override");
         assertEquals("koral:docGroupRef",
-                node.at("/rewrites/0/source/@type").asText());
+                node.at("/rewrites/0/original/@type").asText());
         assertEquals("marlin/published-vc",
-                node.at("/rewrites/0/source/ref").asText());
+                node.at("/rewrites/0/original/ref").asText());
     }
 
     @Test
