           Promise.delay(100)
       serverOne:
         start: ->
-          Promise.delay(100)
+          test.ok starting.equals(
+            new Set('mailAPI', 'serverOne', 'serverTwo', 'serverThree')
+          )
+          test.ok running.equals(
+            new Set('redisOne', 'redisTwo', 'postgres', 'elasticSearch', 'cache')
+          )
+          Promise.delay(5)
         stop: ->
           Promise.delay(100)
       serverTwo:
         start: ->
-          Promise.delay(100)
+          test.ok starting.equals(
+            new Set(['mailAPI', 'serverOne', 'serverTwo', 'serverThree'])
+          )
+          test.ok running.equals(
+            new Set(['redisOne', 'redisTwo', 'postgres', 'elasticSearch', 'cache'])
+          )
+          Promise.delay(30)
         stop: ->
           Promise.delay(100)
       serverThree:
         start: ->
-          Promise.delay(100)
+          test.ok starting.equals(
+            new Set(['mailAPI', 'serverOne', 'serverTwo', 'serverThree'])
+          )
+          test.ok running.equals(
+            new Set(['redisOne', 'redisTwo', 'postgres', 'elasticSearch', 'cache'])
+          )
+          Promise.delay(60)
         stop: ->
           Promise.delay(100)
       elasticSearch:
         start: ->
-          test.ok starting.isEqual(
-            new Set(['redisOne', 'redisTwo', 'postgres', 'elasticSearch', 'mailAPI'])
-          )
-          test.ok running.isEqual(
-            new Set
-          )
-          Promise.delay(100)
+          test.ok starting.equals(
+            new Set('redisOne', 'redisTwo', 'postgres', 'elasticSearch', 'mailAPI')
+          )
+          test.ok running.equals(
+            new Set
+          )
+          Promise.delay(25)
         stop: ->
           Promise.delay(100)
       mailAPI:
         start: ->
-          test.ok starting.isEqual(
-            new Set(['redisOne', 'redisTwo', 'postgres', 'elasticSearch', 'mailAPI'])
-          )
-          test.ok running.isEqual(
-            new Set
-          )
-          Promise.delay(100)
+          test.ok starting.equals(
+            new Set('redisOne', 'redisTwo', 'postgres', 'elasticSearch', 'mailAPI')
+          )
+          test.ok running.equals(
+            new Set
+          )
+          Promise.delay(60)
         stop: ->
           Promise.delay(100)
       cache:
         start: ->
-          test.ok starting.isEqual(
-            new Set(['postgres', 'elasticSearch', 'mailAPI', 'cache'])
-          )
-          test.ok running.isEqual(
-            new Set(['redisOne', 'redisTwo'])
-          )
-          Promise.delay(100)
+          test.ok starting.equals(
+            new Set('elasticSearch', 'mailAPI', 'cache')
+          )
+          test.ok running.equals(
+            new Set('redisOne', 'redisTwo', 'postgres')
+          )
+          Promise.delay(30)
         stop: ->
           Promise.delay(100)
       postgres:
         start: ->
-          test.ok starting.isEqual(
-            new Set(['redisOne', 'redisTwo', 'postgres', 'elasticSearch', 'mailAPI'])
-          )
-          test.ok running.isEqual(
-            new Set
-          )
-          Promise.delay(100)
+          test.ok starting.equals(
+            new Set('redisOne', 'redisTwo', 'postgres', 'elasticSearch', 'mailAPI')
+          )
+          test.ok running.equals(
+            new Set
+          )
+          Promise.delay(15)
         stop: ->
           Promise.delay(100)
       loadBalancer:
         start: ->
-          Promise.delay(100)
+          test.ok starting.equals(
+            new Set('workerTwo', 'loadBalancer')
+          )
+          test.ok running.equals(
+            new Set(
+              'redisOne',
+              'redisTwo',
+              'postgres',
+              'elasticSearch',
+              'cache',
+              'serverOne',
+              'serverTwo',
+              'serverThree',
+              'mailAPI',
+              'workerOne'
+            )
+          )
+          Promise.delay(20)
         stop: ->
           Promise.delay(100)
       workerOne:
         start: ->
-          Promise.delay(100)
+          test.ok starting.equals(
+            new Set('serverTwo', 'serverThree', 'workerOne', 'workerTwo')
+          )
+          test.ok running.equals(
+            new Set('redisOne', 'redisTwo', 'postgres', 'elasticSearch', 'cache', 'serverOne', 'mailAPI')
+          )
+          Promise.delay(10)
         stop: ->
           Promise.delay(100)
       workerTwo:
         start: ->
-          Promise.delay(100)
+          test.ok starting.equals(
+            new Set('serverTwo', 'serverThree', 'workerOne', 'workerTwo')
+          )
+          test.ok running.equals(
+            new Set('redisOne', 'redisTwo', 'postgres', 'elasticSearch', 'cache', 'serverOne', 'mailAPI')
+          )
+          Promise.delay(60)
         stop: ->
           Promise.delay(100)
 

    services =
      redisOne:
        start: ->
          test.ok starting.isEqual(
            new Set(['redisOne', 'redisTwo', 'postgres', 'elasticSearch', 'mailAPI'])
          )
          test.ok running.isEqual(
            new Set
          )
          Promise.delay(10)

          Promise.delay(100)
      redisTwo:
        start: ->
          test.ok starting.equals(
            new Set('redisOne', 'redisTwo', 'postgres', 'elasticSearch', 'mailAPI')
          )
          test.ok running.equals(
            new Set
          )
          Promise.delay(20)
