     private var fetchedResultsController: NSFetchedResultsController<NSFetchRequestResult>!
     private var tableView = UITableView(frame: .zero, style: .plain)
     private var searchField: UITextField!
+    private var searchContainer: CrudSearchContainer!
     private var searchCancelButton: UIButton!
+    private var cancelButtonBlurView: UIVisualEffectView!
     private var searchCancelButtonWidthConstraint: NSLayoutConstraint!
     private var searchCancelButtonLeadingConstraint: NSLayoutConstraint!
     private var context: NSManagedObjectContext!

}

@objc public protocol CrudViewControllerThemeDelegate {
    @objc optional func crudViewController(crudViewController: CrudViewController, themeSearchField searchField: UITextField)
    @objc optional func crudViewController(crudViewController: CrudViewController, themeAddItemCell addItemCell: CrudAddItemCell)
}



// MARK: Private
private extension CrudViewController {

    func setLookAndFeel() {
        let fieldBlurView = UIVisualEffectView(effect: UIBlurEffect(style: UIBlurEffectStyle.dark))
        cancelButtonBlurView = UIVisualEffectView(effect: UIBlurEffect(style: UIBlurEffectStyle.dark))
        cancelButtonBlurView.alpha = 0
        let blurs: [UIView] = [ fieldBlurView, cancelButtonBlurView ]
        blurs.forEach {
            self.view.insertSubview($0, belowSubview: searchContainer)
        }
        fieldBlurView.edgeAnchors == searchField.edgeAnchors
        cancelButtonBlurView.edgeAnchors == searchCancelButton.edgeAnchors

        let searchViews: [UIView] = [ searchField, searchCancelButton ]
        searchViews.forEach { $0.layer.borderWidth = 1 }

        (blurs + searchViews).forEach {
            $0.clipsToBounds = true
            $0.layer.cornerRadius = 10
        }

        searchField.layer.borderColor = searchField.tintColor.cgColor
        searchField.tintColor = nil
        searchCancelButton.layer.borderColor = searchCancelButton.tintColor.cgColor

        searchCancelButton.setTitleColor(searchCancelButton.tintColor, for: .normal)
    }

    func resetSearch() {
        fetchedResultsController.fetchRequest.predicate = originalFetchRequestPredicate
