 
 class EventsViewController: UICollectionViewController {
     // MARK: Properties    
-    private var viewModels : [ImageTitleable]? {
-        didSet {
-            self.collectionView?.reloadData()
-        }
-    }
+    private var viewModels : [EventViewModel]?
     
     // MARK: UIViewController
     

            guard let json = try? NSJSONSerialization.JSONObjectWithData(data, options: []) as! NSDictionary else { return }
            guard let eventDictionaries = json["data"] as? Array<NSDictionary> else { return }
            let events = eventDictionaries.map({ (e : NSDictionary ) -> Event in
                let event = Event(id: e["id"] as! Int, shortName: e["short_name"] as? String, fullName: e["full_name"] as? String, description: e["description"] as? String, isLive: e["in_progress"] as? Bool, imageUrl: NSURL(string: (e["background_image"]?["url"])! as! String), streamUrl: nil)
                return event
            })
            
            let eventViewModels = events.map({ (e : Event) -> ImageTitleable in
                let eventViewModel = EventViewModel(title: e.fullName ?? "No Title", imageData: nil, model: e)
                return eventViewModel
            })
            
            dispatch_async(dispatch_get_main_queue(), { () -> Void in
                self.viewModels = eventViewModels
            })
        }
        task.resume()

        
        let viewModel = viewModels[indexPath.row]
        cell.viewModel = viewModel
        
        conditionallyLoadViewModelPropertiesAtIndex(indexPath.item)
    }
}