     }
     
     public func dequeueReusableCell<T: UITableViewCell>() -> T? {
-        let cell = dequeueReusableCellWithIdentifier(T.cellIdentifier)
-        return cast(cell)
+        return dequeueReusableCellWithIdentifier(T.cellIdentifier) as? T
     }
     
     public func dequeueReusableCellForIndexPath<T: UITableViewCell>(indexPath: NSIndexPath) -> T {
-        let cell = dequeueReusableCellWithIdentifier(T.cellIdentifier, forIndexPath: indexPath)
-        return cast(cell)!
+        return dequeueReusableCellWithIdentifier(T.cellIdentifier, forIndexPath: indexPath) as! T
     }
 }
 

        return fromStoryboard(UIStoryboard(name: name, bundle: nil))
    }
    public class func fromStoryboard(storyboard: UIStoryboard) -> Self? {
        return cast(fromStoryboard(storyboard, identifier: className))
    }
}

// MARK: NSCoding

    }
    
    public class func dequeueReusableCellFromTableView(tableView: UITableView) -> Self? {
        return tableView.dequeueReusableCell()
    }
    
    public class func dequeueReusableCellFromTableView(tableView: UITableView, indexPath: NSIndexPath) -> Self {
        return tableView.dequeueReusableCellForIndexPath(indexPath)
    }
}

