       type: Backbone.Many
       key: 'authors'
       collectionType: Backbone.Collection
+    }, {
+      type: Backbone.One
+      key: 'currentPage'
+      relatedModel: Node
+    }, {
+      type: Backbone.Many
+      key: 'toc'
+      collectionType: Backbone.Collection
     }]
-
-    toJSON: () ->
-      currentPage = @get('currentPage')?.toJSON()
-      toc = @get('toc').toJSON()
-      json = super()
-      json.currentPage = currentPage
-      json.toc = toc
-      return json
 
     parse: (response) ->
       type = response.type = MEDIA_TYPES[response.mediaType]

          else
            item.unit = "#{index+1}"

          if item.contents
            item.subcollection = true
            delete item.id

      depth = 0
      page = 1

      # Traverse a book's tree and set book, depth, unit, parent, subcollection, and page
      # information on each node of the tree prior to the tree being processed
      # by backbone-associations.
      traverse = (o = {}) =>
