         productsRequest.start()
     }
     
+    // 2. Handle response after request - successful x unsuccessful request of products
     func productsRequest(_ request: SKProductsRequest, didReceive response: SKProductsResponse) {
         print("Products ready: \(response.products.count)")
         print("Products notready: \(response.invalidProductIdentifiers.count)")

        self.collectionView.reloadData()
    }
    
    func paymentQueue(_ queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) {
        for transaction in transactions {
            switch transaction.transactionState {


extension ViewController: SKProductsRequestDelegate, SKPaymentTransactionObserver {
    
    // 1. Request products
    func requestProducts() {
        let IDs: Set<String> = ["com.gethomeworktutor.TheGallery.tigerart",  "com.gethomeworktutor.TheGallery.natureart"]
        let productsRequest = SKProductsRequest(productIdentifiers: IDs)
