diff --git a/openstack/objectstorage/v1/accounts/requests.go b/openstack/objectstorage/v1/accounts/requests.go
index a364bcc..55b4217 100644
--- a/openstack/objectstorage/v1/accounts/requests.go
+++ b/openstack/objectstorage/v1/accounts/requests.go
@@ -28,7 +28,7 @@
 // ExtractHeaders method on the GetResult.
 func Get(c *gophercloud.ServiceClient, opts GetOptsBuilder) GetResult {
 	var res GetResult
-	h := c.Provider.AuthenticatedHeaders()
+	h := c.AuthenticatedHeaders()
 
 	if opts != nil {
 		headers, err := opts.ToAccountGetMap()
@@ -83,7 +83,7 @@
 // To extract the headers returned, call the Extract method on the UpdateResult.
 func Update(c *gophercloud.ServiceClient, opts UpdateOptsBuilder) UpdateResult {
 	var res UpdateResult
-	h := c.Provider.AuthenticatedHeaders()
+	h := c.AuthenticatedHeaders()
 
 	if opts != nil {
 		headers, err := opts.ToAccountUpdateMap()
diff --git a/openstack/objectstorage/v1/containers/requests.go b/openstack/objectstorage/v1/containers/requests.go
index 89fa014..3fae4d9 100644
--- a/openstack/objectstorage/v1/containers/requests.go
+++ b/openstack/objectstorage/v1/containers/requests.go
@@ -97,7 +97,7 @@
 // Create is a function that creates a new container.
 func Create(c *gophercloud.ServiceClient, containerName string, opts CreateOptsBuilder) CreateResult {
 	var res CreateResult
-	h := c.Provider.AuthenticatedHeaders()
+	h := c.AuthenticatedHeaders()
 
 	if opts != nil {
 		headers, err := opts.ToContainerCreateMap()
@@ -124,7 +124,7 @@
 func Delete(c *gophercloud.ServiceClient, containerName string) DeleteResult {
 	var res DeleteResult
 	resp, err := perigee.Request("DELETE", deleteURL(c, containerName), perigee.Options{
-		MoreHeaders: c.Provider.AuthenticatedHeaders(),
+		MoreHeaders: c.AuthenticatedHeaders(),
 		OkCodes:     []int{202, 204},
 	})
 	res.Header = resp.HttpResponse.Header
@@ -168,7 +168,7 @@
 // metadata.
 func Update(c *gophercloud.ServiceClient, containerName string, opts UpdateOptsBuilder) UpdateResult {
 	var res UpdateResult
-	h := c.Provider.AuthenticatedHeaders()
+	h := c.AuthenticatedHeaders()
 
 	if opts != nil {
 		headers, err := opts.ToContainerUpdateMap()
@@ -197,7 +197,7 @@
 func Get(c *gophercloud.ServiceClient, containerName string) GetResult {
 	var res GetResult
 	resp, err := perigee.Request("HEAD", getURL(c, containerName), perigee.Options{
-		MoreHeaders: c.Provider.AuthenticatedHeaders(),
+		MoreHeaders: c.AuthenticatedHeaders(),
 		OkCodes:     []int{200, 204},
 	})
 	res.Header = resp.HttpResponse.Header
diff --git a/openstack/objectstorage/v1/objects/requests.go b/openstack/objectstorage/v1/objects/requests.go
index 7d598b8..1b6cb5c 100644
--- a/openstack/objectstorage/v1/objects/requests.go
+++ b/openstack/objectstorage/v1/objects/requests.go
@@ -109,7 +109,7 @@
 	var res DownloadResult
 
 	url := downloadURL(c, containerName, objectName)
-	h := c.Provider.AuthenticatedHeaders()
+	h := c.AuthenticatedHeaders()
 
 	if opts != nil {
 		headers, query, err := opts.ToObjectDownloadParams()
@@ -187,7 +187,7 @@
 	var res CreateResult
 
 	url := createURL(c, containerName, objectName)
-	h := c.Provider.AuthenticatedHeaders()
+	h := c.AuthenticatedHeaders()
 
 	if opts != nil {
 		headers, query, err := opts.ToObjectCreateParams()
@@ -250,7 +250,7 @@
 // Copy is a function that copies one object to another.
 func Copy(c *gophercloud.ServiceClient, containerName, objectName string, opts CopyOptsBuilder) CopyResult {
 	var res CopyResult
-	h := c.Provider.AuthenticatedHeaders()
+	h := c.AuthenticatedHeaders()
 
 	headers, err := opts.ToObjectCopyMap()
 	if err != nil {
@@ -306,7 +306,7 @@
 	}
 
 	resp, err := perigee.Request("DELETE", url, perigee.Options{
-		MoreHeaders: c.Provider.AuthenticatedHeaders(),
+		MoreHeaders: c.AuthenticatedHeaders(),
 		OkCodes:     []int{204},
 	})
 	res.Header = resp.HttpResponse.Header
@@ -351,7 +351,7 @@
 	}
 
 	resp, err := perigee.Request("HEAD", url, perigee.Options{
-		MoreHeaders: c.Provider.AuthenticatedHeaders(),
+		MoreHeaders: c.AuthenticatedHeaders(),
 		OkCodes:     []int{200, 204},
 	})
 	res.Header = resp.HttpResponse.Header
@@ -392,7 +392,7 @@
 // Update is a function that creates, updates, or deletes an object's metadata.
 func Update(c *gophercloud.ServiceClient, containerName, objectName string, opts UpdateOptsBuilder) UpdateResult {
 	var res UpdateResult
-	h := c.Provider.AuthenticatedHeaders()
+	h := c.AuthenticatedHeaders()
 
 	if opts != nil {
 		headers, err := opts.ToObjectUpdateMap()
