         }
     }
 
-    func fixupMetadata(response: inout AWSResponse) {
+    func metadataFixup(response: inout AWSResponse) {
         // convert x-amz-meta-* header values into a dictionary, which we add as a "x-amz-meta-" header. This is processed by AWSClient to fill metadata values in GetObject and HeadObject
         switch response.body {
         case .buffer(_), .empty:

        }
    }

    func fixupGetLocationResponse(response: inout AWSResponse) {
        if case .xml(let element) = response.body {
            // GetBucketLocation comes back without a containing xml element
            if element.name == "LocationConstraint" {

    public func chain(response: AWSResponse) throws -> AWSResponse {
        var response = response

        metadataFixup(response: &response)
        getLocationResponseFixup(response: &response)

        return response
    }

    func virtualAddressFixup(request: inout AWSRequest) {
        /// process URL into form ${bucket}.s3.amazon.com
        var paths = request.url.path.components(separatedBy: "/").filter({ $0 != "" })
        if paths.count > 0 {
