diff --git a/openstack/compute/v2/extensions/diskconfig/requests_test.go b/openstack/compute/v2/extensions/diskconfig/requests_test.go
index 61057d4..2e3ae18 100644
--- a/openstack/compute/v2/extensions/diskconfig/requests_test.go
+++ b/openstack/compute/v2/extensions/diskconfig/requests_test.go
@@ -25,8 +25,6 @@
 				"name": "createdserver",
 				"imageRef": "asdfasdfasdf",
 				"flavorRef": "performance1-1",
-				"flavorName": "",
-				"imageName": "",
 				"OS-DCF:diskConfig": "MANUAL"
 			}
 		}
diff --git a/openstack/compute/v2/extensions/diskconfig/results.go b/openstack/compute/v2/extensions/diskconfig/results.go
index b05c5b5..1957e12 100644
--- a/openstack/compute/v2/extensions/diskconfig/results.go
+++ b/openstack/compute/v2/extensions/diskconfig/results.go
@@ -1,60 +1,8 @@
 package diskconfig
 
-import (
-	"github.com/mitchellh/mapstructure"
-	"github.com/gophercloud/gophercloud"
-	"github.com/gophercloud/gophercloud/openstack/compute/v2/servers"
-	"github.com/gophercloud/gophercloud/pagination"
-)
+import "github.com/gophercloud/gophercloud/openstack/compute/v2/servers"
 
-func commonExtract(result gophercloud.Result) (*DiskConfig, error) {
-	var resp struct {
-		Server struct {
-			DiskConfig string `mapstructure:"OS-DCF:diskConfig"`
-		} `mapstructure:"server"`
-	}
-
-	err := mapstructure.Decode(result.Body, &resp)
-	if err != nil {
-		return nil, err
-	}
-
-	config := DiskConfig(resp.Server.DiskConfig)
-	return &config, nil
-}
-
-// ExtractGet returns the disk configuration from a servers.Get call.
-func ExtractGet(result servers.GetResult) (*DiskConfig, error) {
-	return commonExtract(result.Result)
-}
-
-// ExtractUpdate returns the disk configuration from a servers.Update call.
-func ExtractUpdate(result servers.UpdateResult) (*DiskConfig, error) {
-	return commonExtract(result.Result)
-}
-
-// ExtractRebuild returns the disk configuration from a servers.Rebuild call.
-func ExtractRebuild(result servers.RebuildResult) (*DiskConfig, error) {
-	return commonExtract(result.Result)
-}
-
-// ExtractDiskConfig returns the DiskConfig setting for a specific server acquired from an
-// servers.ExtractServers call, while iterating through a Pager.
-func ExtractDiskConfig(page pagination.Page, index int) (*DiskConfig, error) {
-	casted := page.(servers.ServerPage).Body
-
-	type server struct {
-		DiskConfig string `mapstructure:"OS-DCF:diskConfig"`
-	}
-	var response struct {
-		Servers []server `mapstructure:"servers"`
-	}
-
-	err := mapstructure.Decode(casted, &response)
-	if err != nil {
-		return nil, err
-	}
-
-	config := DiskConfig(response.Servers[index].DiskConfig)
-	return &config, nil
+type ServerWithDiskConfig struct {
+	servers.Server
+	DiskConfig DiskConfig `json:"OS-DCF:diskConfig"`
 }
diff --git a/openstack/compute/v2/extensions/diskconfig/results_test.go b/openstack/compute/v2/extensions/diskconfig/results_test.go
deleted file mode 100644
index 7c5b6c9..0000000
--- a/openstack/compute/v2/extensions/diskconfig/results_test.go
+++ /dev/null
@@ -1,68 +0,0 @@
-package diskconfig
-
-import (
-	"testing"
-
-	"github.com/gophercloud/gophercloud/openstack/compute/v2/servers"
-	"github.com/gophercloud/gophercloud/pagination"
-	th "github.com/gophercloud/gophercloud/testhelper"
-	"github.com/gophercloud/gophercloud/testhelper/client"
-)
-
-func TestExtractGet(t *testing.T) {
-	th.SetupHTTP()
-	defer th.TeardownHTTP()
-	servers.HandleServerGetSuccessfully(t)
-
-	config, err := ExtractGet(servers.Get(client.ServiceClient(), "1234asdf"))
-	th.AssertNoErr(t, err)
-	th.CheckEquals(t, Manual, *config)
-}
-
-func TestExtractUpdate(t *testing.T) {
-	th.SetupHTTP()
-	defer th.TeardownHTTP()
-	servers.HandleServerUpdateSuccessfully(t)
-
-	r := servers.Update(client.ServiceClient(), "1234asdf", servers.UpdateOpts{
-		Name: "new-name",
-	})
-	config, err := ExtractUpdate(r)
-	th.AssertNoErr(t, err)
-	th.CheckEquals(t, Manual, *config)
-}
-
-func TestExtractRebuild(t *testing.T) {
-	th.SetupHTTP()
-	defer th.TeardownHTTP()
-	servers.HandleRebuildSuccessfully(t, servers.SingleServerBody)
-
-	r := servers.Rebuild(client.ServiceClient(), "1234asdf", servers.RebuildOpts{
-		Name:       "new-name",
-		AdminPass:  "swordfish",
-		ImageID:    "http://104.130.131.164:8774/fcad67a6189847c4aecfa3c81a05783b/images/f90f6034-2570-4974-8351-6b49732ef2eb",
-		AccessIPv4: "1.2.3.4",
-	})
-	config, err := ExtractRebuild(r)
-	th.AssertNoErr(t, err)
-	th.CheckEquals(t, Manual, *config)
-}
-
-func TestExtractList(t *testing.T) {
-	th.SetupHTTP()
-	defer th.TeardownHTTP()
-	servers.HandleServerListSuccessfully(t)
-
-	pages := 0
-	err := servers.List(client.ServiceClient(), nil).EachPage(func(page pagination.Page) (bool, error) {
-		pages++
-
-		config, err := ExtractDiskConfig(page, 0)
-		th.AssertNoErr(t, err)
-		th.CheckEquals(t, Manual, *config)
-
-		return true, nil
-	})
-	th.AssertNoErr(t, err)
-	th.CheckEquals(t, pages, 1)
-}
