   internal var lblTime: UILabel = UILabel()
   internal var btnJoin: UIButton = UIButton(type: .system)
 
-  internal var eventID: Int?
+  internal var event: Event?
+  internal weak var delegate: EventCellDelegate?
 
   override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
     super.init(style: style, reuseIdentifier: reuseIdentifier)

              as? ConfigurableUITableViewCell
    else { return UITableViewCell() }

    cell.configure(info)
    return cell as? UITableViewCell ?? UITableViewCell()
  }
}

  }

  func join(_ sender: Any) {
    guard
      let event = event,
      let delegate = delegate
    else { return }

    delegate.join(event: event)
  }
}

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

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