     collection = @storageManager.createNewCollection @loadOptions.name, []
 
     unless options.cache == false
-      if only?
-        alreadyLoadedIds = _.select only, (id) => cachedCollection.get(id)?.associationsAreLoaded(include)
-        if alreadyLoadedIds.length == only.length
+      if @loadOptions.only?
+        alreadyLoadedIds = _.select @loadOptions.only, (id) => cachedCollection.get(id)?.associationsAreLoaded(include)
+        if alreadyLoadedIds.length == @loadOptions.only.length
           # We've already seen every id that is being asked for and have all the associated data.
-          @_success options, collection, _.map only, (id) => cachedCollection.get(id)
+          @_success options, collection, _.map @loadOptions.only, (id) => cachedCollection.get(id)
           return collection
       else
         # Check if we have, at some point, requested enough records with this this order and filter(s).

        for underscoredModelName in keys
          @storageManager.storage(underscoredModelName).update _(resp[underscoredModelName]).values()

        unless options.cache == false || only?
          @storageManager.getCollectionDetails(@loadOptions.name).cache[cacheKey] = results

        if only?
          @_success options, collection, _.map(only, (id) -> cachedCollection.get(id))
        else
          @_success options, collection, _(results).map (result) -> base.data.storage(result.key).get(result.id)


    syncOptions.data.include = include.join(",") if include.length
    syncOptions.data.only = _.difference(only, alreadyLoadedIds).join(",") if only?
    syncOptions.data.order = options.order if options.order?
    _.extend(syncOptions.data, _(filters).omit('include', 'only', 'order', 'per_page', 'page', 'limit', 'offset', 'search')) if _(filters).keys().length

    unless only?
      if options.limit? && options.offset?
        syncOptions.data.limit = options.limit
        syncOptions.data.offset = options.offset


  _parseLoadOptions: (loadOptions) ->
    @loadOptions = $.extend {}, loadOptions
    @loadOptions.only = if @loadOptions.only then _.map((Brainstem.Utils.extractArray "only", @loadOptions), (id) -> String(id)) else null

  load: (loadOptions) ->
    @_parseLoadOptions(loadOptions)

    options = @loadOptions
    search = options.search
    include = _(options.include).map((i) -> _.keys(i)[0]) # pull off the top layer of includes
    filters = options.filters || {}
