           service: "@service:myService"
 
       # parameters: node, modelData, assets, actions, tools, services, log, inputServiceData = null, outputServiceData = null
-      modelPatches = GE.stepLoop(layout, {}, {}, actions, {}, services)
+      modelPatches = GE.stepLoop(layout, {}, {}, actions, tools, services)
 
       expect(services.myService.provideData).toHaveBeenCalledWith({})
       expect(services.myService.establishData).toHaveBeenCalledWith({ a: 2 }, {})


      spyOn(services.myService, "provideData").andCallThrough()

      actions = 
        incrementServiceData: 
          paramDefs:
            service: "" 
          update: -> 
            expect(@params.service.a).toBe(1)
            @params.service.a++

      layout = 

      expect(services.myService.establishData).toHaveBeenCalledWith({ a: 2 }, {})
      expect(modelPatches).toBeEmpty()

    it "gathers service input data, visits nodes, uses tools, and gives output to services", ->
      services = 
        myService:
          provideData: -> return { a: 1 }
