       for decorationClass in decorationClasses
         lineNode.classList.add(decorationClass)
 
-    @currentLineTextNodes = []
-    # if words.length is 0
-    #   @setEmptyLineInnerNodes(id, lineNode)
-
-    @setLineInnerNodes(id, lineNode)
-    @textNodesByLineId[id] = @currentLineTextNodes
-
-    # lineNode.appendChild(@domElementPool.buildElement("span", "fold-marker")) if fold
-    lineNode
-
-  setEmptyLineInnerNodes: (id, lineNode) ->
-    {indentGuidesVisible} = @newState
-    {indentLevel, tabLength, endOfLineInvisibles} = @newTileState.lines[id]
-
-    if indentGuidesVisible and indentLevel > 0
-      invisibleIndex = 0
-      for i in [0...indentLevel]
-        indentGuide = @domElementPool.buildElement("span", "indent-guide")
-        for j in [0...tabLength]
-          if invisible = endOfLineInvisibles?[invisibleIndex++]
-            invisibleSpan = @domElementPool.buildElement("span", "invisible-character")
-            textNode = @domElementPool.buildText(invisible)
-            invisibleSpan.appendChild(textNode)
-            indentGuide.appendChild(invisibleSpan)
-
-            @currentLineTextNodes.push(textNode)
-          else
-            textNode = @domElementPool.buildText(" ")
-            indentGuide.appendChild(textNode)
-
-            @currentLineTextNodes.push(textNode)
-        lineNode.appendChild(indentGuide)
-
-      while invisibleIndex < endOfLineInvisibles?.length
-        invisible = endOfLineInvisibles[invisibleIndex++]
-        invisibleSpan = @domElementPool.buildElement("span", "invisible-character")
-        textNode = @domElementPool.buildText(invisible)
-        invisibleSpan.appendChild(textNode)
-        lineNode.appendChild(invisibleSpan)
-
-        @currentLineTextNodes.push(textNode)
-    else
-      unless @appendEndOfLineNodes(id, lineNode)
-        textNode = @domElementPool.buildText("\u00a0")
-        lineNode.appendChild(textNode)
-
-        @currentLineTextNodes.push(textNode)
-
-  setLineInnerNodes: (id, lineNode) ->
-    {lineText, tagCodes} = @newTileState.lines[id]
-
+    textNodes = []
     lineLength = 0
     startIndex = 0
     openScopeNode = lineNode

  screenRowForNode: (node) -> parseInt(node.dataset.screenRow)

  buildLineNode: (id) ->
    {screenRow, decorationClasses} = @newTileState.lines[id]

    lineNode = @domElementPool.buildElement("div", "line")
    lineNode.dataset.screenRow = screenRow

        textNode = @domElementPool.buildText(lineText.substr(startIndex, tagCode))
        startIndex += tagCode
        openScopeNode.appendChild(textNode)
        textNodes.push(textNode)

    if startIndex is 0
      textNode = @domElementPool.buildText(' ')
      lineNode.appendChild(textNode)
      textNodes.push(textNode)

    @textNodesByLineId[id] = textNodes
    lineNode

  updateLineNode: (id) ->
    oldLineState = @oldTileState.lines[id]
