       changed = true
 
     unless newRange.isEqual(oldRange)
-      @manager.setMarkerRange(@id, newRange)
+      @store.setMarkerRange(@id, newRange)
     unless @tailed is wasTailed
-      @manager.setMarkerHasTail(@id, @tailed)
+      @store.setMarkerHasTail(@id, @tailed)
     @emitChangeEvent(newRange, textChanged, propertiesChanged)
     changed
 

    @invalidationStrategy = @properties.invalidate ? 'overlap'
    delete @properties.invalidate

    @manager.setMarkerHasTail(@id, @tailed)
    @previousEventState = @getEventState(range)

  getRange: ->
    @manager.getMarkerRange(@id)

  getHeadPosition: ->
    if @reversed
      @manager.getMarkerStartPosition(@id)
    else
      @manager.getMarkerEndPosition(@id)

  getTailPosition: ->
    if @reversed
      @manager.getMarkerEndPosition(@id)
    else
      @manager.getMarkerStartPosition(@id)

  setRange: (range, properties) ->
    if properties?.reversed?

  hasTail: -> @tailed

  destroy: ->
    @store.destroyMarker(@id)
    @emitter.emit("did-destroy")

  copy: (options) ->
    properties = clone(@properties)
    properties[key] = value for key, value of options
    @store.markRange(@getRange(), options)

  ###
  Section: Event Subscription
