diff --git a/Gemfile b/Gemfile
index 12f59ee3f8c27e0027eefcabfc35b9a99ab6f077..eb31b0c4f0bcb2ff30d4143439cb5e5db84c2713 100644
--- a/Gemfile
+++ b/Gemfile
@@ -24,17 +24,17 @@
 # THE SOFTWARE.
 #--------------------------------------------------------------------------
 source "https://rubygems.org" do
-  gem "faraday",             "~> 1.0", :require => false
-  gem "faraday_middleware",  "~> 1.0.0.rc1", :require => false
-  gem "net-http-persistent", "~> 4.0", :require => false
-  gem "nokogiri",          "~> 1", ">= 1.10.8", :require => false
-  gem "adal",                "~> 1.0", :require => false
-  gem "dotenv",              "~> 2.0", :require => false
-  gem "minitest",            "~> 5", :require => false
-  gem "minitest-reporters",  "~> 1", :require => false
-  gem "mocha",               "~> 1.0", :require => false
-  gem "rake",                "~> 13.0", :require => false
-  gem "timecop",             "~> 0.7", :require => false
-  gem "yard",                "~> 0.9", ">= 0.9.11", :require => false
-  gem "coveralls",           require: false
+  gem "faraday",                     "~> 2.0", :require => false
+  gem "faraday-net_http_persistent", "~> 2", :require => false
+  gem "faraday-follow_redirects",    "~> 0.3", :require => false
+  gem "nokogiri",                    "~> 1", ">= 1.10.8", :require => false
+  gem "adal",                        "~> 1.0", :require => false
+  gem "dotenv",                      "~> 2.0", :require => false
+  gem "minitest",                    "~> 5", :require => false
+  gem "minitest-reporters",          "~> 1", :require => false
+  gem "mocha",                       "~> 1.0", :require => false
+  gem "rake",                        "~> 13.0", :require => false
+  gem "timecop",                     "~> 0.7", :require => false
+  gem "yard",                        "~> 0.9", ">= 0.9.11", :require => false
+  gem "coveralls",                   require: false
 end
diff --git a/blob/Gemfile b/blob/Gemfile
index 46caa9abda3b6e7a2e40a1b7bdfc671ae7ff7290..7ec39631d7360e425d4fd772966b40926a3eea5d 100644
--- a/blob/Gemfile
+++ b/blob/Gemfile
@@ -25,6 +25,8 @@
 #--------------------------------------------------------------------------
 source "https://rubygems.org"
 
+gem 'azure-storage-common', path: '../common'
+
 gemspec name: "azure-storage-blob"
 
 gem "coveralls", require: false
diff --git a/blob/azure-storage-blob.gemspec b/blob/azure-storage-blob.gemspec
index bc45e5259ef8549f3b457884372d5ba50ffcbfec..cb959b671add9b385f62e6210eab65948071a261 100644
--- a/blob/azure-storage-blob.gemspec
+++ b/blob/azure-storage-blob.gemspec
@@ -40,7 +40,7 @@ Gem::Specification.new do |s|
 
   s.required_ruby_version = ">= 2.3.0"
 
-  s.add_runtime_dependency("azure-storage-common",    "~> 2.0")
+  s.add_runtime_dependency("azure-storage-common")
   s.add_runtime_dependency("nokogiri",                "~> 1", ">= 1.10.8")
   s.add_development_dependency("dotenv",              "~> 2.0")
   s.add_development_dependency("minitest",            "~> 5")
diff --git a/common/azure-storage-common.gemspec b/common/azure-storage-common.gemspec
index 2a614e580c309acaa84ed1d92431bc3bc35ec84b..69d1b19f6b5d8de7d31597e43cfec78868877a0d 100644
--- a/common/azure-storage-common.gemspec
+++ b/common/azure-storage-common.gemspec
@@ -41,16 +41,16 @@ Gem::Specification.new do |s|
 
   s.required_ruby_version = ">= 2.3.0"
 
