 					}
 
 					if let indexPaths = changes.indexPathsOfInsertedRows {
-						tableView?.insertRowsAtIndexPaths(indexPaths, withRowAnimation: .Automatic)
+						tableView?.insertRowsAtIndexPaths(indexPaths, withRowAnimation: self.configuration.rowAnimation)
 					}
 
 					tableView?.endUpdates()

					tableView?.beginUpdates()

					if let indexSet = changes.indiceOfDeletedSections {
						tableView?.deleteSections(indexSet, withRowAnimation: .Automatic)
					}

					if let indexPaths = changes.indexPathsOfDeletedRows {
						tableView?.deleteRowsAtIndexPaths(indexPaths, withRowAnimation: .Automatic)
					}

					if let indexSet = changes.indiceOfInsertedSections {
						tableView?.insertSections(indexSet, withRowAnimation: .Automatic)
					}

					if let indexPathPairs = changes.indexPathsOfMovedRows {

		set.eventProducer
			.takeUntil(willDeinitProducer)
			.observeOn(UIScheduler())
			.startWithNext { [unowned self, weak tableView] in
				switch($0) {
				case .Reloaded:
					tableView?.reloadData()
