     house = new Building({id: 'house-6-1', name: 'Home Sweet Home', occupants: [person1, person2]})
 
     models = [person1, person2]
-    model.save(->) for model in models
-    model.fetchRelated(->) for model in models
-
-    view_model_person1 = kb.viewModel(person1)
-    view_model_house1 = kb.viewModel(house)
-
-    # check friends
-    assert.equal(view_model_person1.friends().length, 1, 'person1 has one friend')
-    assert.equal(view_model_person1.friends()[0].name(), 'Mommy', 'person1 is friends with Mommy')
-    assert.equal(view_model_person1.best_friends_with_me()[0].name(), 'Mommy', 'person1 is best friends with Mommy')
-
-    # check occupants
-    assert.equal(view_model_person1.occupies().name(), 'Home Sweet Home', 'person1 occupies home sweet home')
-    assert.equal(view_model_house1.occupants().length, 2, 'house has two occupants')
-    assert.equal(view_model_house1.occupants()[0].name(), 'Daddy', 'house has Daddy in it')
-
-    # release
-    kb.release(view_model_person1)
-    kb.release(view_model_house1)
-
-    assert.equal(kb.statistics.registeredStatsString('all released'), 'all released', "Cleanup: stats"); kb.statistics = null
-    done()
+    queue = new Queue(1)
+    for model in models
+      do (model) -> queue.defer (callback) -> model.save(callback)
+    for model in models
+      do (model) -> queue.defer (callback) -> model.fetchRelated(callback)
+    queue.await (err) ->
+      return done(err) if err
+
+      view_model_person1 = kb.viewModel(person1)
+      view_model_house1 = kb.viewModel(house)
+
+      # check friends
+      assert.equal(view_model_person1.friends().length, 1, 'person1 has one friend')
+      assert.equal(view_model_person1.friends()[0].name(), 'Mommy', 'person1 is friends with Mommy')
+      assert.equal(view_model_person1.best_friends_with_me()[0].name(), 'Mommy', 'person1 is best friends with Mommy')
+
+      # check occupants
+      assert.equal(view_model_person1.occupies().name(), 'Home Sweet Home', 'person1 occupies home sweet home')
+      assert.equal(view_model_house1.occupants().length, 2, 'house has two occupants')
+      assert.equal(view_model_house1.occupants()[0].name(), 'Daddy', 'house has Daddy in it')
+
+      # release
+      kb.release(view_model_person1)
+      kb.release(view_model_house1)
+
+      assert.equal(kb.statistics.registeredStatsString('all released'), 'all released', "Cleanup: stats"); kb.statistics = null
+      done()
 
   it '7a. Inferring observable types: late binding', (done) ->
     kb.statistics = new kb.Statistics() # turn on stats

    class BookStore extends Backbone.Model
      model_name: 'BookStore'
      schema:
        books: ['hasMany', Book]
        authors: ['hasMany', Author]
      sync: BackboneORM.sync(BookStore)

      authors:[{name: 'fred', _id: "a1"}, {name: 'ted', _id: "a2"}]
    })

    queue = new Queue(1)
    for model in bs.get('authors').models
      do (model) -> queue.defer (callback) -> model.save(callback)
    for model in bs.get('books').models
      do (model) -> queue.defer (callback) -> model.fetchRelated(callback)
    queue.await (err) ->
      return done(err) if err

      BookViewModel = kb.ViewModel.extend({
        constructor: (model) ->
          kb.ViewModel.prototype.constructor.apply(this, arguments)
          this.editMode = ko.observable()

          @edit = =>
            model._save = model.toJSON()
            @editMode(true)

          @confirm = =>
            model._save = null
            @editMode(false)

          @cancel = =>
            model.set(model._save)
            @editMode(false)
          @
      })

      view_model = {
        books: kb.collectionObservable(bs.get('books'), {
          factories:
            models: BookViewModel
            'models.author.books.models': BookViewModel
        })
      }

      for book in view_model.books()
        author = book.author()
        for authored_book in author.books()
          authored_book.editMode(true)
          assert.equal(authored_book.editMode(), true, 'edit mode set')
      done()

  it '6. Inferring observable types: from the start', (done) ->
    kb.statistics = new kb.Statistics() # turn on stats
