 
   getScreenCellAtPosition: (position) ->
     position = Point.fromObject(position)
-    @cells[position.column][position.row]
+    @cells[position.row + '-' + position.column]
 
   appendCell: (row, column) ->
-    @cells[column] ?= []
-    return @cells[column][row] if @cells[column][row]?
-
-    @cells[column][row] = @requestCell(@getCellObjectAtPosition([row, column]))
+    key = row + '-' + column
+    @cells[key] ? @cells[key] = @requestCell(@getCellObjectAtPosition([row, column]))
 
   getCellObjectAtPosition: (position) ->
     {row, column} = Point.fromObject(position)

    delete @headerCells[column]

  appendGutterCell: (row) ->
    return @gutterCells[row] if @gutterCells[row]?

    @gutterCells[row] = @requestGutterCell({row})

  disposeGutterCell: (row) ->
    return unless cell = @gutterCells[row]

  @pool 'gutterCell', 'gutterCells'

  createdCallback: ->
    @cells = {}
    @headerCells = {}
    @gutterCells = {}

    @subscriptions = new CompositeDisposable

