 
     addCursor = (log) ->
       position = buildRandomPoint()
-      log "Adding cursor at #{position}"
+      log "editor.addCursorAtBufferPosition(#{JSON.stringify(position.serialize())})"
       editor.addCursorAtBufferPosition(position)
 
     moveCursor = (log) ->
+      index = _.random(0, editor.getCursors().length - 1)
       position = buildRandomPoint()
-      cursor = getRandomElement(editor.getCursors())
-      log "Moving cursor from #{cursor.getBufferPosition()} to #{position}"
+      log """
+        cursor = editor.getCursors()[#{index}]
+        cursor.selection.clear()
+        cursor.setBufferPosition(#{JSON.stringify(position.serialize())})
+      """
+      cursor = editor.getCursors()[index]
       cursor.selection.clear()
       cursor.setBufferPosition(position)
 
     destroyCursor = (log) ->
-      cursor = getRandomElement(editor.getCursors())
-      log "Destroying cursor at #{cursor.getBufferPosition()}"
-      cursor.destroy()
+      index = _.random(0, editor.getCursors().length - 1)
+      log "editor.getCursors()[#{index}].destroy()"
+      editor.getCursors()[index].destroy()
 
     changeSelections = (log) ->
       actions = [addSelection, changeSelection]

      else if Math.random() > .2
        options.onlyHead = true

      log "Adding line decoration at #{range}: #{JSON.stringify(options)}"

      marker = editor.markBufferRange(range)
      editor.decorateMarker(marker, options)

    changeLineDecoration = (log) ->
      decoration = getRandomElement(editor.getLineDecorations())
      marker = decoration.getMarker()
      range = buildRandomRange()
      log "Changing line decoration (#{JSON.stringify(decoration.getProperties())}) from #{marker.getBufferRange()} to #{range}"
      marker.setBufferRange(range)

    destroyLineDecoration = (log) ->
      decoration = getRandomElement(editor.getLineDecorations())
      marker = decoration.getMarker()
      log "Destroying line decoration (#{JSON.stringify(decoration.getProperties())}) at #{marker.getBufferRange()}"
      decoration.destroy()

    buildRandomPoint = ->
      row = _.random(0, buffer.getLastRow())


    addSelection = (log) ->
      range = buildRandomRange()
      log "editor.addSelectionForBufferRange(#{JSON.stringify(range.serialize())})"
      editor.addSelectionForBufferRange(range)

    changeSelection = (log) ->
      index = _.random(0, editor.getSelections().length - 1)
      range = buildRandomRange()
      log "editor.getSelections()[#{index}].setBufferRange(#{JSON.stringify(range.serialize())})"
      editor.getSelections()[index].setBufferRange(range)

    destroySelection = (log) ->
      index = _.random(0, editor.getSelections().length - 1)
      log "editor.getSelections()[#{index}].destroy()"
      editor.getSelections()[index].destroy()

    changeLineDecorations = (log) ->
      actions = [addLineDecoration]