-  s.add_runtime_dependency('faraday',                 '~> 1.0')
-  s.add_runtime_dependency('faraday_middleware',      "~> 1.0", ">= 1.0.0.rc1")
-  s.add_runtime_dependency("net-http-persistent",     '~> 4.0')
-  s.add_runtime_dependency("nokogiri",                "~> 1", ">= 1.10.8")
-  s.add_development_dependency("dotenv",              "~> 2.0")
-  s.add_development_dependency("minitest",            "~> 5")
-  s.add_development_dependency("minitest-reporters",  "~> 1")
-  s.add_development_dependency("mocha",               "~> 1.0")
-  s.add_development_dependency("rake",                "~> 13.0")
-  s.add_development_dependency("timecop",             "~> 0.7")
-  s.add_development_dependency("yard",                "~> 0.9", ">= 0.9.11")
-  s.add_development_dependency('bundler',             '~> 1.11')
+  s.add_runtime_dependency('faraday',                     '~> 2')
+  s.add_runtime_dependency('faraday-net_http_persistent', "~> 2")
+  s.add_runtime_dependency('faraday-follow_redirects',    "~> 0.3")
+  s.add_runtime_dependency("nokogiri",                    "~> 1", ">= 1.10.8")
+  s.add_development_dependency("dotenv",                  "~> 2.0")
+  s.add_development_dependency("minitest",                "~> 5")
+  s.add_development_dependency("minitest-reporters",      "~> 1")
+  s.add_development_dependency("mocha",                   "~> 1.0")
+  s.add_development_dependency("rake",                    "~> 13.0")
+  s.add_development_dependency("timecop",                 "~> 0.7")
+  s.add_development_dependency("yard",                    "~> 0.9", ">= 0.9.11")
+  s.add_development_dependency('bundler',                 '~> 1.11')
 end
diff --git a/common/lib/azure/core.rb b/common/lib/azure/core.rb
index 4bdf2866c63756c537c8a8b69faaf78c65b671dc..ce41e6710290324bac22eedc4aff8037a4e84cd5 100644
--- a/common/lib/azure/core.rb
+++ b/common/lib/azure/core.rb
@@ -16,7 +16,8 @@
 require 'rubygems'
 require 'nokogiri'
 require 'faraday'
-require 'faraday_middleware'
+require 'faraday/follow_redirects'
+require 'faraday/net_http_persistent'
 
 module Azure
   module Core
@@ -43,5 +44,4 @@ module Azure
       autoload :SignerFilter,                 'azure/core/http/signer_filter'
     end
   end
-
 end
diff --git a/common/lib/azure/storage/common/autoload.rb b/common/lib/azure/storage/common/autoload.rb
index 57b1db1709af04c3aae2d89c70d3ec30b381a82f..75e144b291bf2cd5c153f1158f6bcdca9c6d641c 100644
--- a/common/lib/azure/storage/common/autoload.rb
+++ b/common/lib/azure/storage/common/autoload.rb
@@ -30,7 +30,8 @@ require "base64"
 require "openssl"
 require "uri"
 require "faraday"
-require "faraday_middleware"
+require "faraday/follow_redirects"
+require "faraday/net_http_persistent"
 
 require "azure/storage/common/core/autoload"
 require "azure/storage/common/default"
diff --git a/common/lib/azure/storage/common/core/http_client.rb b/common/lib/azure/storage/common/core/http_client.rb
index 4fdc06f4f443bfe6288d926a5eda2cee346a2cad..0898b70ea1a824be5c7ed72ec523e51db1c5bf1d 100644
--- a/common/lib/azure/storage/common/core/http_client.rb
+++ b/common/lib/azure/storage/common/core/http_client.rb
@@ -71,7 +71,7 @@ module Azure::Storage::Common::Core
                           URI::parse(ENV["HTTPS_PROXY"])
                         end || nil
         Faraday.new(uri, ssl: ssl_options, proxy: proxy_options) do |conn|
-          conn.use FaradayMiddleware::FollowRedirects
+          conn.use Faraday::FollowRedirects::Middleware
           conn.adapter :net_http_persistent, pool_size: 5 do |http|
             # yields Net::HTTP::Persistent
             http.idle_timeout = 100
diff --git a/file/Gemfile b/file/Gemfile
index 388aaafa081a42c997ce62487f301a4762a4d4ac..2dc669b4c2d2d04849723ef46ee1b830ee19b842 100644
--- a/file/Gemfile
+++ b/file/Gemfile
@@ -25,6 +25,8 @@
 #--------------------------------------------------------------------------
 source "https://rubygems.org"
 
+gem 'azure-storage-common', path: '../common'
+
 gemspec name: "azure-storage-file"
 
 gem "coveralls", require: false
