diff --git a/openstack/compute/v2/images/images_test.go b/openstack/compute/v2/images/images_test.go
index ee3b79e..76ffbec 100644
--- a/openstack/compute/v2/images/images_test.go
+++ b/openstack/compute/v2/images/images_test.go
@@ -8,7 +8,7 @@
 const (
 	// This example was taken from: http://docs.openstack.org/api/openstack-compute/2/content/Rebuild_Server-d1e3538.html
 
-	simpleImageJson = `{
+	simpleImageJSON = `{
 		"id": "52415800-8b69-11e0-9b19-734f6f006e54",
 		"name": "CentOS 5.2",
 		"links": [{
@@ -21,14 +21,14 @@
 	}`
 )
 
-func TestGetImage(t *testing.T) {
+func TestExtractImage(t *testing.T) {
 	var simpleImageMap map[string]interface{}
-	err := json.Unmarshal([]byte(simpleImageJson), &simpleImageMap)
+	err := json.Unmarshal([]byte(simpleImageJSON), &simpleImageMap)
 	if err != nil {
 		t.Fatal(err)
 	}
 
-	image, err := GetImage(simpleImageMap)
+	image, err := ExtractImage(simpleImageMap)
 	if err != nil {
 		t.Fatal(err)
 	}
diff --git a/openstack/compute/v2/servers/servers.go b/openstack/compute/v2/servers/servers.go
index e2352ce..fd11d4c 100644
--- a/openstack/compute/v2/servers/servers.go
+++ b/openstack/compute/v2/servers/servers.go
@@ -65,9 +65,12 @@
 // ExtractServers interprets the results of a single page from a List() call, producing a slice of Server entities.
 func ExtractServers(page pagination.Page) ([]Server, error) {
 	casted := page.(ListPage).Body
-	var servers []Server
-	err := mapstructure.Decode(servers, casted)
-	return servers, err
+
+	var response struct {
+		Servers []Server `mapstructure:"servers"`
+	}
+	err := mapstructure.Decode(casted, &response)
+	return response.Servers, err
 }
 
 // ExtractServer interprets the result of a call expected to return data on a single server.
diff --git a/openstack/compute/v2/servers/servers_test.go b/openstack/compute/v2/servers/servers_test.go
index b4a094c..106d9b5 100644
--- a/openstack/compute/v2/servers/servers_test.go
+++ b/openstack/compute/v2/servers/servers_test.go
@@ -6,183 +6,182 @@
 )
 
 // Taken from: http://docs.openstack.org/api/openstack-compute/2/content/List_Servers-d1e2078.html
-const goodListServersResult = `{
-"servers": [
+const goodListServersResult = `
 {
-"id": "52415800-8b69-11e0-9b19-734f6af67565",
-"tenant_id": "1234",
-"user_id": "5678",
-"name": "sample-server",
-"updated": "2010-10-10T12:00:00Z",
-"created": "2010-08-10T12:00:00Z",
-"hostId": "e4d909c290d0fb1ca068ffaddf22cbd0",
-"status": "BUILD",
-"progress": 60,
-"accessIPv4" : "67.23.10.132",
-"accessIPv6" : "::babe:67.23.10.132",
-"image" : {
-"id": "52415800-8b69-11e0-9b19-734f6f006e54",
-"links": [
-{
-"rel": "self",
-"href": "http://servers.api.openstack.org/v2/1234/images/52415800-8b69-11e0-9b19-734f6f006e54"
-},
-{
-"rel": "bookmark",
-"href": "http://servers.api.openstack.org/1234/images/52415800-8b69-11e0-9b19-734f6f006e54"
+	"servers": [
+		{
+			"id": "52415800-8b69-11e0-9b19-734f6af67565",
+			"tenant_id": "1234",
+			"user_id": "5678",
+			"name": "sample-server",
+			"updated": "2010-10-10T12:00:00Z",
+			"created": "2010-08-10T12:00:00Z",
+			"hostId": "e4d909c290d0fb1ca068ffaddf22cbd0",
+			"status": "BUILD",
+			"progress": 60,
+			"accessIPv4": "67.23.10.132",
+			"accessIPv6": "::babe:67.23.10.132",
+			"image": {
+				"id": "52415800-8b69-11e0-9b19-734f6f006e54",
+				"links": [
+					{
+						"rel": "self",
+						"href": "http://servers.api.openstack.org/v2/1234/images/52415800-8b69-11e0-9b19-734f6f006e54"
+					},
+					{
+						"rel": "bookmark",
+						"href": "http://servers.api.openstack.org/1234/images/52415800-8b69-11e0-9b19-734f6f006e54"
+					}
+				]
+			},
+			"flavor": {
+				"id": "52415800-8b69-11e0-9b19-734f216543fd",
+				"links": [
+					{
+						"rel": "self",
+						"href": "http://servers.api.openstack.org/v2/1234/flavors/52415800-8b69-11e0-9b19-734f216543fd"
+					},
+					{
+						"rel": "bookmark",
+						"href": "http://servers.api.openstack.org/1234/flavors/52415800-8b69-11e0-9b19-734f216543fd"
+					}
+				]
+			},
+			"addresses": {
+				"public": [
+					{
+						"version": 4,
+						"addr": "67.23.10.132"
+					},
+					{
+						"version": 6,
+						"addr": "::babe:67.23.10.132"
+					},
+					{
+						"version": 4,
+						"addr": "67.23.10.131"
+					},
+					{
+						"version": 6,
+						"addr": "::babe:4317:0A83"
+					}
+				],
+				"private": [
+					{
+						"version": 4,
+						"addr": "10.176.42.16"
+					},
+					{
+						"version": 6,
+						"addr": "::babe:10.176.42.16"
+					}
+				]
+			},
+			"metadata": {
+				"Server Label": "Web Head 1",
+				"Image Version": "2.1"
+			},
+			"links": [
+				{
+					"rel": "self",
+					"href": "http://servers.api.openstack.org/v2/1234/servers/52415800-8b69-11e0-9b19-734f6af67565"
+				},
+				{
+					"rel": "bookmark",
+					"href": "http://servers.api.openstack.org/1234/servers/52415800-8b69-11e0-9b19-734f6af67565"
+				}
+			]
+		},
+		{
+			"id": "52415800-8b69-11e0-9b19-734f1f1350e5",
+			"user_id": "5678",
+			"name": "sample-server2",
+			"tenant_id": "1234",
+			"updated": "2010-10-10T12:00:00Z",
+			"created": "2010-08-10T12:00:00Z",
+			"hostId": "9e107d9d372bb6826bd81d3542a419d6",
+			"status": "ACTIVE",
+			"accessIPv4": "67.23.10.133",
+			"accessIPv6": "::babe:67.23.10.133",
+			"image": {
+				"id": "52415800-8b69-11e0-9b19-734f5736d2a2",
+				"links": [
+					{
+						"rel": "self",
+						"href": "http://servers.api.openstack.org/v2/1234/images/52415800-8b69-11e0-9b19-734f5736d2a2"
+					},
+					{
+						"rel": "bookmark",
+						"href": "http://servers.api.openstack.org/1234/images/52415800-8b69-11e0-9b19-734f5736d2a2"
+					}
+				]
+			},
+			"flavor": {
+				"id": "52415800-8b69-11e0-9b19-734f216543fd",
+				"links": [
+					{
+						"rel": "self",
+						"href": "http://servers.api.openstack.org/v2/1234/flavors/52415800-8b69-11e0-9b19-734f216543fd"
+					},
+					{
+						"rel": "bookmark",
+						"href": "http://servers.api.openstack.org/1234/flavors/52415800-8b69-11e0-9b19-734f216543fd"
+					}
+				]
+			},
+			"addresses": {
+				"public": [
+					{
+						"version": 4,
+						"addr": "67.23.10.133"
+					},
+					{
+						"version": 6,
+						"addr": "::babe:67.23.10.133"
+					}
+				],
+				"private": [
+					{
+						"version": 4,
+						"addr": "10.176.42.17"
+					},
+					{
+						"version": 6,
+						"addr": "::babe:10.176.42.17"
+					}
+				]
+			},
+			"metadata": {
+				"Server Label": "DB 1"
+			},
+			"links": [
+				{
+					"rel": "self",
+					"href": "http://servers.api.openstack.org/v2/1234/servers/52415800-8b69-11e0-9b19-734f1f1350e5"
+				},
+				{
+					"rel": "bookmark",
+					"href": "http://servers.api.openstack.org/1234/servers/52415800-8b69-11e0-9b19-734f1f1350e5"
+				}
+			]
+		}
+	]
 }
-]
-},
-"flavor" : {
-"id": "52415800-8b69-11e0-9b19-734f216543fd",
-"links": [
-{
-"rel": "self",
-"href": "http://servers.api.openstack.org/v2/1234/flavors/52415800-8b69-11e0-9b19-734f216543fd"
-},
-{
-"rel": "bookmark",
-"href": "http://servers.api.openstack.org/1234/flavors/52415800-8b69-11e0-9b19-734f216543fd"
-}
-]
-},
-"addresses": {
-"public" : [
-{
-"version": 4,
-"addr": "67.23.10.132"
-},
-{
-"version": 6,
-"addr": "::babe:67.23.10.132"
-},
-{
-"version": 4,
-"addr": "67.23.10.131"
-},
-{
-"version": 6,
-"addr": "::babe:4317:0A83"
-}
-],
-"private" : [
-{
-"version": 4,
-"addr": "10.176.42.16"
-},
-{
-"version": 6,
-"addr": "::babe:10.176.42.16"
-}
-]
-},
-"metadata": {
-"Server Label": "Web Head 1",
-"Image Version": "2.1"
-},
-"links": [
-{
-"rel": "self",
-"href": "http://servers.api.openstack.org/v2/1234/servers/52415800-8b69-11e0-9b19-734f6af67565"
-},
-{
-"rel": "bookmark",
-"href": "http://servers.api.openstack.org/1234/servers/52415800-8b69-11e0-9b19-734f6af67565"
-}
-]
-},
-{
-"id": "52415800-8b69-11e0-9b19-734f1f1350e5",
-"user_id": "5678",
-"name": "sample-server2",
-"tenant_id": "1234",
-"updated": "2010-10-10T12:00:00Z",
-"created": "2010-08-10T12:00:00Z",
-"hostId": "9e107d9d372bb6826bd81d3542a419d6",
-"status": "ACTIVE",
-"accessIPv4" : "67.23.10.133",
-"accessIPv6" : "::babe:67.23.10.133",
-"image" : {
-"id": "52415800-8b69-11e0-9b19-734f5736d2a2",
-"links": [
-{
-"rel": "self",
-"href": "http://servers.api.openstack.org/v2/1234/images/52415800-8b69-11e0-9b19-734f5736d2a2"
-},
-{
-"rel": "bookmark",
-"href": "http://servers.api.openstack.org/1234/images/52415800-8b69-11e0-9b19-734f5736d2a2"
-}
-]
-},
-"flavor" : {
-"id": "52415800-8b69-11e0-9b19-734f216543fd",
-"links": [
-{
-"rel": "self",
-"href": "http://servers.api.openstack.org/v2/1234/flavors/52415800-8b69-11e0-9b19-734f216543fd"
-},
-{
-"rel": "bookmark",
-"href": "http://servers.api.openstack.org/1234/flavors/52415800-8b69-11e0-9b19-734f216543fd"
-}
-]
-},
-"addresses": {
-"public" : [
-{
-"version": 4,
-"addr": "67.23.10.133"
-},
-{
-"version": 6,
-"addr": "::babe:67.23.10.133"
-}
-],
-"private" : [
-{
-"version": 4,
-"addr": "10.176.42.17"
-},
-{
-"version": 6,
-"addr": "::babe:10.176.42.17"
-}
-]
-},
-"metadata": {
-"Server Label": "DB 1"
-},
-"links": [
-{
-"rel": "self",
-"href": "http://servers.api.openstack.org/v2/1234/servers/52415800-8b69-11e0-9b19-734f1f1350e5"
-},
-{
-"rel": "bookmark",
-"href": "http://servers.api.openstack.org/1234/servers/52415800-8b69-11e0-9b19-734f1f1350e5"
-}
-]
-}
-]
-}`
+`
 
-func TestGetServer(t *testing.T) {
-	var listResults map[string]interface{}
-	err := json.Unmarshal([]byte(goodListServersResult), &listResults)
+func TestExtractServers(t *testing.T) {
+	var listPage ListPage
+	err := json.Unmarshal([]byte(goodListServersResult), &listPage.MarkerPageBase.LastHTTPResponse.Body)
 	if err != nil {
-		t.Error(err)
-		return
+		t.Fatalf("Error decoding JSON fixture: %v", err)
 	}
 
-	svrs, err := GetServers(listResults)
+	svrs, err := ExtractServers(listPage)
 	if err != nil {
-		t.Error(err)
-		return
+		t.Fatalf("Error extracting servers: %v", err)
 	}
 
 	if len(svrs) != 2 {
-		t.Errorf("Expected 2 servers; got %d", len(svrs))
-		return
+		t.Fatalf("Expected 2 servers; got %d", len(svrs))
 	}
 }
