     @removeEventsFromModel(model)
 
   modelLoaded: (model) ->
+    model.loadSchema()
     schema = model.schema()
-    return schema.once('sync', => @modelLoaded(model)) unless schema.loaded
+    unless schema.loaded
+      @schemas[schema.urlRoot] = schema
+      return schema.once('sync', => @modelLoaded(model))
     refs = model.getReferencedModels(model.attributes, schema.attributes, '/', @shouldLoadProjection)
     refs = [] unless @mustPopulate is model or @shouldPopulate(model)
 #    console.log 'Loaded', model.get('name')

  constructor: ->
    @models = {}
    @collections = {}
    _.extend(@, Backbone.Events)

  populateModel: (model) ->

    total = 0
    loaded = 0

    for model in _.values @models
      total += 1
      loaded += 1 if model.loaded
    for schema in _.values @schemas
      total += 1
      loaded += 1 if schema.loaded

    return 1.0 unless total
    return loaded / total
