   # pass deltas to the character instance
   # @param deltas [Array<Object>] an array of deltas (see ot-types for more info)
   passDeltas : (deltas) => # TODO: don't bind to $this
-    if this.lock_editor_propagation
-      # break, if lock is on
-      return
-    this.lock_editor_propagation = true
-    position = 0
-    for delta in deltas.ops
-      position = @deltaHelper delta, position
-    this.lock_editor_propagation = false
+    locker @, deltas, (deltas) =>
+      position = 0
+      for delta in deltas.ops
+        position = @deltaHelper delta, position
 
   # @override updateCursorPosition(index)
   #   update the position of our cursor to the new one using an index

  #   update the position of our cursor to the new one using a character
  #   @param character [Character] the new character
  updateCursorPosition : (obj) =>
    if this.lock_editor_propagation
      # break, if lock is on
      return
    this.lock_editor_propagation = true
    if typeof obj == "number"
      @selfCursor = (@_get "characters").ref(obj)
    else
      @selfCursor = obj
    (@_get "cursors").val(@_model.HB.getUserId(), @selfCursor)
    this.lock_editor_propagation = false

  # describe how to propagate yjs events to the editor
  # TODO: should be private!
  bindEventsToEditor : (editor) ->
    # update the editor when something on the $cursors happens
    ###
    @_get("cursors").observe (events)=>
      if this.lock_editor_propagation
        # break, if lock is on
        return
      this.lock_editor_propagation = true
      for event in events
        id = event.name
        index = event.object.val(event.name).getPosition()
        text = event.name
        color = "grey" # FIXME

        @editor.setCursor id, index, text, color
      this.lock_editor_propagation = false
    ###

    # update the editor when something on the $characters happens
    @_get("characters").observe (events)=>
      if this.lock_editor_propagation
        # break, if lock is on
        return
      this.lock_editor_propagation = true
      for event in events
        delta =
          ops: [{retain: event.position}]

  # @param editor [Editor] an editor instance
  # @param author [String] the name of the local author
  constructor: () ->
    # TODO: generate a UID (you can get a unique id by calling
    # `@_model.getUid()` - is this what you mean?)
    # @author = author
