diff --git a/openstack/compute/v2/extensions/quota/requests.go b/openstack/compute/v2/extensions/quota/requests.go
index 7c3de24..f7e7b5c 100644
--- a/openstack/compute/v2/extensions/quota/requests.go
+++ b/openstack/compute/v2/extensions/quota/requests.go
@@ -2,18 +2,11 @@
 
 import (
 	"github.com/rackspace/gophercloud"
-	"github.com/rackspace/gophercloud/pagination"
 )
 
-func List(client *gophercloud.ServiceClient) pagination.Pager {
-	return pagination.NewPager(client, listURL(client), func(r pagination.PageResult) pagination.Page {
-		return QuotaPage{pagination.SinglePageBase(r)}
-	})
-}
-
 // Get returns public data about a previously created Quota.
-func Get(client *gophercloud.ServiceClient, name string) GetResult {
+func Get(client *gophercloud.ServiceClient, tenantID string) GetResult {
 	var res GetResult
-	_, res.Err = client.Get(getURL(client, name), &res.Body, nil)
+	_, res.Err = client.Get(getURL(client, tenantID), &res.Body, nil)
 	return res
 }
diff --git a/openstack/compute/v2/extensions/quota/results.go b/openstack/compute/v2/extensions/quota/results.go
index 07031f1..34309ba 100644
--- a/openstack/compute/v2/extensions/quota/results.go
+++ b/openstack/compute/v2/extensions/quota/results.go
@@ -98,20 +98,8 @@
 	return res.Quota, err
 }
 
-// CreateResult is the response from a Create operation. Call its Extract method to interpret it
-// as a Quota.
-type CreateResult struct {
-	quotaResult
-}
-
 // GetResult is the response from a Get operation. Call its Extract method to interpret it
 // as a Quota.
 type GetResult struct {
 	quotaResult
 }
-
-// DeleteResult is the response from a Delete operation. Call its Extract method to determine if
-// the call succeeded or failed.
-type DeleteResult struct {
-	gophercloud.ErrResult
-}
diff --git a/openstack/compute/v2/extensions/quota/urls.go b/openstack/compute/v2/extensions/quota/urls.go
index 2900b89..0c6e67f 100644
--- a/openstack/compute/v2/extensions/quota/urls.go
+++ b/openstack/compute/v2/extensions/quota/urls.go
@@ -8,18 +8,6 @@
 	return c.ServiceURL(resourcePath)
 }
 
-func listURL(c *gophercloud.ServiceClient) string {
-	return resourceURL(c)
-}
-
-func createURL(c *gophercloud.ServiceClient) string {
-	return resourceURL(c)
-}
-
-func getURL(c *gophercloud.ServiceClient, name string) string {
-	return c.ServiceURL(resourcePath, name)
-}
-
-func deleteURL(c *gophercloud.ServiceClient, name string) string {
-	return getURL(c, name)
+func getURL(c *gophercloud.ServiceClient, tenantID string) string {
+	return c.ServiceURL(resourcePath, tenantID)
 }
diff --git a/openstack/compute/v2/extensions/quota/urls_test.go b/openstack/compute/v2/extensions/quota/urls_test.go
index cc0daf7..db29e22 100644
--- a/openstack/compute/v2/extensions/quota/urls_test.go
+++ b/openstack/compute/v2/extensions/quota/urls_test.go
@@ -7,22 +7,6 @@
 	"github.com/rackspace/gophercloud/testhelper/client"
 )
 
-func TestListURL(t *testing.T) {
-	th.SetupHTTP()
-	defer th.TeardownHTTP()
-	c := client.ServiceClient()
-
-	th.CheckEquals(t, c.Endpoint+"os-quota-sets", listURL(c))
-}
-
-func TestCreateURL(t *testing.T) {
-	th.SetupHTTP()
-	defer th.TeardownHTTP()
-	c := client.ServiceClient()
-
-	th.CheckEquals(t, c.Endpoint+"os-quota-sets", createURL(c))
-}
-
 func TestGetURL(t *testing.T) {
 	th.SetupHTTP()
 	defer th.TeardownHTTP()
@@ -30,11 +14,3 @@
 
 	th.CheckEquals(t, c.Endpoint+"os-quota-sets/wat", getURL(c, "wat"))
 }
-
-func TestDeleteURL(t *testing.T) {
-	th.SetupHTTP()
-	defer th.TeardownHTTP()
-	c := client.ServiceClient()
-
-	th.CheckEquals(t, c.Endpoint+"os-quota-sets/wat", deleteURL(c, "wat"))
-}
