Fix rewrite adding
diff --git a/mapper/mapper.go b/mapper/mapper.go
index 7d7b3db..0377c88 100644
--- a/mapper/mapper.go
+++ b/mapper/mapper.go
@@ -223,60 +223,44 @@
 			"editor": "termMapper",
 		}
 
-		// Check if all terms in a group have their foundry changed
-		if term, ok := originalNode.(*ast.Term); ok {
-			if termGroup, ok := node.(*ast.TermGroup); ok {
-				// Check if all terms in the group have a different foundry
-				allFoundryChanged := true
-				for _, op := range termGroup.Operands {
-					if t, ok := op.(*ast.Term); ok {
-						if t.Foundry == term.Foundry {
-							allFoundryChanged = false
-							break
-						}
-					}
+		// Check if the node types are different (structural change)
+		if originalNode.Type() != node.Type() {
+			// Full node replacement
+			originalBytes, err := parser.SerializeToJSON(originalNode)
+			if err != nil {
+				return nil, fmt.Errorf("failed to serialize original node for rewrite: %w", err)
+			}
+			var originalJSON any
+			if err := json.Unmarshal(originalBytes, &originalJSON); err != nil {
+				return nil, fmt.Errorf("failed to parse original node JSON for rewrite: %w", err)
+			}
+			rewrite["original"] = originalJSON
+		} else if term, ok := originalNode.(*ast.Term); ok && ast.IsTermNode(node) {
+			// Check which attributes changed
+			newTerm := node.(*ast.Term)
+			if term.Foundry != newTerm.Foundry {
+				rewrite["scope"] = "foundry"
+				rewrite["original"] = term.Foundry
+			} else if term.Layer != newTerm.Layer {
+				rewrite["scope"] = "layer"
+				rewrite["original"] = term.Layer
+			} else if term.Key != newTerm.Key {
+				rewrite["scope"] = "key"
+				rewrite["original"] = term.Key
+			} else if term.Value != newTerm.Value {
+				rewrite["scope"] = "value"
+				rewrite["original"] = term.Value
+			} else {
+				// No specific attribute changed, use full node replacement
+				originalBytes, err := parser.SerializeToJSON(originalNode)
+				if err != nil {
+					return nil, fmt.Errorf("failed to serialize original node for rewrite: %w", err)
 				}
-				if allFoundryChanged {
-					rewrite["scope"] = "foundry"
-					rewrite["src"] = term.Foundry
-				} else {
-					// Full node replacement
-					originalBytes, err := parser.SerializeToJSON(originalNode)
-					if err != nil {
-						return nil, fmt.Errorf("failed to serialize original node for rewrite: %w", err)
-					}
-					var originalJSON any
-					if err := json.Unmarshal(originalBytes, &originalJSON); err != nil {
-						return nil, fmt.Errorf("failed to parse original node JSON for rewrite: %w", err)
-					}
-					rewrite["src"] = originalJSON
+				var originalJSON any
+				if err := json.Unmarshal(originalBytes, &originalJSON); err != nil {
+					return nil, fmt.Errorf("failed to parse original node JSON for rewrite: %w", err)
 				}
-			} else if newTerm, ok := node.(*ast.Term); ok {
-				// Single term changes
-				if term.Foundry != newTerm.Foundry {
-					rewrite["scope"] = "foundry"
-					rewrite["src"] = term.Foundry
-				} else if term.Layer != newTerm.Layer {
-					rewrite["scope"] = "layer"
-					rewrite["src"] = term.Layer
-				} else if term.Key != newTerm.Key {
-					rewrite["scope"] = "key"
-					rewrite["src"] = term.Key
-				} else if term.Value != newTerm.Value {
-					rewrite["scope"] = "value"
-					rewrite["src"] = term.Value
-				} else {
-					// No specific attribute changed, use full node replacement
-					originalBytes, err := parser.SerializeToJSON(originalNode)
-					if err != nil {
-						return nil, fmt.Errorf("failed to serialize original node for rewrite: %w", err)
-					}
-					var originalJSON any
-					if err := json.Unmarshal(originalBytes, &originalJSON); err != nil {
-						return nil, fmt.Errorf("failed to parse original node JSON for rewrite: %w", err)
-					}
-					rewrite["src"] = originalJSON
-				}
+				rewrite["original"] = originalJSON
 			}
 		} else {
 			// Full node replacement
@@ -288,7 +272,7 @@
 			if err := json.Unmarshal(originalBytes, &originalJSON); err != nil {
 				return nil, fmt.Errorf("failed to parse original node JSON for rewrite: %w", err)
 			}
-			rewrite["src"] = originalJSON
+			rewrite["original"] = originalJSON
 		}
 
 		// Add rewrite to the node
diff --git a/mapper/mapper_test.go b/mapper/mapper_test.go
index c41f2b9..c97238b 100644
--- a/mapper/mapper_test.go
+++ b/mapper/mapper_test.go
@@ -121,7 +121,7 @@
 						{
 							"@type": "koral:rewrite",
 							"editor": "termMapper",
-							"src": {
+							"original": {
 								"@type": "koral:term",
 								"foundry": "opennlp",
 								"key": "PIDAT",
@@ -177,8 +177,13 @@
 						{
 							"@type": "koral:rewrite",
 							"editor": "termMapper",
-							"scope": "foundry",
-							"src": "opennlp"
+							"original": {
+								"@type": "koral:term",
+								"foundry": "opennlp",
+								"key": "PIDAT",
+								"layer": "p",
+								"match": "match:eq"
+							}
 						}
 					]
 				}