         self.consentManager = consentManager
 
         // Request initial consent
-        requestInitialConsent(from: viewController, consentManager: consentManager, completion: completion)
+        requestInitialConsent(from: viewController, consentManager: consentManager) { [weak self] result in
+            guard let self = self else { return }
+            switch result {
+            case .success(let consentStatus):
+                self.startMobileAdsSDK { [weak self] in
+                    if consentStatus == .notRequired || consentStatus == .obtained {
+                        self?.loadAds()
+                    }
+                    completion(result)
+                }
+            case .failure:
+                completion(result)
+            }
+        }
     }
 
     // MARK: Consent

                               consentManager: SwiftyAdsConsentManagerType,
                               completion: @escaping SwiftyAdsConsentResultHandler) {
        DispatchQueue.main.async {
            consentManager.requestUpdate { [weak self] result in
                guard let self = self else { return }
                switch result {
                case .success(let status):
                    switch status {
                    case .obtained, .notRequired:
                        self.loadAds()
                        completion(.success(status))
                    case .required:
                        DispatchQueue.main.async {
                            consentManager.showForm(from: viewController) { [weak self] result in
                                guard let self = self else { return }
                                switch result {
                                case .success(let status):
                                    if status == .obtained || status == .notRequired {
                                        self.loadAds()
                                    }
                                    completion(.success(status))
                                case .failure(let error):
                                    completion(.failure(error))
                                }
                            }
                        }
                    default:
                        completion(.success(status))
                    }
                case .failure(let error):
                    completion(.failure(error))
                }
            }
        }
    }



        // If UMP SDK is disabled skip consent flow completely
        if let isUMPDisabled = configuration.isUMPDisabled, isUMPDisabled {
            startMobileAdsSDK { [weak self] in
                self?.loadAds()
            }
            completion(.success(.notRequired))
            return
        }
