Extract method for Accounts
diff --git a/openstack/objectstorage/v1/accounts/results.go b/openstack/objectstorage/v1/accounts/results.go
index abae026..4797e96 100644
--- a/openstack/objectstorage/v1/accounts/results.go
+++ b/openstack/objectstorage/v1/accounts/results.go
@@ -1,16 +1,92 @@
 package accounts
 
 import (
+	"encoding/json"
+	"fmt"
 	"strings"
+	"time"
 
+	"github.com/mitchellh/mapstructure"
 	"github.com/rackspace/gophercloud"
 )
 
+// UpdateResult is returned from a call to the Update function.
+type UpdateResult struct {
+	gophercloud.HeaderResult
+}
+
+// UpdateHeader represents the headers returned in the response from an Update request.
+type UpdateHeader struct {
+	ContentLength string    `json:"Content-Length"`
+	ContentType   []string  `json:"Content-Type"`
+	Date          time.Time `json:"-"`
+	TransID       string    `json:"X-Trans_ID"`
+}
+
+// Extract will return a struct of headers returned from a call to Get. To obtain
+// a map of headers, call the ExtractHeader method on the GetResult.
+func (ur UpdateResult) Extract() (UpdateHeader, error) {
+	var uh UpdateHeader
+	if ur.Err != nil {
+		return uh, ur.Err
+	}
+
+	b, err := json.Marshal(ur.Header)
+	if err != nil {
+		return uh, err
+	}
+
+	err = json.Unmarshal(b, &uh)
+	if err != nil {
+		return uh, err
+	}
+
+	date, err := time.Parse(time.RFC1123, ur.Header["Date"][0])
+	if err != nil {
+		return uh, err
+	}
+
+	uh.Date = date
+
+	return uh, nil
+}
+
+// GetHeader represents the headers returned in the response from a Get request.
+type GetHeader struct {
+	BytesUsed      int64     `json:"X-Account-Bytes-Used"`
+	ContainerCount int       `json:"X-Accound-Container-Count"`
+	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"`
+}
+
 // GetResult is returned from a call to the Get function.
 type GetResult struct {
 	gophercloud.HeaderResult
 }
 
+// Extract will return a struct of headers returned from a call to Get. To obtain
+// a map of headers, call the ExtractHeader method on the GetResult.
+func (gr GetResult) Extract() (GetHeader, error) {
+	fmt.Printf("raw response header: %+v\n", gr.Header)
+
+	var gh GetHeader
+
+	if err := mapstructure.Decode(gr.Header, &gh); err != nil {
+		return gh, err
+	}
+
+	t, err := time.Parse(time.RFC1123, gr.Header["Date"][0])
+	if err != nil {
+		return gh, err
+	}
+	gh.Date = t
+
+	return gh, nil
+}
+
 // ExtractMetadata is a function that takes a GetResult (of type *http.Response)
 // and returns the custom metatdata associated with the account.
 func (gr GetResult) ExtractMetadata() (map[string]string, error) {
@@ -27,8 +103,3 @@
 	}
 	return metadata, nil
 }
-
-// UpdateResult is returned from a call to the Update function.
-type UpdateResult struct {
-	gophercloud.HeaderResult
-}