diff --git a/lib/fog/aws/requests/storage/get_object.rb b/lib/fog/aws/requests/storage/get_object.rb
index da0469a52..19e6978e0 100644
--- a/lib/fog/aws/requests/storage/get_object.rb
+++ b/lib/fog/aws/requests/storage/get_object.rb
@@ -35,26 +35,30 @@ module Fog
           unless object_name
             raise ArgumentError.new('object_name is required')
           end
+
+          params = { :headers => {} }
           if version_id = options.delete('versionId')
-            query = {'versionId' => version_id}
+            params[:query] = {'versionId' => version_id}
           end
-          headers = {}
-          headers.merge!(options)
-          if headers['If-Modified-Since']
-            headers['If-Modified-Since'] = Fog::Time.at(headers['If-Modified-Since'].to_i).to_date_header
+          params[:headers].merge!(options)
+          if options['If-Modified-Since']
+            params[:headers]['If-Modified-Since'] = Fog::Time.at(options['If-Modified-Since'].to_i).to_date_header
           end
-          if headers['If-Unmodified-Since']
-            headers['If-Unmodified-Since'] = Fog::Time.at(headers['If-Unmodified-Since'].to_i).to_date_header
+          if options['If-Unmodified-Since']
+            params[:headers]['If-Unmodified-Since'] = Fog::Time.at(options['If-Unmodified-Since'].to_i).to_date_header
           end
-          request({
+
+          if block_given?
+            params[:response_block] = Proc.new
+          end
+
+          request(params.merge!({
             :expects  => [ 200, 206 ],
-            :headers  => headers,
             :host     => "#{bucket_name}.#{@host}",
             :idempotent => true,
             :method   => 'GET',
             :path     => CGI.escape(object_name),
-            :query    => query
-          }, &block)
+          }))
         end
 
       end
diff --git a/lib/fog/google/requests/storage/get_object.rb b/lib/fog/google/requests/storage/get_object.rb
index 95090ab43..f26018ebd 100644
--- a/lib/fog/google/requests/storage/get_object.rb
+++ b/lib/fog/google/requests/storage/get_object.rb
@@ -32,22 +32,30 @@ module Fog
           unless object_name
             raise ArgumentError.new('object_name is required')
           end
+
+          params = { :headers => {} }
           if version_id = options.delete('versionId')
-            query = {'versionId' => version_id}
+            params[:query] = {'versionId' => version_id}
           end
-          headers = {}
-          headers['If-Modified-Since'] = Fog::Time.at(options['If-Modified-Since'].to_i).to_date_header if options['If-Modified-Since']
-          headers['If-Unmodified-Since'] = Fog::Time.at(options['If-Unmodified-Since'].to_i).to_date_header if options['If-Modified-Since']
-          headers.merge!(options)
-          request({
-            :expects  => 200,
-            :headers  => headers,
-            :host     => "#{bucket_name}.#{@host}",
-            :idempotent => true,
-            :method   => 'GET',
-            :path     => CGI.escape(object_name),
-            :query    => query
-          }, &block)
+          params[:headers].merge!(options)
+          if options['If-Modified-Since']
+            params[:headers]['If-Modified-Since'] = Fog::Time.at(options['If-Modified-Since'].to_i).to_date_header
+          end
+          if options['If-Modified-Since']
+            params[:headers]['If-Unmodified-Since'] = Fog::Time.at(options['If-Unmodified-Since'].to_i).to_date_header
+          end
+
+          if block_given?
+            params[:response_block] = Proc.new
+          end
+
+          request(params.merge!({
+            :expects        => 200,
+            :host           => "#{bucket_name}.#{@host}",
+            :idempotent     => true,
+            :method         => 'GET',
+            :path           => CGI.escape(object_name),
+          }))
         end
 
       end
diff --git a/lib/fog/rackspace/requests/storage/get_object.rb b/lib/fog/rackspace/requests/storage/get_object.rb
index 3cfb0c31a..534c8fa04 100644
--- a/lib/fog/rackspace/requests/storage/get_object.rb
+++ b/lib/fog/rackspace/requests/storage/get_object.rb
@@ -10,12 +10,18 @@ module Fog
         # * object<~String> - Name of object to look for
         #
         def get_object(container, object, &block)
-          request({
+          params = {}
+
+          if block_given?
+            params[:response_block] = Proc.new
+          end
+
+          request(params.merge!({
             :block    => block,
             :expects  => 200,
             :method   => 'GET',
             :path     => "#{Fog::Rackspace.escape(container)}/#{Fog::Rackspace.escape(object)}"
-          }, false, &block)
+          }, false))
         end
 
       end