         return self.cellHeight
     }
     
-    public func getCellFrom(tableView: UITableView) {
-        var cell: UITableViewCell? = tableView.dequeueReusableCell(withIdentifier: self.cellIdentifier)
-        if cell == nil {
-            cell = CellClass(style: self.cellStyle, reuseIdentifier: self.cellIdentifier)
+    public func getCellFrom(tableView: UITableView) -> UITableViewCell {
+        
+        if let dequeuedCell: UITableViewCell = tableView.dequeueReusableCell(withIdentifier: self.cellIdentifier) {
+            return dequeuedCell
+        } else {
+            let cell: UITableViewCell = CellClass(style: self.cellStyle, reuseIdentifier: self.cellIdentifier)
             object_setClass(cell, self.className)
+            cell.cellCreated(dataObject: self.dataObject)
+            if let handler:ALCellCreatedHandler = self.createdHandler {
+                handler(self.dataObject, cell)
+            }
+            return cell
         }
-        if let createdCell = cell {
-            createdCell.cellCreated(dataObject: self.dataObject)
-            if let handler:ALCellCreatedHandler = self.createdHandler {
-                handler(self.dataObject, createdCell)
-            }
-        }
-        
     }
     
     //MARK: - Handlers
     
     func rowElementPressed(viewController: UIViewController, cell: ALCellProtocol) {
+        
         cell.cellPressed(viewController: viewController)
         if let handler:ALCellPressedHandler = self.pressedHandler {
             handler(viewController, cell)

    
    private var estimateHeightMode: Bool
    private var cellHeight: Double
    private var className: AnyClass
    private let cellIdentifier: String
    private let dataObject: DataObjectType
    private let cellStyle: UITableViewCellStyle

    }
    
    func rowElementDeselected(cell: ALCellProtocol) {
        
        cell.cellDeselected()
        if let handler: ALCellDeselectedHandler = self.deselectedHandler {
            handler(cell)
