       files.push file
       transformCallback()
     , (flushCallback) ->
+      for name, child of navTree.children
+        root = child
+        rootName = name
+      if demoteTopIndex       # top-level index becomes sibling of its children
+        for name, child of root.children
+          navTree.children[webPath.resolve rootName, name] = child
+          child.parent = navTree
+        root.children = {}
       # ...and now we've seen them all
       @push file for file in files
       flushCallback()

    root:
      enumerable: yes
      get: ->
        (navInContext child, context.concat name for name, child of navTree
          .children)[0]

    titles ?= ['short_title', 'title']
    orders ?= 'order'
    hrefExtension ?= 'html'
    demoteTopIndex ?= no
    root ?= '/'               # XXX finish implementing this!
    # single options don't have to come wrapped in an Array
    sources = [ sources ] unless Array.isArray sources
