diff --git a/openstack/objectstorage/v1/containers/results.go b/openstack/objectstorage/v1/containers/results.go
index c2c25a8..4c27ec6 100644
--- a/openstack/objectstorage/v1/containers/results.go
+++ b/openstack/objectstorage/v1/containers/results.go
@@ -99,12 +99,12 @@
 
 // GetHeader represents the headers returned in the response from a Get request.
 type GetHeader struct {
-	BytesUsed     int64     `json:"X-Account-Bytes-Used"`
-	ContentLength int64     `json:"Content-Length"`
-	ContentType   string    `json:"Content-Type"`
-	Date          time.Time `mapstructure:"-" json:"-"`
-	ObjectCount   int64     `json:"X-Account-Object-Count"`
-	TransID       string    `json:"X-Trans-Id"`
+	BytesUsed     int64     `mapstructure:"X-Account-Bytes-Used"`
+	ContentLength int64     `mapstructure:"Content-Length"`
+	ContentType   string    `mapstructure:"Content-Type"`
+	Date          time.Time `mapstructure:"-"`
+	ObjectCount   int64     `mapstructure:"X-Account-Object-Count"`
+	TransID       string    `mapstructure:"X-Trans-Id"`
 }
 
 // GetResult represents the result of a get operation.
@@ -116,6 +116,9 @@
 // a map of headers, call the ExtractHeader method on the GetResult.
 func (gr GetResult) Extract() (GetHeader, error) {
 	var gh GetHeader
+	if gr.Err != nil {
+		return gh, gr.Err
+	}
 
 	if err := mapstructure.Decode(gr.Header, &gh); err != nil {
 		return gh, err
@@ -150,10 +153,10 @@
 
 // CreateHeader represents the headers returned in the response from a Create request.
 type CreateHeader struct {
-	ContentLength int64     `json:"Content-Length"`
-	ContentType   string    `json:"Content-Type"`
-	Date          time.Time `mapstructure:"-" json:"-"`
-	TransID       string    `json:"X-Trans-Id"`
+	ContentLength int64     `mapstructure:"Content-Length"`
+	ContentType   string    `mapstructure:"Content-Type"`
+	Date          time.Time `mapstructure:"-"`
+	TransID       string    `mapstructure:"X-Trans-Id"`
 }
 
 // CreateResult represents the result of a create operation. To extract the
@@ -167,6 +170,9 @@
 // a map of headers, call the ExtractHeader method on the CreateResult.
 func (cr CreateResult) Extract() (CreateHeader, error) {
 	var ch CreateHeader
+	if cr.Err != nil {
+		return ch, cr.Err
+	}
 
 	if err := mapstructure.Decode(cr.Header, &ch); err != nil {
 		return ch, err
@@ -185,10 +191,10 @@
 
 // UpdateHeader represents the headers returned in the response from a Update request.
 type UpdateHeader struct {
-	ContentLength int64     `json:"Content-Length"`
-	ContentType   string    `json:"Content-Type"`
-	Date          time.Time `mapstructure:"-" json:"-"`
-	TransID       string    `json:"X-Trans-Id"`
+	ContentLength int64     `mapstructure:"Content-Length"`
+	ContentType   string    `mapstructure:"Content-Type"`
+	Date          time.Time `mapstructure:"-"`
+	TransID       string    `mapstructure:"X-Trans-Id"`
 }
 
 // UpdateResult represents the result of an update operation. To extract the
@@ -202,6 +208,9 @@
 // a map of headers, call the ExtractHeader method on the UpdateResult.
 func (ur UpdateResult) Extract() (UpdateHeader, error) {
 	var uh UpdateHeader
+	if ur.Err != nil {
+		return uh, ur.Err
+	}
 
 	if err := mapstructure.Decode(ur.Header, &uh); err != nil {
 		return uh, err
@@ -220,10 +229,10 @@
 
 // DeleteHeader represents the headers returned in the response from a Delete request.
 type DeleteHeader struct {
-	ContentLength int64     `json:"Content-Length"`
-	ContentType   string    `json:"Content-Type"`
-	Date          time.Time `mapstructure:"-" json:"-"`
-	TransID       string    `json:"X-Trans-Id"`
+	ContentLength int64     `mapstructure:"Content-Length"`
+	ContentType   string    `mapstructure:"Content-Type"`
+	Date          time.Time `mapstructure:"-"`
+	TransID       string    `mapstructure:"X-Trans-Id"`
 }
 
 // DeleteResult represents the result of a delete operation. To extract the
@@ -237,6 +246,9 @@
 // a map of headers, call the ExtractHeader method on the DeleteResult.
 func (dr DeleteResult) Extract() (DeleteHeader, error) {
 	var dh DeleteHeader
+	if dr.Err != nil {
+		return dh, dr.Err
+	}
 
 	if err := mapstructure.Decode(dr.Header, &dh); err != nil {
 		return dh, err
