       # **TODO:** Fall back on `toc.ncx` and then the `spine` to create a navTree if one does not exist
       return {title: title, bookId: bookId}
 
-    serialize: () -> serializer.serializeToString(@$xml[0])
+    serialize: () ->
+      serializer.serializeToString(@$xml[0])
+
+    resolveSaveConflict: () ->
+      @_addItem(model, {}, false) for model in _.values(@_addedItems)
+
+    onSaved: () ->
+      @_addedItems = {}
 
     newNode: (options) ->
       model = options.model

        # HACK: `?` is because `inherits/container.add` calls `trigger('change')`
        setNavModel(options)

      @manifest.on 'add', (model, collection, options) =>
        $manifest = @$xml.find('manifest')

        relPath = Utils.relativePath(@id, model.id)

        # Check if the item is not already in the manifest
        return if $manifest.find("item[href='#{relPath}']")[0]

        # Create a new `<item>` in the manifest
        item = @$xml[0].createElementNS('http://www.idpf.org/2007/opf', 'item')
        $item = $(item)
        $item.attr
          href:         relPath
          id:           relPath # TODO: escape the slashes so it is a valid id
          'media-type': model.mediaType

        $manifest.append($item)
        # TODO: Depending on the type add it to the spine for EPUB2

        @_markDirty(options, true) # true == force because hasChanged == false


    _loadComplex: (fetchPromise) ->

          model: @
        callback(view)

  # Mix in the loadable
  PackageFile = PackageFile.extend loadable
