 			}
 		}
 	}
-    
+	
+	func refreshDynamicLastCellHeight() {
+		dynamicLastCellHeight = nil
+		DispatchQueue.main.async {
+			self.updateFillUsingLastCell()
+			self.refreshCellHeights()
+		}
+	}
+	
     // MARK: - UIViewController
     
     override func viewDidLoad() {

	
	fileprivate var isDynamicLastCell: Bool = false
	fileprivate var dynamicLastCellHeight: CGFloat?
	
    /// Override in subclass, usually by connecting to an IBOutlet collection.
    var excludedCells: [UITableViewCell]? {

		// Use default height when last cell is not on the screen.
		guard tableView.indexPathsForVisibleRows?.contains(lastCellIndexPath) ?? false
			else { return }
		previousRowFrame = tableView.rectForRow(at: IndexPath(row: lastCellIndexPath.row - 1, section: lastCellIndexPath.section))
		// Get height of empty spaces to fill
		let availableHeight = tableView.frame.size.height - previousRowFrame.maxY
		if let lastCell = tableView.cellForRow(at: lastCellIndexPath) {
