 
     @stackDecorationChanges(decoration)
 
-    @decorationUpdatedSubscriptions[decoration.id].off()
-    @decorationDestroyedSubscriptions[decoration.id].off()
+    @decorationUpdatedSubscriptions[decoration.id].dispose()
+    @decorationDestroyedSubscriptions[decoration.id].dispose()
 
     delete @decorationUpdatedSubscriptions[decoration.id]
     delete @decorationDestroyedSubscriptions[decoration.id]

    @decorationsByMarkerId[marker.id].push(decoration)
    @decorationsById[decoration.id] = decoration

    @decorationUpdatedSubscriptions[decoration.id] ?= @subscribe decoration, 'updated', (event) =>
      @stackDecorationChanges(decoration)

    @decorationDestroyedSubscriptions[decoration.id] ?= @subscribe decoration, 'destroyed', (event) =>
      @removeDecoration(decoration)

    @stackDecorationChanges(decoration)

    @removedAllMarkerDecorations(marker)

  removedAllMarkerDecorations: (marker) ->
    @decorationMarkerChangedSubscriptions[marker.id].dispose()
    @decorationMarkerDestroyedSubscriptions[marker.id].dispose()

    delete @decorationsByMarkerId[marker.id]
    delete @decorationMarkerChangedSubscriptions[marker.id]
