diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 08b14ac1909e41ffebbe3c042db50cf28567913c..102ff476f8735ab80e7db04ead5b2ad440e99d12 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -82,9 +82,9 @@ include:
     - changes:
         - flux2/apps/monitoring/*.yaml
         - flux2/cluster/optional/monitoring/*.yaml
-        - flux2/infrastructure/sources/grafana.yaml
-        - flux2/infrastructure/sources/wikimedia.yaml
-        - flux2/infrastructure/sources/prometheus-community.yaml
+        - flux2/core/base/sources/grafana.yaml
+        - flux2/core/base/sources/wikimedia.yaml
+        - flux2/core/base/sources/prometheus-community.yaml
         - flux2/config/monitoring/*.yaml
         - install/install-app.sh
         - install/flux-version-check.sh
@@ -114,7 +114,7 @@ include:
     - changes:
         - flux2/apps/$RESOURCE/*.yaml
         - flux2/cluster/optional/$RESOURCE/*.yaml
-        - flux2/infrastructure/sources/nextcloud.yaml
+        - flux2/core/base/sources/nextcloud.yaml
         - install/install-app.sh
         - install/flux-version-check.sh
         - test/taiko/*
@@ -146,7 +146,7 @@ include:
     - changes:
         - flux2/apps/$RESOURCE/*.yaml
         - flux2/cluster/optional/$RESOURCE/*.yaml
-        - flux2/infrastructure/sources/wekan.yaml
+        - flux2/core/base/sources/wekan.yaml
         - install/install-app.sh
         - install/flux-version-check.sh
         - test/taiko/*
@@ -159,7 +159,7 @@ include:
     - changes:
         - flux2/apps/$RESOURCE/*.yaml
         - flux2/cluster/optional/$RESOURCE/*.yaml
-        - flux2/infrastructure/sources/wordpress.yaml
+        - flux2/core/base/sources/wordpress.yaml
         - install/install-app.sh
         - install/flux-version-check.sh
         - test/taiko/*
@@ -172,7 +172,7 @@ include:
     - changes:
         - flux2/apps/$RESOURCE/*.yaml
         - flux2/cluster/optional/$RESOURCE/*.yaml
-        - flux2/infrastructure/sources/zulip.yaml
+        - flux2/core/base/sources/zulip.yaml
         - install/install-app.sh
         - install/flux-version-check.sh
         - test/taiko/*
@@ -379,15 +379,57 @@ setup-stackspin:
     - .general_rules
   interruptible: true
 
-core-kustomizations-ready:
+cert-manager-kustomizations-ready:
   variables:
-    RESOURCE: "core"
+    RESOURCE: "cert-manager"
   extends:
     - .kustomization-ready
 
-infrastructure-kustomizations-ready:
+dashboard-kustomizations-ready:
   variables:
-    RESOURCE: "infrastructure"
+    RESOURCE: "dashboard"
+  extends:
+    - .kustomization-ready
+
+letsencrypt-issuer-kustomizations-ready:
+  variables:
+    RESOURCE: "letsencrypt-issuer"
+  extends:
+    - .kustomization-ready
+
+local-path-provisioner-kustomizations-ready:
+  variables:
+    RESOURCE: "local-path-provisioner"
+  extends:
+    - .kustomization-ready
+
+metallb-kustomizations-ready:
+  variables:
+    RESOURCE: "metallb"
+  extends:
+    - .kustomization-ready
+
+namespaces-kustomizations-ready:
+  variables:
+    RESOURCE: "namespaces"
+  extends:
+    - .kustomization-ready
+
+nginx-kustomizations-ready:
+  variables:
+    RESOURCE: "nginx"
+  extends:
+    - .kustomization-ready
+
+single-sign-on-kustomizations-ready:
+  variables:
+    RESOURCE: "single-sign-on"
+  extends:
+    - .kustomization-ready
+
+sources-kustomizations-ready:
+  variables:
+    RESOURCE: "sources"
   extends:
     - .kustomization-ready
 
@@ -547,7 +589,7 @@ single-sign-on-cert:
   variables:
     RESOURCE: "single-sign-on"
   needs:
-    - job: core-kustomizations-ready
+    - job: single-sign-on-kustomizations-ready
     - job: setup-stackspin
   extends:
     - .apps-cert
@@ -557,7 +599,7 @@ dashboard-cert:
   variables:
     RESOURCE: "dashboard"
   needs:
-    - job: core-kustomizations-ready
+    - job: dashboard-kustomizations-ready
     - job: setup-stackspin
   extends:
     - .apps-cert
@@ -654,7 +696,7 @@ dashboard-taiko:
     RESOURCE: "dashboard"
   needs:
     - job: setup-stackspin
-    - job: core-kustomizations-ready
+    - job: dashboard-kustomizations-ready
   extends:
     - .taiko
     - .general_rules
diff --git a/flux2/cluster/base/cert-manager.yaml b/flux2/cluster/base/cert-manager.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..bb0ae4cdfcdf7a1476fcd22dc74567ee36bae07c
--- /dev/null
+++ b/flux2/cluster/base/cert-manager.yaml
@@ -0,0 +1,26 @@
+---
+apiVersion: kustomize.toolkit.fluxcd.io/v1beta1
+kind: Kustomization
+metadata:
+  name: cert-manager
+  namespace: flux-system
+spec:
+  interval: 1h
+  dependsOn:
+    - namespaces
+    - metallb
+  timeout: 20m
+  sourceRef:
+    kind: GitRepository
+    name: stackspin
+  path: ./flux2/core/base/cert-manager
+  prune: true
+  healthChecks:
+    - apiVersion: helm.toolkit.fluxcd.io/v1beta1
+      kind: HelmRelease
+      name: cert-manager
+      namespace: cert-manager
+    - apiVersion: apps/v1
+      kind: Deployment
+      name: cert-manager
+      namespace: cert-manager
diff --git a/flux2/cluster/base/dashboard.yaml b/flux2/cluster/base/dashboard.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..3f0703e5f82c388e94183a24e67fdb8e0a37b641
--- /dev/null
+++ b/flux2/cluster/base/dashboard.yaml
@@ -0,0 +1,34 @@
+---
+apiVersion: kustomize.toolkit.fluxcd.io/v1beta1
+kind: Kustomization
+metadata:
+  name: dashboard
+  namespace: flux-system
+spec:
+  dependsOn:
+    - name: single-sign-on
+  interval: 1h
+  timeout: 20m
+  sourceRef:
+    kind: GitRepository
+    name: stackspin
+  path: ./flux2/core/base/dashboard
+  prune: true
+  wait: true
+  postBuild:
+    substituteFrom:
+      - kind: Secret
+        name: stackspin-dashboard-variables
+      - kind: Secret
+        name: stackspin-oauth-variables
+      - kind: Secret
+        name: stackspin-cluster-variables
+  healthChecks:
+    - apiVersion: helm.toolkit.fluxcd.io/v1beta1
+      kind: HelmRelease
+      name: dashboard
+      namespace: stackspin
+    - apiVersion: apps/v1
+      kind: Deployment
+      name: dashboard
+      namespace: stackspin
diff --git a/flux2/cluster/base/letsencrypt-issuer.yaml b/flux2/cluster/base/letsencrypt-issuer.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..4a079a6baffeea79c9e249f9a5dfb4c4816aee0f
--- /dev/null
+++ b/flux2/cluster/base/letsencrypt-issuer.yaml
@@ -0,0 +1,21 @@
+---
+apiVersion: kustomize.toolkit.fluxcd.io/v1beta1
+kind: Kustomization
+metadata:
+  name: letsencrypt-issuer
+  namespace: flux-system
+spec:
+  dependsOn:
+    - name: cert-manager
+  interval: 1h
+  timeout: 20m
+  sourceRef:
+    kind: GitRepository
+    name: stackspin
+  path: ./flux2/core/base/letsencrypt-issuer
+  prune: true
+  wait: true
+  postBuild:
+    substituteFrom:
+      - kind: Secret
+        name: stackspin-cluster-variables
diff --git a/flux2/cluster/base/infrastructure.yaml b/flux2/cluster/base/local-path-provisioner.yaml
similarity index 60%
rename from flux2/cluster/base/infrastructure.yaml
rename to flux2/cluster/base/local-path-provisioner.yaml
index bcd11891ab4a5429d88ed2a55be40292665cdb95..e28c86a47cd7bf6e868c68a4a90a8efeb6fc18bc 100644
--- a/flux2/cluster/base/infrastructure.yaml
+++ b/flux2/cluster/base/local-path-provisioner.yaml
@@ -2,29 +2,21 @@
 apiVersion: kustomize.toolkit.fluxcd.io/v1beta1
 kind: Kustomization
 metadata:
-  name: infrastructure
+  name: local-path-provisioner
   namespace: flux-system
 spec:
   interval: 1h
+  timeout: 20m
   sourceRef:
     kind: GitRepository
     name: stackspin
-  path: ./flux2/infrastructure
+  path: ./flux2/core/base/local-path-provisioner
   prune: true
-  validation: client
   healthChecks:
-    - apiVersion: helm.toolkit.fluxcd.io/v1beta1
-      kind: HelmRelease
-      name: cert-manager
-      namespace: cert-manager
     - apiVersion: helm.toolkit.fluxcd.io/v1beta1
       kind: HelmRelease
       name: local-path-provisioner
       namespace: kube-system
-    - apiVersion: apps/v1
-      kind: Deployment
-      name: cert-manager
-      namespace: cert-manager
     - apiVersion: apps/v1
       kind: Deployment
       name: local-path-provisioner
diff --git a/flux2/cluster/base/metallb.yaml b/flux2/cluster/base/metallb.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..4ce675e1f43f48f8f1f883b6d275d7f749ca1402
--- /dev/null
+++ b/flux2/cluster/base/metallb.yaml
@@ -0,0 +1,15 @@
+---
+apiVersion: kustomize.toolkit.fluxcd.io/v1beta1
+kind: Kustomization
+metadata:
+  name: metallb
+  namespace: flux-system
+spec:
+  interval: 1h
+  timeout: 20m
+  sourceRef:
+    kind: GitRepository
+    name: stackspin
+  path: ./flux2/core/base/metallb
+  prune: true
+  wait: true
diff --git a/flux2/cluster/base/namespaces.yaml b/flux2/cluster/base/namespaces.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..70b33ef1b42186eaeb7788772e5fecc2c5613c3b
--- /dev/null
+++ b/flux2/cluster/base/namespaces.yaml
@@ -0,0 +1,15 @@
+---
+apiVersion: kustomize.toolkit.fluxcd.io/v1beta1
+kind: Kustomization
+metadata:
+  name: namespaces
+  namespace: flux-system
+spec:
+  interval: 1h
+  timeout: 20m
+  sourceRef:
+    kind: GitRepository
+    name: stackspin
+  path: ./flux2/core/base/namespaces
+  prune: true
+  wait: true
diff --git a/flux2/cluster/base/nginx.yaml b/flux2/cluster/base/nginx.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..ab9ea93a55bdb04e2a8dc53a7fd5a08f54a8858e
--- /dev/null
+++ b/flux2/cluster/base/nginx.yaml
@@ -0,0 +1,23 @@
+---
+apiVersion: kustomize.toolkit.fluxcd.io/v1beta1
+kind: Kustomization
+metadata:
+  name: nginx
+  namespace: flux-system
+spec:
+  dependsOn:
+    - name: metallb
+    - name: sources
+    - name: namespaces
+  interval: 1h
+  timeout: 20m
+  sourceRef:
+    kind: GitRepository
+    name: stackspin
+  path: ./flux2/core/base/nginx
+  prune: true
+  postBuild:
+    substituteFrom:
+      - kind: Secret
+        name: stackspin-cluster-variables
+  wait: true
diff --git a/flux2/cluster/base/core.yaml b/flux2/cluster/base/single-sign-on.yaml
similarity index 60%
rename from flux2/cluster/base/core.yaml
rename to flux2/cluster/base/single-sign-on.yaml
index 8420863f265b788da90a4cb990b340098ab0a052..814ef5bb4328173da29d394140eb4d62d7b4ed83 100644
--- a/flux2/cluster/base/core.yaml
+++ b/flux2/cluster/base/single-sign-on.yaml
@@ -2,22 +2,22 @@
 apiVersion: kustomize.toolkit.fluxcd.io/v1beta1
 kind: Kustomization
 metadata:
-  name: core
+  name: single-sign-on
   namespace: flux-system
 spec:
   dependsOn:
-    - name: infrastructure
+    - name: nginx
+    - name: letsencrypt-issuer
+    - name: local-path-provisioner
   interval: 1h
+  timeout: 20m
   sourceRef:
     kind: GitRepository
     name: stackspin
-  path: ./flux2/core
+  path: ./flux2/core/base/single-sign-on
   prune: true
-  validation: client
   postBuild:
     substituteFrom:
-      - kind: Secret
-        name: stackspin-dashboard-variables
       - kind: Secret
         name: stackspin-single-sign-on-variables
       - kind: Secret
@@ -25,22 +25,10 @@ spec:
       - kind: Secret
         name: stackspin-cluster-variables
   healthChecks:
-    - apiVersion: helm.toolkit.fluxcd.io/v1beta1
-      kind: HelmRelease
-      name: metallb
-      namespace: kube-system
-    - apiVersion: helm.toolkit.fluxcd.io/v1beta1
-      kind: HelmRelease
-      name: nginx
-      namespace: stackspin
     - apiVersion: helm.toolkit.fluxcd.io/v1beta1
       kind: HelmRelease
       name: single-sign-on
       namespace: stackspin
-    - apiVersion: helm.toolkit.fluxcd.io/v1beta1
-      kind: HelmRelease
-      name: dashboard
-      namespace: stackspin
     - apiVersion: apps/v1
       kind: Deployment
       name: single-sign-on-userbackend
@@ -53,7 +41,3 @@ spec:
       kind: Deployment
       name: single-sign-on-login
       namespace: stackspin
-    - apiVersion: apps/v1
-      kind: Deployment
-      name: dashboard
-      namespace: stackspin
diff --git a/flux2/cluster/base/sources.yaml b/flux2/cluster/base/sources.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..e8d4b5a5a24abe241ca923d5892d1bef2ccc21c3
--- /dev/null
+++ b/flux2/cluster/base/sources.yaml
@@ -0,0 +1,15 @@
+---
+apiVersion: kustomize.toolkit.fluxcd.io/v1beta1
+kind: Kustomization
+metadata:
+  name: sources
+  namespace: flux-system
+spec:
+  interval: 1h
+  timeout: 20m
+  sourceRef:
+    kind: GitRepository
+    name: stackspin
+  path: ./flux2/core/base/sources
+  prune: true
+  wait: true
diff --git a/flux2/cluster/optional/monitoring/monitoring-config.yaml b/flux2/cluster/optional/monitoring/monitoring-config.yaml
index 9952710d37e5cd607262f12bb9cdecaea0fe3514..ec8d482f59263c049d5bd0975221d9eb4256099b 100644
--- a/flux2/cluster/optional/monitoring/monitoring-config.yaml
+++ b/flux2/cluster/optional/monitoring/monitoring-config.yaml
@@ -13,4 +13,3 @@ spec:
     name: stackspin
   path: ./flux2/config/monitoring
   prune: true
-  validation: client
diff --git a/flux2/cluster/optional/monitoring/monitoring.yaml b/flux2/cluster/optional/monitoring/monitoring.yaml
index 90e5f5b1e5724bbf6db5d694fe1a13492d326619..0624a2da2042d4f194df1222a90560a499d674ba 100644
--- a/flux2/cluster/optional/monitoring/monitoring.yaml
+++ b/flux2/cluster/optional/monitoring/monitoring.yaml
@@ -7,14 +7,20 @@ metadata:
 spec:
   interval: 1h
   dependsOn:
-    - name: core
-    - name: infrastructure
+    - cert-manager
+    - dashboard
+    - letsencrypt-issuer
+    - local-path-provisioner
+    - metallb
+    - namespaces
+    - nginx
+    - single-sign-on
+    - sources
   sourceRef:
     kind: GitRepository
     name: stackspin
   path: ./flux2/apps/monitoring
   prune: true
-  validation: client
   healthChecks:
     - apiVersion: helm.toolkit.fluxcd.io/v1beta1
       kind: HelmRelease
diff --git a/flux2/cluster/optional/nextcloud/nextcloud.yaml b/flux2/cluster/optional/nextcloud/nextcloud.yaml
index a8dc35479dc16bcfd1a3e15814c8fe19ab084fd4..b54aca1eb3ba9fc165acc4f10c36ba98a41b4281 100644
--- a/flux2/cluster/optional/nextcloud/nextcloud.yaml
+++ b/flux2/cluster/optional/nextcloud/nextcloud.yaml
@@ -7,14 +7,20 @@ metadata:
 spec:
   interval: 1h
   dependsOn:
-    - name: core
-    - name: infrastructure
+    - cert-manager
+    - dashboard
+    - letsencrypt-issuer
+    - local-path-provisioner
+    - metallb
+    - namespaces
+    - nginx
+    - single-sign-on
+    - sources
   sourceRef:
     kind: GitRepository
     name: stackspin
   path: ./flux2/apps/nextcloud
   prune: true
-  validation: client
   healthChecks:
     - apiVersion: helm.toolkit.fluxcd.io/v1beta1
       kind: HelmRelease
diff --git a/flux2/cluster/optional/rocketchat/rocketchat.yaml b/flux2/cluster/optional/rocketchat/rocketchat.yaml
index 8e2924f24acdcee9acdfd7c414ba384bb376d33a..6d487b68767c0ea6cd31b90bcdc39b916fc526b3 100644
--- a/flux2/cluster/optional/rocketchat/rocketchat.yaml
+++ b/flux2/cluster/optional/rocketchat/rocketchat.yaml
@@ -7,14 +7,20 @@ metadata:
 spec:
   interval: 1h
   dependsOn:
-    - name: core
-    - name: infrastructure
+    - cert-manager
+    - dashboard
+    - letsencrypt-issuer
+    - local-path-provisioner
+    - metallb
+    - namespaces
+    - nginx
+    - single-sign-on
+    - sources
   sourceRef:
     kind: GitRepository
     name: stackspin
   path: ./flux2/apps/rocketchat
   prune: true
-  validation: client
   healthChecks:
     - apiVersion: helm.toolkit.fluxcd.io/v1beta1
       kind: HelmRelease
diff --git a/flux2/cluster/optional/velero/velero.yaml b/flux2/cluster/optional/velero/velero.yaml
index 1893f524e7268f1edafbec6625ecccece721ca5a..c058377b5d28bd5db309fae0ee93eee7f241eca8 100644
--- a/flux2/cluster/optional/velero/velero.yaml
+++ b/flux2/cluster/optional/velero/velero.yaml
@@ -7,14 +7,20 @@ metadata:
 spec:
   interval: 1h
   dependsOn:
-    - name: core
-    - name: infrastructure
+    - cert-manager
+    - dashboard
+    - letsencrypt-issuer
+    - local-path-provisioner
+    - metallb
+    - namespaces
+    - nginx
+    - single-sign-on
+    - sources
   sourceRef:
     kind: GitRepository
     name: stackspin
   path: ./flux2/apps/velero
   prune: true
-  validation: client
   healthChecks:
     - apiVersion: helm.toolkit.fluxcd.io/v1beta1
       kind: HelmRelease
diff --git a/flux2/cluster/optional/wekan/wekan.yaml b/flux2/cluster/optional/wekan/wekan.yaml
index c231ba7f3ed79763ef0349667f66ac96c0e5558c..74522fec3e73d9de2d7e0d9e88435497fb126413 100644
--- a/flux2/cluster/optional/wekan/wekan.yaml
+++ b/flux2/cluster/optional/wekan/wekan.yaml
@@ -7,14 +7,20 @@ metadata:
 spec:
   interval: 1h
   dependsOn:
-    - name: core
-    - name: infrastructure
+    - cert-manager
+    - dashboard
+    - letsencrypt-issuer
+    - local-path-provisioner
+    - metallb
+    - namespaces
+    - nginx
+    - single-sign-on
+    - sources
   sourceRef:
     kind: GitRepository
     name: stackspin
   path: ./flux2/apps/wekan
   prune: true
-  validation: client
   healthChecks:
     - apiVersion: helm.toolkit.fluxcd.io/v1beta1
       kind: HelmRelease
diff --git a/flux2/cluster/optional/wordpress/wordpress.yaml b/flux2/cluster/optional/wordpress/wordpress.yaml
index 54510a83cac42a7f9aa3698eb6c8b93a2158834e..127d8e688d9b7b217722a3f586c4b8eaadf3837a 100644
--- a/flux2/cluster/optional/wordpress/wordpress.yaml
+++ b/flux2/cluster/optional/wordpress/wordpress.yaml
@@ -7,14 +7,20 @@ metadata:
 spec:
   interval: 1h
   dependsOn:
-    - name: core
-    - name: infrastructure
+    - cert-manager
+    - dashboard
+    - letsencrypt-issuer
+    - local-path-provisioner
+    - metallb
+    - namespaces
+    - nginx
+    - single-sign-on
+    - sources
   sourceRef:
     kind: GitRepository
     name: stackspin
   path: ./flux2/apps/wordpress
   prune: true
-  validation: client
   healthChecks:
     - apiVersion: helm.toolkit.fluxcd.io/v1beta1
       kind: HelmRelease
diff --git a/flux2/cluster/optional/zulip/zulip.yaml b/flux2/cluster/optional/zulip/zulip.yaml
index 47bf28fa0077e5f8f70668fa2119678441f640a0..d8c0c9999488f30e243692999cacb1e267396f2a 100644
--- a/flux2/cluster/optional/zulip/zulip.yaml
+++ b/flux2/cluster/optional/zulip/zulip.yaml
@@ -7,14 +7,20 @@ metadata:
 spec:
   interval: 1h
   dependsOn:
-    - name: core
-    - name: infrastructure
+    - cert-manager
+    - dashboard
+    - letsencrypt-issuer
+    - local-path-provisioner
+    - metallb
+    - namespaces
+    - nginx
+    - single-sign-on
+    - sources
   sourceRef:
     kind: GitRepository
     name: stackspin
   path: ./flux2/apps/zulip
   prune: true
-  validation: client
   healthChecks:
     - apiVersion: helm.toolkit.fluxcd.io/v1beta1
       kind: HelmRelease
diff --git a/flux2/infrastructure/cert-manager/cert-manager-values-configmap.yaml b/flux2/core/base/cert-manager/cert-manager-values-configmap.yaml
similarity index 100%
rename from flux2/infrastructure/cert-manager/cert-manager-values-configmap.yaml
rename to flux2/core/base/cert-manager/cert-manager-values-configmap.yaml
diff --git a/flux2/infrastructure/cert-manager/kustomization.yaml b/flux2/core/base/cert-manager/kustomization.yaml
similarity index 100%
rename from flux2/infrastructure/cert-manager/kustomization.yaml
rename to flux2/core/base/cert-manager/kustomization.yaml
diff --git a/flux2/infrastructure/cert-manager/release.yaml b/flux2/core/base/cert-manager/release.yaml
similarity index 100%
rename from flux2/infrastructure/cert-manager/release.yaml
rename to flux2/core/base/cert-manager/release.yaml
diff --git a/flux2/core/base/cluster-issuer/cluster-issuer.yaml b/flux2/core/base/letsencrypt-issuer/cluster-issuer.yaml
similarity index 100%
rename from flux2/core/base/cluster-issuer/cluster-issuer.yaml
rename to flux2/core/base/letsencrypt-issuer/cluster-issuer.yaml
diff --git a/flux2/core/base/cluster-issuer/kustomization.yaml b/flux2/core/base/letsencrypt-issuer/kustomization.yaml
similarity index 81%
rename from flux2/core/base/cluster-issuer/kustomization.yaml
rename to flux2/core/base/letsencrypt-issuer/kustomization.yaml
index 5b5d3a7f8765ed5ffcfa5be831566c0c7b9c0b6d..2520197c94407fddae4111a731fe549293abf9fd 100644
--- a/flux2/core/base/cluster-issuer/kustomization.yaml
+++ b/flux2/core/base/letsencrypt-issuer/kustomization.yaml
@@ -3,4 +3,4 @@ apiVersion: kustomize.config.k8s.io/v1beta1
 kind: Kustomization
 namespace: cert-manager
 resources:
-  - cluster-issuer.yaml
\ No newline at end of file
+  - cluster-issuer.yaml
diff --git a/flux2/infrastructure/local-path-provisioner/kustomization.yaml b/flux2/core/base/local-path-provisioner/kustomization.yaml
similarity index 100%
rename from flux2/infrastructure/local-path-provisioner/kustomization.yaml
rename to flux2/core/base/local-path-provisioner/kustomization.yaml
diff --git a/flux2/infrastructure/local-path-provisioner/local-path-provisioner-values-configmap.yaml b/flux2/core/base/local-path-provisioner/local-path-provisioner-values-configmap.yaml
similarity index 100%
rename from flux2/infrastructure/local-path-provisioner/local-path-provisioner-values-configmap.yaml
rename to flux2/core/base/local-path-provisioner/local-path-provisioner-values-configmap.yaml
diff --git a/flux2/infrastructure/local-path-provisioner/release.yaml b/flux2/core/base/local-path-provisioner/release.yaml
similarity index 100%
rename from flux2/infrastructure/local-path-provisioner/release.yaml
rename to flux2/core/base/local-path-provisioner/release.yaml
diff --git a/flux2/infrastructure/namespaces/cert-manager.yaml b/flux2/core/base/namespaces/cert-manager.yaml
similarity index 100%
rename from flux2/infrastructure/namespaces/cert-manager.yaml
rename to flux2/core/base/namespaces/cert-manager.yaml
diff --git a/flux2/infrastructure/namespaces/kustomization.yaml b/flux2/core/base/namespaces/kustomization.yaml
similarity index 100%
rename from flux2/infrastructure/namespaces/kustomization.yaml
rename to flux2/core/base/namespaces/kustomization.yaml
diff --git a/flux2/infrastructure/namespaces/stackspin-apps.yaml b/flux2/core/base/namespaces/stackspin-apps.yaml
similarity index 100%
rename from flux2/infrastructure/namespaces/stackspin-apps.yaml
rename to flux2/core/base/namespaces/stackspin-apps.yaml
diff --git a/flux2/infrastructure/namespaces/stackspin.yaml b/flux2/core/base/namespaces/stackspin.yaml
similarity index 100%
rename from flux2/infrastructure/namespaces/stackspin.yaml
rename to flux2/core/base/namespaces/stackspin.yaml
diff --git a/flux2/infrastructure/namespaces/velero.yaml b/flux2/core/base/namespaces/velero.yaml
similarity index 73%
rename from flux2/infrastructure/namespaces/velero.yaml
rename to flux2/core/base/namespaces/velero.yaml
index ba69c056c40514c423189510571a662a4a172d4b..b442fae8ec81acac6e77e548d2f6d5bfb58583b3 100644
--- a/flux2/infrastructure/namespaces/velero.yaml
+++ b/flux2/core/base/namespaces/velero.yaml
@@ -1,4 +1,4 @@
 apiVersion: v1
 kind: Namespace
 metadata:
-  name: velero
\ No newline at end of file
+  name: velero
diff --git a/flux2/infrastructure/sources/bitnami.yaml b/flux2/core/base/sources/bitnami.yaml
similarity index 100%
rename from flux2/infrastructure/sources/bitnami.yaml
rename to flux2/core/base/sources/bitnami.yaml
diff --git a/flux2/infrastructure/sources/dashboard.yaml b/flux2/core/base/sources/dashboard.yaml
similarity index 100%
rename from flux2/infrastructure/sources/dashboard.yaml
rename to flux2/core/base/sources/dashboard.yaml
diff --git a/flux2/infrastructure/sources/grafana.yaml b/flux2/core/base/sources/grafana.yaml
similarity index 100%
rename from flux2/infrastructure/sources/grafana.yaml
rename to flux2/core/base/sources/grafana.yaml
diff --git a/flux2/infrastructure/sources/ingress-nginx.yaml b/flux2/core/base/sources/ingress-nginx.yaml
similarity index 100%
rename from flux2/infrastructure/sources/ingress-nginx.yaml
rename to flux2/core/base/sources/ingress-nginx.yaml
diff --git a/flux2/infrastructure/sources/jetstack.yaml b/flux2/core/base/sources/jetstack.yaml
similarity index 100%
rename from flux2/infrastructure/sources/jetstack.yaml
rename to flux2/core/base/sources/jetstack.yaml
diff --git a/flux2/infrastructure/sources/kustomization.yaml b/flux2/core/base/sources/kustomization.yaml
similarity index 100%
rename from flux2/infrastructure/sources/kustomization.yaml
rename to flux2/core/base/sources/kustomization.yaml
diff --git a/flux2/infrastructure/sources/local-path-provisioner.yaml b/flux2/core/base/sources/local-path-provisioner.yaml
similarity index 100%
rename from flux2/infrastructure/sources/local-path-provisioner.yaml
rename to flux2/core/base/sources/local-path-provisioner.yaml
diff --git a/flux2/infrastructure/sources/nextcloud.yaml b/flux2/core/base/sources/nextcloud.yaml
similarity index 100%
rename from flux2/infrastructure/sources/nextcloud.yaml
rename to flux2/core/base/sources/nextcloud.yaml
diff --git a/flux2/infrastructure/sources/prometheus-community.yaml b/flux2/core/base/sources/prometheus-community.yaml
similarity index 100%
rename from flux2/infrastructure/sources/prometheus-community.yaml
rename to flux2/core/base/sources/prometheus-community.yaml
diff --git a/flux2/infrastructure/sources/rocketchat-helm-chart.yaml b/flux2/core/base/sources/rocketchat-helm-chart.yaml
similarity index 100%
rename from flux2/infrastructure/sources/rocketchat-helm-chart.yaml
rename to flux2/core/base/sources/rocketchat-helm-chart.yaml
diff --git a/flux2/infrastructure/sources/single-sign-on.yaml b/flux2/core/base/sources/single-sign-on.yaml
similarity index 100%
rename from flux2/infrastructure/sources/single-sign-on.yaml
rename to flux2/core/base/sources/single-sign-on.yaml
diff --git a/flux2/infrastructure/sources/vmware-tanzu.yaml b/flux2/core/base/sources/vmware-tanzu.yaml
similarity index 100%
rename from flux2/infrastructure/sources/vmware-tanzu.yaml
rename to flux2/core/base/sources/vmware-tanzu.yaml
diff --git a/flux2/infrastructure/sources/wekan.yaml b/flux2/core/base/sources/wekan.yaml
similarity index 100%
rename from flux2/infrastructure/sources/wekan.yaml
rename to flux2/core/base/sources/wekan.yaml
diff --git a/flux2/infrastructure/sources/wikimedia.yaml b/flux2/core/base/sources/wikimedia.yaml
similarity index 100%
rename from flux2/infrastructure/sources/wikimedia.yaml
rename to flux2/core/base/sources/wikimedia.yaml
diff --git a/flux2/infrastructure/sources/wordpress.yaml b/flux2/core/base/sources/wordpress.yaml
similarity index 100%
rename from flux2/infrastructure/sources/wordpress.yaml
rename to flux2/core/base/sources/wordpress.yaml
diff --git a/flux2/infrastructure/sources/zulip.yaml b/flux2/core/base/sources/zulip.yaml
similarity index 100%
rename from flux2/infrastructure/sources/zulip.yaml
rename to flux2/core/base/sources/zulip.yaml