diff --git a/openstack/compute/v2/extensions/servergroups/requests.go b/openstack/compute/v2/extensions/servergroups/requests.go
index 02e6de2..e3b2493 100644
--- a/openstack/compute/v2/extensions/servergroups/requests.go
+++ b/openstack/compute/v2/extensions/servergroups/requests.go
@@ -10,7 +10,7 @@
 // List returns a Pager that allows you to iterate over a collection of ServerGroups.
 func List(client *gophercloud.ServiceClient) pagination.Pager {
 	return pagination.NewPager(client, listURL(client), func(r pagination.PageResult) pagination.Page {
-		return ServerGroupsPage{pagination.SinglePageBase(r)}
+		return ServerGroupPage{pagination.SinglePageBase(r)}
 	})
 }
 
diff --git a/openstack/compute/v2/extensions/servergroups/results.go b/openstack/compute/v2/extensions/servergroups/results.go
index 2b59551..ff64a7e 100644
--- a/openstack/compute/v2/extensions/servergroups/results.go
+++ b/openstack/compute/v2/extensions/servergroups/results.go
@@ -1,7 +1,6 @@
 package servergroups
 
 import (
-	"github.com/mitchellh/mapstructure"
 	"github.com/gophercloud/gophercloud"
 	"github.com/gophercloud/gophercloud/pagination"
 )
@@ -9,29 +8,29 @@
 // A ServerGroup creates a policy for instance placement in the cloud
 type ServerGroup struct {
 	// ID is the unique ID of the Server Group.
-	ID string `mapstructure:"id"`
+	ID string `json:"id"`
 
 	// Name is the common name of the server group.
-	Name string `mapstructure:"name"`
+	Name string `json:"name"`
 
 	// Polices are the group policies.
-	Policies []string `mapstructure:"policies"`
+	Policies []string `json:"policies"`
 
 	// Members are the members of the server group.
-	Members []string `mapstructure:"members"`
+	Members []string `json:"members"`
 
 	// Metadata includes a list of all user-specified key-value pairs attached to the Server Group.
 	Metadata map[string]interface{}
 }
 
-// ServerGroupsPage stores a single, only page of ServerGroups
+// ServerGroupPage stores a single, only page of ServerGroups
 // results from a List call.
-type ServerGroupsPage struct {
+type ServerGroupPage struct {
 	pagination.SinglePageBase
 }
 
 // IsEmpty determines whether or not a ServerGroupsPage is empty.
-func (page ServerGroupsPage) IsEmpty() (bool, error) {
+func (page ServerGroupPage) IsEmpty() (bool, error) {
 	va, err := ExtractServerGroups(page)
 	return len(va) == 0, err
 }
@@ -39,14 +38,12 @@
 // ExtractServerGroups interprets a page of results as a slice of
 // ServerGroups.
 func ExtractServerGroups(page pagination.Page) ([]ServerGroup, error) {
-	casted := page.(ServerGroupsPage).Body
-	var response struct {
-		ServerGroups []ServerGroup `mapstructure:"server_groups"`
+	r := page.(ServerGroupPage)
+	var s struct {
+		ServerGroups []ServerGroup `json:"server_groups"`
 	}
-
-	err := mapstructure.WeakDecode(casted, &response)
-
-	return response.ServerGroups, err
+	err := r.ExtractInto(&s)
+	return s.ServerGroups, err
 }
 
 type ServerGroupResult struct {
@@ -56,16 +53,11 @@
 // Extract is a method that attempts to interpret any Server Group resource
 // response as a ServerGroup struct.
 func (r ServerGroupResult) Extract() (*ServerGroup, error) {
-	if r.Err != nil {
-		return nil, r.Err
+	var s struct {
+		ServerGroup *ServerGroup `json:"server_group"`
 	}
-
-	var res struct {
-		ServerGroup *ServerGroup `json:"server_group" mapstructure:"server_group"`
-	}
-
-	err := mapstructure.WeakDecode(r.Body, &res)
-	return res.ServerGroup, err
+	err := r.ExtractInto(&s)
+	return s.ServerGroup, err
 }
 
 // CreateResult is the response from a Create operation. Call its Extract method to interpret it
