   enum Status: String {
     case Pending = "PENDING"
     case Confirmed = "CONFIRMED"
-    case Canceled = "CANCELED"
+    case Canceled = "CANCELLED"
   }
   
   struct Detail {

}

extension TKBookingConfirmation {
  private init?(withDictionary dictionary: [NSString: AnyObject]) {
    guard let statusString = dictionary["status"] as? String,
          let status = Status(rawValue: statusString) else {
        return nil
    }
    
    let provider: Detail?
    if let title = dictionary["providerTitle"] as? String {
      provider = Detail(title: title,
                        subtitle: dictionary["providerSubtitle"] as? String,
                        imageURLString: dictionary["providerImageURL"] as? String)
    } else {
      provider = nil
    }

    let vehicle: Detail?
    if let title = dictionary["vehicleTitle"] as? String {
      vehicle = Detail(title: title,
                        subtitle: dictionary["vehicleSubtitle"] as? String,
                        imageURLString: dictionary["vehicleImageURL"] as? String)
    } else {
      vehicle = nil
    }

    self.init(status: status, provider: provider, vehicle: vehicle)
  }
}

extension TKBookingConfirmation.Detail {
  private init(title: String, subtitle: String?, imageURLString: String?) {
    self.title = title
    self.subtitle = subtitle
    self.imageURL = imageURLString != nil ? NSURL(string: imageURLString!) : nil
  }
}

extension TKBookingConfirmation {
  private static func fake() -> TKBookingConfirmation? {
    let fake = [
      "providerImageURL": "https://d1a3f4spazzrp4.cloudfront.net/uberex-sandbox/images/driver.jpg",
      "providerSubtitle": "4.9",
      "providerTitle": "John",
      "status": "PENDING",
      "vehicleImageURL": "https://d1a3f4spazzrp4.cloudfront.net/uberex-sandbox/images/prius.jpg",
      "vehicleSubtitle": "UBER-PLATE",
      "vehicleTitle": "Prius Toyota"
    ]
    return TKBookingConfirmation(withDictionary: fake)
  }

    let imageURL: NSURL?
  }
  
  struct Action {
    let title: String
    let internalURL: NSURL?
    let externalURL: NSURL?
  }
  
  let status: Status
  let provider: Detail?
  let vehicle: Detail?
  let actions: [Action]
}

// Swift-only this would be an enum
