       (expect cb2).wasNotCalled()
       (expect cb3).toHaveBeenCalled()
 
-    it "calls the callback function after all modules have started", ->
-
-      cb1 = jasmine.createSpy "callback"
-
-      mod1 = (sb) ->
-        init: (opt, done)-> (expect cb1).wasNotCalled(); done()
-        destroy: ->
-
-      mod2 = (sb) ->
-        init: (opt, done)-> (expect cb1).wasNotCalled(); done()
-        destroy: ->
-
-      scaleApp.register "first", mod1
-      scaleApp.register "second", mod2
-
-      (expect scaleApp.startAll cb1).toBeTruthy()
-      (expect cb1).toHaveBeenCalled()
-
-    it "calls the callback after defined modules have started", ->
+    it "calls the callback function after all modules have started", (done) ->
+
+      cb1 = jasmine.createSpy "counter"
+
+      sync = (sb) ->
+        init: (opt)->
+          (expect cb1).wasNotCalled()
+          cb1()
+        destroy: ->
+
+      pseudoAsync = (sb) ->
+        init: (opt, done)->
+          (expect cb1.callCount).toEqual 1
+          cb1()
+          done()
+        destroy: ->
+
+      async = (sb) ->
+        init: (opt, done)->
+          setTimeout (->
+            (expect cb1.callCount).toEqual 2
+            cb1()
+            done()
+          ), 0
+        destroy: ->
+
+      scaleApp.register "first", sync
+      scaleApp.register "second", async
+      scaleApp.register "third", pseudoAsync
+
+      (expect scaleApp.startAll ->
+        (expect cb1.callCount).toEqual 3
+        done()
+      ).toBeTruthy()
+
+    it "calls the callback after defined modules have started", (done) ->
 
       finished = jasmine.createSpy "finish callback"
 

      end = false
      spy2 = jasmine.createSpy "mod spy"
      mod = (sb) ->
        init: (opt, done)-> spy2(); done()
        destroy: ->
      scaleApp.register "valid", @validModule
      scaleApp.register "x", mod

        x = false
        cb = -> x = true
        mod1 = (sb) ->
          init: (opt, done) -> setTimeout done, 0
          destroy: ->
        (expect scaleApp.register "anId", mod1).toBeTruthy()
        scaleApp.start "anId", { callback: cb }
