               siblings = siblings.concat(node.parent.parent)
             promises = siblings.map (sibling) =>
               @fadeToArray(0, 1000) sibling._text_object.children
+                .then -> network_object.remove(sibling._text_object)
             return Promise.all promises
         .then ->
           node.children.forEach traverse

    line_layout = line_geometry.layout
    glyph_positions = line_layout.glyphs.map (g) -> g.position

    assert line?

    letterObjects = line.split("").map (letter, index) =>
      assert glyph_positions[index], "#{line} -- #{letter}"

      val: d.word
      children: d.colocations

    _makeTree = (child, parent, index, array) ->
      child.parent = parent

      # Find the index of this child in the parent's children array
      child_index = parent.children
          .map (d) -> d.val
          .indexOf child.val

      # Set the child's "amount" to match the parent's child object
      parents_child = parent.children[child_index]
      child.amt = parents_child.amt

      # Set the parent's reference to match the child object
      parent.children[child_index] = child

      return parent

    network.reduceRight(_makeTree)

