diff --git a/openstack/cdn/v1/services/results.go b/openstack/cdn/v1/services/results.go
index a214944..e37fafa 100644
--- a/openstack/cdn/v1/services/results.go
+++ b/openstack/cdn/v1/services/results.go
@@ -3,18 +3,16 @@
 import (
 	"github.com/gophercloud/gophercloud"
 	"github.com/gophercloud/gophercloud/pagination"
-
-	"github.com/mitchellh/mapstructure"
 )
 
 // Domain represents a domain used by users to access their website.
 type Domain struct {
 	// Specifies the domain used to access the assets on their website, for which
 	// a CNAME is given to the CDN provider.
-	Domain string `mapstructure:"domain" json:"domain"`
+	Domain string `json:"domain"`
 	// Specifies the protocol used to access the assets on this domain. Only "http"
 	// or "https" are currently allowed. The default is "http".
-	Protocol string `mapstructure:"protocol" json:"protocol,omitempty"`
+	Protocol string `json:"protocol,omitempty"`
 }
 
 func (d Domain) toPatchValue() interface{} {
@@ -56,23 +54,23 @@
 // OriginRule represents a rule that defines when an origin should be accessed.
 type OriginRule struct {
 	// Specifies the name of this rule.
-	Name string `mapstructure:"name" json:"name"`
+	Name string `json:"name"`
 	// Specifies the request URL this rule should match for this origin to be used. Regex is supported.
-	RequestURL string `mapstructure:"request_url" json:"request_url"`
+	RequestURL string `json:"request_url"`
 }
 
 // Origin specifies a list of origin domains or IP addresses where the original assets are stored.
 type Origin struct {
 	// Specifies the URL or IP address to pull origin content from.
-	Origin string `mapstructure:"origin" json:"origin"`
+	Origin string `json:"origin"`
 	// Specifies the port used to access the origin. The default is port 80.
-	Port int `mapstructure:"port" json:"port,omitempty"`
+	Port int `json:"port"`
 	// Specifies whether or not to use HTTPS to access the origin. The default
 	// is false.
-	SSL bool `mapstructure:"ssl" json:"ssl"`
+	SSL bool `json:"ssl"`
 	// Specifies a collection of rules that define the conditions when this origin
 	// should be accessed. If there is more than one origin, the rules parameter is required.
-	Rules []OriginRule `mapstructure:"rules" json:"rules,omitempty"`
+	Rules []OriginRule `json:"rules,omitempty"`
 }
 
 func (o Origin) toPatchValue() interface{} {
@@ -121,19 +119,19 @@
 // TTLRule specifies a rule that determines if a TTL should be applied to an asset.
 type TTLRule struct {
 	// Specifies the name of this rule.
-	Name string `mapstructure:"name" json:"name"`
+	Name string `json:"name"`
 	// Specifies the request URL this rule should match for this TTL to be used. Regex is supported.
-	RequestURL string `mapstructure:"request_url" json:"request_url"`
+	RequestURL string `json:"request_url"`
 }
 
 // CacheRule specifies the TTL rules for the assets under this service.
 type CacheRule struct {
 	// Specifies the name of this caching rule. Note: 'default' is a reserved name used for the default TTL setting.
-	Name string `mapstructure:"name" json:"name"`
+	Name string `json:"name"`
 	// Specifies the TTL to apply.
-	TTL int `mapstructure:"ttl" json:"ttl"`
+	TTL int `json:"ttl"`
 	// Specifies a collection of rules that determine if this TTL should be applied to an asset.
-	Rules []TTLRule `mapstructure:"rules" json:"rules,omitempty"`
+	Rules []TTLRule `json:"rules,omitempty"`
 }
 
 func (c CacheRule) toPatchValue() interface{} {
@@ -179,48 +177,48 @@
 // RestrictionRule specifies a rule that determines if this restriction should be applied to an asset.
 type RestrictionRule struct {
 	// Specifies the name of this rule.
-	Name string `mapstructure:"name" json:"name"`
+	Name string `json:"name"`
 	// Specifies the http host that requests must come from.
-	Referrer string `mapstructure:"referrer" json:"referrer,omitempty"`
+	Referrer string `json:"referrer"`
 }
 
 // Restriction specifies a restriction that defines who can access assets (content from the CDN cache).
 type Restriction struct {
 	// Specifies the name of this restriction.
-	Name string `mapstructure:"name" json:"name"`
+	Name string `json:"name"`
 	// Specifies a collection of rules that determine if this TTL should be applied to an asset.
-	Rules []RestrictionRule `mapstructure:"rules" json:"rules"`
+	Rules []RestrictionRule `json:"rules"`
 }
 
 // Error specifies an error that occurred during the previous service action.
 type Error struct {
 	// Specifies an error message detailing why there is an error.
-	Message string `mapstructure:"message"`
+	Message string `json:"message"`
 }
 
 // Service represents a CDN service resource.
 type Service struct {
 	// Specifies the service ID that represents distributed content. The value is
 	// a UUID, such as 96737ae3-cfc1-4c72-be88-5d0e7cc9a3f0, that is generated by the server.
-	ID string `mapstructure:"id"`
+	ID string `json:"id"`
 	// Specifies the name of the service.
-	Name string `mapstructure:"name"`
+	Name string `json:"name"`
 	// Specifies a list of domains used by users to access their website.
-	Domains []Domain `mapstructure:"domains"`
+	Domains []Domain `json:"domains"`
 	// Specifies a list of origin domains or IP addresses where the original assets are stored.
-	Origins []Origin `mapstructure:"origins"`
+	Origins []Origin `json:"origins"`
 	// Specifies the TTL rules for the assets under this service. Supports wildcards for fine grained control.
-	Caching []CacheRule `mapstructure:"caching"`
+	Caching []CacheRule `json:"caching"`
 	// Specifies the restrictions that define who can access assets (content from the CDN cache).
-	Restrictions []Restriction `mapstructure:"restrictions" json:"restrictions,omitempty"`
+	Restrictions []Restriction `json:"restrictions"`
 	// Specifies the CDN provider flavor ID to use. For a list of flavors, see the operation to list the available flavors.
-	FlavorID string `mapstructure:"flavor_id"`
+	FlavorID string `json:"flavor_id"`
 	// Specifies the current status of the service.
-	Status string `mapstructure:"status"`
+	Status string `json:"status"`
 	// Specifies the list of errors that occurred during the previous service action.
-	Errors []Error `mapstructure:"errors"`
+	Errors []Error `json:"errors"`
 	// Specifies the self-navigating JSON document paths.
-	Links []gophercloud.Link `mapstructure:"links"`
+	Links []gophercloud.Link `json:"links"`
 }
 
 // ServicePage is the page returned by a pager when traversing over a
@@ -252,12 +250,12 @@
 
 // ExtractServices is a function that takes a ListResult and returns the services' information.
 func ExtractServices(page pagination.Page) ([]Service, error) {
-	var response struct {
-		Services []Service `mapstructure:"services"`
+	r := page.(ServicePage)
+	var s struct {
+		Services []Service `json:"services"`
 	}
-
-	err := mapstructure.Decode(page.(ServicePage).Body, &response)
-	return response.Services, err
+	err := r.ExtractInto(&s)
+	return s.Services, err
 }
 
 // CreateResult represents the result of a Create operation.
@@ -283,15 +281,9 @@
 
 // Extract is a function that extracts a service from a GetResult.
 func (r GetResult) Extract() (*Service, error) {
-	if r.Err != nil {
-		return nil, r.Err
-	}
-
-	var res Service
-
-	err := mapstructure.Decode(r.Body, &res)
-
-	return &res, err
+	var s Service
+	err := r.ExtractInto(&s)
+	return &s, err
 }
 
 // UpdateResult represents the result of a Update operation.
