diff --git a/core/installer/tasks/install.go b/core/installer/tasks/install.go
index b704c68..c3a0086 100644
--- a/core/installer/tasks/install.go
+++ b/core/installer/tasks/install.go
@@ -7,6 +7,7 @@
 	"github.com/giolekva/pcloud/core/installer"
 	"github.com/giolekva/pcloud/core/installer/cluster"
 	"github.com/giolekva/pcloud/core/installer/soft"
+	"github.com/giolekva/pcloud/core/installer/status"
 )
 
 type InstallFunc func() (installer.ReleaseResources, error)
@@ -23,7 +24,7 @@
 	d.t = append(d.t, t)
 }
 
-func NewInstallTask(mon installer.HelmReleaseMonitor, fn InstallFunc) Task {
+func NewInstallTask(mon status.ResourceMonitor, fn InstallFunc) Task {
 	d := &dynamicTaskSlice{t: []Task{}}
 	var rr installer.ReleaseResources
 	done := make(chan error)
diff --git a/core/installer/tasks/release.go b/core/installer/tasks/release.go
index 059d1ee..1bd0d6e 100644
--- a/core/installer/tasks/release.go
+++ b/core/installer/tasks/release.go
@@ -4,9 +4,10 @@
 	"time"
 
 	"github.com/giolekva/pcloud/core/installer"
+	"github.com/giolekva/pcloud/core/installer/status"
 )
 
-func NewMonitorReleaseTasks(mon installer.HelmReleaseMonitor, rr installer.ReleaseResources) []Task {
+func NewMonitorReleaseTasks(mon status.ResourceMonitor, rr installer.ReleaseResources) []Task {
 	var t []Task
 	for _, h := range rr.Helm {
 		t = append(t, newMonitorHelm(mon, h))
@@ -14,11 +15,11 @@
 	return t
 }
 
-func NewMonitorRelease(mon installer.HelmReleaseMonitor, rr installer.ReleaseResources) Task {
+func NewMonitorRelease(mon status.ResourceMonitor, rr installer.ReleaseResources) Task {
 	return newConcurrentParentTask("Monitor", true, NewMonitorReleaseTasks(mon, rr)...)
 }
 
-func newMonitorHelm(mon installer.HelmReleaseMonitor, h installer.Resource) Task {
+func newMonitorHelm(mon status.ResourceMonitor, h installer.Resource) Task {
 	rType := h.Annotations["dodo.cloud/resource-type"]
 	var name string
 	switch rType {
@@ -36,11 +37,18 @@
 		name = h.Annotations["dodo.cloud/resource.service.name"]
 	}
 	t := newResourceLeafTask(h.Info, &ResourceId{rType, name}, func() error {
+		ref := status.ResourceRef{
+			Name:      h.Name,
+			Namespace: h.Namespace,
+		}
 		for {
-			if ok, err := mon.IsReleased(h.Namespace, h.Name); err == nil && ok {
-				break
+			if s, err := mon.Get(ref); err != nil {
+				return err
+			} else if status.IsStatusTerminal(s) {
+				return nil
+			} else {
+				time.Sleep(5 * time.Second)
 			}
-			time.Sleep(5 * time.Second)
 		}
 		return nil
 	})
