             tableView.fillSuperview()
         }
 
+        if let emptyView = themeDelegate?.crudViewControllerEmptyStateView?(crudViewController: self) {
+            self.emptyView = emptyView
+            view.addSubview(emptyView)
+            emptyView.edgeAnchors == view.edgeAnchors
+            self.toggle(emptyState: self.numberOfEntities() == 0, animated: false)
+        }
     }
 
     func addItemRowIndexPath() -> IndexPath {

        logger?.logDebug(message: String(format: "[%@(%@)] Reloading data using performFetch on NSFetchedResultsController: %@ and rows using reloadData on UITableView: %@.", instanceType(self), crudName, fetchedResultsController, tableView))
        do {
            try fetchedResultsController.performFetch()
            tableView.reloadData()
        } catch {
            let message = String(format: "[%@(%@)] Could not perform a new fetch on NSFetchedResultsController: %@.", instanceType(self), crudName, fetchedResultsController)
            logger?.logError(message: message, error: error)

                case .move: fatalError("Moving currently not supported.")
                }
            })
        }) { finished in
            self.toggle(emptyState: self.numberOfEntities() == 0, animated: true)
        }
    }

    func setTableView(toHideAddItemRow hideAddItemRow: Bool) {
