 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
+  globals.Document.defineAll()
 
   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()
+  setupObservers()
 
 Document = globals.Document

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

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

    sourceFields =


    sourceFieldsWalker @Meta.fields

    initializing = true

    handle = @Meta.collection.find({}, fields: sourceFields).observeChanges
      added: catchErrors (id, fields) =>
        @_sourceUpdated id, fields if updateAll or not initializing

      changed: catchErrors (id, fields) =>
        @_sourceUpdated id, fields

    if updateAll
      handle.stop()
      return

    initializing = false

  @setupMigrations: ->
    @Meta.collection.find(
