remove mapstructure from identity,networking,objectstorage,orchestration,pagination
diff --git a/openstack/identity/v2/tenants/results.go b/openstack/identity/v2/tenants/results.go
index cee7568..bf52554 100644
--- a/openstack/identity/v2/tenants/results.go
+++ b/openstack/identity/v2/tenants/results.go
@@ -1,7 +1,6 @@
 package tenants
 
 import (
-	"github.com/mitchellh/mapstructure"
 	"github.com/gophercloud/gophercloud"
 	"github.com/gophercloud/gophercloud/pagination"
 )
@@ -9,16 +8,16 @@
 // Tenant is a grouping of users in the identity service.
 type Tenant struct {
 	// ID is a unique identifier for this tenant.
-	ID string `mapstructure:"id"`
+	ID string `json:"id"`
 
 	// Name is a friendlier user-facing name for this tenant.
-	Name string `mapstructure:"name"`
+	Name string `json:"name"`
 
 	// Description is a human-readable explanation of this Tenant's purpose.
-	Description string `mapstructure:"description"`
+	Description string `json:"description"`
 
 	// Enabled indicates whether or not a tenant is active.
-	Enabled bool `mapstructure:"enabled"`
+	Enabled bool `json:"enabled"`
 }
 
 // TenantPage is a single page of Tenant results.
@@ -29,34 +28,27 @@
 // IsEmpty determines whether or not a page of Tenants contains any results.
 func (page TenantPage) IsEmpty() (bool, error) {
 	tenants, err := ExtractTenants(page)
-	if err != nil {
-		return false, err
-	}
-	return len(tenants) == 0, nil
+	return len(tenants) == 0, err
 }
 
 // NextPageURL extracts the "next" link from the tenants_links section of the result.
 func (page TenantPage) NextPageURL() (string, error) {
-	type resp struct {
-		Links []gophercloud.Link `mapstructure:"tenants_links"`
+	var s struct {
+		Links []gophercloud.Link `json:"tenants_links"`
 	}
-
-	var r resp
-	err := mapstructure.Decode(page.Body, &r)
+	err := page.ExtractInto(&s)
 	if err != nil {
 		return "", err
 	}
-
-	return gophercloud.ExtractNextURL(r.Links)
+	return gophercloud.ExtractNextURL(s.Links)
 }
 
 // ExtractTenants returns a slice of Tenants contained in a single page of results.
 func ExtractTenants(page pagination.Page) ([]Tenant, error) {
-	casted := page.(TenantPage).Body
-	var response struct {
-		Tenants []Tenant `mapstructure:"tenants"`
+	r := page.(TenantPage)
+	var s struct {
+		Tenants []Tenant `json:"tenants"`
 	}
-
-	err := mapstructure.Decode(casted, &response)
-	return response.Tenants, err
+	err := r.ExtractInto(&s)
+	return s.Tenants, err
 }