          ** methods are mapped 1:1 from shipping
          ** rates.
          */
-        guard let shippingRate = self.shippingRates!.shippingRateFor(shippingMethod) else {
-            completion(.failure, self.checkout!.summaryItems)
+        guard let shippingRate = self.shippingRates.shippingRateFor(shippingMethod) else {
+            completion(.failure, self.checkout.summaryItems)
             return
         }
         
-        self.delegate?.paySession(self, didSelectShippingRate: shippingRate, checkout: self.checkout!, provide: { updatedCheckout in
+        self.delegate?.paySession(self, didSelectShippingRate: shippingRate, checkout: self.checkout, provide: { updatedCheckout in
             if let updatedCheckout = updatedCheckout {
                 self.checkout = updatedCheckout
                 

    
    public weak var delegate: PaySessionDelegate?
    
    public let merchantID: String
    public let identifier: String
    
    internal fileprivate(set) var currency:      PayCurrency?
    internal fileprivate(set) var checkout:      PayCheckout?
    internal fileprivate(set) var shippingRates: [PayShippingRate]?
    
    // ----------------------------------
    //  MARK: - Init -
    //
    public init(merchantID: String) {
        self.merchantID = merchantID
        self.identifier = UUID().uuidString
    }

    // ----------------------------------
    //  MARK: - Begin Checkout -
    //
    public func authorize() {
        let paymentRequest  = self.paymentRequestUsing(checkout, currency: currency, merchantID: self.merchantID)
        let controller      = PKPaymentAuthorizationController(paymentRequest: paymentRequest)
        controller.delegate = self
