       added: (id, fields) =>
         return if _.isEmpty fields
 
-        @updateSource id, fields
+        @_updateSource id, fields
 
       changed: (id, fields) =>
-        @updateSource id, fields
+        @_updateSource id, fields
 
       removed: (id) =>
-        @removeSource id
+        @_removeSource id
 
   updatedWithValue: (id, value) =>
     unless _.isObject(value) and _.isString(value._id)


    else if field not instanceof Document._Field
      for n, f of field
        @sourceFieldUpdated id, "#{ name }.#{ n }", value[n], f

  @sourceUpdated: (id, fields) ->
    for name, value of fields
      @sourceFieldUpdated id, name, value

  @setupSourceObservers: ->
    return if _.isEmpty @Meta.fields


    @sourceCollection.update selector, update, multi: true

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

