diff --git a/acceptance/openstack/compute/v2/servers_test.go b/acceptance/openstack/compute/v2/servers_test.go
index ec63c12..d77d34a 100644
--- a/acceptance/openstack/compute/v2/servers_test.go
+++ b/acceptance/openstack/compute/v2/servers_test.go
@@ -154,13 +154,13 @@
 
 	pager = servers.ListAddressesByNetwork(client, server.ID, "public")
 	pager.EachPage(func(page pagination.Page) (bool, error) {
-		network, err := servers.ExtractNetworkAddresses(page)
+		addresses, err := servers.ExtractNetworkAddresses(page)
 		if err != nil {
 			return false, err
 		}
 
-		for n, a := range network {
-			t.Logf("%s: %+v\n", n, a)
+		for _, a := range addresses {
+			t.Logf("%+v\n", a)
 		}
 		return true, nil
 	})
diff --git a/openstack/compute/v2/servers/fixtures.go b/openstack/compute/v2/servers/fixtures.go
index baa756f..e47bc0e 100644
--- a/openstack/compute/v2/servers/fixtures.go
+++ b/openstack/compute/v2/servers/fixtures.go
@@ -619,16 +619,14 @@
 }
 
 // ListNetworkAddressesExpected represents an expected repsonse from a ListAddressesByNetwork request.
-var ListNetworkAddressesExpected = map[string][]Address{
-	"public": []Address{
-		Address{
-			Version: 4,
-			Address: "80.56.136.39",
-		},
-		Address{
-			Version: 6,
-			Address: "2001:4800:790e:510:be76:4eff:fe04:82a8",
-		},
+var ListNetworkAddressesExpected = []Address{
+	Address{
+		Version: 4,
+		Address: "50.56.176.35",
+	},
+	Address{
+		Version: 6,
+		Address: "2001:4800:780e:510:be76:4eff:fe04:84a8",
 	},
 }
 
diff --git a/openstack/compute/v2/servers/requests_test.go b/openstack/compute/v2/servers/requests_test.go
index abfdec7..3527428 100644
--- a/openstack/compute/v2/servers/requests_test.go
+++ b/openstack/compute/v2/servers/requests_test.go
@@ -302,8 +302,8 @@
 		actual, err := ExtractNetworkAddresses(page)
 		th.AssertNoErr(t, err)
 
-		if len(actual) != 1 {
-			t.Fatalf("Expected 1 network, got %d", len(actual))
+		if len(actual) != 2 {
+			t.Fatalf("Expected 2 addresses, got %d", len(actual))
 		}
 		th.CheckDeepEquals(t, expected, actual)
 
diff --git a/openstack/compute/v2/servers/results.go b/openstack/compute/v2/servers/results.go
index 1fe6b4a..e2be6ba 100644
--- a/openstack/compute/v2/servers/results.go
+++ b/openstack/compute/v2/servers/results.go
@@ -328,8 +328,8 @@
 }
 
 // ExtractNetworkAddresses interprets the results of a single page from a ListAddressesByNetwork() call,
-// producing a map of addresses.
-func ExtractNetworkAddresses(page pagination.Page) (map[string][]Address, error) {
+// producing a slice of addresses.
+func ExtractNetworkAddresses(page pagination.Page) ([]Address, error) {
 	casted := page.(NetworkAddressPage).Body
 
 	var response map[string][]Address
@@ -338,5 +338,10 @@
 		return nil, err
 	}
 
-	return response, err
+	var key string
+	for k := range response {
+		key = k
+	}
+
+	return response[key], err
 }
diff --git a/rackspace/compute/v2/servers/delegate.go b/rackspace/compute/v2/servers/delegate.go
index a0cc05b..8adfed5 100644
--- a/rackspace/compute/v2/servers/delegate.go
+++ b/rackspace/compute/v2/servers/delegate.go
@@ -82,6 +82,6 @@
 }
 
 // ExtractNetworkAddresses interprets the results of a single page from a ListAddressesByNetwork() call, producing a map of Address slices.
-func ExtractNetworkAddresses(page pagination.Page) (map[string][]os.Address, error) {
+func ExtractNetworkAddresses(page pagination.Page) ([]os.Address, error) {
 	return os.ExtractNetworkAddresses(page)
 }
diff --git a/rackspace/compute/v2/servers/delegate_test.go b/rackspace/compute/v2/servers/delegate_test.go
index 5e90a5a..03e7ace 100644
--- a/rackspace/compute/v2/servers/delegate_test.go
+++ b/rackspace/compute/v2/servers/delegate_test.go
@@ -170,8 +170,8 @@
 		actual, err := ExtractNetworkAddresses(page)
 		th.AssertNoErr(t, err)
 
-		if len(actual) != 1 {
-			t.Fatalf("Expected 1 network, got %d", len(actual))
+		if len(actual) != 2 {
+			t.Fatalf("Expected 2 addresses, got %d", len(actual))
 		}
 		th.CheckDeepEquals(t, expected, actual)
 
