diff --git a/merge.go b/merge.go
index 3675b6e3d4073443c7948c89148f4365a2a7fb4b..64f72ed98f9fce00a4746d40068365c1b1d3d95a 100644
--- a/merge.go
+++ b/merge.go
@@ -14,7 +14,7 @@ func (s *Settings[C]) Merge(change C) *Settings[C] {
 	s.Lock()
 	defer s.Unlock()
 
-	if err := mergo.Merge(&s.config, change); err != nil {
+	if err := mergo.Merge(&s.config, change, mergo.WithOverride, mergo.WithTypeCheck); err != nil {
 		s.errors = append(s.errors, err)
 	}
 
diff --git a/merge_test.go b/merge_test.go
new file mode 100644
index 0000000000000000000000000000000000000000..006350a4727f89bfa72e30656d46439f92c5f3e8
--- /dev/null
+++ b/merge_test.go
@@ -0,0 +1,25 @@
+// Copyright 2022 schukai GmbH
+// SPDX-License-Identifier: AGPL-3.0
+
+package configuration
+
+import (
+	"github.com/stretchr/testify/assert"
+	"testing"
+)
+
+func TestMerge(t *testing.T) {
+	var configS, configD ConfigStruct2
+
+	source := New(configS)
+	source.config.H.HA = 2
+
+	dest := New(configD)
+	dest.config.H.HA = 1
+
+	assert.Equal(t, dest.config.H.HA, 1)
+	dest.Merge(source.config)
+
+	assert.Equal(t, dest.config.H.HA, 2)
+
+}