 
   # Custom Models defined above are mixed in using `BaseContent.initialize`
   BaseContent = Backbone.Model.extend
+    # New content is given an id before it is saved so it can be added to a book
+    isNew = -> not @id or @id.match(/^_NEW:/)
     initialize: ->
       throw 'BUG: No mediaType set' if not @mediaType
       throw 'BUG: No mediaType not registered' if not MEDIA_TYPES.get @mediaType
+      @id = "_NEW:#{@cid}" if not @id
 
   # This gets used by `DeferrableCollection` but is instantiated afterwards
   ALL_CONTENT = null

      @manifest.on 'add',   (model, collection) -> ALL_CONTENT.add model
      @manifest.on 'reset', (model, collection) -> ALL_CONTENT.add model

      @manifest.on 'change:title', (model, newValue, oldValue) =>
        navTree = JSON.parse @get('navTreeStr')
        # Find the node that has an `id` to this model

      else if mediaType
        config = model
        throw 'BUG: Media type not registered' if not MEDIA_TYPES.get mediaType

        # Create the model from a config and add it to the manifest
        ContentType = MEDIA_TYPES.get(mediaType).constructor
