diff --git a/core/installer/bootstrapper.go b/core/installer/bootstrapper.go
index fa1a997..b981573 100644
--- a/core/installer/bootstrapper.go
+++ b/core/installer/bootstrapper.go
@@ -388,17 +388,12 @@
 		if err != nil {
 			return err
 		}
-		namespaces := make([]string, len(app.Namespaces()))
-		for i, n := range app.Namespaces() {
-			namespaces[i], err = nsGen.Generate(n)
-			if err != nil {
-				return err
-			}
+		nms, err := nsGen.Generate(app.Namespace())
+		if err != nil {
+			return err
 		}
-		for _, n := range namespaces {
-			if err := nsCreator.Create(n); err != nil {
-				return err
-			}
+		if err := nsCreator.Create(nms); err != nil {
+			return err
 		}
 		derived := Derived{
 			Global: Values{
@@ -407,9 +402,7 @@
 			Release: Release{},
 			Values:  make(map[string]any),
 		}
-		if len(namespaces) > 0 {
-			derived.Release.Namespace = namespaces[0]
-		}
+		derived.Release.Namespace = nms
 		values := map[string]any{}
 		return repo.InstallApp(app, filepath.Join("/infrastructure", app.Name()), values, derived)
 	}
@@ -497,17 +490,12 @@
 	if err != nil {
 		return err
 	}
-	namespaces := make([]string, len(app.Namespaces()))
-	for i, n := range app.Namespaces() {
-		namespaces[i], err = nsGen.Generate(n)
-		if err != nil {
-			return err
-		}
+	nms, err := nsGen.Generate(app.Namespace())
+	if err != nil {
+		return err
 	}
-	for _, n := range namespaces {
-		if err := nsCreator.Create(n); err != nil {
-			return err
-		}
+	if err := nsCreator.Create(nms); err != nil {
+		return err
 	}
 	derived := Derived{
 		Global: Values{
@@ -520,9 +508,7 @@
 			"sshPrivateKey": string(keys.RawPrivateKey()),
 		},
 	}
-	if len(namespaces) > 0 {
-		derived.Release.Namespace = namespaces[0]
-	}
+	derived.Release.Namespace = nms
 	return repo.InstallApp(app, filepath.Join("/infrastructure", app.Name()), derived.Values, derived)
 }
 
@@ -532,17 +518,12 @@
 	if err != nil {
 		return err
 	}
-	namespaces := make([]string, len(app.Namespaces()))
-	for i, n := range app.Namespaces() {
-		namespaces[i], err = nsGen.Generate(n)
-		if err != nil {
-			return err
-		}
+	nms, err := nsGen.Generate(app.Namespace())
+	if err != nil {
+		return err
 	}
-	for _, n := range namespaces {
-		if err := nsCreator.Create(n); err != nil {
-			return err
-		}
+	if err := nsCreator.Create(nms); err != nil {
+		return err
 	}
 	derived := Derived{
 		Global: Values{
@@ -550,9 +531,7 @@
 		},
 		Values: map[string]any{},
 	}
-	if len(namespaces) > 0 {
-		derived.Release.Namespace = namespaces[0]
-	}
+	derived.Release.Namespace = nms
 	return repo.InstallApp(app, filepath.Join("/infrastructure", app.Name()), derived.Values, derived)
 }
 
@@ -603,7 +582,7 @@
 	if err != nil {
 		return err
 	}
-	ns, err := nsGen.Generate(app.Namespaces()[0])
+	ns, err := nsGen.Generate(app.Namespace())
 	if err != nil {
 		return err
 	}
