           $set:
             _schema: '1.0.0'
 
-setupObservers = ->
+setupObservers = (updateAll) ->
   setupTargetObservers = (fields) ->
     for name, field of fields
       # There are no arrays anymore here, just objects (for subdocuments) or fields
       if field instanceof globals.Document._ObservingField
-        field.setupTargetObservers()
+        field.setupTargetObservers updateAll
       else if field not instanceof globals.Document._Field
         setupTargetObservers field
 
   for document in globals.Document.list
     setupTargetObservers document.Meta.fields
-    document.setupSourceObservers()
+    document.setupSourceObservers updateAll
 
 setupMigrations = ->
   for document in globals.Document.list

Meteor.startup ->
  # To try delayed references one last time, this time we throw any exceptions
  # (Otherwise setupObservers would trigger strange exceptions anyway)
  globals.Document._retryDelayed true

  migrations()

  # TODO: Use official API when it will be available: https://github.com/meteor/meteor/issues/180
  if process.env.NODE_ENV is 'production' or Meteor.settings?.production or Meteor.settings?.public?.production
    # Setup observers and run all initial updates in blocking mode on production
    setupObservers()
  else
    # Otherwise do it in the background
    Meteor.defer ->
      setupObservers()

Document = globals.Document

    for name, value of fields
      @_sourceFieldUpdated id, name, value

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

    sourceFields =
