diff --git a/config/config.go b/config/config.go
index ff0db31..dd1e3e9 100644
--- a/config/config.go
+++ b/config/config.go
@@ -21,12 +21,13 @@
 
 // MappingList represents a list of mapping rules with metadata
 type MappingList struct {
-	ID       string        `yaml:"id"`
-	FoundryA string        `yaml:"foundryA,omitempty"`
-	LayerA   string        `yaml:"layerA,omitempty"`
-	FoundryB string        `yaml:"foundryB,omitempty"`
-	LayerB   string        `yaml:"layerB,omitempty"`
-	Mappings []MappingRule `yaml:"mappings"`
+	ID          string        `yaml:"id"`
+	Description string        `yaml:"desc,omitempty"`
+	FoundryA    string        `yaml:"foundryA,omitempty"`
+	LayerA      string        `yaml:"layerA,omitempty"`
+	FoundryB    string        `yaml:"foundryB,omitempty"`
+	LayerB      string        `yaml:"layerB,omitempty"`
+	Mappings    []MappingRule `yaml:"mappings"`
 }
 
 // MappingConfig represents the root configuration containing multiple mapping lists
diff --git a/config/config_test.go b/config/config_test.go
index f2678fb..a3f1d0c 100644
--- a/config/config_test.go
+++ b/config/config_test.go
@@ -503,78 +503,6 @@
 	assert.Equal(t, "ADJ", lowerTerm4.Key)
 }
 
-func TestExistingUposYaml(t *testing.T) {
-	// Test that the existing upos.yaml file can be parsed correctly
-	config, err := LoadConfig("../upos.yaml")
-	require.NoError(t, err)
-
-	// Verify the configuration loaded correctly
-	require.Len(t, config.Lists, 1)
-	list := config.Lists[0]
-	assert.Equal(t, "stts-ud", list.ID)
-	assert.Equal(t, "opennlp", list.FoundryA)
-	assert.Equal(t, "p", list.LayerA)
-	assert.Equal(t, "upos", list.FoundryB)
-	assert.Equal(t, "p", list.LayerB)
-	require.Len(t, list.Mappings, 54) // Should have 54 mapping rules
-
-	// Test that all mapping rules can be parsed successfully
-	results, err := list.ParseMappings()
-	require.NoError(t, err)
-	require.Len(t, results, 54)
-
-	// Test a few specific mappings to ensure they parse correctly
-
-	// Test the special character mappings
-	firstMapping := results[0] // "[$\\(] <> [PUNCT & PunctType=Brck]"
-	upperTerm := firstMapping.Upper.Wrap.(*ast.Term)
-	assert.Equal(t, "$(", upperTerm.Key)
-	assert.Equal(t, "opennlp", upperTerm.Foundry)
-	assert.Equal(t, "p", upperTerm.Layer)
-
-	lowerGroup := firstMapping.Lower.Wrap.(*ast.TermGroup)
-	require.Len(t, lowerGroup.Operands, 2)
-	assert.Equal(t, ast.AndRelation, lowerGroup.Relation)
-
-	punctTerm := lowerGroup.Operands[0].(*ast.Term)
-	assert.Equal(t, "PUNCT", punctTerm.Key)
-	assert.Equal(t, "upos", punctTerm.Foundry)
-	assert.Equal(t, "p", punctTerm.Layer)
-
-	punctTypeTerm := lowerGroup.Operands[1].(*ast.Term)
-	assert.Equal(t, "PunctType", punctTypeTerm.Layer)
-	assert.Equal(t, "Brck", punctTypeTerm.Key)
-	assert.Equal(t, "upos", punctTypeTerm.Foundry)
-
-	// Test a complex mapping with multiple attributes
-	// "[PIDAT] <> [DET & AdjType=Pdt & (PronType=Ind | PronType=Neg | PronType=Tot)]"
-	pidatMapping := results[24] // This should be the PIDAT mapping
-	pidatUpper := pidatMapping.Upper.Wrap.(*ast.Term)
-	assert.Equal(t, "PIDAT", pidatUpper.Key)
-
-	pidatLower := pidatMapping.Lower.Wrap.(*ast.TermGroup)
-	assert.Equal(t, ast.AndRelation, pidatLower.Relation)
-	require.Len(t, pidatLower.Operands, 3) // DET, AdjType=Pdt, and the parenthesized group
-
-	detTerm := pidatLower.Operands[0].(*ast.Term)
-	assert.Equal(t, "DET", detTerm.Key)
-
-	adjTypeTerm := pidatLower.Operands[1].(*ast.Term)
-	assert.Equal(t, "AdjType", adjTypeTerm.Layer)
-	assert.Equal(t, "Pdt", adjTypeTerm.Key)
-
-	// The third operand should be a nested TermGroup with OR relation
-	nestedGroup := pidatLower.Operands[2].(*ast.TermGroup)
-	assert.Equal(t, ast.OrRelation, nestedGroup.Relation)
-	require.Len(t, nestedGroup.Operands, 3) // PronType=Ind, PronType=Neg, PronType=Tot
-
-	for i, expectedValue := range []string{"Ind", "Neg", "Tot"} {
-		pronTypeTerm := nestedGroup.Operands[i].(*ast.Term)
-		assert.Equal(t, "PronType", pronTypeTerm.Layer)
-		assert.Equal(t, expectedValue, pronTypeTerm.Key)
-	}
-}
-
 func TestConfigWithSdkAndServer(t *testing.T) {
 	tests := []struct {
 		name           string
