 					tableView?.beginUpdates()
 
 					if let indexSet = changes.indiceOfDeletedSections {
-						tableView?.deleteSections(indexSet, withRowAnimation: .Automatic)
+						tableView?.deleteSections(indexSet, withRowAnimation: self.configuration.rowAnimation)
+					}
+
+					if let indexSet = changes.indiceOfReloadedSections {
+						tableView?.reloadSections(indexSet, withRowAnimation: self.configuration.rowAnimation)
 					}
 
 					if let indexPaths = changes.indexPathsOfDeletedRows {
-						tableView?.deleteRowsAtIndexPaths(indexPaths, withRowAnimation: .Automatic)
+						tableView?.deleteRowsAtIndexPaths(indexPaths, withRowAnimation: self.configuration.rowAnimation)
+					}
+
+					if self.configuration.shouldReloadRowsForUpdatedObjects, let indexPaths = changes.indexPathsOfUpdatedRows {
+						tableView?.reloadRowsAtIndexPaths(indexPaths, withRowAnimation: self.configuration.rowAnimation)
 					}
 
 					if let indexSet = changes.indiceOfInsertedSections {
-						tableView?.insertSections(indexSet, withRowAnimation: .Automatic)
+						tableView?.insertSections(indexSet, withRowAnimation: self.configuration.rowAnimation)
 					}
 
 					if let indexPathPairs = changes.indexPathsOfMovedRows {


public struct TableViewAdapterConfiguration<V: ViewModel> {
	private var factories: [Int: (UITableView, V, NSIndexPath) -> UITableViewCell]
	public var isUniform: Bool = false

	public init() {
		self.factories = [:]

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