       return
 
     # We omit _id because that field cannot be changed, or even $set to the same value, but is in target
-    @_updateSource target._id, _.omit target, '_id'
+    @updateSource target._id, _.omit target, '_id'
 
 Document = class extends Document
   @_sourceFieldUpdated: (id, name, value, field) ->

    else
      @sourceCollection.remove selector

  setupTargetObservers: =>
    referenceFields =
      _id: 1 # In the case we want only id, that is, detect deletions
    for field in @fields
      referenceFields[field] = 1

    @targetCollection.find({}, fields: referenceFields).observeChanges
      added: (id, fields) =>
        @_updateSource id, fields

      changed: (id, fields) =>
        @_updateSource id, fields

      removed: (id) =>
        @_removeSource id

  updatedWithValue: (id, value) =>
    unless _.isObject(value) and _.isString(value._id)
      # Special case: when elements are being deleted from the array they are temporary set to null value, so we are ignoring this


    @sourceCollection.update selector, update, multi: true

  removeSource: (id) =>
    selector = {}
    selector["#{ @sourcePath }._id"] = id

