 	}
 
 	deinit {
-		let defaultCenter = NSNotificationCenter.defaultCenter()
-
-		defaultCenter.removeObserver(self,
-			name: ObjectContext.DidBatchDeleteNotification,
-			object: nil)
-
-		defaultCenter.removeObserver(self,
-			name: ObjectContext.DidBatchUpdateNotification,
-			object: nil)
-
-		defaultCenter.removeObserver(self,
-			name: NSManagedObjectContextDidSaveNotification,
-			object: nil)
+		shouldMergeExternalChanges = false
+		shouldMergeBatchRequests = false
 	}
 
   public func schedule(block: () -> Void) {

	internal static let DidBatchDeleteNotification = "MDDidBatchDelete"
	internal static let BatchRequestResultIDs = "MDResultIDs"

	public init(parent: ContextParent, concurrencyType: NSManagedObjectContextConcurrencyType, mergePolicy: AnyObject) {
		super.init(concurrencyType: concurrencyType)
		self.mergePolicy = mergePolicy

		switch parent {
		case let .PersistentStore(persistentStoreCoordinator):

			self.parentContext = context
		}

		/// NOTE: Workaround for `didSet` not working in `init` directly.
		{
			shouldMergeExternalChanges = true
			shouldMergeBatchRequests = true
		}()
	}

	public required init?(coder aDecoder: NSCoder) {
