diff --git a/openstack/storage/v1/accounts/accounts.go b/openstack/objectStorage/v1/accounts/accounts.go
similarity index 100%
rename from openstack/storage/v1/accounts/accounts.go
rename to openstack/objectStorage/v1/accounts/accounts.go
diff --git a/openstack/storage/v1/accounts/accounts_test.go b/openstack/objectStorage/v1/accounts/accounts_test.go
similarity index 100%
rename from openstack/storage/v1/accounts/accounts_test.go
rename to openstack/objectStorage/v1/accounts/accounts_test.go
diff --git a/openstack/storage/v1/accounts/doc.go b/openstack/objectStorage/v1/accounts/doc.go
similarity index 100%
rename from openstack/storage/v1/accounts/doc.go
rename to openstack/objectStorage/v1/accounts/doc.go
diff --git a/openstack/storage/v1/accounts/requests.go b/openstack/objectStorage/v1/accounts/requests.go
similarity index 100%
rename from openstack/storage/v1/accounts/requests.go
rename to openstack/objectStorage/v1/accounts/requests.go
diff --git a/openstack/storage/v1/accounts/requests_test.go b/openstack/objectStorage/v1/accounts/requests_test.go
similarity index 100%
rename from openstack/storage/v1/accounts/requests_test.go
rename to openstack/objectStorage/v1/accounts/requests_test.go
diff --git a/openstack/storage/v1/accounts/urls.go b/openstack/objectStorage/v1/accounts/urls.go
similarity index 100%
rename from openstack/storage/v1/accounts/urls.go
rename to openstack/objectStorage/v1/accounts/urls.go
diff --git a/openstack/storage/v1/accounts/urls_test.go b/openstack/objectStorage/v1/accounts/urls_test.go
similarity index 100%
rename from openstack/storage/v1/accounts/urls_test.go
rename to openstack/objectStorage/v1/accounts/urls_test.go
diff --git a/openstack/storage/v1/containers/doc.go b/openstack/objectStorage/v1/containers/doc.go
similarity index 100%
rename from openstack/storage/v1/containers/doc.go
rename to openstack/objectStorage/v1/containers/doc.go
diff --git a/openstack/storage/v1/containers/requests.go b/openstack/objectStorage/v1/containers/requests.go
similarity index 97%
rename from openstack/storage/v1/containers/requests.go
rename to openstack/objectStorage/v1/containers/requests.go
index 35bc1af..013c6ff 100644
--- a/openstack/storage/v1/containers/requests.go
+++ b/openstack/objectStorage/v1/containers/requests.go
@@ -22,14 +22,13 @@
 // response to the ExtractInfo or ExtractNames function, respectively.
 func List(c *gophercloud.ServiceClient, opts ListOpts) pagination.Pager {
 	var headers map[string]string
-
 	query, err := gophercloud.BuildQueryString(opts)
 	if err != nil {
 		return pagination.Pager{Err: err}
 	}
 
 	if !opts.Full {
-		headers = map[string]string{"Accept": "text/plain"}
+		headers = map[string]string{"Accept": "text/plain", "Content-Type": "text/plain"}
 	}
 
 	createPage := func(r pagination.LastHTTPResponse) pagination.Page {
diff --git a/openstack/storage/v1/containers/requests_test.go b/openstack/objectStorage/v1/containers/requests_test.go
similarity index 92%
rename from openstack/storage/v1/containers/requests_test.go
rename to openstack/objectStorage/v1/containers/requests_test.go
index 93747be..1c9ee11 100644
--- a/openstack/storage/v1/containers/requests_test.go
+++ b/openstack/objectStorage/v1/containers/requests_test.go
@@ -34,6 +34,7 @@
 
 		w.Header().Add("Content-Type", "application/json")
 		r.ParseForm()
+		fmt.Printf("r: %+v\n", r)
 		marker := r.Form.Get("marker")
 		switch marker {
 		case "":
@@ -49,6 +50,8 @@
 					"name": "marktwain"
 				}
 			]`)
+		case "marktwain":
+			fmt.Fprintf(w, `[]`)
 		default:
 			t.Fatalf("Unexpected marker: [%s]", marker)
 		}
@@ -91,8 +94,16 @@
 		testhelper.TestHeader(t, r, "Accept", "text/plain")
 
 		w.Header().Set("Content-Type", "text/plain")
-		w.WriteHeader(http.StatusOK)
-		fmt.Fprintf(w, "")
+		r.ParseForm()
+		marker := r.Form.Get("marker")
+		switch marker {
+		case "":
+			fmt.Fprintf(w, "janeausten\nmarktwain\n")
+		case "marktwain":
+			fmt.Fprintf(w, ``)
+		default:
+			t.Fatalf("Unexpected marker: [%s]", marker)
+		}
 	})
 
 	client := serviceClient()
@@ -103,7 +114,7 @@
 			return false, err
 		}
 
-		expected := []string{"janeausten, marktwain"}
+		expected := []string{"janeausten", "marktwain"}
 
 		testhelper.CheckDeepEquals(t, expected, actual)
 
diff --git a/openstack/storage/v1/containers/results.go b/openstack/objectStorage/v1/containers/results.go
similarity index 93%
rename from openstack/storage/v1/containers/results.go
rename to openstack/objectStorage/v1/containers/results.go
index 283e44a..5df99ed 100644
--- a/openstack/storage/v1/containers/results.go
+++ b/openstack/objectStorage/v1/containers/results.go
@@ -10,9 +10,9 @@
 )
 
 type Container struct {
-	Bytes int
-	Count int
-	Name  string
+	Bytes int    `json:"bytes" mapstructure:"bytes"`
+	Count int    `json:"count" mapstructure:"count"`
+	Name  string `json:"name"  mapstructure:"name"`
 }
 
 type commonResult struct {
@@ -84,7 +84,7 @@
 	results := make([]Container, len(untyped))
 	for index, each := range untyped {
 		container := each.(map[string]interface{})
-		err := mapstructure.Decode(container, results[index])
+		err := mapstructure.Decode(container, &results[index])
 		if err != nil {
 			return results, err
 		}
diff --git a/openstack/storage/v1/containers/urls.go b/openstack/objectStorage/v1/containers/urls.go
similarity index 100%
rename from openstack/storage/v1/containers/urls.go
rename to openstack/objectStorage/v1/containers/urls.go
diff --git a/openstack/storage/v1/containers/urls_test.go b/openstack/objectStorage/v1/containers/urls_test.go
similarity index 100%
rename from openstack/storage/v1/containers/urls_test.go
rename to openstack/objectStorage/v1/containers/urls_test.go
diff --git a/openstack/storage/v1/objects/doc.go b/openstack/objectStorage/v1/objects/doc.go
similarity index 100%
rename from openstack/storage/v1/objects/doc.go
rename to openstack/objectStorage/v1/objects/doc.go
diff --git a/openstack/storage/v1/objects/requests.go b/openstack/objectStorage/v1/objects/requests.go
similarity index 98%
rename from openstack/storage/v1/objects/requests.go
rename to openstack/objectStorage/v1/objects/requests.go
index 363843c..1622ff7 100644
--- a/openstack/storage/v1/objects/requests.go
+++ b/openstack/objectStorage/v1/objects/requests.go
@@ -35,7 +35,7 @@
 	}
 
 	if !opts.Full {
-		headers = map[string]string{"Accept": "text/plain"}
+		headers = map[string]string{"Accept": "text/plain", "Content-Type": "text/plain"}
 	}
 
 	createPage := func(r pagination.LastHTTPResponse) pagination.Page {
diff --git a/openstack/storage/v1/objects/requests_test.go b/openstack/objectStorage/v1/objects/requests_test.go
similarity index 95%
rename from openstack/storage/v1/objects/requests_test.go
rename to openstack/objectStorage/v1/objects/requests_test.go
index 6fe4d30..0c61550 100644
--- a/openstack/storage/v1/objects/requests_test.go
+++ b/openstack/objectStorage/v1/objects/requests_test.go
@@ -5,7 +5,6 @@
 	"fmt"
 	"net/http"
 	"testing"
-	"time"
 
 	"github.com/rackspace/gophercloud"
 	"github.com/rackspace/gophercloud/pagination"
@@ -77,7 +76,7 @@
 		expected := []Object{
 			Object{
 				Hash:         "451e372e48e0f6b1114fa0724aa79fa1",
-				LastModified: time.Date(2009, time.November, 10, 23, 0, 0, 0, time.UTC),
+				LastModified: "2009-11-10 23:00:00 +0000 UTC",
 				Bytes:        14,
 				Name:         "goodbye",
 				ContentType:  "application/octet-stream",
@@ -100,8 +99,16 @@
 		testhelper.TestHeader(t, r, "Accept", "text/plain")
 
 		w.Header().Add("Content-Type", "text/plain")
-		w.WriteHeader(http.StatusOK)
-		fmt.Fprintf(w, "")
+		r.ParseForm()
+		marker := r.Form.Get("marker")
+		switch marker {
+		case "":
+			fmt.Fprintf(w, "goodbye\n")
+		case "goodbye":
+			fmt.Fprintf(w, "")
+		default:
+			t.Fatalf("Unexpected marker: [%s]", marker)
+		}
 	})
 
 	client := serviceClient()
@@ -112,7 +119,7 @@
 			return false, err
 		}
 
-		expected := []string{"helloworld", "goodbye"}
+		expected := []string{"goodbye"}
 
 		testhelper.CheckDeepEquals(t, expected, actual)
 
diff --git a/openstack/storage/v1/objects/results.go b/openstack/objectStorage/v1/objects/results.go
similarity index 88%
rename from openstack/storage/v1/objects/results.go
rename to openstack/objectStorage/v1/objects/results.go
index 529bbd9..14435b9 100644
--- a/openstack/storage/v1/objects/results.go
+++ b/openstack/objectStorage/v1/objects/results.go
@@ -5,7 +5,6 @@
 	"io/ioutil"
 	"net/http"
 	"strings"
-	"time"
 
 	"github.com/mitchellh/mapstructure"
 	"github.com/rackspace/gophercloud/pagination"
@@ -13,11 +12,11 @@
 
 // Object is a structure that holds information related to a storage object.
 type Object struct {
-	Bytes        int       `json:"bytes"`
-	ContentType  string    `json:"content_type"`
-	Hash         string    `json:"hash"`
-	LastModified time.Time `json:"last_modified"`
-	Name         string    `json:"name"`
+	Bytes        int    `json:"bytes"			mapstructure:"bytes"`
+	ContentType  string `json:"content_type"	mapstructure:"content_type"`
+	Hash         string `json:"hash"			mapstructure:"hash"`
+	LastModified string `json:"last_modified"	mapstructure:"last_modified"`
+	Name         string `json:"name"			mapstructure:"name"`
 }
 
 // ListResult is a single page of objects that is returned from a call to the List function.
@@ -64,11 +63,10 @@
 	results := make([]Object, len(untyped))
 	for index, each := range untyped {
 		object := each.(map[string]interface{})
-		err := mapstructure.Decode(object, results[index])
+		err := mapstructure.Decode(object, &results[index])
 		if err != nil {
 			return results, err
 		}
-
 	}
 	return results, nil
 }
@@ -77,7 +75,6 @@
 func ExtractNames(page pagination.Page) ([]string, error) {
 	casted := page.(ObjectPage)
 	ct := casted.Header.Get("Content-Type")
-
 	switch {
 	case strings.HasPrefix(ct, "application/json"):
 		parsed, err := ExtractInfo(page)
@@ -89,6 +86,7 @@
 		for _, object := range parsed {
 			names = append(names, object.Name)
 		}
+
 		return names, nil
 	case strings.HasPrefix(ct, "text/plain"):
 		names := make([]string, 0, 50)
@@ -101,6 +99,8 @@
 		}
 
 		return names, nil
+	case strings.HasPrefix(ct, "text/html"):
+		return []string{}, nil
 	default:
 		return nil, fmt.Errorf("Cannot extract names from response with content-type: [%s]", ct)
 	}
diff --git a/openstack/storage/v1/objects/urls.go b/openstack/objectStorage/v1/objects/urls.go
similarity index 100%
rename from openstack/storage/v1/objects/urls.go
rename to openstack/objectStorage/v1/objects/urls.go
diff --git a/openstack/storage/v1/objects/urls_test.go b/openstack/objectStorage/v1/objects/urls_test.go
similarity index 100%
rename from openstack/storage/v1/objects/urls_test.go
rename to openstack/objectStorage/v1/objects/urls_test.go
