 
   fetchNext: ->
     promises = []
+    oldLineCount = @props.logLines.map (logLines) => {taskId: logLines.taskId, length: logLines.length}
     for logLines in @props.logLines
       promises.push(logLines.fetchNext())
+
     Promise.all(promises).then =>
-      @mergeLines()
+      newLineCount = @props.logLines.map (logLines) => {taskId: logLines.taskId, length: logLines.length}
+      deltas = newLineCount.map (count) =>
+        taskId: count.taskId
+        delta: count.length - _.findWhere(oldLineCount, {taskId: count.taskId}).length
 
+      newLines = []
+      for delta in deltas
+        lines = _.findWhere(@props.logLines, {taskId: delta.taskId}).toJSON()
+        slice = lines.slice(lines.length - delta.delta, lines.length)
+        newLines.push(slice)
+
+      @mergeLines(newLines)
 
   fetchPrevious: (callback) ->
     for logLines in @props.logLines

  # Event Handlers                                                             |
  # ============================================================================

  mergeLines: ->
    @setState
      mergedLines: LogLines.merge @props.viewingInstances.map (taskId) => @state[taskId]

  moreToFetch: ->
    _.some(@props.logLines, (logLines) =>


  getInitialState: ->
    @state =
      mergedLines: []

  componentWillMount: ->
    # Get the task info
