 
 public struct TableViewAdapterConfiguration<V: ViewModel> {
 	private var factories: [Int: (UITableView, V, NSIndexPath) -> UITableViewCell]
-	public var isUniform: Bool = false
+	public var isUniform = false
+	public var shouldReloadRowsForUpdatedObjects = false
+	public var rowAnimation: UITableViewRowAnimation = .Automatic
 
 	public init() {
 		self.factories = [:]

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

					tableView?.beginUpdates()

					if let indexSet = changes.indiceOfDeletedSections {
						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: 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: self.configuration.rowAnimation)
					}

					if let indexPathPairs = changes.indexPathsOfMovedRows {
