      - Parameter maxRetryAttempts: Maximum number of retry attempts.
     */
     public func setRetryAttribute(isRetryEnabled enabled: Bool, maxRetryAttempts attempts: Int) {
-        self.isRetryEnabled = enabled
-        self.maxRetryAttempts = attempts
-        if (attempts < 0) {
-            self.maxRetryAttempts = 0
-        }
+        let retryHandler = RetryHandler(maxRetryAttempts: attempts, isRetryEnabled: enabled)
+        sessionManager.retrier = retryHandler
     }
 
     /**

                    print("[Kentico Cloud] Getting taxonomies action has failed. Check requested URL: \(url)")
                }

                if self.isRetryEnabled && attemptedNumber <= self.maxRetryAttempts {
                    self.waitForRetry(withAttemptedNumber: attemptedNumber)
                    self.sendGetTaxonomyRequest(url: url, attemptedNumber: attemptedNumber + 1, completionHandler: completionHandler)
                } else {
                    completionHandler(false, nil, error)
                }
            }
        }
    }

    private func waitForRetry(withAttemptedNumber attemptedNumber: Int) {
        Thread.sleep(forTimeInterval: (pow(2, attemptedNumber + 1) as NSDecimalNumber).doubleValue * 0.1)
    }
    
    private func getItemsRequestUrl(queryParameters: [QueryParameter]) -> String {

     - Returns: maximum number of retry attempts.
    */
    public func getMaximumRetryAttempts() -> Int {
        guard let retryHandler = self.sessionManager.retrier as? RetryHandler else {
            fatalError("Session manager retrier must be an instance of RetryHandler")
        }
        return retryHandler.getMaximumRetryNumber()
    }

    /**
