diff --git a/openstack/compute/v2/extensions/quotasets/doc.go b/openstack/compute/v2/extensions/quotasets/doc.go
index 9d62849..893c105 100644
--- a/openstack/compute/v2/extensions/quotasets/doc.go
+++ b/openstack/compute/v2/extensions/quotasets/doc.go
@@ -1,3 +1,3 @@
-// Package quotas provides information and interaction with Quotas
+// Package quotasets provides information and interaction with Quotaset
 // extension for the OpenStack Compute service.
-package quotas
+package quotasets
diff --git a/openstack/compute/v2/extensions/quotasets/fixtures.go b/openstack/compute/v2/extensions/quotasets/fixtures.go
index 992beff..df836e8 100644
--- a/openstack/compute/v2/extensions/quotasets/fixtures.go
+++ b/openstack/compute/v2/extensions/quotasets/fixtures.go
@@ -1,6 +1,6 @@
 // +build fixtures
 
-package quotas
+package quotasets
 
 import (
 	"fmt"
@@ -31,8 +31,8 @@
 
 const FirstTenantID = "555544443333222211110000ffffeeee"
 
-// FirstQuota is the first result in ListOutput.
-var FirstQuota = Quota{
+// FirstQuotaset is the first result in ListOutput.
+var FirstQuota = Quotaset{
 	FixedIps:                 0,
 	FloatingIps:              0,
 	InjectedFileContentBytes: 10240,
diff --git a/openstack/compute/v2/extensions/quotasets/requests.go b/openstack/compute/v2/extensions/quotasets/requests.go
index f7e7b5c..ecb1ba1 100644
--- a/openstack/compute/v2/extensions/quotasets/requests.go
+++ b/openstack/compute/v2/extensions/quotasets/requests.go
@@ -1,10 +1,10 @@
-package quotas
+package quotasets
 
 import (
 	"github.com/rackspace/gophercloud"
 )
 
-// Get returns public data about a previously created Quota.
+// Get returns public data about a previously created Quotaset.
 func Get(client *gophercloud.ServiceClient, tenantID string) GetResult {
 	var res GetResult
 	_, res.Err = client.Get(getURL(client, tenantID), &res.Body, nil)
diff --git a/openstack/compute/v2/extensions/quotasets/requests_test.go b/openstack/compute/v2/extensions/quotasets/requests_test.go
index ec55cc7..8c2a6c6 100644
--- a/openstack/compute/v2/extensions/quotasets/requests_test.go
+++ b/openstack/compute/v2/extensions/quotasets/requests_test.go
@@ -1,4 +1,4 @@
-package quotas
+package quotasets
 
 import (
 	th "github.com/rackspace/gophercloud/testhelper"
@@ -12,5 +12,5 @@
 	HandleGetSuccessfully(t)
 	actual, err := Get(client.ServiceClient(), FirstTenantID).Extract()
 	th.AssertNoErr(t, err)
-	th.CheckDeepEquals(t, &FirstQuota, actual)
+	th.CheckDeepEquals(t, &FirstQuotaset, actual)
 }
diff --git a/openstack/compute/v2/extensions/quotasets/results.go b/openstack/compute/v2/extensions/quotasets/results.go
index 34309ba..9cbfe4f 100644
--- a/openstack/compute/v2/extensions/quotasets/results.go
+++ b/openstack/compute/v2/extensions/quotasets/results.go
@@ -1,4 +1,4 @@
-package quotas
+package quotasets
 
 import (
 	"github.com/mitchellh/mapstructure"
@@ -6,7 +6,7 @@
 	"github.com/rackspace/gophercloud/pagination"
 )
 
-// Quota is a set of operational limits that allow for control of compute usage.
+// Quotaset is a set of operational limits that allow for control of compute usage.
 const sample = `
 {
   "quota_set" : {
@@ -26,7 +26,7 @@
 }
 `
 
-type Quota struct {
+type Quotaset struct {
 	//ID is tenant associated with this quota_set
 	ID string `mapstructure:"id"`
 	//FixedIps is number of fixed ips alloted this quota_set
@@ -55,26 +55,26 @@
 	Instances int `mapstructure:"instances"`
 }
 
-// QuotaPage stores a single, only page of Quota results from a List call.
-type QuotaPage struct {
+// QuotasetPage stores a single, only page of Quotaset results from a List call.
+type QuotasetPage struct {
 	pagination.SinglePageBase
 }
 
-// IsEmpty determines whether or not a QuotaPage is empty.
-func (page QuotaPage) IsEmpty() (bool, error) {
-	ks, err := ExtractQuotas(page)
+// IsEmpty determines whether or not a QuotasetsetPage is empty.
+func (page QuotasetPage) IsEmpty() (bool, error) {
+	ks, err := ExtractQuotasets(page)
 	return len(ks) == 0, err
 }
 
-// ExtractQuotas interprets a page of results as a slice of Quotas.
-func ExtractQuotas(page pagination.Page) ([]Quota, error) {
+// ExtractQuotasets interprets a page of results as a slice of Quotasets.
+func ExtractQuotasets(page pagination.Page) ([]Quotaset, error) {
 	var resp struct {
-		Quotas []Quota `mapstructure:"quotas"`
+		Quotasets []Quotaset `mapstructure:"quotas"`
 	}
 
-	err := mapstructure.Decode(page.(QuotaPage).Body, &resp)
-	results := make([]Quota, len(resp.Quotas))
-	for i, q := range resp.Quotas {
+	err := mapstructure.Decode(page.(QuotasetPage).Body, &resp)
+	results := make([]Quotaset, len(resp.Quotasets))
+	for i, q := range resp.Quotasets {
 		results[i] = q
 	}
 	return results, err
@@ -84,22 +84,22 @@
 	gophercloud.Result
 }
 
-// Extract is a method that attempts to interpret any Quota resource response as a Quota struct.
-func (r quotaResult) Extract() (*Quota, error) {
+// Extract is a method that attempts to interpret any Quotaset resource response as a Quotaset struct.
+func (r quotaResult) Extract() (*Quotaset, error) {
 	if r.Err != nil {
 		return nil, r.Err
 	}
 
 	var res struct {
-		Quota *Quota `json:"quota_set" mapstructure:"quota_set"`
+		Quotaset *Quotaset `json:"quota_set" mapstructure:"quota_set"`
 	}
 
 	err := mapstructure.Decode(r.Body, &res)
-	return res.Quota, err
+	return res.Quotaset, err
 }
 
 // GetResult is the response from a Get operation. Call its Extract method to interpret it
-// as a Quota.
+// as a Quotaset.
 type GetResult struct {
 	quotaResult
 }
diff --git a/openstack/compute/v2/extensions/quotasets/urls.go b/openstack/compute/v2/extensions/quotasets/urls.go
index 0c6e67f..c04d941 100644
--- a/openstack/compute/v2/extensions/quotasets/urls.go
+++ b/openstack/compute/v2/extensions/quotasets/urls.go
@@ -1,4 +1,4 @@
-package quotas
+package quotasets
 
 import "github.com/rackspace/gophercloud"
 
diff --git a/openstack/compute/v2/extensions/quotasets/urls_test.go b/openstack/compute/v2/extensions/quotasets/urls_test.go
index db29e22..f19a6ad 100644
--- a/openstack/compute/v2/extensions/quotasets/urls_test.go
+++ b/openstack/compute/v2/extensions/quotasets/urls_test.go
@@ -1,4 +1,4 @@
-package quotas
+package quotasets
 
 import (
 	"testing"
