more consistent naming
diff --git a/openstack/compute/v2/extensions/defsecrules/results.go b/openstack/compute/v2/extensions/defsecrules/results.go
index 00d0bb5..61b918d 100644
--- a/openstack/compute/v2/extensions/defsecrules/results.go
+++ b/openstack/compute/v2/extensions/defsecrules/results.go
@@ -18,20 +18,16 @@
 // IsEmpty determines whether or not a page of default rules contains any results.
 func (page DefaultRulePage) IsEmpty() (bool, error) {
 	users, err := ExtractDefaultRules(page)
-	if err != nil {
-		return false, err
-	}
-	return len(users) == 0, nil
+	return len(users) == 0, err
 }
 
 // ExtractDefaultRules returns a slice of DefaultRules contained in a single
 // page of results.
-func ExtractDefaultRules(page pagination.Page) ([]DefaultRule, error) {
-	r := page.(DefaultRulePage)
+func ExtractDefaultRules(r pagination.Page) ([]DefaultRule, error) {
 	var s struct {
 		DefaultRules []DefaultRule `json:"security_group_default_rules"`
 	}
-	err := r.ExtractInto(&s)
+	err := (r.(DefaultRulePage)).ExtractInto(&s)
 	return s.DefaultRules, err
 }
 
diff --git a/openstack/compute/v2/extensions/floatingips/results.go b/openstack/compute/v2/extensions/floatingips/results.go
index c77ed77..753f3af 100644
--- a/openstack/compute/v2/extensions/floatingips/results.go
+++ b/openstack/compute/v2/extensions/floatingips/results.go
@@ -37,12 +37,11 @@
 
 // ExtractFloatingIPs interprets a page of results as a slice of
 // FloatingIPs.
-func ExtractFloatingIPs(page pagination.Page) ([]FloatingIP, error) {
-	r := page.(FloatingIPPage)
+func ExtractFloatingIPs(r pagination.Page) ([]FloatingIP, error) {
 	var s struct {
 		FloatingIPs []FloatingIP `json:"floating_ips"`
 	}
-	err := r.ExtractInto(&s)
+	err := (r.(FloatingIPPage)).ExtractInto(&s)
 	return s.FloatingIPs, err
 }
 
diff --git a/openstack/compute/v2/extensions/keypairs/results.go b/openstack/compute/v2/extensions/keypairs/results.go
index 2b40943..f4d8d35 100644
--- a/openstack/compute/v2/extensions/keypairs/results.go
+++ b/openstack/compute/v2/extensions/keypairs/results.go
@@ -39,15 +39,14 @@
 }
 
 // ExtractKeyPairs interprets a page of results as a slice of KeyPairs.
-func ExtractKeyPairs(page pagination.Page) ([]KeyPair, error) {
-	r := page.(KeyPairPage)
+func ExtractKeyPairs(r pagination.Page) ([]KeyPair, error) {
 	type pair struct {
 		KeyPair KeyPair `json:"keypair"`
 	}
 	var s struct {
 		KeyPairs []pair `json:"keypairs"`
 	}
-	err := r.ExtractInto(&s)
+	err := (r.(KeyPairPage)).ExtractInto(&s)
 	results := make([]KeyPair, len(s.KeyPairs))
 	for i, pair := range s.KeyPairs {
 		results[i] = pair.KeyPair
diff --git a/openstack/compute/v2/extensions/networks/results.go b/openstack/compute/v2/extensions/networks/results.go
index d9b746e..cbcce31 100644
--- a/openstack/compute/v2/extensions/networks/results.go
+++ b/openstack/compute/v2/extensions/networks/results.go
@@ -105,12 +105,11 @@
 }
 
 // ExtractNetworks interprets a page of results as a slice of Networks
-func ExtractNetworks(page pagination.Page) ([]Network, error) {
-	r := page.(NetworkPage)
+func ExtractNetworks(r pagination.Page) ([]Network, error) {
 	var s struct {
 		Networks []Network `json:"networks"`
 	}
-	err := r.ExtractInto(&s)
+	err := (r.(NetworkPage)).ExtractInto(&s)
 	return s.Networks, err
 }
 
diff --git a/openstack/compute/v2/extensions/secgroups/results.go b/openstack/compute/v2/extensions/secgroups/results.go
index 5e18c0b..764f580 100644
--- a/openstack/compute/v2/extensions/secgroups/results.go
+++ b/openstack/compute/v2/extensions/secgroups/results.go
@@ -76,12 +76,11 @@
 }
 
 // ExtractSecurityGroups returns a slice of SecurityGroups contained in a single page of results.
-func ExtractSecurityGroups(page pagination.Page) ([]SecurityGroup, error) {
-	r := page.(SecurityGroupPage)
+func ExtractSecurityGroups(r pagination.Page) ([]SecurityGroup, error) {
 	var s struct {
 		SecurityGroups []SecurityGroup `json:"security_groups"`
 	}
-	err := r.ExtractInto(&s)
+	err := (r.(SecurityGroupPage)).ExtractInto(&s)
 	return s.SecurityGroups, err
 }
 
diff --git a/openstack/compute/v2/extensions/servergroups/results.go b/openstack/compute/v2/extensions/servergroups/results.go
index ff64a7e..ab49b35 100644
--- a/openstack/compute/v2/extensions/servergroups/results.go
+++ b/openstack/compute/v2/extensions/servergroups/results.go
@@ -37,12 +37,11 @@
 
 // ExtractServerGroups interprets a page of results as a slice of
 // ServerGroups.
-func ExtractServerGroups(page pagination.Page) ([]ServerGroup, error) {
-	r := page.(ServerGroupPage)
+func ExtractServerGroups(r pagination.Page) ([]ServerGroup, error) {
 	var s struct {
 		ServerGroups []ServerGroup `json:"server_groups"`
 	}
-	err := r.ExtractInto(&s)
+	err := (r.(ServerGroupPage)).ExtractInto(&s)
 	return s.ServerGroups, err
 }
 
diff --git a/openstack/compute/v2/extensions/tenantnetworks/results.go b/openstack/compute/v2/extensions/tenantnetworks/results.go
index 5db5cbd..88cbc80 100644
--- a/openstack/compute/v2/extensions/tenantnetworks/results.go
+++ b/openstack/compute/v2/extensions/tenantnetworks/results.go
@@ -30,12 +30,11 @@
 }
 
 // ExtractNetworks interprets a page of results as a slice of Networks
-func ExtractNetworks(page pagination.Page) ([]Network, error) {
-	r := page.(NetworkPage)
+func ExtractNetworks(r pagination.Page) ([]Network, error) {
 	var s struct {
 		Networks []Network `json:"networks"`
 	}
-	err := r.ExtractInto(&s)
+	err := (r.(NetworkPage)).ExtractInto(&s)
 	return s.Networks, err
 }
 
diff --git a/openstack/compute/v2/extensions/volumeattach/requests.go b/openstack/compute/v2/extensions/volumeattach/requests.go
index 7017da2..17cb72e 100644
--- a/openstack/compute/v2/extensions/volumeattach/requests.go
+++ b/openstack/compute/v2/extensions/volumeattach/requests.go
@@ -10,7 +10,7 @@
 // List returns a Pager that allows you to iterate over a collection of VolumeAttachments.
 func List(client *gophercloud.ServiceClient, serverId string) pagination.Pager {
 	return pagination.NewPager(client, listURL(client, serverId), func(r pagination.PageResult) pagination.Page {
-		return VolumeAttachmentsPage{pagination.SinglePageBase(r)}
+		return VolumeAttachmentPage{pagination.SinglePageBase(r)}
 	})
 }
 
diff --git a/openstack/compute/v2/extensions/volumeattach/results.go b/openstack/compute/v2/extensions/volumeattach/results.go
index 62e7398..2eef0cd 100644
--- a/openstack/compute/v2/extensions/volumeattach/results.go
+++ b/openstack/compute/v2/extensions/volumeattach/results.go
@@ -20,26 +20,25 @@
 	ServerID string `json:"serverId"`
 }
 
-// VolumeAttachmentsPage stores a single, only page of VolumeAttachments
+// VolumeAttachmentPage stores a single, only page of VolumeAttachments
 // results from a List call.
-type VolumeAttachmentsPage struct {
+type VolumeAttachmentPage struct {
 	pagination.SinglePageBase
 }
 
 // IsEmpty determines whether or not a VolumeAttachmentsPage is empty.
-func (page VolumeAttachmentsPage) IsEmpty() (bool, error) {
+func (page VolumeAttachmentPage) IsEmpty() (bool, error) {
 	va, err := ExtractVolumeAttachments(page)
 	return len(va) == 0, err
 }
 
 // ExtractVolumeAttachments interprets a page of results as a slice of
 // VolumeAttachments.
-func ExtractVolumeAttachments(page pagination.Page) ([]VolumeAttachment, error) {
-	r := page.(VolumeAttachmentsPage)
+func ExtractVolumeAttachments(r pagination.Page) ([]VolumeAttachment, error) {
 	var s struct {
 		VolumeAttachments []VolumeAttachment `json:"volumeAttachments"`
 	}
-	err := r.ExtractInto(&s)
+	err := (r.(VolumeAttachmentPage)).ExtractInto(&s)
 	return s.VolumeAttachments, err
 }
 
diff --git a/openstack/compute/v2/flavors/results.go b/openstack/compute/v2/flavors/results.go
index 3f14e76..0edc7d2 100644
--- a/openstack/compute/v2/flavors/results.go
+++ b/openstack/compute/v2/flavors/results.go
@@ -71,11 +71,10 @@
 }
 
 // ExtractFlavors provides access to the list of flavors in a page acquired from the List operation.
-func ExtractFlavors(page pagination.Page) ([]Flavor, error) {
-	r := page.(FlavorPage)
+func ExtractFlavors(r pagination.Page) ([]Flavor, error) {
 	var s struct {
 		Flavors []Flavor `json:"flavors"`
 	}
-	err := r.ExtractInto(&s)
+	err := (r.(FlavorPage)).ExtractInto(&s)
 	return s.Flavors, err
 }
diff --git a/openstack/compute/v2/images/results.go b/openstack/compute/v2/images/results.go
index c9832d4..f38466b 100644
--- a/openstack/compute/v2/images/results.go
+++ b/openstack/compute/v2/images/results.go
@@ -72,11 +72,10 @@
 }
 
 // ExtractImages converts a page of List results into a slice of usable Image structs.
-func ExtractImages(page pagination.Page) ([]Image, error) {
-	r := page.(ImagePage)
+func ExtractImages(r pagination.Page) ([]Image, error) {
 	var s struct {
 		Images []Image `json:"images"`
 	}
-	err := r.ExtractInto(&s)
+	err := (r.(ImagePage)).ExtractInto(&s)
 	return s.Images, err
 }
diff --git a/openstack/compute/v2/servers/results.go b/openstack/compute/v2/servers/results.go
index 2517e65..4d80667 100644
--- a/openstack/compute/v2/servers/results.go
+++ b/openstack/compute/v2/servers/results.go
@@ -170,12 +170,11 @@
 }
 
 // ExtractServers interprets the results of a single page from a List() call, producing a slice of Server entities.
-func ExtractServers(page pagination.Page) ([]Server, error) {
-	r := page.(ServerPage)
+func ExtractServers(r pagination.Page) ([]Server, error) {
 	var s struct {
 		Servers []Server `json:"servers"`
 	}
-	err := r.ExtractInto(&s)
+	err := (r.(ServerPage)).ExtractInto(&s)
 	return s.Servers, err
 }
 
@@ -258,12 +257,11 @@
 
 // ExtractAddresses interprets the results of a single page from a ListAddresses() call,
 // producing a map of addresses.
-func ExtractAddresses(page pagination.Page) (map[string][]Address, error) {
-	r := page.(AddressPage)
+func ExtractAddresses(r pagination.Page) (map[string][]Address, error) {
 	var s struct {
 		Addresses map[string][]Address `json:"addresses"`
 	}
-	err := r.ExtractInto(&s)
+	err := (r.(AddressPage)).ExtractInto(&s)
 	return s.Addresses, err
 }
 
@@ -282,10 +280,9 @@
 
 // ExtractNetworkAddresses interprets the results of a single page from a ListAddressesByNetwork() call,
 // producing a slice of addresses.
-func ExtractNetworkAddresses(page pagination.Page) ([]Address, error) {
-	r := page.(NetworkAddressPage)
+func ExtractNetworkAddresses(r pagination.Page) ([]Address, error) {
 	var s map[string][]Address
-	err := r.ExtractInto(&s)
+	err := (r.(NetworkAddressPage)).ExtractInto(&s)
 	if err != nil {
 		return nil, err
 	}