diff --git a/parser/grammar_parser.go b/parser/grammar_parser.go
index 5bed828..8e46611 100644
--- a/parser/grammar_parser.go
+++ b/parser/grammar_parser.go
@@ -27,13 +27,6 @@
 	Mapping *MappingRule `parser:"@@"`
 }
 
-/*
-// Grammar represents the root of our grammar
-type Grammar struct {
-	Token   *TokenExpr   `parser:"  @@"`
-	Mapping *MappingRule `parser:"| @@"`
-}*/
-
 // MappingRule represents a mapping between two token expressions
 type MappingRule struct {
 	Upper *TokenExpr `parser:"@@"`
diff --git a/parser/parser.go b/parser/parser.go
index 4f8c3bc..e9b1102 100644
--- a/parser/parser.go
+++ b/parser/parser.go
@@ -8,6 +8,8 @@
 	"fmt"
 	"strings"
 
+	"maps"
+
 	"github.com/KorAP/KoralPipe-TermMapper/ast"
 )
 
@@ -23,13 +25,13 @@
 	Match    string          `json:"match,omitempty"`
 	Value    string          `json:"value,omitempty"`
 	// Store any additional fields
-	Extra map[string]interface{} `json:"-"`
+	Extra map[string]any `json:"-"`
 }
 
 // UnmarshalJSON implements the json.Unmarshaler interface
 func (r *rawNode) UnmarshalJSON(data []byte) error {
 	// First unmarshal into a map to capture all fields
-	var raw map[string]interface{}
+	var raw map[string]any
 	if err := json.Unmarshal(data, &raw); err != nil {
 		return err
 	}
@@ -43,7 +45,7 @@
 	*r = rawNode(temp)
 
 	// Store any fields not in the struct in Extra
-	r.Extra = make(map[string]interface{})
+	r.Extra = make(map[string]any)
 	for k, v := range raw {
 		switch k {
 		case "@type", "wrap", "operands", "relation", "foundry", "key", "layer", "match", "value":
@@ -59,7 +61,7 @@
 // MarshalJSON implements the json.Marshaler interface
 func (r rawNode) MarshalJSON() ([]byte, error) {
 	// Create a map with all fields
-	raw := make(map[string]interface{})
+	raw := make(map[string]any)
 
 	// Add the known fields if they're not empty
 	raw["@type"] = r.Type
@@ -89,9 +91,7 @@
 	}
 
 	// Add any extra fields
-	for k, v := range r.Extra {
-		raw[k] = v
-	}
+	maps.Copy(raw, r.Extra)
 
 	return json.Marshal(raw)
 }
@@ -243,8 +243,7 @@
 
 // SerializeToJSON converts an AST node back to JSON
 func SerializeToJSON(node ast.Node) ([]byte, error) {
-	raw := nodeToRaw(node)
-	return json.MarshalIndent(raw, "", "  ")
+	return json.MarshalIndent(nodeToRaw(node), "", "  ")
 }
 
 // nodeToRaw converts an AST node to a raw node for JSON serialization
diff --git a/parser/parser_test.go b/parser/parser_test.go
index df07619..87405e4 100644
--- a/parser/parser_test.go
+++ b/parser/parser_test.go
@@ -416,7 +416,7 @@
 
 	for _, tt := range tests {
 		t.Run(tt.name, func(t *testing.T) {
-			result, err := JSON(tt.input)
+			result, err := SerializeToJSON(tt.input)
 			if tt.wantErr {
 				assert.Error(t, err)
 				return
@@ -466,7 +466,7 @@
 	require.NoError(t, err)
 
 	// Serialize AST back to JSON
-	output, err := JSON(node)
+	output, err := SerializeToJSON(node)
 	require.NoError(t, err)
 
 	// Compare JSON objects
@@ -516,7 +516,7 @@
 	require.Len(t, catchall.Operands, 1)
 
 	// Serialize AST back to JSON
-	output, err := JSON(node)
+	output, err := SerializeToJSON(node)
 	require.NoError(t, err)
 
 	// Compare JSON objects
