     throw "Implement in your subclass"
 
   _loadAdditionalIncludes: ->
-    for hash in @loadOptions.include
-      associationName = _.keys(hash)[0]
-      associationIds = @_getIdsForAssociation(associationName)
-      nextLevelInclude = hash[associationName]
+    for association in @additionalIncludes
+      collectionName = @_getModel().associationDetails(association.name).collectionName
 
-      if !associationIds.length
-        @_onAdditionalIncludeLoadSuccess()
-        
-      else if nextLevelInclude.length
-        collectionName = @_getModel().associationDetails(associationName).collectionName
-        loadOptions =
-          only: associationIds
-          include: nextLevelInclude
-          error: @loadOptions.error
-          success: @_onAdditionalIncludeLoadSuccess
+      loadOptions =
+        only: association.ids
+        include: association.include
+        error: @loadOptions.error
+        success: @_onAdditionalIncludeLoadSuccess
 
-        @storageManager.loadCollection(collectionName, loadOptions)
+      @storageManager.loadCollection(collectionName, loadOptions)
 
   _onAdditionalIncludeLoadSuccess: =>
     @completedIncludesCount += 1
 
-    if @completedIncludesCount == @additionalIncludesCount
+    if @completedIncludesCount == @additionalIncludes.length
       @loadOptions.success()
 
   _getModel: ->

  _updateStorageManagerFromResponse: ->
    throw "Implement in your subclass"

  _onLoadSuccess: (data) ->
    @_updateObjects(@internalObject, data)

    if @additionalIncludesCount
      @_loadAdditionalIncludes()
    else
      @loadOptions.success()


  setup: (loadOptions) ->
    @_parseLoadOptions(loadOptions)
    @_createObjectReferences()
    @_interceptOldSuccess()

