diff --git a/openstack/compute/v2/images/requests.go b/openstack/compute/v2/images/requests.go
index 8736382..1de3187 100644
--- a/openstack/compute/v2/images/requests.go
+++ b/openstack/compute/v2/images/requests.go
@@ -33,10 +33,6 @@
 	return images[len(images)-1].ID, nil
 }
 
-// GetResult opaquely stores the result of a Get call.
-// Use ExtractImage() to translate it into this provider's version of an Image structure.
-type GetResult map[string]interface{}
-
 // List enumerates the available images.
 func List(client *gophercloud.ServiceClient) pagination.Pager {
 	createPage := func(r pagination.LastHTTPResponse) pagination.Page {
@@ -50,12 +46,12 @@
 
 // Get acquires additional detail about a specific image by ID.
 // Use ExtractImage() to intepret the result as an openstack Image.
-func Get(client *gophercloud.ServiceClient, id string) (GetResult, error) {
+func Get(client *gophercloud.ServiceClient, id string) GetResult {
 	var result GetResult
-	_, err := perigee.Request("GET", getImageURL(client, id), perigee.Options{
+	_, result.Err = perigee.Request("GET", getImageURL(client, id), perigee.Options{
 		MoreHeaders: client.Provider.AuthenticatedHeaders(),
-		Results:     &result,
+		Results:     &result.Resp,
 		OkCodes:     []int{200},
 	})
-	return result, err
+	return result
 }
diff --git a/openstack/compute/v2/images/images_test.go b/openstack/compute/v2/images/requests_test.go
similarity index 95%
rename from openstack/compute/v2/images/images_test.go
rename to openstack/compute/v2/images/requests_test.go
index 0dfae1e..396c21f 100644
--- a/openstack/compute/v2/images/images_test.go
+++ b/openstack/compute/v2/images/requests_test.go
@@ -146,16 +146,12 @@
 	})
 
 	client := serviceClient()
-	result, err := Get(client, "12345678")
+	actual, err := Get(client, "12345678").Extract()
 	if err != nil {
 		t.Fatalf("Unexpected error from Get: %v", err)
 	}
-	actual, err := ExtractImage(result)
-	if err != nil {
-		t.Fatalf("Unexpected error extracting image: %v", err)
-	}
 
-	expected := Image{
+	expected := &Image{
 		Status:   "ACTIVE",
 		Updated:  "2014-09-23T12:54:56Z",
 		ID:       "f3e4a95d-1f4f-4989-97ce-f3a1fb8c04d7",
diff --git a/openstack/compute/v2/images/images.go b/openstack/compute/v2/images/results.go
similarity index 74%
rename from openstack/compute/v2/images/images.go
rename to openstack/compute/v2/images/results.go
index 76143d8..981cccd 100644
--- a/openstack/compute/v2/images/images.go
+++ b/openstack/compute/v2/images/results.go
@@ -2,9 +2,29 @@
 
 import (
 	"github.com/mitchellh/mapstructure"
+	"github.com/rackspace/gophercloud"
 	"github.com/rackspace/gophercloud/pagination"
 )
 
+// GetResult temporarily stores a Get response.
+type GetResult struct {
+	gophercloud.CommonResult
+}
+
+// Extract interprets a GetResult as an Image.
+func (gr GetResult) Extract() (*Image, error) {
+	if gr.Err != nil {
+		return nil, gr.Err
+	}
+
+	var decoded struct {
+		Image Image `mapstructure:"image"`
+	}
+
+	err := mapstructure.Decode(gr.Resp, &decoded)
+	return &decoded.Image, err
+}
+
 // Image is used for JSON (un)marshalling.
 // It provides a description of an OS image.
 type Image struct {
@@ -38,13 +58,3 @@
 	err := mapstructure.Decode(casted, &results)
 	return results.Images, err
 }
-
-// ExtractImage converts the result of a Get call into a more usable Image structure.
-func ExtractImage(result GetResult) (Image, error) {
-	var decoded struct {
-		Image Image `mapstructure:"image"`
-	}
-
-	err := mapstructure.Decode(result, &decoded)
-	return decoded.Image, err
-}
