Paginate the objects.List call.
diff --git a/openstack/storage/v1/objects/requests.go b/openstack/storage/v1/objects/requests.go
index 931653e..67aba34 100644
--- a/openstack/storage/v1/objects/requests.go
+++ b/openstack/storage/v1/objects/requests.go
@@ -7,10 +7,34 @@
 	"github.com/racker/perigee"
 	"github.com/rackspace/gophercloud"
 	"github.com/rackspace/gophercloud/openstack/utils"
+	"github.com/rackspace/gophercloud/pagination"
 )
 
-// ListResult is a *http.Response that is returned from a call to the List function.
-type ListResult *http.Response
+// ListResult is a single page of objects that is returned from a call to the List function.
+type ListResult struct {
+	pagination.MarkerPageBase
+}
+
+// IsEmpty returns true if a ListResult contains no object names.
+func (r ListResult) IsEmpty() (bool, error) {
+	names, err := ExtractNames(r)
+	if err != nil {
+		return true, err
+	}
+	return len(names) == 0, nil
+}
+
+// LastMarker returns the last object name in a ListResult.
+func (r ListResult) LastMarker() (string, error) {
+	names, err := ExtractNames(r)
+	if err != nil {
+		return "", err
+	}
+	if len(names) == 0 {
+		return "", nil
+	}
+	return names[len(names)-1], nil
+}
 
 // DownloadResult is a *http.Response that is returned from a call to the Download function.
 type DownloadResult *http.Response
@@ -21,24 +45,25 @@
 // List is a function that retrieves all objects in a container. It also returns the details
 // for the container. To extract only the object information or names, pass the ListResult
 // response to the ExtractInfo or ExtractNames function, respectively.
-func List(c *gophercloud.ServiceClient, opts ListOpts) (ListResult, error) {
-	contentType := ""
-
-	h := c.Provider.AuthenticatedHeaders()
+func List(c *gophercloud.ServiceClient, opts ListOpts) pagination.Pager {
+	var headers map[string]string
 
 	query := utils.BuildQuery(opts.Params)
 
 	if !opts.Full {
-		contentType = "text/plain"
+		headers = map[string]string{"Content-Type": "text/plain"}
+	}
+
+	createPage := func(r pagination.LastHTTPResponse) pagination.Page {
+		p := ListResult{pagination.MarkerPageBase{LastHTTPResponse: r}}
+		p.MarkerPageBase.Owner = p
+		return p
 	}
 
 	url := getContainerURL(c, opts.Container) + query
-	resp, err := perigee.Request("GET", url, perigee.Options{
-		MoreHeaders: h,
-		Accept:      contentType,
-		OkCodes:     []int{200, 204},
-	})
-	return &resp.HttpResponse, err
+	pager := pagination.NewPager(c, url, createPage)
+	pager.Headers = headers
+	return pager
 }
 
 // Download is a function that retrieves the content and metadata for an object.