               as? ConfigurableUITableViewCell
     else { return UITableViewCell() }
 
-    cell.configure(info)
+    cell.configure((info, delegate))
     return cell as? UITableViewCell ?? UITableViewCell()
   }
 }

  }

  func join(_ sender: Any) {
    guard let eventID = eventID else { return }
    AKFCausesService.joinEvent(fbid: Facebook.id, eventID: eventID) { (result) in
      switch result {
      case .failed(let error):
        print("unable to join event: \(String (describing: error?.localizedDescription))")
        break
      case .success(_, _):
        break
      }
    }
  }
}

extension EventCell: ConfigurableUITableViewCell {
  func configure(_ data: Any) {
    guard let event = data as? Event else { return }

    if let url = event.image {
      // TODO(compnerd) asynchronously load and display the image

    lblTime.text =
        DataFormatters.formatDateRange(value: (event.start, event.end))

    self.event = event
    self.delegate = delegate
  }
}

internal class EventsViewTableDataSource: NSObject {
  weak var delegate: EventCellDelegate?
  var events: [Event] = []
}

