diff --git a/openstack/identity/common_test.go b/openstack/identity/common_test.go
index 95a2ccb..18c5340 100644
--- a/openstack/identity/common_test.go
+++ b/openstack/identity/common_test.go
@@ -89,49 +89,99 @@
     }
 }`
 
-// Taken from: http://docs.openstack.org/api/openstack-identity-service/2.0/content/GET_listExtensions_v2.0_extensions_.html#GET_listExtensions_v2.0_extensions_-Request
+// Taken from: http://developer.openstack.org/api-ref-identity-v2.html
 const queryResults = `{
-    "extensions":[{
-            "name": "Reset Password Extension",
-            "namespace": "http://docs.rackspacecloud.com/identity/api/ext/rpe/v2.0",
-            "alias": "RS-RPE",
-            "updated": "2011-01-22T13:25:27-06:00",
-            "description": "Adds the capability to reset a user's password. The user is emailed when the password has been reset.",
-            "links":[{
-                    "rel": "describedby",
-                    "type": "application/pdf",
-                    "href": "http://docs.rackspacecloud.com/identity/api/ext/identity-rpe-20111111.pdf"
-                },
-                {
-                    "rel": "describedby",
-                    "type": "application/vnd.sun.wadl+xml",
-                    "href": "http://docs.rackspacecloud.com/identity/api/ext/identity-rpe.wadl"
-                }
-            ]
-        },
-        {
-            "name": "User Metadata Extension",
-            "namespace": "http://docs.rackspacecloud.com/identity/api/ext/meta/v2.0",
-            "alias": "RS-META",
-            "updated": "2011-01-12T11:22:33-06:00",
-            "description": "Allows associating arbritrary metadata with a user.",
-            "links":[{
-                    "rel": "describedby",
-                    "type": "application/pdf",
-                    "href": "http://docs.rackspacecloud.com/identity/api/ext/identity-meta-20111201.pdf"
-                },
-                {
-                    "rel": "describedby",
-                    "type": "application/vnd.sun.wadl+xml",
-                    "href": "http://docs.rackspacecloud.com/identity/api/ext/identity-meta.wadl"
-                }
-            ]
-        }
-    ],
-    "extensions_links":[]
+	"extensions": {
+		"values": [
+			{
+				"updated": "2013-07-07T12:00:0-00:00",
+				"name": "OpenStack S3 API",
+				"links": [
+					{
+						"href": "https://github.com/openstack/identity-api",
+						"type": "text/html",
+						"rel": "describedby"
+					}
+				],
+				"namespace": "http://docs.openstack.org/identity/api/ext/s3tokens/v1.0",
+				"alias": "s3tokens",
+				"description": "OpenStack S3 API."
+			},
+			{
+				"updated": "2013-07-23T12:00:0-00:00",
+				"name": "OpenStack Keystone Endpoint Filter API",
+				"links": [
+					{
+						"href": "https://github.com/openstack/identity-api/blob/master/openstack-identity-api/v3/src/markdown/identity-api-v3-os-ep-filter-ext.md",
+						"type": "text/html",
+						"rel": "describedby"
+					}
+				],
+				"namespace": "http://docs.openstack.org/identity/api/ext/OS-EP-FILTER/v1.0",
+				"alias": "OS-EP-FILTER",
+				"description": "OpenStack Keystone Endpoint Filter API."
+			},
+			{
+				"updated": "2013-12-17T12:00:0-00:00",
+				"name": "OpenStack Federation APIs",
+				"links": [
+					{
+						"href": "https://github.com/openstack/identity-api",
+						"type": "text/html",
+						"rel": "describedby"
+					}
+				],
+				"namespace": "http://docs.openstack.org/identity/api/ext/OS-FEDERATION/v1.0",
+				"alias": "OS-FEDERATION",
+				"description": "OpenStack Identity Providers Mechanism."
+			},
+			{
+				"updated": "2013-07-11T17:14:00-00:00",
+				"name": "OpenStack Keystone Admin",
+				"links": [
+					{
+						"href": "https://github.com/openstack/identity-api",
+						"type": "text/html",
+						"rel": "describedby"
+					}
+				],
+				"namespace": "http://docs.openstack.org/identity/api/ext/OS-KSADM/v1.0",
+				"alias": "OS-KSADM",
+				"description": "OpenStack extensions to Keystone v2.0 API enabling Administrative Operations."
+			},
+			{
+				"updated": "2014-01-20T12:00:0-00:00",
+				"name": "OpenStack Simple Certificate API",
+				"links": [
+					{
+						"href": "https://github.com/openstack/identity-api",
+						"type": "text/html",
+						"rel": "describedby"
+					}
+				],
+				"namespace": "http://docs.openstack.org/identity/api/ext/OS-SIMPLE-CERT/v1.0",
+				"alias": "OS-SIMPLE-CERT",															
+				"description": "OpenStack simple certificate retrieval extension"	
+			},																
+			{
+				"updated": "2013-07-07T12:00:0-00:00",	
+				"name": "OpenStack EC2 API",
+				"links": [
+					{
+						"href": "https://github.com/openstack/identity-api",	
+						"type": "text/html",				
+						"rel": "describedby"				
+					}	
+				],
+				"namespace": "http://docs.openstack.org/identity/api/ext/OS-EC2/v1.0",	
+				"alias": "OS-EC2",
+				"description": "OpenStack EC2 Credentials backend."
+			}
+		]
+	}
 }`
 
-// Same as queryResults above, but with a bogus JSON envelop.
+// Extensions query with a bogus JSON envelop.
 const bogusExtensionsResults = `{
     "explosions":[{
             "name": "Reset Password Extension",
diff --git a/openstack/identity/extensions.go b/openstack/identity/extensions.go
index e769f1c..9cf9c78 100644
--- a/openstack/identity/extensions.go
+++ b/openstack/identity/extensions.go
@@ -1,7 +1,6 @@
 package identity
 
 import (
-	"fmt"
 	"github.com/mitchellh/mapstructure"
 )
 
@@ -65,20 +64,16 @@
 
 func extensions(er ExtensionsResult) ([]interface{}, error) {
 	ei, ok := er["extensions"]
-	fmt.Printf("%+v\n\n", ei)
 	if !ok {
 		return nil, ErrNotImplemented
 	}
 	e := ei.(map[string]interface{})
-	//e := ei.([]interface{})
 	vi, ok := e["values"]
-	fmt.Printf("%+v\n\n", e)
 	if !ok {
 		return nil, ErrNotImplemented
 	}
 	v := vi.([]interface{})
 	return v, nil
-	//return e, nil
 }
 
 // Aliases returns the set of extension handles, or "aliases" as OpenStack calls them.
diff --git a/openstack/identity/extensions_test.go b/openstack/identity/extensions_test.go
index 009d29d..3000fc0 100644
--- a/openstack/identity/extensions_test.go
+++ b/openstack/identity/extensions_test.go
@@ -15,7 +15,7 @@
 	}
 
 	e := ExtensionsResult(getExtensionsResults)
-	for _, alias := range []string{"RS-RPE", "RS-META"} {
+	for _, alias := range []string{"OS-KSADM", "OS-FEDERATION"} {
 		if !e.IsExtensionAvailable(alias) {
 			t.Errorf("Expected extension %s present.", alias)
 			return
@@ -37,7 +37,7 @@
 	}
 
 	e := ExtensionsResult(getExtensionsResults)
-	ed, err := e.ExtensionDetailsByAlias("RS-META")
+	ed, err := e.ExtensionDetailsByAlias("OS-KSADM")
 	if err != nil {
 		t.Error(err)
 		return
@@ -51,10 +51,10 @@
 	}
 
 	expecteds := map[string]string{
-		"name":        "User Metadata Extension",
-		"namespace":   "http://docs.rackspacecloud.com/identity/api/ext/meta/v2.0",
-		"updated":     "2011-01-12T11:22:33-06:00",
-		"description": "Allows associating arbritrary metadata with a user.",
+		"name":        "OpenStack Keystone Admin",
+		"namespace":   "http://docs.openstack.org/identity/api/ext/OS-KSADM/v1.0",
+		"updated":     "2013-07-11T17:14:00-00:00",
+		"description": "OpenStack extensions to Keystone v2.0 API enabling Administrative Operations.",
 	}
 
 	for k, v := range expecteds {
@@ -74,7 +74,7 @@
 	}
 	e := ExtensionsResult(getExtensionsResults)
 
-	_, err = e.ExtensionDetailsByAlias("RS-META")
+	_, err = e.ExtensionDetailsByAlias("OS-KSADM")
 	if err == nil {
 		t.Error("Expected ErrNotImplemented at least")
 		return
@@ -104,7 +104,8 @@
 		t.Error(err)
 		return
 	}
-	if len(aliases) != len(e) {
+	extensions := (((e["extensions"]).(map[string]interface{}))["values"]).([]interface{})
+	if len(aliases) != len(extensions) {
 		t.Error("Expected one alias name per extension")
 		return
 	}
