             return
         }
         syncing = true
+        
+        // Notify observers.
+        NSNotificationCenter.defaultCenter().postNotificationName(MirroredIndex.SyncDidStartNotification, object: self)
+        
+        // Run the sync asynchronously.
         dispatch_async(dispatch_get_global_queue(QOS_CLASS_BACKGROUND, 0)) {
             self._sync()
         }

/// key prior to calling any offline-related method.
///
public class MirroredIndex : Index {

    // ----------------------------------------------------------------------
    // MARK: Properties

            // Mark the sync as finished.
            dispatch_async(dispatch_get_main_queue()) {
                self.syncing = false
                
                // Notify observers.
                NSNotificationCenter.defaultCenter().postNotificationName(MirroredIndex.SyncDidFinishNotification, object: self)
            }
        }
        // Make sure this task is run after all the download tasks.
