diff --git a/openstack/identity/v2/tokens/requests.go b/openstack/identity/v2/tokens/requests.go
index c25a72b..7f71865 100644
--- a/openstack/identity/v2/tokens/requests.go
+++ b/openstack/identity/v2/tokens/requests.go
@@ -74,7 +74,7 @@
 func Create(client *gophercloud.ServiceClient, auth AuthOptionsBuilder) CreateResult {
 	request, err := auth.ToTokenCreateMap()
 	if err != nil {
-		return CreateResult{gophercloud.CommonResult{Err: err}}
+		return CreateResult{gophercloud.Result{Err: err}}
 	}
 
 	var result CreateResult
diff --git a/openstack/identity/v2/tokens/results.go b/openstack/identity/v2/tokens/results.go
index e88b2c7..543907c 100644
--- a/openstack/identity/v2/tokens/results.go
+++ b/openstack/identity/v2/tokens/results.go
@@ -71,7 +71,7 @@
 // CreateResult defers the interpretation of a created token.
 // Use ExtractToken() to interpret it as a Token, or ExtractServiceCatalog() to interpret it as a service catalog.
 type CreateResult struct {
-	gophercloud.CommonResult
+	gophercloud.Result
 }
 
 // ExtractToken returns the just-created Token from a CreateResult.
@@ -129,5 +129,5 @@
 
 // createErr quickly packs an error in a CreateResult.
 func createErr(err error) CreateResult {
-	return CreateResult{gophercloud.CommonResult{Err: err}}
+	return CreateResult{gophercloud.Result{Err: err}}
 }
diff --git a/openstack/identity/v3/endpoints/results.go b/openstack/identity/v3/endpoints/results.go
index d1c2472..94182b2 100644
--- a/openstack/identity/v3/endpoints/results.go
+++ b/openstack/identity/v3/endpoints/results.go
@@ -7,7 +7,7 @@
 )
 
 type commonResult struct {
-	gophercloud.CommonResult
+	gophercloud.Result
 }
 
 // Extract interprets a GetResult, CreateResult or UpdateResult as a concrete Endpoint.
@@ -33,7 +33,7 @@
 
 // createErr quickly wraps an error in a CreateResult.
 func createErr(err error) CreateResult {
-	return CreateResult{commonResult{gophercloud.CommonResult{Err: err}}}
+	return CreateResult{commonResult{gophercloud.Result{Err: err}}}
 }
 
 // UpdateResult is the deferred result of an Update call.
diff --git a/openstack/identity/v3/services/results.go b/openstack/identity/v3/services/results.go
index e4e068b..2d03c32 100644
--- a/openstack/identity/v3/services/results.go
+++ b/openstack/identity/v3/services/results.go
@@ -8,7 +8,7 @@
 )
 
 type commonResult struct {
-	gophercloud.CommonResult
+	gophercloud.Result
 }
 
 // Extract interprets a GetResult, CreateResult or UpdateResult as a concrete Service.
diff --git a/openstack/identity/v3/tokens/requests.go b/openstack/identity/v3/tokens/requests.go
index c8587b6..db45cc5 100644
--- a/openstack/identity/v3/tokens/requests.go
+++ b/openstack/identity/v3/tokens/requests.go
@@ -242,7 +242,7 @@
 	if result.Err != nil {
 		return result
 	}
-	result.header = response.HttpResponse.Header
+	result.Headers = response.HttpResponse.Header
 	return result
 }
 
@@ -258,7 +258,7 @@
 	if result.Err != nil {
 		return result
 	}
-	result.header = response.HttpResponse.Header
+	result.Headers = response.HttpResponse.Header
 	return result
 }
 
diff --git a/openstack/identity/v3/tokens/results.go b/openstack/identity/v3/tokens/results.go
index 1be98cb..1e6538d 100644
--- a/openstack/identity/v3/tokens/results.go
+++ b/openstack/identity/v3/tokens/results.go
@@ -1,7 +1,6 @@
 package tokens
 
 import (
-	"net/http"
 	"time"
 
 	"github.com/mitchellh/mapstructure"
@@ -10,10 +9,7 @@
 
 // commonResult is the deferred result of a Create or a Get call.
 type commonResult struct {
-	gophercloud.CommonResult
-
-	// header stores the headers from the original HTTP response because token responses are returned in an X-Subject-Token header.
-	header http.Header
+	gophercloud.Result
 }
 
 // Extract interprets a commonResult as a Token.
@@ -31,7 +27,7 @@
 	var token Token
 
 	// Parse the token itself from the stored headers.
-	token.ID = r.header.Get("X-Subject-Token")
+	token.ID = r.Headers.Get("X-Subject-Token")
 
 	err := mapstructure.Decode(r.Resp, &response)
 	if err != nil {
@@ -52,10 +48,7 @@
 // createErr quickly creates a CreateResult that reports an error.
 func createErr(err error) CreateResult {
 	return CreateResult{
-		commonResult: commonResult{
-			CommonResult: gophercloud.CommonResult{Err: err},
-			header:       nil,
-		},
+		commonResult: commonResult{Result: gophercloud.Result{Err: err}},
 	}
 }
 
