diff --git a/core/installer/tasks/env.go b/core/installer/tasks/env.go
index 20528a3..bc104cc 100644
--- a/core/installer/tasks/env.go
+++ b/core/installer/tasks/env.go
@@ -72,12 +72,12 @@
 	t.OnDone(func(_ error) {
 		done()
 	})
-	pr := NewFluxcdReconciler( // TODO(gio): make reconciler address a flag
-		"http://fluxcd-reconciler.dodo-fluxcd-reconciler.svc.cluster.local",
+	pr := NewFixedReconciler(
+		fmt.Sprintf("%s-flux", env.InfraName),
 		fmt.Sprintf("%s-flux", env.InfraName),
 	)
-	er := NewFluxcdReconciler(
-		"http://fluxcd-reconciler.dodo-fluxcd-reconciler.svc.cluster.local",
+	er := NewFixedReconciler(
+		env.Id,
 		env.Id,
 	)
 	go pr.Reconcile(rctx)
diff --git a/core/installer/tasks/reconciler.go b/core/installer/tasks/reconciler.go
index 0e8133e..9f8a004 100644
--- a/core/installer/tasks/reconciler.go
+++ b/core/installer/tasks/reconciler.go
@@ -4,35 +4,62 @@
 	"context"
 	"fmt"
 	"net/http"
-	"time"
 )
 
+// TODO(gio): make reconciler address a flag
+const baseURL = "http://fluxcd-reconciler.dodo-fluxcd-reconciler.svc.cluster.local"
+
 type Reconciler interface {
-	Reconcile(ctx context.Context)
+	Reconcile(ctx context.Context, namespace, name string)
 }
 
-type fluxcdReconciler struct {
-	resources []string
+type SequentialReconciler struct {
+	Reconcilers []Reconciler
 }
 
-func NewFluxcdReconciler(addr, name string) Reconciler {
-	return fluxcdReconciler{
-		resources: []string{
-			fmt.Sprintf("%s/source/git/%s/%s/reconcile", addr, name, name),
-			fmt.Sprintf("%s/kustomization/%s/%s/reconcile", addr, name, name),
-		},
+func (r *SequentialReconciler) Reconcile(ctx context.Context, namespace, name string) {
+	for _, rec := range r.Reconcilers {
+		rec.Reconcile(ctx, namespace, name)
 	}
 }
 
-func (r fluxcdReconciler) Reconcile(ctx context.Context) {
-	for {
-		select {
-		case <-time.After(3 * time.Second):
-			for _, res := range r.resources {
-				http.Get(res)
-			}
-		case <-ctx.Done():
-			return
-		}
+type SourceGitReconciler struct{}
+
+func (c SourceGitReconciler) Reconcile(ctx context.Context, namespace, name string) {
+	addr := fmt.Sprintf("%s/source/git/%s/%s/reconcile", baseURL, namespace, name)
+	http.Get(addr)
+}
+
+type KustomizationReconciler struct{}
+
+func (c KustomizationReconciler) Reconcile(ctx context.Context, namespace, name string) {
+	addr := fmt.Sprintf("%s/kustomization/%s/%s/reconcile", baseURL, namespace, name)
+	http.Get(addr)
+}
+
+type namespaceNamePair struct {
+	namespace string
+	name      string
+}
+
+type FixedReconciler struct {
+	namespace  string
+	name       string
+	reconciler Reconciler
+}
+
+func NewFixedReconciler(namespace, name string) *FixedReconciler {
+	return &FixedReconciler{
+		namespace,
+		name,
+		&SequentialReconciler{[]Reconciler{
+			SourceGitReconciler{},
+			// NOTE(gio): synchronizing git repository auto-syncs root kustomization as well
+			// KustomizationReconciler{},
+		}},
 	}
 }
+
+func (r *FixedReconciler) Reconcile(ctx context.Context) {
+	r.reconciler.Reconcile(ctx, r.namespace, r.name)
+}