diff --git a/file/azure-storage-file.gemspec b/file/azure-storage-file.gemspec
index 6f5f7393127c8b661e9cc9ec63f0e7b26f6486c9..dc3c7e5dd8ecd681da14ccf50034ce68d7e39805 100644
--- a/file/azure-storage-file.gemspec
+++ b/file/azure-storage-file.gemspec
@@ -40,7 +40,7 @@ Gem::Specification.new do |s|
 
   s.required_ruby_version = ">= 2.3.0"
 
-  s.add_runtime_dependency("azure-storage-common",    "~> 2.0")
+  s.add_runtime_dependency("azure-storage-common")
   s.add_runtime_dependency("nokogiri",                "~> 1", ">= 1.10.8")
   s.add_development_dependency("dotenv",              "~> 2.0")
   s.add_development_dependency("minitest",            "~> 5")
diff --git a/queue/Gemfile b/queue/Gemfile
index 91b4043e04da1b948e6031c40c31af41e685d2ef..ff3c04130fc36039e867c127d3ed38920ed98539 100644
--- a/queue/Gemfile
+++ b/queue/Gemfile
@@ -25,6 +25,8 @@
 #--------------------------------------------------------------------------
 source "https://rubygems.org"
 
+gem 'azure-storage-common', path: '../common'
+
 gemspec name: "azure-storage"
 
 gem "coveralls", require: false
diff --git a/queue/azure-storage-queue.gemspec b/queue/azure-storage-queue.gemspec
index 1295bd3080de1c9007fd785e66bce8e1c262ff64..1f5cede6c3721b522d5a96555b2247e5c4c382de 100644
--- a/queue/azure-storage-queue.gemspec
+++ b/queue/azure-storage-queue.gemspec
@@ -40,7 +40,7 @@ Gem::Specification.new do |s|
 
   s.required_ruby_version = ">= 2.3.0"
 
-  s.add_runtime_dependency("azure-storage-common",    "~> 2.0")
+  s.add_runtime_dependency("azure-storage-common")
   s.add_runtime_dependency("nokogiri",                "~> 1", ">= 1.10.8")
   s.add_development_dependency("dotenv",              "~> 2.0")
   s.add_development_dependency("minitest",            "~> 5")
diff --git a/table/Gemfile b/table/Gemfile
index 0b659b583b0556aa40c983755fa864202e90541e..831418108380a7f86b7addcd651cf6244170e3bd 100644
--- a/table/Gemfile
+++ b/table/Gemfile
@@ -25,6 +25,8 @@
 #--------------------------------------------------------------------------
 source "https://rubygems.org"
 
+gem 'azure-storage-common', path: '../common'
+
 gemspec name: "azure-storage-table"
 
 gem "coveralls", require: false
diff --git a/table/azure-storage-table.gemspec b/table/azure-storage-table.gemspec
index 1c78ea4f3938de633c081634ba2f28b7ac129db8..2c87be4181471a21320d3664561ca7e69c8cc627 100644
--- a/table/azure-storage-table.gemspec
+++ b/table/azure-storage-table.gemspec
@@ -40,7 +40,7 @@ Gem::Specification.new do |s|
 
   s.required_ruby_version = ">= 2.3.0"
 
-  s.add_runtime_dependency("azure-storage-common",    "~> 2.0")
+  s.add_runtime_dependency("azure-storage-common")
   s.add_runtime_dependency("nokogiri",                "~> 1", ">= 1.10.8")
   s.add_development_dependency("dotenv",              "~> 2.0")
   s.add_development_dependency("minitest",            "~> 5")
diff --git a/table/lib/azure/storage/table/table_service.rb b/table/lib/azure/storage/table/table_service.rb
index 6357b6458a433ea266e9e1c53abe6e90a9fdcedb..b3f040b17718ba4875f9d91d02df747fdb9a071c 100644
--- a/table/lib/azure/storage/table/table_service.rb
+++ b/table/lib/azure/storage/table/table_service.rb
@@ -24,6 +24,7 @@
 # THE SOFTWARE.
 #--------------------------------------------------------------------------
 require "azure/storage/table/auth/shared_key"
+require "cgi"
 
 module Azure::Storage
   include Azure::Storage::Common::Service
@@ -741,14 +742,7 @@ module Azure::Storage
 
       protected
         def encodeODataUriValue(value)
-          # Replace each single quote (') with double single quotes ('') not double
-          # quotes (")
-          value = value.gsub("'", "''")
-
-          # Encode the special URL characters
-          value = URI.escape(value)
-
-          value
+          CGI.escape(value)
         end
 
       protected