 	public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
 		return set[section].count
 	}
+
+	public func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
+		switch editingStyle {
+		case .insert:
+			insertionHandler?(indexPath)
+
+		case .delete:
+			deletionHandler?(indexPath)
+
+		case .none:
+			fatalError("Unexpected editing style received from UITableView.")
+		}
+	}
+
+	public func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool {
+		return editabilityHandler?(indexPath) ?? true
+	}
 }

		return self
	}

	public func on(emptied: (() -> Void)?, unemptied: (() -> Void)?) -> Self {
		emptiedObserver = emptied ?? emptiedObserver
		unemptiedObserver = unemptied ?? unemptiedObserver
		return self
	}


	private var sectionNameMapper: ((position: Int, persistedName: String?) -> String?)?

	private var isEmpty: Bool = true
	private var emptiedObserver: (() -> Void)?
	private var unemptiedObserver: (() -> Void)?
	private var insertionHandler: ((IndexPath) -> Void)?
	private var deletionHandler: ((IndexPath) -> Void)?
	private var editabilityHandler: ((IndexPath) -> Bool)?

	public init(set: ViewModelMappingSet<V>) {
		self.set = set
