       completion(bookings)
     }
   }
+  
+  private override init() {
+    fatalError("Don't instantiate me.")
+  }
 }
 
 extension TKQuickBooking {
-  private init?(withDictionary dictionary: [NSString: AnyObject]) {
+  private convenience init?(withDictionary dictionary: [NSString: AnyObject]) {
     guard let bookingURLString = dictionary["bookingURL"] as? String,
           let bookingURL = NSURL(string: bookingURLString),
           let title = dictionary["title"] as? String


  /// Optional ETA for this option. This is the expected waiting time.
  let ETA: NSTimeInterval?
}

enum TKQuickBookingHelper {
  /**
   Fetches the quick booking options for a particular segment, if there are any. Each booking option represents a one-click-to-buy option uses default options for various booking customisation parameters. To let the user customise these values, do not use quick bookings, but instead the `bookingInternalURL` of a segment.
   */
  static func fetchQuickBookings(forSegment segment: TKSegment, completion: [TKQuickBooking] -> Void) {
    if let stored = segment.storedQuickBookings {
      completion(stored)
      return


import Foundation

class TKQuickBookingPrice: NSObject {
  /// Price in local currency, typically not in smallest unit, but dollars
  let localCost: Float
  
  /// Price in USD dollars
  let USDCost: Float
  
  private init(localCost: Float, USDCost: Float) {
    self.localCost = localCost
    self.USDCost = USDCost
  }
}

class TKQuickBooking: NSObject {
  /// Localised identifying this booking option
  let title: String

