diff --git a/cmd/termmapper/fuzz_test.go b/cmd/termmapper/fuzz_test.go
index 8d63d53..e5dd7a5 100644
--- a/cmd/termmapper/fuzz_test.go
+++ b/cmd/termmapper/fuzz_test.go
@@ -8,11 +8,10 @@
 	"net/http"
 	"net/http/httptest"
 	"net/url"
-	"os"
-	"path/filepath"
 	"strings"
 	"testing"
 
+	tmconfig "github.com/KorAP/KoralPipe-TermMapper/config"
 	"github.com/KorAP/KoralPipe-TermMapper/mapper"
 	"github.com/gofiber/fiber/v2"
 	"github.com/stretchr/testify/assert"
@@ -31,26 +30,21 @@
 }
 
 func FuzzTransformEndpoint(f *testing.F) {
-	// Create a temporary config file with valid mappings
-	tmpDir := f.TempDir()
-	configFile := filepath.Join(tmpDir, "test-config.yaml")
-
-	configContent := `- id: test-mapper
-  foundryA: opennlp
-  layerA: p
-  foundryB: upos
-  layerB: p
-  mappings:
-    - "[PIDAT] <> [opennlp/p=PIDAT & opennlp/p=AdjType:Pdt]"
-    - "[DET] <> [opennlp/p=DET]"`
-
-	err := os.WriteFile(configFile, []byte(configContent), 0644)
-	if err != nil {
-		f.Fatal(err)
+	// Create test mapping list
+	mappingList := tmconfig.MappingList{
+		ID:       "test-mapper",
+		FoundryA: "opennlp",
+		LayerA:   "p",
+		FoundryB: "upos",
+		LayerB:   "p",
+		Mappings: []tmconfig.MappingRule{
+			"[PIDAT] <> [opennlp/p=PIDAT & opennlp/p=AdjType:Pdt]",
+			"[DET] <> [opennlp/p=DET]",
+		},
 	}
 
 	// Create mapper
-	m, err := mapper.NewMapper(configFile)
+	m, err := mapper.NewMapper([]tmconfig.MappingList{mappingList})
 	if err != nil {
 		f.Fatal(err)
 	}
@@ -141,19 +135,16 @@
 }
 
 func TestLargeInput(t *testing.T) {
-	// Create a temporary config file
-	tmpDir := t.TempDir()
-	configFile := filepath.Join(tmpDir, "test-config.yaml")
-
-	configContent := `- id: test-mapper
-  mappings:
-    - "[A] <> [B]"`
-
-	err := os.WriteFile(configFile, []byte(configContent), 0644)
-	require.NoError(t, err)
+	// Create test mapping list
+	mappingList := tmconfig.MappingList{
+		ID: "test-mapper",
+		Mappings: []tmconfig.MappingRule{
+			"[A] <> [B]",
+		},
+	}
 
 	// Create mapper
-	m, err := mapper.NewMapper(configFile)
+	m, err := mapper.NewMapper([]tmconfig.MappingList{mappingList})
 	require.NoError(t, err)
 
 	// Create fiber app
diff --git a/cmd/termmapper/main.go b/cmd/termmapper/main.go
index 664471d..4b29825 100644
--- a/cmd/termmapper/main.go
+++ b/cmd/termmapper/main.go
@@ -7,6 +7,7 @@
 	"strings"
 	"syscall"
 
+	"github.com/KorAP/KoralPipe-TermMapper/config"
 	"github.com/KorAP/KoralPipe-TermMapper/mapper"
 	"github.com/alecthomas/kong"
 	"github.com/gofiber/fiber/v2"
@@ -19,14 +20,14 @@
 	maxParamLength = 1024        // 1KB
 )
 
-type config struct {
+type appConfig struct {
 	Port     int    `kong:"short='p',default='8080',help='Port to listen on'"`
 	Config   string `kong:"short='c',required,help='YAML configuration file containing mapping directives'"`
 	LogLevel string `kong:"short='l',default='info',help='Log level (debug, info, warn, error)'"`
 }
 
-func parseConfig() *config {
-	cfg := &config{}
+func parseConfig() *appConfig {
+	cfg := &appConfig{}
 	ctx := kong.Parse(cfg,
 		kong.Description("A web service for transforming JSON objects using term mapping rules."),
 		kong.UsageOnError(),
@@ -58,8 +59,14 @@
 	// Set up logging
 	setupLogger(cfg.LogLevel)
 
+	// Load configuration file
+	yamlConfig, err := config.LoadConfig(cfg.Config)
+	if err != nil {
+		log.Fatal().Err(err).Msg("Failed to load configuration")
+	}
+
 	// Create a new mapper instance
-	m, err := mapper.NewMapper(cfg.Config)
+	m, err := mapper.NewMapper(yamlConfig.Lists)
 	if err != nil {
 		log.Fatal().Err(err).Msg("Failed to create mapper")
 	}
diff --git a/cmd/termmapper/main_test.go b/cmd/termmapper/main_test.go
index 6460ae7..7b83811 100644
--- a/cmd/termmapper/main_test.go
+++ b/cmd/termmapper/main_test.go
@@ -6,10 +6,9 @@
 	"io"
 	"net/http"
 	"net/http/httptest"
-	"os"
-	"path/filepath"
 	"testing"
 
+	tmconfig "github.com/KorAP/KoralPipe-TermMapper/config"
 	"github.com/KorAP/KoralPipe-TermMapper/mapper"
 	"github.com/gofiber/fiber/v2"
 	"github.com/stretchr/testify/assert"
@@ -17,24 +16,21 @@
 )
 
 func TestTransformEndpoint(t *testing.T) {
-	// Create a temporary config file
-	tmpDir := t.TempDir()
-	configFile := filepath.Join(tmpDir, "test-config.yaml")
-
-	configContent := `- id: test-mapper
-  foundryA: opennlp
-  layerA: p
-  foundryB: upos
-  layerB: p
-  mappings:
-    - "[PIDAT] <> [opennlp/p=PIDAT & opennlp/p=AdjType:Pdt]"
-    - "[DET] <> [opennlp/p=DET]"`
-
-	err := os.WriteFile(configFile, []byte(configContent), 0644)
-	require.NoError(t, err)
+	// Create test mapping list
+	mappingList := tmconfig.MappingList{
+		ID:       "test-mapper",
+		FoundryA: "opennlp",
+		LayerA:   "p",
+		FoundryB: "upos",
+		LayerB:   "p",
+		Mappings: []tmconfig.MappingRule{
+			"[PIDAT] <> [opennlp/p=PIDAT & opennlp/p=AdjType:Pdt]",
+			"[DET] <> [opennlp/p=DET]",
+		},
+	}
 
 	// Create mapper
-	m, err := mapper.NewMapper(configFile)
+	m, err := mapper.NewMapper([]tmconfig.MappingList{mappingList})
 	require.NoError(t, err)
 
 	// Create fiber app
@@ -255,18 +251,16 @@
 }
 
 func TestHealthEndpoint(t *testing.T) {
-	// Create a temporary config file for the mapper
-	tmpDir := t.TempDir()
-	configFile := filepath.Join(tmpDir, "test-config.yaml")
-	configContent := `- id: test-mapper
-  mappings:
-    - "[A] <> [B]"`
+	// Create test mapping list
+	mappingList := tmconfig.MappingList{
+		ID: "test-mapper",
+		Mappings: []tmconfig.MappingRule{
+			"[A] <> [B]",
+		},
+	}
 
-	err := os.WriteFile(configFile, []byte(configContent), 0644)
-	require.NoError(t, err)
-
-	// Create mapper with config
-	m, err := mapper.NewMapper(configFile)
+	// Create mapper
+	m, err := mapper.NewMapper([]tmconfig.MappingList{mappingList})
 	require.NoError(t, err)
 
 	// Create fiber app
