diff --git a/scripts/02_wait_for_helmrealeases.sh b/scripts/02_wait_for_helmrealeases.sh
index 079e609aeea5cb532079c2b1a72a92851a6738ac..cae8bc5bd6998a9eee3e20b94c23e368daad47bc 100644
--- a/scripts/02_wait_for_helmrealeases.sh
+++ b/scripts/02_wait_for_helmrealeases.sh
@@ -2,11 +2,46 @@
 
 set -e
 
-# Wait for components to be ready
-for package in $(kubectl get --no-headers helmrelease -n bigbang | awk '{print $1}');
-do 
-  echo "Waiting on package $package" 
-  kubectl wait --for=condition=Ready --timeout 500s helmrelease -n bigbang $package;
+## This is an array to instantiate the order of wait conditions
+ORDERED_HELMRELEASES="gatekeeper istio-operator istio monitoring eck-operator ek fluent-bit twistlock cluster-auditor"
+
+
+## This the actual deployed helmrelease objects in the cluster
+DEPLOYED_HELMRELEASES=$(kubectl get hr --no-headers -n bigbang | awk '{ print $1}')
+
+## Function to test an array contains an element
+## Args:
+## $1: array to search
+## $2: element to search for
+function array_contains() {
+    local array="$1[@]"
+    local seeking=$2
+    local in=1
+    for element in ${!array}; do
+        if [[ $element == "$seeking" ]]; then
+            in=0
+            break
+        fi
+    done
+    return $in
+}
+
+## Function to wait on helmrelease
+## Args:
+## $1: package name
+function wait_on() {
+  echo "Waiting on package $1"
+  kubectl wait --for=condition=Ready --timeout 5s helmrelease -n bigbang $1;
+}
+
+for package in $ORDERED_HELMRELEASES;
+do
+  array_contains DEPLOYED_HELMRELEASES "$package" && wait_on "$package" || echo "Expected package: $package, but not found in release. Update the array in this script if this package is no longer needed"
+done
+
+for package in $DEPLOYED_HELMRELEASES;
+do
+  array_contains ORDERED_HELMRELEASES "$package" && echo "" || wait_on "$package"
 done
 
 echo "Waiting on Secrets Kustomization"