     // MARK: Selection
     
     public func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
-        let item = sections[(indexPath as NSIndexPath).section].items[(indexPath as NSIndexPath).row]
+        let item = sections[indexPath.section].items[indexPath.row]
         
         if let selectableItem = item as? SelectableTableViewItem {
             selectableItem.selectionHandler?()

    // MARK: Row
    
    public func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
        if let learnedHeight = learnedCellHeights[(indexPath as NSIndexPath).section, (indexPath as NSIndexPath).row] {
            return learnedHeight
        } else {
            return UITableViewAutomaticDimension

     
     - Parameter animated: if true (default) performs a partial table view that will only update changes cells
     */
    public func updateView(animated: Bool = true) {
        if animated {
            animateViews = animated
            updateTableView()
