diff --git a/pkg/trait/deployer.go b/pkg/trait/deployer.go
index 56b0322..f6052a1 100644
--- a/pkg/trait/deployer.go
+++ b/pkg/trait/deployer.go
@@ -136,7 +136,7 @@
 	// so that values defaulted by controllers server-side are not deleted.
 	// It's generally acceptable as these values are orthogonal to the values managed
 	// by the traits.
-	removeNilValues(reflect.ValueOf(positivePatch))
+	removeNilValues(reflect.ValueOf(positivePatch), reflect.Value{})
 
 	return json.Marshal(positivePatch)
 }
@@ -145,23 +145,28 @@
 	return &mergeFromPositivePatch{obj}
 }
 
-func removeNilValues(v reflect.Value) {
+func removeNilValues(v reflect.Value, parent reflect.Value) {
 	for v.Kind() == reflect.Ptr || v.Kind() == reflect.Interface {
 		v = v.Elem()
 	}
 	switch v.Kind() {
 	case reflect.Array, reflect.Slice:
 		for i := 0; i < v.Len(); i++ {
-			removeNilValues(v.Index(i))
+			removeNilValues(v.Index(i), v)
 		}
 	case reflect.Map:
 		for _, k := range v.MapKeys() {
 			c := v.MapIndex(k)
 			if c.IsNil() {
 				v.SetMapIndex(k, reflect.Value{})
+			} else if c.Elem().Kind() == reflect.Map && len(c.Elem().MapKeys()) == 0 {
+				v.SetMapIndex(k, reflect.Value{})
 			} else {
-				removeNilValues(c)
+				removeNilValues(c, v)
 			}
 		}
+		if len(v.MapKeys()) == 0 && parent.Kind() == reflect.Map {
+			removeNilValues(parent, reflect.Value{})
+		}
 	}
 }
