     }
     
     func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
-        let cellText: TicketViewCell
-        // Create cell
-        if let cell = tableView.dequeueReusableCellWithIdentifier(ticketCellIdentifier) as? TicketViewCell {
-            cellText = cell
+        let item = items[indexPath.row]
+        let cell = tableView.dequeueReusableCellWithIdentifier(cellID) as! UITableViewCell
+        if let reactiveView = cell as? ReactiveView {
+            reactiveView.bindViewModel(item)
         }
-        else {
-            tableView.registerNib(UINib(nibName: "TicketViewCell", bundle: nil), forCellReuseIdentifier: ticketCellIdentifier)
-            cellText = tableView.dequeueReusableCellWithIdentifier(ticketCellIdentifier) as! TicketViewCell
-        }
-        return cellText
+        return cell
     }
     
 }
        
        // Reactive
        sourceSignal.start(next: { data in
            self.items = data.map { $0 as TicketViewModel }
            self.tableView.reloadData()
            self.scrollToBottom()
        })

class TicketsViewController: SlidePageViewController {
    
    let tableView = TicketsTableView()
    let dataSource: TicketsDataSource
    let ticketCellIdentifier = "TicketCell"
    
    let sourceSignal: SignalProducer<[TicketViewModel], NoError>
    
    let socket = SocketIO<AppEvents>(url: "http://smartime.herokuapp.com")
    
    init(slider: SliderController) {
        // Reactive signal
        sourceSignal = slider.viewModel.ticketItems.producer
        // DataSource
        tableView.registerNib(UINib(nibName: "TicketViewCell", bundle: nil), forCellReuseIdentifier: ticketCellIdentifier)
        dataSource = TicketsDataSource(items: [], cellIdentifier: ticketCellIdentifier)
        // TableViewController
        super.init(slider: slider, nibName: nil, bundle: nil)
        
        tableView.dataSource = dataSource
        tableView.delegate = dataSource
        
        dataSource.onNewTicket = { cell in
            //Animate entrance cell
            cell.center.x += self.view.bounds.width
            cell.alpha = 0
            
            UIView.animateWithDuration(1.1, delay: 0.2, usingSpringWithDamping: 0.7, initialSpringVelocity: 0.5, options: .CurveEaseIn, animations: {
                cell.center.x -= self.view.bounds.width
                cell.alpha = 1
                }, completion: nil)
        }
        
        tableView.separatorStyle = UITableViewCellSeparatorStyle.None
        tableView.showsVerticalScrollIndicator = false
        
