     }
     
     public class func dequeueReusableCellFromTableView(tableView: UITableView) -> Self? {
-        let cell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier)
-        return cast(cell)
+        return tableView.dequeueReusableCell()
     }
     
     public class func dequeueReusableCellFromTableView(tableView: UITableView, indexPath: NSIndexPath) -> Self {
-        let cell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier, forIndexPath: indexPath)
-        return cast(cell)!
+        return tableView.dequeueReusableCellForIndexPath(indexPath)
     }
 }
 

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

// MARK: NSCoding

        set { collectionViewLayout = newValue }
    }
    
    public func dequeueReusableCellForIndexPath<T: UICollectionViewCell>(indexPath: NSIndexPath!) -> T {
        return dequeueReusableCellWithReuseIdentifier(T.cellIdentifier, forIndexPath: indexPath) as! T
    }
}

