     
     func tableView(tableView: UITableView, willDisplayHeaderView view: UIView, forSection index: Int) {
         let indexPath = NSIndexPath(forRow: 0, inSection: index)
-        if let section = self.sectionAtIndexPath(indexPath), let headerDisplayHandler = section.headerDisplayHandler {
-            headerDisplayHandler(section: section, tableView: tableView, indexPath: indexPath, view: view, status: .WillDisplay)
-        }
+        guard let section = self.sectionAtIndexPath(indexPath), let headerDisplayHandler = section.headerDisplayHandler else {
+            return
+        }
+        headerDisplayHandler(section: section, tableView: tableView, indexPath: indexPath, view: view, status: .WillDisplay)
     }
     
     func tableView(tableView: UITableView, willDisplayFooterView view: UIView, forSection index: Int) {
         let indexPath = NSIndexPath(forRow: 0, inSection: index)
-        if let section = self.sectionAtIndexPath(indexPath), let footerDisplayHandler = section.footerDisplayHandler {
-            footerDisplayHandler(section: section, tableView: tableView, indexPath: indexPath, view: view, status: .WillDisplay)
-        }
+        guard let section = self.sectionAtIndexPath(indexPath), let footerDisplayHandler = section.footerDisplayHandler else {
+            return
+        }
+        footerDisplayHandler(section: section, tableView: tableView, indexPath: indexPath, view: view, status: .WillDisplay)
     }
     
     func tableView(tableView: UITableView, didEndDisplayingCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {
-        if let section = self.sectionAtIndexPath(indexPath), let item = self.itemAtIndexPath(indexPath), let displayHandler = item.displayHandler {
-            displayHandler(section: section, item: item, tableView: tableView, indexPath: indexPath, tableViewCell: cell as! TableViewCell, status: .DidEndDisplaying)
-        }
+        guard let section = self.sectionAtIndexPath(indexPath), let item = self.itemAtIndexPath(indexPath), let displayHandler = item.displayHandler else {
+            return
+        }
+        displayHandler(section: section, item: item, tableView: tableView, indexPath: indexPath, tableViewCell: cell as! TableViewCell, status: .DidEndDisplaying)
     }
     
     func tableView(tableView: UITableView, didEndDisplayingHeaderView view: UIView, forSection index: Int) {
         let indexPath = NSIndexPath(forRow: 0, inSection: index)
-        if let section = self.sectionAtIndexPath(indexPath), let footerDisplayHandler = section.footerDisplayHandler {
-            footerDisplayHandler(section: section, tableView: tableView, indexPath: indexPath, view: view, status: .DidEndDisplaying)
-        }
+        guard let section = self.sectionAtIndexPath(indexPath), let footerDisplayHandler = section.footerDisplayHandler else {
+            return
+        }
+        footerDisplayHandler(section: section, tableView: tableView, indexPath: indexPath, view: view, status: .DidEndDisplaying)
     }
     
     func tableView(tableView: UITableView, didEndDisplayingFooterView view: UIView, forSection index: Int) {
         let indexPath = NSIndexPath(forRow: 0, inSection: index)
-        if let section = self.sectionAtIndexPath(indexPath), let footerDisplayHandler = section.footerDisplayHandler {
-            footerDisplayHandler(section: section, tableView: tableView, indexPath: indexPath, view: view, status: .DidEndDisplaying)
-        }
+        guard let section = self.sectionAtIndexPath(indexPath), let footerDisplayHandler = section.footerDisplayHandler else {
+            return
+        }
+        footerDisplayHandler(section: section, tableView: tableView, indexPath: indexPath, view: view, status: .DidEndDisplaying)
     }
     
     // Variable height support
     
     func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
-        if let item = self.itemAtIndexPath(indexPath) {
-            return CGFloat(TableViewCell.heightWithItem(item, tableView: tableView, indexPath: indexPath))
-        }
-        return UITableViewAutomaticDimension
+        guard let item = self.itemAtIndexPath(indexPath) else {
+            return UITableViewAutomaticDimension
+        }
+        return CGFloat(TableViewCell.heightWithItem(item, tableView: tableView, indexPath: indexPath))
     }
     
     func tableView(tableView: UITableView, heightForHeaderInSection index: Int) -> CGFloat {
-        if let section = self.sectionAtIndexPath(NSIndexPath(forRow: 0, inSection: index)), let headerView = section.headerView {
-            return headerView.frame.height
-        }
-        return UITableViewAutomaticDimension
+        guard let section = self.sectionAtIndexPath(NSIndexPath(forRow: 0, inSection: index)), let headerView = section.headerView else {
+            return UITableViewAutomaticDimension
+        }
+        return headerView.frame.height
     }
     
     func tableView(tableView: UITableView, heightForFooterInSection index: Int) -> CGFloat {
-        if let section = self.sectionAtIndexPath(NSIndexPath(forRow: 0, inSection: index)), let footerView = section.footerView {
-            return footerView.frame.height
-        }
-        return UITableViewAutomaticDimension
+        guard let section = self.sectionAtIndexPath(NSIndexPath(forRow: 0, inSection: index)), let footerView = section.footerView else {
+            return UITableViewAutomaticDimension
+        }
+        return footerView.frame.height
     }
     
     // Use the estimatedHeight methods to quickly calcuate guessed values which will allow for fast load times of the table.
     // If these methods are implemented, the above -tableView:heightForXXX calls will be deferred until views are ready to be displayed, so more expensive logic can be placed there.
     //
     func tableView(tableView: UITableView, estimatedHeightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
-        if let item = self.itemAtIndexPath(indexPath) {
-            return CGFloat(TableViewCell.estimatedHeightWithItem(item, tableView: tableView, indexPath: indexPath))
-        }
-        return UITableViewAutomaticDimension
+        guard let item = self.itemAtIndexPath(indexPath) else {
+            return UITableViewAutomaticDimension
+        }
+        return CGFloat(TableViewCell.estimatedHeightWithItem(item, tableView: tableView, indexPath: indexPath))
     }
     
     // Section header & footer information. Views are preferred over title should you decide to provide both

    // Indentation

    func tableView(tableView: UITableView, indentationLevelForRowAtIndexPath indexPath: NSIndexPath) -> Int {
        if let item = self.itemAtIndexPath(indexPath) {
            return item.indentationLevel
        }
        return 0
    }
    
    // Cut / Copy / Paste.  All three methods must be implemented by the delegate.

    // Allows customization of the editingStyle for a particular cell located at 'indexPath'. If not implemented, all editable cells will have UITableViewCellEditingStyleDelete set for them when the table has editing property set to YES.
    //
    func tableView(tableView: UITableView, editingStyleForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCellEditingStyle {
        guard let item = self.itemAtIndexPath(indexPath) else {
            return .None
        }
        return item.editingStyle
    }
    
    /*
