diff --git a/openstack/compute/v2/images/images.go b/openstack/compute/v2/images/images.go
index c881092..c4e838e 100644
--- a/openstack/compute/v2/images/images.go
+++ b/openstack/compute/v2/images/images.go
@@ -1,52 +1,38 @@
 package images
 
-import "github.com/mitchellh/mapstructure"
+import (
+	"github.com/mitchellh/mapstructure"
+	"github.com/rackspace/gophercloud/pagination"
+)
 
 // Image is used for JSON (un)marshalling.
 // It provides a description of an OS image.
-//
-// The Id field contains the image's unique identifier.
-// For example, this identifier will be useful for specifying which operating system to install on a new server instance.
-//
-// The MinDisk and MinRam fields specify the minimum resources a server must provide to be able to install the image.
-//
-// The Name field provides a human-readable moniker for the OS image.
-//
-// The Progress and Status fields indicate image-creation status.
-// Any usable image will have 100% progress.
-//
-// The Updated field indicates the last time this image was changed.
 type Image struct {
-	Created  string
-	Id       string
-	MinDisk  int
-	MinRam   int
-	Name     string
+	// ID contains the image's unique identifier.
+	ID string
+
+	Created string
+
+	// MinDisk and MinRAM specify the minimum resources a server must provide to be able to install the image.
+	MinDisk int
+	MinRAM  int
+
+	// Name provides a human-readable moniker for the OS image.
+	Name string
+
+	// The Progress and Status fields indicate image-creation status.
+	// Any usable image will have 100% progress.
 	Progress int
 	Status   string
-	Updated  string
+
+	Updated string
 }
 
-func GetImages(lr ListResults) ([]Image, error) {
-	ia, ok := lr["images"]
-	if !ok {
-		return nil, ErrNotImplemented
-	}
-	ims := ia.([]interface{})
+// ExtractImages converts a page of List results into a slice of usable Image structs.
+func ExtractImages(page pagination.Page) ([]Image, error) {
+	casted := page.(ListResults).Body
+	var results []Image
 
-	images := make([]Image, len(ims))
-	for i, im := range ims {
-		imageObj := im.(map[string]interface{})
-		err := mapstructure.Decode(imageObj, &images[i])
-		if err != nil {
-			return images, err
-		}
-	}
-	return images, nil
-}
-
-func GetImage(ir ImageResults) (Image, error) {
-	image := Image{}
-	err := mapstructure.Decode(ir, &image)
-	return image, err
+	err := mapstructure.Decode(results, casted)
+	return results, err
 }
