diff --git a/openstack/compute/v2/extensions/bootfromvolume/testing/doc.go b/openstack/compute/v2/extensions/bootfromvolume/testing/doc.go
new file mode 100644
index 0000000..7603f83
--- /dev/null
+++ b/openstack/compute/v2/extensions/bootfromvolume/testing/doc.go
@@ -0,0 +1 @@
+package testing
diff --git a/openstack/compute/v2/extensions/bootfromvolume/requests_test.go b/openstack/compute/v2/extensions/bootfromvolume/testing/requests_test.go
similarity index 84%
rename from openstack/compute/v2/extensions/bootfromvolume/requests_test.go
rename to openstack/compute/v2/extensions/bootfromvolume/testing/requests_test.go
index d85070d..dca1105 100644
--- a/openstack/compute/v2/extensions/bootfromvolume/requests_test.go
+++ b/openstack/compute/v2/extensions/bootfromvolume/testing/requests_test.go
@@ -1,8 +1,9 @@
-package bootfromvolume
+package testing
 
 import (
 	"testing"
 
+	"github.com/gophercloud/gophercloud/openstack/compute/v2/extensions/bootfromvolume"
 	"github.com/gophercloud/gophercloud/openstack/compute/v2/servers"
 	th "github.com/gophercloud/gophercloud/testhelper"
 )
@@ -14,12 +15,12 @@
 		FlavorRef: "performance1-1",
 	}
 
-	ext := CreateOptsExt{
+	ext := bootfromvolume.CreateOptsExt{
 		CreateOptsBuilder: base,
-		BlockDevice: []BlockDevice{
-			BlockDevice{
+		BlockDevice: []bootfromvolume.BlockDevice{
+			{
 				UUID:                "123456",
-				SourceType:          Image,
+				SourceType:          bootfromvolume.Image,
 				DestinationType:     "volume",
 				VolumeSize:          10,
 				DeleteOnTermination: false,
@@ -58,30 +59,30 @@
 		FlavorRef: "performance1-1",
 	}
 
-	ext := CreateOptsExt{
+	ext := bootfromvolume.CreateOptsExt{
 		CreateOptsBuilder: base,
-		BlockDevice: []BlockDevice{
-			BlockDevice{
+		BlockDevice: []bootfromvolume.BlockDevice{
+			{
 				BootIndex:           0,
 				DeleteOnTermination: true,
 				DestinationType:     "local",
-				SourceType:          Image,
+				SourceType:          bootfromvolume.Image,
 				UUID:                "123456",
 			},
-			BlockDevice{
+			{
 				BootIndex:           -1,
 				DeleteOnTermination: true,
 				DestinationType:     "local",
 				GuestFormat:         "ext4",
-				SourceType:          Blank,
+				SourceType:          bootfromvolume.Blank,
 				VolumeSize:          1,
 			},
-			BlockDevice{
+			{
 				BootIndex:           -1,
 				DeleteOnTermination: true,
 				DestinationType:     "local",
 				GuestFormat:         "ext4",
-				SourceType:          Blank,
+				SourceType:          bootfromvolume.Blank,
 				VolumeSize:          1,
 			},
 		},
diff --git a/openstack/compute/v2/extensions/defsecrules/testing/doc.go b/openstack/compute/v2/extensions/defsecrules/testing/doc.go
new file mode 100644
index 0000000..7603f83
--- /dev/null
+++ b/openstack/compute/v2/extensions/defsecrules/testing/doc.go
@@ -0,0 +1 @@
+package testing
diff --git a/openstack/compute/v2/extensions/defsecrules/fixtures.go b/openstack/compute/v2/extensions/defsecrules/testing/fixtures.go
similarity index 98%
rename from openstack/compute/v2/extensions/defsecrules/fixtures.go
rename to openstack/compute/v2/extensions/defsecrules/testing/fixtures.go
index 4fee896..e4a62d4 100644
--- a/openstack/compute/v2/extensions/defsecrules/fixtures.go
+++ b/openstack/compute/v2/extensions/defsecrules/testing/fixtures.go
@@ -1,6 +1,4 @@
-// +build fixtures
-
-package defsecrules
+package testing
 
 import (
 	"fmt"
diff --git a/openstack/compute/v2/extensions/defsecrules/requests_test.go b/openstack/compute/v2/extensions/defsecrules/testing/requests_test.go
similarity index 71%
rename from openstack/compute/v2/extensions/defsecrules/requests_test.go
rename to openstack/compute/v2/extensions/defsecrules/testing/requests_test.go
index df568fe..1f2fb86 100644
--- a/openstack/compute/v2/extensions/defsecrules/requests_test.go
+++ b/openstack/compute/v2/extensions/defsecrules/testing/requests_test.go
@@ -1,8 +1,9 @@
-package defsecrules
+package testing
 
 import (
 	"testing"
 
+	"github.com/gophercloud/gophercloud/openstack/compute/v2/extensions/defsecrules"
 	"github.com/gophercloud/gophercloud/openstack/compute/v2/extensions/secgroups"
 	"github.com/gophercloud/gophercloud/pagination"
 	th "github.com/gophercloud/gophercloud/testhelper"
@@ -19,13 +20,13 @@
 
 	count := 0
 
-	err := List(client.ServiceClient()).EachPage(func(page pagination.Page) (bool, error) {
+	err := defsecrules.List(client.ServiceClient()).EachPage(func(page pagination.Page) (bool, error) {
 		count++
-		actual, err := ExtractDefaultRules(page)
+		actual, err := defsecrules.ExtractDefaultRules(page)
 		th.AssertNoErr(t, err)
 
-		expected := []DefaultRule{
-			DefaultRule{
+		expected := []defsecrules.DefaultRule{
+			{
 				FromPort:   80,
 				ID:         ruleID,
 				IPProtocol: "TCP",
@@ -49,17 +50,17 @@
 
 	mockCreateRuleResponse(t)
 
-	opts := CreateOpts{
+	opts := defsecrules.CreateOpts{
 		IPProtocol: "TCP",
 		FromPort:   80,
 		ToPort:     80,
 		CIDR:       "10.10.12.0/24",
 	}
 
-	group, err := Create(client.ServiceClient(), opts).Extract()
+	group, err := defsecrules.Create(client.ServiceClient(), opts).Extract()
 	th.AssertNoErr(t, err)
 
-	expected := &DefaultRule{
+	expected := &defsecrules.DefaultRule{
 		ID:         ruleID,
 		FromPort:   80,
 		ToPort:     80,
@@ -75,17 +76,17 @@
 
 	mockCreateRuleResponseICMPZero(t)
 
-	opts := CreateOpts{
+	opts := defsecrules.CreateOpts{
 		IPProtocol: "ICMP",
 		FromPort:   0,
 		ToPort:     0,
 		CIDR:       "10.10.12.0/24",
 	}
 
-	group, err := Create(client.ServiceClient(), opts).Extract()
+	group, err := defsecrules.Create(client.ServiceClient(), opts).Extract()
 	th.AssertNoErr(t, err)
 
-	expected := &DefaultRule{
+	expected := &defsecrules.DefaultRule{
 		ID:         ruleID,
 		FromPort:   0,
 		ToPort:     0,
@@ -101,10 +102,10 @@
 
 	mockGetRuleResponse(t, ruleID)
 
-	group, err := Get(client.ServiceClient(), ruleID).Extract()
+	group, err := defsecrules.Get(client.ServiceClient(), ruleID).Extract()
 	th.AssertNoErr(t, err)
 
-	expected := &DefaultRule{
+	expected := &defsecrules.DefaultRule{
 		ID:         ruleID,
 		FromPort:   80,
 		ToPort:     80,
@@ -121,6 +122,6 @@
 
 	mockDeleteRuleResponse(t, ruleID)
 
-	err := Delete(client.ServiceClient(), ruleID).ExtractErr()
+	err := defsecrules.Delete(client.ServiceClient(), ruleID).ExtractErr()
 	th.AssertNoErr(t, err)
 }
diff --git a/openstack/compute/v2/extensions/delegate_test.go b/openstack/compute/v2/extensions/delegate_test.go
deleted file mode 100644
index 4c602ce..0000000
--- a/openstack/compute/v2/extensions/delegate_test.go
+++ /dev/null
@@ -1,96 +0,0 @@
-package extensions
-
-import (
-	"fmt"
-	"net/http"
-	"testing"
-
-	common "github.com/gophercloud/gophercloud/openstack/common/extensions"
-	"github.com/gophercloud/gophercloud/pagination"
-	th "github.com/gophercloud/gophercloud/testhelper"
-	"github.com/gophercloud/gophercloud/testhelper/client"
-)
-
-func TestList(t *testing.T) {
-	th.SetupHTTP()
-	defer th.TeardownHTTP()
-
-	th.Mux.HandleFunc("/extensions", func(w http.ResponseWriter, r *http.Request) {
-		th.TestMethod(t, r, "GET")
-		th.TestHeader(t, r, "X-Auth-Token", client.TokenID)
-
-		w.Header().Add("Content-Type", "application/json")
-
-		fmt.Fprintf(w, `
-{
-		"extensions": [
-				{
-						"updated": "2013-01-20T00:00:00-00:00",
-						"name": "Neutron Service Type Management",
-						"links": [],
-						"namespace": "http://docs.openstack.org/ext/neutron/service-type/api/v1.0",
-						"alias": "service-type",
-						"description": "API for retrieving service providers for Neutron advanced services"
-				}
-		]
-}
-			`)
-	})
-
-	count := 0
-	List(client.ServiceClient()).EachPage(func(page pagination.Page) (bool, error) {
-		count++
-		actual, err := ExtractExtensions(page)
-		th.AssertNoErr(t, err)
-
-		expected := []common.Extension{
-			common.Extension{
-				Updated:     "2013-01-20T00:00:00-00:00",
-				Name:        "Neutron Service Type Management",
-				Links:       []interface{}{},
-				Namespace:   "http://docs.openstack.org/ext/neutron/service-type/api/v1.0",
-				Alias:       "service-type",
-				Description: "API for retrieving service providers for Neutron advanced services",
-			},
-		}
-		th.AssertDeepEquals(t, expected, actual)
-
-		return true, nil
-	})
-	th.CheckEquals(t, 1, count)
-}
-
-func TestGet(t *testing.T) {
-	th.SetupHTTP()
-	defer th.TeardownHTTP()
-
-	th.Mux.HandleFunc("/extensions/agent", func(w http.ResponseWriter, r *http.Request) {
-		th.TestMethod(t, r, "GET")
-		th.TestHeader(t, r, "X-Auth-Token", client.TokenID)
-
-		w.Header().Add("Content-Type", "application/json")
-		w.WriteHeader(http.StatusOK)
-
-		fmt.Fprintf(w, `
-{
-		"extension": {
-				"updated": "2013-02-03T10:00:00-00:00",
-				"name": "agent",
-				"links": [],
-				"namespace": "http://docs.openstack.org/ext/agent/api/v2.0",
-				"alias": "agent",
-				"description": "The agent management extension."
-		}
-}
-		`)
-	})
-
-	ext, err := Get(client.ServiceClient(), "agent").Extract()
-	th.AssertNoErr(t, err)
-
-	th.AssertEquals(t, ext.Updated, "2013-02-03T10:00:00-00:00")
-	th.AssertEquals(t, ext.Name, "agent")
-	th.AssertEquals(t, ext.Namespace, "http://docs.openstack.org/ext/agent/api/v2.0")
-	th.AssertEquals(t, ext.Alias, "agent")
-	th.AssertEquals(t, ext.Description, "The agent management extension.")
-}
diff --git a/openstack/compute/v2/extensions/diskconfig/testing/doc.go b/openstack/compute/v2/extensions/diskconfig/testing/doc.go
new file mode 100644
index 0000000..7603f83
--- /dev/null
+++ b/openstack/compute/v2/extensions/diskconfig/testing/doc.go
@@ -0,0 +1 @@
+package testing
diff --git a/openstack/compute/v2/extensions/diskconfig/requests_test.go b/openstack/compute/v2/extensions/diskconfig/testing/requests_test.go
similarity index 81%
rename from openstack/compute/v2/extensions/diskconfig/requests_test.go
rename to openstack/compute/v2/extensions/diskconfig/testing/requests_test.go
index 2e3ae18..6ce560a 100644
--- a/openstack/compute/v2/extensions/diskconfig/requests_test.go
+++ b/openstack/compute/v2/extensions/diskconfig/testing/requests_test.go
@@ -1,8 +1,9 @@
-package diskconfig
+package testing
 
 import (
 	"testing"
 
+	"github.com/gophercloud/gophercloud/openstack/compute/v2/extensions/diskconfig"
 	"github.com/gophercloud/gophercloud/openstack/compute/v2/servers"
 	th "github.com/gophercloud/gophercloud/testhelper"
 )
@@ -14,9 +15,9 @@
 		FlavorRef: "performance1-1",
 	}
 
-	ext := CreateOptsExt{
+	ext := diskconfig.CreateOptsExt{
 		CreateOptsBuilder: base,
-		DiskConfig:        Manual,
+		DiskConfig:        diskconfig.Manual,
 	}
 
 	expected := `
@@ -41,9 +42,9 @@
 		ImageID:   "asdfasdfasdf",
 	}
 
-	ext := RebuildOptsExt{
+	ext := diskconfig.RebuildOptsExt{
 		RebuildOptsBuilder: base,
-		DiskConfig:         Auto,
+		DiskConfig:         diskconfig.Auto,
 	}
 
 	actual, err := ext.ToServerRebuildMap()
@@ -67,9 +68,9 @@
 		FlavorRef: "performance1-8",
 	}
 
-	ext := ResizeOptsExt{
+	ext := diskconfig.ResizeOptsExt{
 		ResizeOptsBuilder: base,
-		DiskConfig:        Auto,
+		DiskConfig:        diskconfig.Auto,
 	}
 
 	actual, err := ext.ToServerResizeMap()
diff --git a/openstack/compute/v2/extensions/floatingips/testing/doc.go b/openstack/compute/v2/extensions/floatingips/testing/doc.go
new file mode 100644
index 0000000..7603f83
--- /dev/null
+++ b/openstack/compute/v2/extensions/floatingips/testing/doc.go
@@ -0,0 +1 @@
+package testing
diff --git a/openstack/compute/v2/extensions/floatingips/fixtures.go b/openstack/compute/v2/extensions/floatingips/testing/fixtures.go
similarity index 93%
rename from openstack/compute/v2/extensions/floatingips/fixtures.go
rename to openstack/compute/v2/extensions/floatingips/testing/fixtures.go
index b369ea2..e372606 100644
--- a/openstack/compute/v2/extensions/floatingips/fixtures.go
+++ b/openstack/compute/v2/extensions/floatingips/testing/fixtures.go
@@ -1,12 +1,11 @@
-// +build fixtures
-
-package floatingips
+package testing
 
 import (
 	"fmt"
 	"net/http"
 	"testing"
 
+	"github.com/gophercloud/gophercloud/openstack/compute/v2/extensions/floatingips"
 	th "github.com/gophercloud/gophercloud/testhelper"
 	"github.com/gophercloud/gophercloud/testhelper/client"
 )
@@ -60,14 +59,14 @@
 `
 
 // FirstFloatingIP is the first result in ListOutput.
-var FirstFloatingIP = FloatingIP{
+var FirstFloatingIP = floatingips.FloatingIP{
 	ID:   "1",
 	IP:   "10.10.10.1",
 	Pool: "nova",
 }
 
 // SecondFloatingIP is the first result in ListOutput.
-var SecondFloatingIP = FloatingIP{
+var SecondFloatingIP = floatingips.FloatingIP{
 	FixedIP:    "166.78.185.201",
 	ID:         "2",
 	InstanceID: "4d8c3732-a248-40ed-bebc-539a6ffd25c0",
@@ -77,10 +76,10 @@
 
 // ExpectedFloatingIPsSlice is the slice of results that should be parsed
 // from ListOutput, in the expected order.
-var ExpectedFloatingIPsSlice = []FloatingIP{FirstFloatingIP, SecondFloatingIP}
+var ExpectedFloatingIPsSlice = []floatingips.FloatingIP{FirstFloatingIP, SecondFloatingIP}
 
 // CreatedFloatingIP is the parsed result from CreateOutput.
-var CreatedFloatingIP = FloatingIP{
+var CreatedFloatingIP = floatingips.FloatingIP{
 	ID:   "1",
 	IP:   "10.10.10.1",
 	Pool: "nova",
diff --git a/openstack/compute/v2/extensions/floatingips/requests_test.go b/openstack/compute/v2/extensions/floatingips/testing/requests_test.go
similarity index 60%
rename from openstack/compute/v2/extensions/floatingips/requests_test.go
rename to openstack/compute/v2/extensions/floatingips/testing/requests_test.go
index f0e9560..e53da91 100644
--- a/openstack/compute/v2/extensions/floatingips/requests_test.go
+++ b/openstack/compute/v2/extensions/floatingips/testing/requests_test.go
@@ -1,8 +1,9 @@
-package floatingips
+package testing
 
 import (
 	"testing"
 
+	"github.com/gophercloud/gophercloud/openstack/compute/v2/extensions/floatingips"
 	"github.com/gophercloud/gophercloud/pagination"
 	th "github.com/gophercloud/gophercloud/testhelper"
 	"github.com/gophercloud/gophercloud/testhelper/client"
@@ -14,9 +15,9 @@
 	HandleListSuccessfully(t)
 
 	count := 0
-	err := List(client.ServiceClient()).EachPage(func(page pagination.Page) (bool, error) {
+	err := floatingips.List(client.ServiceClient()).EachPage(func(page pagination.Page) (bool, error) {
 		count++
-		actual, err := ExtractFloatingIPs(page)
+		actual, err := floatingips.ExtractFloatingIPs(page)
 		th.AssertNoErr(t, err)
 		th.CheckDeepEquals(t, ExpectedFloatingIPsSlice, actual)
 
@@ -31,7 +32,7 @@
 	defer th.TeardownHTTP()
 	HandleCreateSuccessfully(t)
 
-	actual, err := Create(client.ServiceClient(), CreateOpts{
+	actual, err := floatingips.Create(client.ServiceClient(), floatingips.CreateOpts{
 		Pool: "nova",
 	}).Extract()
 	th.AssertNoErr(t, err)
@@ -43,7 +44,7 @@
 	defer th.TeardownHTTP()
 	HandleGetSuccessfully(t)
 
-	actual, err := Get(client.ServiceClient(), "2").Extract()
+	actual, err := floatingips.Get(client.ServiceClient(), "2").Extract()
 	th.AssertNoErr(t, err)
 	th.CheckDeepEquals(t, &SecondFloatingIP, actual)
 }
@@ -53,7 +54,7 @@
 	defer th.TeardownHTTP()
 	HandleDeleteSuccessfully(t)
 
-	err := Delete(client.ServiceClient(), "1").ExtractErr()
+	err := floatingips.Delete(client.ServiceClient(), "1").ExtractErr()
 	th.AssertNoErr(t, err)
 }
 
@@ -62,11 +63,11 @@
 	defer th.TeardownHTTP()
 	HandleAssociateSuccessfully(t)
 
-	associateOpts := AssociateOpts{
+	associateOpts := floatingips.AssociateOpts{
 		FloatingIP: "10.10.10.2",
 	}
 
-	err := AssociateInstance(client.ServiceClient(), "4d8c3732-a248-40ed-bebc-539a6ffd25c0", associateOpts).ExtractErr()
+	err := floatingips.AssociateInstance(client.ServiceClient(), "4d8c3732-a248-40ed-bebc-539a6ffd25c0", associateOpts).ExtractErr()
 	th.AssertNoErr(t, err)
 }
 
@@ -75,12 +76,12 @@
 	defer th.TeardownHTTP()
 	HandleAssociateFixedSuccessfully(t)
 
-	associateOpts := AssociateOpts{
+	associateOpts := floatingips.AssociateOpts{
 		FloatingIP: "10.10.10.2",
 		FixedIP:    "166.78.185.201",
 	}
 
-	err := AssociateInstance(client.ServiceClient(), "4d8c3732-a248-40ed-bebc-539a6ffd25c0", associateOpts).ExtractErr()
+	err := floatingips.AssociateInstance(client.ServiceClient(), "4d8c3732-a248-40ed-bebc-539a6ffd25c0", associateOpts).ExtractErr()
 	th.AssertNoErr(t, err)
 }
 
@@ -89,10 +90,10 @@
 	defer th.TeardownHTTP()
 	HandleDisassociateSuccessfully(t)
 
-	disassociateOpts := DisassociateOpts{
+	disassociateOpts := floatingips.DisassociateOpts{
 		FloatingIP: "10.10.10.2",
 	}
 
-	err := DisassociateInstance(client.ServiceClient(), "4d8c3732-a248-40ed-bebc-539a6ffd25c0", disassociateOpts).ExtractErr()
+	err := floatingips.DisassociateInstance(client.ServiceClient(), "4d8c3732-a248-40ed-bebc-539a6ffd25c0", disassociateOpts).ExtractErr()
 	th.AssertNoErr(t, err)
 }
diff --git a/openstack/compute/v2/extensions/keypairs/testing/doc.go b/openstack/compute/v2/extensions/keypairs/testing/doc.go
new file mode 100644
index 0000000..7603f83
--- /dev/null
+++ b/openstack/compute/v2/extensions/keypairs/testing/doc.go
@@ -0,0 +1 @@
+package testing
diff --git a/openstack/compute/v2/extensions/keypairs/fixtures.go b/openstack/compute/v2/extensions/keypairs/testing/fixtures.go
similarity index 96%
rename from openstack/compute/v2/extensions/keypairs/fixtures.go
rename to openstack/compute/v2/extensions/keypairs/testing/fixtures.go
index 62c5db2..dc716d8 100644
--- a/openstack/compute/v2/extensions/keypairs/fixtures.go
+++ b/openstack/compute/v2/extensions/keypairs/testing/fixtures.go
@@ -1,12 +1,11 @@
-// +build fixtures
-
-package keypairs
+package testing
 
 import (
 	"fmt"
 	"net/http"
 	"testing"
 
+	"github.com/gophercloud/gophercloud/openstack/compute/v2/extensions/keypairs"
 	th "github.com/gophercloud/gophercloud/testhelper"
 	"github.com/gophercloud/gophercloud/testhelper/client"
 )
@@ -70,14 +69,14 @@
 `
 
 // FirstKeyPair is the first result in ListOutput.
-var FirstKeyPair = KeyPair{
+var FirstKeyPair = keypairs.KeyPair{
 	Name:        "firstkey",
 	Fingerprint: "15:b0:f8:b3:f9:48:63:71:cf:7b:5b:38:6d:44:2d:4a",
 	PublicKey:   "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQC+Eo/RZRngaGTkFs7I62ZjsIlO79KklKbMXi8F+KITD4bVQHHn+kV+4gRgkgCRbdoDqoGfpaDFs877DYX9n4z6FrAIZ4PES8TNKhatifpn9NdQYWA+IkU8CuvlEKGuFpKRi/k7JLos/gHi2hy7QUwgtRvcefvD/vgQZOVw/mGR9Q== Generated by Nova\n",
 }
 
 // SecondKeyPair is the second result in ListOutput.
-var SecondKeyPair = KeyPair{
+var SecondKeyPair = keypairs.KeyPair{
 	Name:        "secondkey",
 	Fingerprint: "35:9d:d0:c3:4a:80:d3:d8:86:f1:ca:f7:df:c4:f9:d8",
 	PublicKey:   "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQC9mC3WZN9UGLxgPBpP7H5jZMc6pKwOoSgre8yun6REFktn/Kz7DUt9jaR1UJyRzHxITfCfAIgSxPdGqB/oF1suMyWgu5i0625vavLB5z5kC8Hq3qZJ9zJO1poE1kyD+htiTtPWJ88e12xuH2XB/CZN9OpEiF98hAagiOE0EnOS5Q== Generated by Nova\n",
@@ -85,10 +84,10 @@
 
 // ExpectedKeyPairSlice is the slice of results that should be parsed from ListOutput, in the expected
 // order.
-var ExpectedKeyPairSlice = []KeyPair{FirstKeyPair, SecondKeyPair}
+var ExpectedKeyPairSlice = []keypairs.KeyPair{FirstKeyPair, SecondKeyPair}
 
 // CreatedKeyPair is the parsed result from CreatedOutput.
-var CreatedKeyPair = KeyPair{
+var CreatedKeyPair = keypairs.KeyPair{
 	Name:        "createdkey",
 	Fingerprint: "35:9d:d0:c3:4a:80:d3:d8:86:f1:ca:f7:df:c4:f9:d8",
 	PublicKey:   "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQC9mC3WZN9UGLxgPBpP7H5jZMc6pKwOoSgre8yun6REFktn/Kz7DUt9jaR1UJyRzHxITfCfAIgSxPdGqB/oF1suMyWgu5i0625vavLB5z5kC8Hq3qZJ9zJO1poE1kyD+htiTtPWJ88e12xuH2XB/CZN9OpEiF98hAagiOE0EnOS5Q== Generated by Nova\n",
@@ -97,7 +96,7 @@
 }
 
 // ImportedKeyPair is the parsed result from ImportOutput.
-var ImportedKeyPair = KeyPair{
+var ImportedKeyPair = keypairs.KeyPair{
 	Name:        "importedkey",
 	Fingerprint: "1e:2c:9b:56:79:4b:45:77:f9:ca:7a:98:2c:b0:d5:3c",
 	PublicKey:   "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDx8nkQv/zgGgB4rMYmIf+6A4l6Rr+o/6lHBQdW5aYd44bd8JttDCE/F/pNRr0lRE+PiqSPO8nDPHw0010JeMH9gYgnnFlyY3/OcJ02RhIPyyxYpv9FhY+2YiUkpwFOcLImyrxEsYXpD/0d3ac30bNH6Sw9JD9UZHYcpSxsIbECHw== Generated by Nova",
diff --git a/openstack/compute/v2/extensions/keypairs/requests_test.go b/openstack/compute/v2/extensions/keypairs/testing/requests_test.go
similarity index 72%
rename from openstack/compute/v2/extensions/keypairs/requests_test.go
rename to openstack/compute/v2/extensions/keypairs/testing/requests_test.go
index 468e5ea..1e05e66 100644
--- a/openstack/compute/v2/extensions/keypairs/requests_test.go
+++ b/openstack/compute/v2/extensions/keypairs/testing/requests_test.go
@@ -1,8 +1,9 @@
-package keypairs
+package testing
 
 import (
 	"testing"
 
+	"github.com/gophercloud/gophercloud/openstack/compute/v2/extensions/keypairs"
 	"github.com/gophercloud/gophercloud/pagination"
 	th "github.com/gophercloud/gophercloud/testhelper"
 	"github.com/gophercloud/gophercloud/testhelper/client"
@@ -14,9 +15,9 @@
 	HandleListSuccessfully(t)
 
 	count := 0
-	err := List(client.ServiceClient()).EachPage(func(page pagination.Page) (bool, error) {
+	err := keypairs.List(client.ServiceClient()).EachPage(func(page pagination.Page) (bool, error) {
 		count++
-		actual, err := ExtractKeyPairs(page)
+		actual, err := keypairs.ExtractKeyPairs(page)
 		th.AssertNoErr(t, err)
 		th.CheckDeepEquals(t, ExpectedKeyPairSlice, actual)
 
@@ -31,7 +32,7 @@
 	defer th.TeardownHTTP()
 	HandleCreateSuccessfully(t)
 
-	actual, err := Create(client.ServiceClient(), CreateOpts{
+	actual, err := keypairs.Create(client.ServiceClient(), keypairs.CreateOpts{
 		Name: "createdkey",
 	}).Extract()
 	th.AssertNoErr(t, err)
@@ -43,7 +44,7 @@
 	defer th.TeardownHTTP()
 	HandleImportSuccessfully(t)
 
-	actual, err := Create(client.ServiceClient(), CreateOpts{
+	actual, err := keypairs.Create(client.ServiceClient(), keypairs.CreateOpts{
 		Name:      "importedkey",
 		PublicKey: "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDx8nkQv/zgGgB4rMYmIf+6A4l6Rr+o/6lHBQdW5aYd44bd8JttDCE/F/pNRr0lRE+PiqSPO8nDPHw0010JeMH9gYgnnFlyY3/OcJ02RhIPyyxYpv9FhY+2YiUkpwFOcLImyrxEsYXpD/0d3ac30bNH6Sw9JD9UZHYcpSxsIbECHw== Generated by Nova",
 	}).Extract()
@@ -56,7 +57,7 @@
 	defer th.TeardownHTTP()
 	HandleGetSuccessfully(t)
 
-	actual, err := Get(client.ServiceClient(), "firstkey").Extract()
+	actual, err := keypairs.Get(client.ServiceClient(), "firstkey").Extract()
 	th.AssertNoErr(t, err)
 	th.CheckDeepEquals(t, &FirstKeyPair, actual)
 }
@@ -66,6 +67,6 @@
 	defer th.TeardownHTTP()
 	HandleDeleteSuccessfully(t)
 
-	err := Delete(client.ServiceClient(), "deletedkey").ExtractErr()
+	err := keypairs.Delete(client.ServiceClient(), "deletedkey").ExtractErr()
 	th.AssertNoErr(t, err)
 }
diff --git a/openstack/compute/v2/extensions/networks/testing/doc.go b/openstack/compute/v2/extensions/networks/testing/doc.go
new file mode 100644
index 0000000..7603f83
--- /dev/null
+++ b/openstack/compute/v2/extensions/networks/testing/doc.go
@@ -0,0 +1 @@
+package testing
diff --git a/openstack/compute/v2/extensions/networks/fixtures.go b/openstack/compute/v2/extensions/networks/testing/fixtures.go
similarity index 95%
rename from openstack/compute/v2/extensions/networks/fixtures.go
rename to openstack/compute/v2/extensions/networks/testing/fixtures.go
index ffa4282..e2fa49b 100644
--- a/openstack/compute/v2/extensions/networks/fixtures.go
+++ b/openstack/compute/v2/extensions/networks/testing/fixtures.go
@@ -1,6 +1,4 @@
-// +build fixtures
-
-package networks
+package testing
 
 import (
 	"fmt"
@@ -9,6 +7,7 @@
 	"time"
 
 	"github.com/gophercloud/gophercloud"
+	"github.com/gophercloud/gophercloud/openstack/compute/v2/extensions/networks"
 	th "github.com/gophercloud/gophercloud/testhelper"
 	"github.com/gophercloud/gophercloud/testhelper/client"
 )
@@ -114,7 +113,7 @@
 
 // FirstNetwork is the first result in ListOutput.
 var nilTime time.Time
-var FirstNetwork = Network{
+var FirstNetwork = networks.Network{
 	Bridge:            "br100",
 	BridgeInterface:   "eth0",
 	Broadcast:         "10.0.0.7",
@@ -146,7 +145,7 @@
 }
 
 // SecondNetwork is the second result in ListOutput.
-var SecondNetwork = Network{
+var SecondNetwork = networks.Network{
 	Bridge:            "br101",
 	BridgeInterface:   "eth0",
 	Broadcast:         "10.0.0.15",
@@ -179,7 +178,7 @@
 
 // ExpectedNetworkSlice is the slice of results that should be parsed
 // from ListOutput, in the expected order.
-var ExpectedNetworkSlice = []Network{FirstNetwork, SecondNetwork}
+var ExpectedNetworkSlice = []networks.Network{FirstNetwork, SecondNetwork}
 
 // HandleListSuccessfully configures the test server to respond to a List request.
 func HandleListSuccessfully(t *testing.T) {
diff --git a/openstack/compute/v2/extensions/networks/requests_test.go b/openstack/compute/v2/extensions/networks/testing/requests_test.go
similarity index 64%
rename from openstack/compute/v2/extensions/networks/requests_test.go
rename to openstack/compute/v2/extensions/networks/testing/requests_test.go
index 3afc5d5..36b5463 100644
--- a/openstack/compute/v2/extensions/networks/requests_test.go
+++ b/openstack/compute/v2/extensions/networks/testing/requests_test.go
@@ -1,8 +1,9 @@
-package networks
+package testing
 
 import (
 	"testing"
 
+	"github.com/gophercloud/gophercloud/openstack/compute/v2/extensions/networks"
 	"github.com/gophercloud/gophercloud/pagination"
 	th "github.com/gophercloud/gophercloud/testhelper"
 	"github.com/gophercloud/gophercloud/testhelper/client"
@@ -14,9 +15,9 @@
 	HandleListSuccessfully(t)
 
 	count := 0
-	err := List(client.ServiceClient()).EachPage(func(page pagination.Page) (bool, error) {
+	err := networks.List(client.ServiceClient()).EachPage(func(page pagination.Page) (bool, error) {
 		count++
-		actual, err := ExtractNetworks(page)
+		actual, err := networks.ExtractNetworks(page)
 		th.AssertNoErr(t, err)
 		th.CheckDeepEquals(t, ExpectedNetworkSlice, actual)
 
@@ -31,7 +32,7 @@
 	defer th.TeardownHTTP()
 	HandleGetSuccessfully(t)
 
-	actual, err := Get(client.ServiceClient(), "20c8acc0-f747-4d71-a389-46d078ebf000").Extract()
+	actual, err := networks.Get(client.ServiceClient(), "20c8acc0-f747-4d71-a389-46d078ebf000").Extract()
 	th.AssertNoErr(t, err)
 	th.CheckDeepEquals(t, &SecondNetwork, actual)
 }
diff --git a/openstack/compute/v2/extensions/quotasets/requests.go b/openstack/compute/v2/extensions/quotasets/requests.go
index 52f0839..76beb17 100644
--- a/openstack/compute/v2/extensions/quotasets/requests.go
+++ b/openstack/compute/v2/extensions/quotasets/requests.go
@@ -1,7 +1,7 @@
 package quotasets
 
 import (
-	"github.com/rackspace/gophercloud"
+	"github.com/gophercloud/gophercloud"
 )
 
 // Get returns public data about a previously created QuotaSet.
diff --git a/openstack/compute/v2/extensions/quotasets/requests_test.go b/openstack/compute/v2/extensions/quotasets/requests_test.go
deleted file mode 100644
index 5d766fa..0000000
--- a/openstack/compute/v2/extensions/quotasets/requests_test.go
+++ /dev/null
@@ -1,16 +0,0 @@
-package quotasets
-
-import (
-	th "github.com/rackspace/gophercloud/testhelper"
-	"github.com/rackspace/gophercloud/testhelper/client"
-	"testing"
-)
-
-func TestGet(t *testing.T) {
-	th.SetupHTTP()
-	defer th.TeardownHTTP()
-	HandleGetSuccessfully(t)
-	actual, err := Get(client.ServiceClient(), FirstTenantID).Extract()
-	th.AssertNoErr(t, err)
-	th.CheckDeepEquals(t, &FirstQuotaSet, actual)
-}
diff --git a/openstack/compute/v2/extensions/quotasets/results.go b/openstack/compute/v2/extensions/quotasets/results.go
index cbf4d6b..f6c4e5a 100644
--- a/openstack/compute/v2/extensions/quotasets/results.go
+++ b/openstack/compute/v2/extensions/quotasets/results.go
@@ -1,39 +1,38 @@
 package quotasets
 
 import (
-	"github.com/mitchellh/mapstructure"
-	"github.com/rackspace/gophercloud"
-	"github.com/rackspace/gophercloud/pagination"
+	"github.com/gophercloud/gophercloud"
+	"github.com/gophercloud/gophercloud/pagination"
 )
 
 // QuotaSet is a set of operational limits that allow for control of compute usage.
 type QuotaSet struct {
 	//ID is tenant associated with this quota_set
-	ID string `mapstructure:"id"`
+	ID string `json:"id"`
 	//FixedIps is number of fixed ips alloted this quota_set
-	FixedIps int `mapstructure:"fixed_ips"`
+	FixedIps int `json:"fixed_ips"`
 	// FloatingIps is number of floating ips alloted this quota_set
-	FloatingIps int `mapstructure:"floating_ips"`
+	FloatingIps int `json:"floating_ips"`
 	// InjectedFileContentBytes is content bytes allowed for each injected file
-	InjectedFileContentBytes int `mapstructure:"injected_file_content_bytes"`
+	InjectedFileContentBytes int `json:"injected_file_content_bytes"`
 	// InjectedFilePathBytes is allowed bytes for each injected file path
-	InjectedFilePathBytes int `mapstructure:"injected_file_path_bytes"`
+	InjectedFilePathBytes int `json:"injected_file_path_bytes"`
 	// InjectedFiles is injected files allowed for each project
-	InjectedFiles int `mapstructure:"injected_files"`
+	InjectedFiles int `json:"injected_files"`
 	// KeyPairs is number of ssh keypairs
-	KeyPairs int `mapstructure:"keypairs"`
+	KeyPairs int `json:"keypairs"`
 	// MetadataItems is number of metadata items allowed for each instance
-	MetadataItems int `mapstructure:"metadata_items"`
+	MetadataItems int `json:"metadata_items"`
 	// Ram is megabytes allowed for each instance
-	Ram int `mapstructure:"ram"`
+	Ram int `json:"ram"`
 	// SecurityGroupRules is rules allowed for each security group
-	SecurityGroupRules int `mapstructure:"security_group_rules"`
+	SecurityGroupRules int `json:"security_group_rules"`
 	// SecurityGroups security groups allowed for each project
-	SecurityGroups int `mapstructure:"security_groups"`
+	SecurityGroups int `json:"security_groups"`
 	// Cores is number of instance cores allowed for each project
-	Cores int `mapstructure:"cores"`
+	Cores int `json:"cores"`
 	// Instances is number of instances allowed for each project
-	Instances int `mapstructure:"instances"`
+	Instances int `json:"instances"`
 }
 
 // QuotaSetPage stores a single, only page of QuotaSet results from a List call.
@@ -48,17 +47,12 @@
 }
 
 // ExtractQuotaSets interprets a page of results as a slice of QuotaSets.
-func ExtractQuotaSets(page pagination.Page) ([]QuotaSet, error) {
-	var resp struct {
-		QuotaSets []QuotaSet `mapstructure:"quotas"`
+func ExtractQuotaSets(r pagination.Page) ([]QuotaSet, error) {
+	var s struct {
+		QuotaSets []QuotaSet `json:"quotas"`
 	}
-
-	err := mapstructure.Decode(page.(QuotaSetPage).Body, &resp)
-	results := make([]QuotaSet, len(resp.QuotaSets))
-	for i, q := range resp.QuotaSets {
-		results[i] = q
-	}
-	return results, err
+	err := (r.(QuotaSetPage)).ExtractInto(&s)
+	return s.QuotaSets, err
 }
 
 type quotaResult struct {
@@ -67,16 +61,11 @@
 
 // Extract is a method that attempts to interpret any QuotaSet resource response as a QuotaSet struct.
 func (r quotaResult) Extract() (*QuotaSet, error) {
-	if r.Err != nil {
-		return nil, r.Err
+	var s struct {
+		QuotaSet *QuotaSet `json:"quota_set"`
 	}
-
-	var res struct {
-		QuotaSet *QuotaSet `json:"quota_set" mapstructure:"quota_set"`
-	}
-
-	err := mapstructure.Decode(r.Body, &res)
-	return res.QuotaSet, err
+	err := r.ExtractInto(&s)
+	return s.QuotaSet, err
 }
 
 // GetResult is the response from a Get operation. Call its Extract method to interpret it
diff --git a/openstack/compute/v2/extensions/quotasets/testing/doc.go b/openstack/compute/v2/extensions/quotasets/testing/doc.go
new file mode 100644
index 0000000..7603f83
--- /dev/null
+++ b/openstack/compute/v2/extensions/quotasets/testing/doc.go
@@ -0,0 +1 @@
+package testing
diff --git a/openstack/compute/v2/extensions/quotasets/fixtures.go b/openstack/compute/v2/extensions/quotasets/testing/fixtures.go
similarity index 84%
rename from openstack/compute/v2/extensions/quotasets/fixtures.go
rename to openstack/compute/v2/extensions/quotasets/testing/fixtures.go
index c1bb4ea..3fef872 100644
--- a/openstack/compute/v2/extensions/quotasets/fixtures.go
+++ b/openstack/compute/v2/extensions/quotasets/testing/fixtures.go
@@ -1,14 +1,13 @@
-// +build fixtures
-
-package quotasets
+package testing
 
 import (
 	"fmt"
 	"net/http"
 	"testing"
 
-	th "github.com/rackspace/gophercloud/testhelper"
-	"github.com/rackspace/gophercloud/testhelper/client"
+	"github.com/gophercloud/gophercloud/openstack/compute/v2/extensions/quotasets"
+	th "github.com/gophercloud/gophercloud/testhelper"
+	"github.com/gophercloud/gophercloud/testhelper/client"
 )
 
 // GetOutput is a sample response to a Get call.
@@ -32,7 +31,7 @@
 const FirstTenantID = "555544443333222211110000ffffeeee"
 
 // FirstQuotaSet is the first result in ListOutput.
-var FirstQuotaSet = QuotaSet{
+var FirstQuotaSet = quotasets.QuotaSet{
 	FixedIps:                 0,
 	FloatingIps:              0,
 	InjectedFileContentBytes: 10240,
diff --git a/openstack/compute/v2/extensions/quotasets/testing/requests_test.go b/openstack/compute/v2/extensions/quotasets/testing/requests_test.go
new file mode 100644
index 0000000..8fc1fd4
--- /dev/null
+++ b/openstack/compute/v2/extensions/quotasets/testing/requests_test.go
@@ -0,0 +1,18 @@
+package testing
+
+import (
+	"testing"
+
+	"github.com/gophercloud/gophercloud/openstack/compute/v2/extensions/quotasets"
+	th "github.com/gophercloud/gophercloud/testhelper"
+	"github.com/gophercloud/gophercloud/testhelper/client"
+)
+
+func TestGet(t *testing.T) {
+	th.SetupHTTP()
+	defer th.TeardownHTTP()
+	HandleGetSuccessfully(t)
+	actual, err := quotasets.Get(client.ServiceClient(), FirstTenantID).Extract()
+	th.AssertNoErr(t, err)
+	th.CheckDeepEquals(t, &FirstQuotaSet, actual)
+}
diff --git a/openstack/compute/v2/extensions/quotasets/urls.go b/openstack/compute/v2/extensions/quotasets/urls.go
index c04d941..e910376 100644
--- a/openstack/compute/v2/extensions/quotasets/urls.go
+++ b/openstack/compute/v2/extensions/quotasets/urls.go
@@ -1,6 +1,6 @@
 package quotasets
 
-import "github.com/rackspace/gophercloud"
+import "github.com/gophercloud/gophercloud"
 
 const resourcePath = "os-quota-sets"
 
diff --git a/openstack/compute/v2/extensions/quotasets/urls_test.go b/openstack/compute/v2/extensions/quotasets/urls_test.go
deleted file mode 100644
index f19a6ad..0000000
--- a/openstack/compute/v2/extensions/quotasets/urls_test.go
+++ /dev/null
@@ -1,16 +0,0 @@
-package quotasets
-
-import (
-	"testing"
-
-	th "github.com/rackspace/gophercloud/testhelper"
-	"github.com/rackspace/gophercloud/testhelper/client"
-)
-
-func TestGetURL(t *testing.T) {
-	th.SetupHTTP()
-	defer th.TeardownHTTP()
-	c := client.ServiceClient()
-
-	th.CheckEquals(t, c.Endpoint+"os-quota-sets/wat", getURL(c, "wat"))
-}
diff --git a/openstack/compute/v2/extensions/schedulerhints/testing/doc.go b/openstack/compute/v2/extensions/schedulerhints/testing/doc.go
new file mode 100644
index 0000000..7603f83
--- /dev/null
+++ b/openstack/compute/v2/extensions/schedulerhints/testing/doc.go
@@ -0,0 +1 @@
+package testing
diff --git a/openstack/compute/v2/extensions/schedulerhints/requests_test.go b/openstack/compute/v2/extensions/schedulerhints/testing/requests_test.go
similarity index 91%
rename from openstack/compute/v2/extensions/schedulerhints/requests_test.go
rename to openstack/compute/v2/extensions/schedulerhints/testing/requests_test.go
index 605b72b..cf21c4e 100644
--- a/openstack/compute/v2/extensions/schedulerhints/requests_test.go
+++ b/openstack/compute/v2/extensions/schedulerhints/testing/requests_test.go
@@ -1,8 +1,9 @@
-package schedulerhints
+package testing
 
 import (
 	"testing"
 
+	"github.com/gophercloud/gophercloud/openstack/compute/v2/extensions/schedulerhints"
 	"github.com/gophercloud/gophercloud/openstack/compute/v2/servers"
 	th "github.com/gophercloud/gophercloud/testhelper"
 )
@@ -14,7 +15,7 @@
 		FlavorRef: "performance1-1",
 	}
 
-	schedulerHints := SchedulerHints{
+	schedulerHints := schedulerhints.SchedulerHints{
 		Group: "101aed42-22d9-4a3e-9ba1-21103b0d1aba",
 		DifferentHost: []string{
 			"a0cf03a5-d921-4877-bb5c-86d26cf818e1",
@@ -29,7 +30,7 @@
 		BuildNearHostIP: "192.168.1.1/24",
 	}
 
-	ext := CreateOptsExt{
+	ext := schedulerhints.CreateOptsExt{
 		CreateOptsBuilder: base,
 		SchedulerHints:    schedulerHints,
 	}
@@ -72,7 +73,7 @@
 		FlavorRef: "performance1-1",
 	}
 
-	schedulerHints := SchedulerHints{
+	schedulerHints := schedulerhints.SchedulerHints{
 		Group: "101aed42-22d9-4a3e-9ba1-21103b0d1aba",
 		DifferentHost: []string{
 			"a0cf03a5-d921-4877-bb5c-86d26cf818e1",
@@ -87,7 +88,7 @@
 		BuildNearHostIP: "192.168.1.1/24",
 	}
 
-	ext := CreateOptsExt{
+	ext := schedulerhints.CreateOptsExt{
 		CreateOptsBuilder: base,
 		SchedulerHints:    schedulerHints,
 	}
diff --git a/openstack/compute/v2/extensions/secgroups/testing/doc.go b/openstack/compute/v2/extensions/secgroups/testing/doc.go
new file mode 100644
index 0000000..7603f83
--- /dev/null
+++ b/openstack/compute/v2/extensions/secgroups/testing/doc.go
@@ -0,0 +1 @@
+package testing
diff --git a/openstack/compute/v2/extensions/secgroups/fixtures.go b/openstack/compute/v2/extensions/secgroups/testing/fixtures.go
similarity index 99%
rename from openstack/compute/v2/extensions/secgroups/fixtures.go
rename to openstack/compute/v2/extensions/secgroups/testing/fixtures.go
index e4ca587..8a83ca8 100644
--- a/openstack/compute/v2/extensions/secgroups/fixtures.go
+++ b/openstack/compute/v2/extensions/secgroups/testing/fixtures.go
@@ -1,6 +1,4 @@
-// +build fixtures
-
-package secgroups
+package testing
 
 import (
 	"fmt"
diff --git a/openstack/compute/v2/extensions/secgroups/requests_test.go b/openstack/compute/v2/extensions/secgroups/testing/requests_test.go
similarity index 65%
rename from openstack/compute/v2/extensions/secgroups/requests_test.go
rename to openstack/compute/v2/extensions/secgroups/testing/requests_test.go
index bdbedcd..b7ffa20 100644
--- a/openstack/compute/v2/extensions/secgroups/requests_test.go
+++ b/openstack/compute/v2/extensions/secgroups/testing/requests_test.go
@@ -1,8 +1,9 @@
-package secgroups
+package testing
 
 import (
 	"testing"
 
+	"github.com/gophercloud/gophercloud/openstack/compute/v2/extensions/secgroups"
 	"github.com/gophercloud/gophercloud/pagination"
 	th "github.com/gophercloud/gophercloud/testhelper"
 	"github.com/gophercloud/gophercloud/testhelper/client"
@@ -22,20 +23,20 @@
 
 	count := 0
 
-	err := List(client.ServiceClient()).EachPage(func(page pagination.Page) (bool, error) {
+	err := secgroups.List(client.ServiceClient()).EachPage(func(page pagination.Page) (bool, error) {
 		count++
-		actual, err := ExtractSecurityGroups(page)
+		actual, err := secgroups.ExtractSecurityGroups(page)
 		if err != nil {
 			t.Errorf("Failed to extract users: %v", err)
 			return false, err
 		}
 
-		expected := []SecurityGroup{
-			SecurityGroup{
+		expected := []secgroups.SecurityGroup{
+			{
 				ID:          groupID,
 				Description: "default",
 				Name:        "default",
-				Rules:       []Rule{},
+				Rules:       []secgroups.Rule{},
 				TenantID:    "openstack",
 			},
 		}
@@ -57,20 +58,20 @@
 
 	count := 0
 
-	err := ListByServer(client.ServiceClient(), serverID).EachPage(func(page pagination.Page) (bool, error) {
+	err := secgroups.ListByServer(client.ServiceClient(), serverID).EachPage(func(page pagination.Page) (bool, error) {
 		count++
-		actual, err := ExtractSecurityGroups(page)
+		actual, err := secgroups.ExtractSecurityGroups(page)
 		if err != nil {
 			t.Errorf("Failed to extract users: %v", err)
 			return false, err
 		}
 
-		expected := []SecurityGroup{
-			SecurityGroup{
+		expected := []secgroups.SecurityGroup{
+			{
 				ID:          groupID,
 				Description: "default",
 				Name:        "default",
-				Rules:       []Rule{},
+				Rules:       []secgroups.Rule{},
 				TenantID:    "openstack",
 			},
 		}
@@ -90,20 +91,20 @@
 
 	mockCreateGroupResponse(t)
 
-	opts := CreateOpts{
+	opts := secgroups.CreateOpts{
 		Name:        "test",
 		Description: "something",
 	}
 
-	group, err := Create(client.ServiceClient(), opts).Extract()
+	group, err := secgroups.Create(client.ServiceClient(), opts).Extract()
 	th.AssertNoErr(t, err)
 
-	expected := &SecurityGroup{
+	expected := &secgroups.SecurityGroup{
 		ID:          groupID,
 		Name:        "test",
 		Description: "something",
 		TenantID:    "openstack",
-		Rules:       []Rule{},
+		Rules:       []secgroups.Rule{},
 	}
 	th.AssertDeepEquals(t, expected, group)
 }
@@ -114,20 +115,20 @@
 
 	mockUpdateGroupResponse(t, groupID)
 
-	opts := UpdateOpts{
+	opts := secgroups.UpdateOpts{
 		Name:        "new_name",
 		Description: "new_desc",
 	}
 
-	group, err := Update(client.ServiceClient(), groupID, opts).Extract()
+	group, err := secgroups.Update(client.ServiceClient(), groupID, opts).Extract()
 	th.AssertNoErr(t, err)
 
-	expected := &SecurityGroup{
+	expected := &secgroups.SecurityGroup{
 		ID:          groupID,
 		Name:        "new_name",
 		Description: "something",
 		TenantID:    "openstack",
-		Rules:       []Rule{},
+		Rules:       []secgroups.Rule{},
 	}
 	th.AssertDeepEquals(t, expected, group)
 }
@@ -138,21 +139,21 @@
 
 	mockGetGroupsResponse(t, groupID)
 
-	group, err := Get(client.ServiceClient(), groupID).Extract()
+	group, err := secgroups.Get(client.ServiceClient(), groupID).Extract()
 	th.AssertNoErr(t, err)
 
-	expected := &SecurityGroup{
+	expected := &secgroups.SecurityGroup{
 		ID:          groupID,
 		Description: "default",
 		Name:        "default",
 		TenantID:    "openstack",
-		Rules: []Rule{
-			Rule{
+		Rules: []secgroups.Rule{
+			{
 				FromPort:      80,
 				ToPort:        85,
 				IPProtocol:    "TCP",
-				IPRange:       IPRange{CIDR: "0.0.0.0"},
-				Group:         Group{TenantID: "openstack", Name: "default"},
+				IPRange:       secgroups.IPRange{CIDR: "0.0.0.0"},
+				Group:         secgroups.Group{TenantID: "openstack", Name: "default"},
 				ParentGroupID: groupID,
 				ID:            ruleID,
 			},
@@ -170,10 +171,10 @@
 
 	mockGetNumericIDGroupResponse(t, numericGroupID)
 
-	group, err := Get(client.ServiceClient(), "12345").Extract()
+	group, err := secgroups.Get(client.ServiceClient(), "12345").Extract()
 	th.AssertNoErr(t, err)
 
-	expected := &SecurityGroup{ID: "12345"}
+	expected := &secgroups.SecurityGroup{ID: "12345"}
 	th.AssertDeepEquals(t, expected, group)
 }
 
@@ -183,7 +184,7 @@
 
 	mockDeleteGroupResponse(t, groupID)
 
-	err := Delete(client.ServiceClient(), groupID).ExtractErr()
+	err := secgroups.Delete(client.ServiceClient(), groupID).ExtractErr()
 	th.AssertNoErr(t, err)
 }
 
@@ -193,7 +194,7 @@
 
 	mockAddRuleResponse(t)
 
-	opts := CreateRuleOpts{
+	opts := secgroups.CreateRuleOpts{
 		ParentGroupID: groupID,
 		FromPort:      22,
 		ToPort:        22,
@@ -201,16 +202,16 @@
 		CIDR:          "0.0.0.0/0",
 	}
 
-	rule, err := CreateRule(client.ServiceClient(), opts).Extract()
+	rule, err := secgroups.CreateRule(client.ServiceClient(), opts).Extract()
 	th.AssertNoErr(t, err)
 
-	expected := &Rule{
+	expected := &secgroups.Rule{
 		FromPort:      22,
 		ToPort:        22,
-		Group:         Group{},
+		Group:         secgroups.Group{},
 		IPProtocol:    "TCP",
 		ParentGroupID: groupID,
-		IPRange:       IPRange{CIDR: "0.0.0.0/0"},
+		IPRange:       secgroups.IPRange{CIDR: "0.0.0.0/0"},
 		ID:            ruleID,
 	}
 
@@ -223,7 +224,7 @@
 
 	mockAddRuleResponseICMPZero(t)
 
-	opts := CreateRuleOpts{
+	opts := secgroups.CreateRuleOpts{
 		ParentGroupID: groupID,
 		FromPort:      0,
 		ToPort:        0,
@@ -231,16 +232,16 @@
 		CIDR:          "0.0.0.0/0",
 	}
 
-	rule, err := CreateRule(client.ServiceClient(), opts).Extract()
+	rule, err := secgroups.CreateRule(client.ServiceClient(), opts).Extract()
 	th.AssertNoErr(t, err)
 
-	expected := &Rule{
+	expected := &secgroups.Rule{
 		FromPort:      0,
 		ToPort:        0,
-		Group:         Group{},
+		Group:         secgroups.Group{},
 		IPProtocol:    "ICMP",
 		ParentGroupID: groupID,
-		IPRange:       IPRange{CIDR: "0.0.0.0/0"},
+		IPRange:       secgroups.IPRange{CIDR: "0.0.0.0/0"},
 		ID:            ruleID,
 	}
 
@@ -253,7 +254,7 @@
 
 	mockDeleteRuleResponse(t, ruleID)
 
-	err := DeleteRule(client.ServiceClient(), ruleID).ExtractErr()
+	err := secgroups.DeleteRule(client.ServiceClient(), ruleID).ExtractErr()
 	th.AssertNoErr(t, err)
 }
 
@@ -263,7 +264,7 @@
 
 	mockAddServerToGroupResponse(t, serverID)
 
-	err := AddServer(client.ServiceClient(), serverID, "test").ExtractErr()
+	err := secgroups.AddServer(client.ServiceClient(), serverID, "test").ExtractErr()
 	th.AssertNoErr(t, err)
 }
 
@@ -273,6 +274,6 @@
 
 	mockRemoveServerFromGroupResponse(t, serverID)
 
-	err := RemoveServer(client.ServiceClient(), serverID, "test").ExtractErr()
+	err := secgroups.RemoveServer(client.ServiceClient(), serverID, "test").ExtractErr()
 	th.AssertNoErr(t, err)
 }
diff --git a/openstack/compute/v2/extensions/servergroups/testing/doc.go b/openstack/compute/v2/extensions/servergroups/testing/doc.go
new file mode 100644
index 0000000..7603f83
--- /dev/null
+++ b/openstack/compute/v2/extensions/servergroups/testing/doc.go
@@ -0,0 +1 @@
+package testing
diff --git a/openstack/compute/v2/extensions/servergroups/fixtures.go b/openstack/compute/v2/extensions/servergroups/testing/fixtures.go
similarity index 91%
rename from openstack/compute/v2/extensions/servergroups/fixtures.go
rename to openstack/compute/v2/extensions/servergroups/testing/fixtures.go
index 003e9aa..b53757a 100644
--- a/openstack/compute/v2/extensions/servergroups/fixtures.go
+++ b/openstack/compute/v2/extensions/servergroups/testing/fixtures.go
@@ -1,12 +1,11 @@
-// +build fixtures
-
-package servergroups
+package testing
 
 import (
 	"fmt"
 	"net/http"
 	"testing"
 
+	"github.com/gophercloud/gophercloud/openstack/compute/v2/extensions/servergroups"
 	th "github.com/gophercloud/gophercloud/testhelper"
 	"github.com/gophercloud/gophercloud/testhelper/client"
 )
@@ -68,7 +67,7 @@
 `
 
 // FirstServerGroup is the first result in ListOutput.
-var FirstServerGroup = ServerGroup{
+var FirstServerGroup = servergroups.ServerGroup{
 	ID:   "616fb98f-46ca-475e-917e-2563e5a8cd19",
 	Name: "test",
 	Policies: []string{
@@ -79,7 +78,7 @@
 }
 
 // SecondServerGroup is the second result in ListOutput.
-var SecondServerGroup = ServerGroup{
+var SecondServerGroup = servergroups.ServerGroup{
 	ID:   "4d8c3732-a248-40ed-bebc-539a6ffd25c0",
 	Name: "test2",
 	Policies: []string{
@@ -91,10 +90,10 @@
 
 // ExpectedServerGroupSlice is the slice of results that should be parsed
 // from ListOutput, in the expected order.
-var ExpectedServerGroupSlice = []ServerGroup{FirstServerGroup, SecondServerGroup}
+var ExpectedServerGroupSlice = []servergroups.ServerGroup{FirstServerGroup, SecondServerGroup}
 
 // CreatedServerGroup is the parsed result from CreateOutput.
-var CreatedServerGroup = ServerGroup{
+var CreatedServerGroup = servergroups.ServerGroup{
 	ID:   "616fb98f-46ca-475e-917e-2563e5a8cd19",
 	Name: "test",
 	Policies: []string{
diff --git a/openstack/compute/v2/extensions/servergroups/requests_test.go b/openstack/compute/v2/extensions/servergroups/testing/requests_test.go
similarity index 64%
rename from openstack/compute/v2/extensions/servergroups/requests_test.go
rename to openstack/compute/v2/extensions/servergroups/testing/requests_test.go
index 458526a..d86fa56 100644
--- a/openstack/compute/v2/extensions/servergroups/requests_test.go
+++ b/openstack/compute/v2/extensions/servergroups/testing/requests_test.go
@@ -1,8 +1,9 @@
-package servergroups
+package testing
 
 import (
 	"testing"
 
+	"github.com/gophercloud/gophercloud/openstack/compute/v2/extensions/servergroups"
 	"github.com/gophercloud/gophercloud/pagination"
 	th "github.com/gophercloud/gophercloud/testhelper"
 	"github.com/gophercloud/gophercloud/testhelper/client"
@@ -14,9 +15,9 @@
 	HandleListSuccessfully(t)
 
 	count := 0
-	err := List(client.ServiceClient()).EachPage(func(page pagination.Page) (bool, error) {
+	err := servergroups.List(client.ServiceClient()).EachPage(func(page pagination.Page) (bool, error) {
 		count++
-		actual, err := ExtractServerGroups(page)
+		actual, err := servergroups.ExtractServerGroups(page)
 		th.AssertNoErr(t, err)
 		th.CheckDeepEquals(t, ExpectedServerGroupSlice, actual)
 
@@ -31,7 +32,7 @@
 	defer th.TeardownHTTP()
 	HandleCreateSuccessfully(t)
 
-	actual, err := Create(client.ServiceClient(), CreateOpts{
+	actual, err := servergroups.Create(client.ServiceClient(), servergroups.CreateOpts{
 		Name:     "test",
 		Policies: []string{"anti-affinity"},
 	}).Extract()
@@ -44,7 +45,7 @@
 	defer th.TeardownHTTP()
 	HandleGetSuccessfully(t)
 
-	actual, err := Get(client.ServiceClient(), "4d8c3732-a248-40ed-bebc-539a6ffd25c0").Extract()
+	actual, err := servergroups.Get(client.ServiceClient(), "4d8c3732-a248-40ed-bebc-539a6ffd25c0").Extract()
 	th.AssertNoErr(t, err)
 	th.CheckDeepEquals(t, &FirstServerGroup, actual)
 }
@@ -54,6 +55,6 @@
 	defer th.TeardownHTTP()
 	HandleDeleteSuccessfully(t)
 
-	err := Delete(client.ServiceClient(), "616fb98f-46ca-475e-917e-2563e5a8cd19").ExtractErr()
+	err := servergroups.Delete(client.ServiceClient(), "616fb98f-46ca-475e-917e-2563e5a8cd19").ExtractErr()
 	th.AssertNoErr(t, err)
 }
diff --git a/openstack/compute/v2/extensions/startstop/testing/doc.go b/openstack/compute/v2/extensions/startstop/testing/doc.go
new file mode 100644
index 0000000..7603f83
--- /dev/null
+++ b/openstack/compute/v2/extensions/startstop/testing/doc.go
@@ -0,0 +1 @@
+package testing
diff --git a/openstack/compute/v2/extensions/startstop/fixtures.go b/openstack/compute/v2/extensions/startstop/testing/fixtures.go
similarity index 95%
rename from openstack/compute/v2/extensions/startstop/fixtures.go
rename to openstack/compute/v2/extensions/startstop/testing/fixtures.go
index c5b4290..1086b0e 100644
--- a/openstack/compute/v2/extensions/startstop/fixtures.go
+++ b/openstack/compute/v2/extensions/startstop/testing/fixtures.go
@@ -1,6 +1,4 @@
-// +build fixtures
-
-package startstop
+package testing
 
 import (
 	"net/http"
diff --git a/openstack/compute/v2/extensions/startstop/requests_test.go b/openstack/compute/v2/extensions/startstop/testing/requests_test.go
similarity index 65%
rename from openstack/compute/v2/extensions/startstop/requests_test.go
rename to openstack/compute/v2/extensions/startstop/testing/requests_test.go
index c7e26ae..be45bf5 100644
--- a/openstack/compute/v2/extensions/startstop/requests_test.go
+++ b/openstack/compute/v2/extensions/startstop/testing/requests_test.go
@@ -1,8 +1,9 @@
-package startstop
+package testing
 
 import (
 	"testing"
 
+	"github.com/gophercloud/gophercloud/openstack/compute/v2/extensions/startstop"
 	th "github.com/gophercloud/gophercloud/testhelper"
 	"github.com/gophercloud/gophercloud/testhelper/client"
 )
@@ -15,7 +16,7 @@
 
 	mockStartServerResponse(t, serverID)
 
-	err := Start(client.ServiceClient(), serverID).ExtractErr()
+	err := startstop.Start(client.ServiceClient(), serverID).ExtractErr()
 	th.AssertNoErr(t, err)
 }
 
@@ -25,6 +26,6 @@
 
 	mockStopServerResponse(t, serverID)
 
-	err := Stop(client.ServiceClient(), serverID).ExtractErr()
+	err := startstop.Stop(client.ServiceClient(), serverID).ExtractErr()
 	th.AssertNoErr(t, err)
 }
diff --git a/openstack/compute/v2/extensions/tenantnetworks/requests_test.go b/openstack/compute/v2/extensions/tenantnetworks/requests_test.go
deleted file mode 100644
index e8726c4..0000000
--- a/openstack/compute/v2/extensions/tenantnetworks/requests_test.go
+++ /dev/null
@@ -1,37 +0,0 @@
-package tenantnetworks
-
-import (
-	"testing"
-
-	"github.com/gophercloud/gophercloud/pagination"
-	th "github.com/gophercloud/gophercloud/testhelper"
-	"github.com/gophercloud/gophercloud/testhelper/client"
-)
-
-func TestList(t *testing.T) {
-	th.SetupHTTP()
-	defer th.TeardownHTTP()
-	HandleListSuccessfully(t)
-
-	count := 0
-	err := List(client.ServiceClient()).EachPage(func(page pagination.Page) (bool, error) {
-		count++
-		actual, err := ExtractNetworks(page)
-		th.AssertNoErr(t, err)
-		th.CheckDeepEquals(t, ExpectedNetworkSlice, actual)
-
-		return true, nil
-	})
-	th.AssertNoErr(t, err)
-	th.CheckEquals(t, 1, count)
-}
-
-func TestGet(t *testing.T) {
-	th.SetupHTTP()
-	defer th.TeardownHTTP()
-	HandleGetSuccessfully(t)
-
-	actual, err := Get(client.ServiceClient(), "20c8acc0-f747-4d71-a389-46d078ebf000").Extract()
-	th.AssertNoErr(t, err)
-	th.CheckDeepEquals(t, &SecondNetwork, actual)
-}
diff --git a/openstack/compute/v2/extensions/tenantnetworks/testing/doc.go b/openstack/compute/v2/extensions/tenantnetworks/testing/doc.go
new file mode 100644
index 0000000..7603f83
--- /dev/null
+++ b/openstack/compute/v2/extensions/tenantnetworks/testing/doc.go
@@ -0,0 +1 @@
+package testing
diff --git a/openstack/compute/v2/extensions/tenantnetworks/fixtures.go b/openstack/compute/v2/extensions/tenantnetworks/testing/fixtures.go
similarity index 87%
rename from openstack/compute/v2/extensions/tenantnetworks/fixtures.go
rename to openstack/compute/v2/extensions/tenantnetworks/testing/fixtures.go
index 52fa013..ae679b4 100644
--- a/openstack/compute/v2/extensions/tenantnetworks/fixtures.go
+++ b/openstack/compute/v2/extensions/tenantnetworks/testing/fixtures.go
@@ -1,6 +1,4 @@
-// +build fixtures
-
-package tenantnetworks
+package testing
 
 import (
 	"fmt"
@@ -8,6 +6,7 @@
 	"testing"
 	"time"
 
+	"github.com/gophercloud/gophercloud/openstack/compute/v2/extensions/tenantnetworks"
 	th "github.com/gophercloud/gophercloud/testhelper"
 	"github.com/gophercloud/gophercloud/testhelper/client"
 )
@@ -43,14 +42,14 @@
 
 // FirstNetwork is the first result in ListOutput.
 var nilTime time.Time
-var FirstNetwork = Network{
+var FirstNetwork = tenantnetworks.Network{
 	CIDR: "10.0.0.0/29",
 	ID:   "20c8acc0-f747-4d71-a389-46d078ebf047",
 	Name: "mynet_0",
 }
 
 // SecondNetwork is the second result in ListOutput.
-var SecondNetwork = Network{
+var SecondNetwork = tenantnetworks.Network{
 	CIDR: "10.0.0.10/29",
 	ID:   "20c8acc0-f747-4d71-a389-46d078ebf000",
 	Name: "mynet_1",
@@ -58,7 +57,7 @@
 
 // ExpectedNetworkSlice is the slice of results that should be parsed
 // from ListOutput, in the expected order.
-var ExpectedNetworkSlice = []Network{FirstNetwork, SecondNetwork}
+var ExpectedNetworkSlice = []tenantnetworks.Network{FirstNetwork, SecondNetwork}
 
 // HandleListSuccessfully configures the test server to respond to a List request.
 func HandleListSuccessfully(t *testing.T) {
diff --git a/openstack/compute/v2/extensions/networks/requests_test.go b/openstack/compute/v2/extensions/tenantnetworks/testing/requests_test.go
similarity index 63%
copy from openstack/compute/v2/extensions/networks/requests_test.go
copy to openstack/compute/v2/extensions/tenantnetworks/testing/requests_test.go
index 3afc5d5..703c846 100644
--- a/openstack/compute/v2/extensions/networks/requests_test.go
+++ b/openstack/compute/v2/extensions/tenantnetworks/testing/requests_test.go
@@ -1,8 +1,9 @@
-package networks
+package testing
 
 import (
 	"testing"
 
+	"github.com/gophercloud/gophercloud/openstack/compute/v2/extensions/tenantnetworks"
 	"github.com/gophercloud/gophercloud/pagination"
 	th "github.com/gophercloud/gophercloud/testhelper"
 	"github.com/gophercloud/gophercloud/testhelper/client"
@@ -14,9 +15,9 @@
 	HandleListSuccessfully(t)
 
 	count := 0
-	err := List(client.ServiceClient()).EachPage(func(page pagination.Page) (bool, error) {
+	err := tenantnetworks.List(client.ServiceClient()).EachPage(func(page pagination.Page) (bool, error) {
 		count++
-		actual, err := ExtractNetworks(page)
+		actual, err := tenantnetworks.ExtractNetworks(page)
 		th.AssertNoErr(t, err)
 		th.CheckDeepEquals(t, ExpectedNetworkSlice, actual)
 
@@ -31,7 +32,7 @@
 	defer th.TeardownHTTP()
 	HandleGetSuccessfully(t)
 
-	actual, err := Get(client.ServiceClient(), "20c8acc0-f747-4d71-a389-46d078ebf000").Extract()
+	actual, err := tenantnetworks.Get(client.ServiceClient(), "20c8acc0-f747-4d71-a389-46d078ebf000").Extract()
 	th.AssertNoErr(t, err)
 	th.CheckDeepEquals(t, &SecondNetwork, actual)
 }
diff --git a/openstack/compute/v2/extensions/testing/delegate_test.go b/openstack/compute/v2/extensions/testing/delegate_test.go
new file mode 100644
index 0000000..822093f
--- /dev/null
+++ b/openstack/compute/v2/extensions/testing/delegate_test.go
@@ -0,0 +1,56 @@
+package testing
+
+import (
+	"testing"
+
+	common "github.com/gophercloud/gophercloud/openstack/common/extensions"
+	"github.com/gophercloud/gophercloud/openstack/compute/v2/extensions"
+	"github.com/gophercloud/gophercloud/pagination"
+	th "github.com/gophercloud/gophercloud/testhelper"
+	"github.com/gophercloud/gophercloud/testhelper/client"
+)
+
+func TestList(t *testing.T) {
+	th.SetupHTTP()
+	defer th.TeardownHTTP()
+
+	HandleListExtensionsSuccessfully(t)
+
+	count := 0
+	extensions.List(client.ServiceClient()).EachPage(func(page pagination.Page) (bool, error) {
+		count++
+		actual, err := extensions.ExtractExtensions(page)
+		th.AssertNoErr(t, err)
+
+		expected := []common.Extension{
+			common.Extension{
+				Updated:     "2013-01-20T00:00:00-00:00",
+				Name:        "Neutron Service Type Management",
+				Links:       []interface{}{},
+				Namespace:   "http://docs.openstack.org/ext/neutron/service-type/api/v1.0",
+				Alias:       "service-type",
+				Description: "API for retrieving service providers for Neutron advanced services",
+			},
+		}
+		th.AssertDeepEquals(t, expected, actual)
+
+		return true, nil
+	})
+	th.CheckEquals(t, 1, count)
+}
+
+func TestGet(t *testing.T) {
+	th.SetupHTTP()
+	defer th.TeardownHTTP()
+
+	HandleGetExtensionsSuccessfully(t)
+
+	ext, err := extensions.Get(client.ServiceClient(), "agent").Extract()
+	th.AssertNoErr(t, err)
+
+	th.AssertEquals(t, ext.Updated, "2013-02-03T10:00:00-00:00")
+	th.AssertEquals(t, ext.Name, "agent")
+	th.AssertEquals(t, ext.Namespace, "http://docs.openstack.org/ext/agent/api/v2.0")
+	th.AssertEquals(t, ext.Alias, "agent")
+	th.AssertEquals(t, ext.Description, "The agent management extension.")
+}
diff --git a/openstack/compute/v2/extensions/testing/doc.go b/openstack/compute/v2/extensions/testing/doc.go
new file mode 100644
index 0000000..7603f83
--- /dev/null
+++ b/openstack/compute/v2/extensions/testing/doc.go
@@ -0,0 +1 @@
+package testing
diff --git a/openstack/compute/v2/extensions/testing/fixtures.go b/openstack/compute/v2/extensions/testing/fixtures.go
new file mode 100644
index 0000000..2a3fb69
--- /dev/null
+++ b/openstack/compute/v2/extensions/testing/fixtures.go
@@ -0,0 +1,57 @@
+package testing
+
+import (
+	"fmt"
+	"net/http"
+	"testing"
+
+	th "github.com/gophercloud/gophercloud/testhelper"
+	"github.com/gophercloud/gophercloud/testhelper/client"
+)
+
+func HandleListExtensionsSuccessfully(t *testing.T) {
+	th.Mux.HandleFunc("/extensions", func(w http.ResponseWriter, r *http.Request) {
+		th.TestMethod(t, r, "GET")
+		th.TestHeader(t, r, "X-Auth-Token", client.TokenID)
+
+		w.Header().Add("Content-Type", "application/json")
+
+		fmt.Fprintf(w, `
+{
+		"extensions": [
+				{
+						"updated": "2013-01-20T00:00:00-00:00",
+						"name": "Neutron Service Type Management",
+						"links": [],
+						"namespace": "http://docs.openstack.org/ext/neutron/service-type/api/v1.0",
+						"alias": "service-type",
+						"description": "API for retrieving service providers for Neutron advanced services"
+				}
+		]
+}
+			`)
+	})
+}
+
+func HandleGetExtensionsSuccessfully(t *testing.T) {
+	th.Mux.HandleFunc("/extensions/agent", func(w http.ResponseWriter, r *http.Request) {
+		th.TestMethod(t, r, "GET")
+		th.TestHeader(t, r, "X-Auth-Token", client.TokenID)
+
+		w.Header().Add("Content-Type", "application/json")
+		w.WriteHeader(http.StatusOK)
+
+		fmt.Fprintf(w, `
+{
+		"extension": {
+				"updated": "2013-02-03T10:00:00-00:00",
+				"name": "agent",
+				"links": [],
+				"namespace": "http://docs.openstack.org/ext/agent/api/v2.0",
+				"alias": "agent",
+				"description": "The agent management extension."
+		}
+}
+		`)
+	})
+}
diff --git a/openstack/compute/v2/extensions/volumeattach/testing/fixtures.go b/openstack/compute/v2/extensions/volumeattach/testing/fixtures.go
index f662852..4f99610 100644
--- a/openstack/compute/v2/extensions/volumeattach/testing/fixtures.go
+++ b/openstack/compute/v2/extensions/volumeattach/testing/fixtures.go
@@ -1,5 +1,3 @@
-// +build fixtures
-
 package testing
 
 import (
diff --git a/openstack/compute/v2/extensions/volumeattach/requests_test.go b/openstack/compute/v2/extensions/volumeattach/testing/requests_test.go
similarity index 68%
rename from openstack/compute/v2/extensions/volumeattach/requests_test.go
rename to openstack/compute/v2/extensions/volumeattach/testing/requests_test.go
index 3257f39..9486f9b 100644
--- a/openstack/compute/v2/extensions/volumeattach/requests_test.go
+++ b/openstack/compute/v2/extensions/volumeattach/testing/requests_test.go
@@ -1,16 +1,16 @@
-package volumeattach
+package testing
 
 import (
 	"testing"
 
-	fixtures "github.com/gophercloud/gophercloud/openstack/compute/v2/extensions/volumeattach/testing"
+	"github.com/gophercloud/gophercloud/openstack/compute/v2/extensions/volumeattach"
 	"github.com/gophercloud/gophercloud/pagination"
 	th "github.com/gophercloud/gophercloud/testhelper"
 	"github.com/gophercloud/gophercloud/testhelper/client"
 )
 
 // FirstVolumeAttachment is the first result in ListOutput.
-var FirstVolumeAttachment = VolumeAttachment{
+var FirstVolumeAttachment = volumeattach.VolumeAttachment{
 	Device:   "/dev/vdd",
 	ID:       "a26887c6-c47b-4654-abb5-dfadf7d3f803",
 	ServerID: "4d8c3732-a248-40ed-bebc-539a6ffd25c0",
@@ -18,7 +18,7 @@
 }
 
 // SecondVolumeAttachment is the first result in ListOutput.
-var SecondVolumeAttachment = VolumeAttachment{
+var SecondVolumeAttachment = volumeattach.VolumeAttachment{
 	Device:   "/dev/vdc",
 	ID:       "a26887c6-c47b-4654-abb5-dfadf7d3f804",
 	ServerID: "4d8c3732-a248-40ed-bebc-539a6ffd25c0",
@@ -27,10 +27,10 @@
 
 // ExpectedVolumeAttachmentSlide is the slice of results that should be parsed
 // from ListOutput, in the expected order.
-var ExpectedVolumeAttachmentSlice = []VolumeAttachment{FirstVolumeAttachment, SecondVolumeAttachment}
+var ExpectedVolumeAttachmentSlice = []volumeattach.VolumeAttachment{FirstVolumeAttachment, SecondVolumeAttachment}
 
 //CreatedVolumeAttachment is the parsed result from CreatedOutput.
-var CreatedVolumeAttachment = VolumeAttachment{
+var CreatedVolumeAttachment = volumeattach.VolumeAttachment{
 	Device:   "/dev/vdc",
 	ID:       "a26887c6-c47b-4654-abb5-dfadf7d3f804",
 	ServerID: "4d8c3732-a248-40ed-bebc-539a6ffd25c0",
@@ -40,13 +40,15 @@
 func TestList(t *testing.T) {
 	th.SetupHTTP()
 	defer th.TeardownHTTP()
-	fixtures.HandleListSuccessfully(t)
+
+	HandleListSuccessfully(t)
+
 	serverID := "4d8c3732-a248-40ed-bebc-539a6ffd25c0"
 
 	count := 0
-	err := List(client.ServiceClient(), serverID).EachPage(func(page pagination.Page) (bool, error) {
+	err := volumeattach.List(client.ServiceClient(), serverID).EachPage(func(page pagination.Page) (bool, error) {
 		count++
-		actual, err := ExtractVolumeAttachments(page)
+		actual, err := volumeattach.ExtractVolumeAttachments(page)
 		th.AssertNoErr(t, err)
 		th.CheckDeepEquals(t, ExpectedVolumeAttachmentSlice, actual)
 
@@ -59,10 +61,12 @@
 func TestCreate(t *testing.T) {
 	th.SetupHTTP()
 	defer th.TeardownHTTP()
-	fixtures.HandleCreateSuccessfully(t)
+
+	HandleCreateSuccessfully(t)
+
 	serverID := "4d8c3732-a248-40ed-bebc-539a6ffd25c0"
 
-	actual, err := Create(client.ServiceClient(), serverID, CreateOpts{
+	actual, err := volumeattach.Create(client.ServiceClient(), serverID, volumeattach.CreateOpts{
 		Device:   "/dev/vdc",
 		VolumeID: "a26887c6-c47b-4654-abb5-dfadf7d3f804",
 	}).Extract()
@@ -73,11 +77,13 @@
 func TestGet(t *testing.T) {
 	th.SetupHTTP()
 	defer th.TeardownHTTP()
-	fixtures.HandleGetSuccessfully(t)
+
+	HandleGetSuccessfully(t)
+
 	aID := "a26887c6-c47b-4654-abb5-dfadf7d3f804"
 	serverID := "4d8c3732-a248-40ed-bebc-539a6ffd25c0"
 
-	actual, err := Get(client.ServiceClient(), serverID, aID).Extract()
+	actual, err := volumeattach.Get(client.ServiceClient(), serverID, aID).Extract()
 	th.AssertNoErr(t, err)
 	th.CheckDeepEquals(t, &SecondVolumeAttachment, actual)
 }
@@ -85,10 +91,12 @@
 func TestDelete(t *testing.T) {
 	th.SetupHTTP()
 	defer th.TeardownHTTP()
-	fixtures.HandleDeleteSuccessfully(t)
+
+	HandleDeleteSuccessfully(t)
+
 	aID := "a26887c6-c47b-4654-abb5-dfadf7d3f804"
 	serverID := "4d8c3732-a248-40ed-bebc-539a6ffd25c0"
 
-	err := Delete(client.ServiceClient(), serverID, aID).ExtractErr()
+	err := volumeattach.Delete(client.ServiceClient(), serverID, aID).ExtractErr()
 	th.AssertNoErr(t, err)
 }
diff --git a/openstack/compute/v2/flavors/testing/doc.go b/openstack/compute/v2/flavors/testing/doc.go
new file mode 100644
index 0000000..7603f83
--- /dev/null
+++ b/openstack/compute/v2/flavors/testing/doc.go
@@ -0,0 +1 @@
+package testing
diff --git a/openstack/compute/v2/flavors/requests_test.go b/openstack/compute/v2/flavors/testing/requests_test.go
similarity index 82%
rename from openstack/compute/v2/flavors/requests_test.go
rename to openstack/compute/v2/flavors/testing/requests_test.go
index 311dbf0..e86512a 100644
--- a/openstack/compute/v2/flavors/requests_test.go
+++ b/openstack/compute/v2/flavors/testing/requests_test.go
@@ -1,4 +1,4 @@
-package flavors
+package testing
 
 import (
 	"fmt"
@@ -6,6 +6,7 @@
 	"reflect"
 	"testing"
 
+	"github.com/gophercloud/gophercloud/openstack/compute/v2/flavors"
 	"github.com/gophercloud/gophercloud/pagination"
 	th "github.com/gophercloud/gophercloud/testhelper"
 	fake "github.com/gophercloud/gophercloud/testhelper/client"
@@ -60,17 +61,17 @@
 	})
 
 	pages := 0
-	err := ListDetail(fake.ServiceClient(), nil).EachPage(func(page pagination.Page) (bool, error) {
+	err := flavors.ListDetail(fake.ServiceClient(), nil).EachPage(func(page pagination.Page) (bool, error) {
 		pages++
 
-		actual, err := ExtractFlavors(page)
+		actual, err := flavors.ExtractFlavors(page)
 		if err != nil {
 			return false, err
 		}
 
-		expected := []Flavor{
-			Flavor{ID: "1", Name: "m1.tiny", Disk: 1, RAM: 512, VCPUs: 1},
-			Flavor{ID: "2", Name: "m2.small", Disk: 10, RAM: 1024, VCPUs: 2},
+		expected := []flavors.Flavor{
+			{ID: "1", Name: "m1.tiny", Disk: 1, RAM: 512, VCPUs: 1},
+			{ID: "2", Name: "m2.small", Disk: 10, RAM: 1024, VCPUs: 2},
 		}
 
 		if !reflect.DeepEqual(expected, actual) {
@@ -110,12 +111,12 @@
 		`)
 	})
 
-	actual, err := Get(fake.ServiceClient(), "12345").Extract()
+	actual, err := flavors.Get(fake.ServiceClient(), "12345").Extract()
 	if err != nil {
 		t.Fatalf("Unable to get flavor: %v", err)
 	}
 
-	expected := &Flavor{
+	expected := &flavors.Flavor{
 		ID:         "1",
 		Name:       "m1.tiny",
 		Disk:       1,
diff --git a/openstack/compute/v2/images/testing/doc.go b/openstack/compute/v2/images/testing/doc.go
new file mode 100644
index 0000000..7603f83
--- /dev/null
+++ b/openstack/compute/v2/images/testing/doc.go
@@ -0,0 +1 @@
+package testing
diff --git a/openstack/compute/v2/images/requests_test.go b/openstack/compute/v2/images/testing/requests_test.go
similarity index 89%
rename from openstack/compute/v2/images/requests_test.go
rename to openstack/compute/v2/images/testing/requests_test.go
index 4b94ba1..a13b086 100644
--- a/openstack/compute/v2/images/requests_test.go
+++ b/openstack/compute/v2/images/testing/requests_test.go
@@ -1,4 +1,4 @@
-package images
+package testing
 
 import (
 	"encoding/json"
@@ -7,6 +7,7 @@
 	"reflect"
 	"testing"
 
+	"github.com/gophercloud/gophercloud/openstack/compute/v2/images"
 	"github.com/gophercloud/gophercloud/pagination"
 	th "github.com/gophercloud/gophercloud/testhelper"
 	fake "github.com/gophercloud/gophercloud/testhelper/client"
@@ -63,17 +64,17 @@
 	})
 
 	pages := 0
-	options := &ListOpts{Limit: 2}
-	err := ListDetail(fake.ServiceClient(), options).EachPage(func(page pagination.Page) (bool, error) {
+	options := &images.ListOpts{Limit: 2}
+	err := images.ListDetail(fake.ServiceClient(), options).EachPage(func(page pagination.Page) (bool, error) {
 		pages++
 
-		actual, err := ExtractImages(page)
+		actual, err := images.ExtractImages(page)
 		if err != nil {
 			return false, err
 		}
 
-		expected := []Image{
-			Image{
+		expected := []images.Image{
+			{
 				ID:       "f3e4a95d-1f4f-4989-97ce-f3a1fb8c04d7",
 				Name:     "F17-x86_64-cfntools",
 				Created:  "2014-09-23T12:54:52Z",
@@ -83,7 +84,7 @@
 				Progress: 100,
 				Status:   "ACTIVE",
 			},
-			Image{
+			{
 				ID:       "f90f6034-2570-4974-8351-6b49732ef2eb",
 				Name:     "cirros-0.3.2-x86_64-disk",
 				Created:  "2014-09-23T12:51:42Z",
@@ -137,12 +138,12 @@
 		`)
 	})
 
-	actual, err := Get(fake.ServiceClient(), "12345678").Extract()
+	actual, err := images.Get(fake.ServiceClient(), "12345678").Extract()
 	if err != nil {
 		t.Fatalf("Unexpected error from Get: %v", err)
 	}
 
-	expected := &Image{
+	expected := &images.Image{
 		Status:   "ACTIVE",
 		Updated:  "2014-09-23T12:54:56Z",
 		ID:       "f3e4a95d-1f4f-4989-97ce-f3a1fb8c04d7",
@@ -159,7 +160,7 @@
 }
 
 func TestNextPageURL(t *testing.T) {
-	var page ImagePage
+	var page images.ImagePage
 	var body map[string]interface{}
 	bodyString := []byte(`{"images":{"links":[{"href":"http://192.154.23.87/12345/images/image3","rel":"bookmark"}]}, "images_links":[{"href":"http://192.154.23.87/12345/images/image4","rel":"next"}]}`)
 	err := json.Unmarshal(bodyString, &body)
@@ -186,6 +187,6 @@
 		w.WriteHeader(http.StatusNoContent)
 	})
 
-	res := Delete(fake.ServiceClient(), "12345678")
+	res := images.Delete(fake.ServiceClient(), "12345678")
 	th.AssertNoErr(t, res.Err)
 }
diff --git a/openstack/compute/v2/servers/testing/doc.go b/openstack/compute/v2/servers/testing/doc.go
new file mode 100644
index 0000000..7603f83
--- /dev/null
+++ b/openstack/compute/v2/servers/testing/doc.go
@@ -0,0 +1 @@
+package testing
diff --git a/openstack/compute/v2/servers/fixtures.go b/openstack/compute/v2/servers/testing/fixtures.go
similarity index 98%
rename from openstack/compute/v2/servers/fixtures.go
rename to openstack/compute/v2/servers/testing/fixtures.go
index 8b2c94d..b4fb7ff 100644
--- a/openstack/compute/v2/servers/fixtures.go
+++ b/openstack/compute/v2/servers/testing/fixtures.go
@@ -1,6 +1,4 @@
-// +build fixtures
-
-package servers
+package testing
 
 import (
 	"fmt"
@@ -8,6 +6,7 @@
 	"testing"
 
 	"github.com/gophercloud/gophercloud"
+	"github.com/gophercloud/gophercloud/openstack/compute/v2/servers"
 	th "github.com/gophercloud/gophercloud/testhelper"
 	"github.com/gophercloud/gophercloud/testhelper/client"
 )
@@ -244,7 +243,7 @@
 
 var (
 	// ServerHerp is a Server struct that should correspond to the first result in ServerListBody.
-	ServerHerp = Server{
+	ServerHerp = servers.Server{
 		Status:  "ACTIVE",
 		Updated: "2014-09-25T13:10:10Z",
 		HostID:  "29d3c8c896a45aa4c34e52247875d7fefc3d94bbcc9f622b5d204362",
@@ -300,7 +299,7 @@
 	}
 
 	// ServerDerp is a Server struct that should correspond to the second server in ServerListBody.
-	ServerDerp = Server{
+	ServerDerp = servers.Server{
 		Status:  "ACTIVE",
 		Updated: "2014-09-25T13:04:49Z",
 		HostID:  "29d3c8c896a45aa4c34e52247875d7fefc3d94bbcc9f622b5d204362",
@@ -357,7 +356,7 @@
 )
 
 type CreateOptsWithCustomField struct {
-	CreateOpts
+	servers.CreateOpts
 	Foo string `json:"foo,omitempty"`
 }
 
@@ -618,19 +617,19 @@
 }
 
 // ListAddressesExpected represents an expected repsonse from a ListAddresses request.
-var ListAddressesExpected = map[string][]Address{
-	"public": []Address{
-		Address{
+var ListAddressesExpected = map[string][]servers.Address{
+	"public": []servers.Address{
+		{
 			Version: 4,
 			Address: "80.56.136.39",
 		},
-		Address{
+		{
 			Version: 6,
 			Address: "2001:4800:790e:510:be76:4eff:fe04:82a8",
 		},
 	},
-	"private": []Address{
-		Address{
+	"private": []servers.Address{
+		{
 			Version: 4,
 			Address: "10.880.3.154",
 		},
@@ -668,12 +667,12 @@
 }
 
 // ListNetworkAddressesExpected represents an expected repsonse from a ListAddressesByNetwork request.
-var ListNetworkAddressesExpected = []Address{
-	Address{
+var ListNetworkAddressesExpected = []servers.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/testing/requests_test.go
similarity index 74%
rename from openstack/compute/v2/servers/requests_test.go
rename to openstack/compute/v2/servers/testing/requests_test.go
index 9a5d701..7db6b93 100644
--- a/openstack/compute/v2/servers/requests_test.go
+++ b/openstack/compute/v2/servers/testing/requests_test.go
@@ -1,4 +1,4 @@
-package servers
+package testing
 
 import (
 	"encoding/base64"
@@ -6,6 +6,7 @@
 	"net/http"
 	"testing"
 
+	"github.com/gophercloud/gophercloud/openstack/compute/v2/servers"
 	"github.com/gophercloud/gophercloud/pagination"
 	th "github.com/gophercloud/gophercloud/testhelper"
 	"github.com/gophercloud/gophercloud/testhelper/client"
@@ -17,10 +18,10 @@
 	HandleServerListSuccessfully(t)
 
 	pages := 0
-	err := List(client.ServiceClient(), ListOpts{}).EachPage(func(page pagination.Page) (bool, error) {
+	err := servers.List(client.ServiceClient(), servers.ListOpts{}).EachPage(func(page pagination.Page) (bool, error) {
 		pages++
 
-		actual, err := ExtractServers(page)
+		actual, err := servers.ExtractServers(page)
 		if err != nil {
 			return false, err
 		}
@@ -46,9 +47,9 @@
 	defer th.TeardownHTTP()
 	HandleServerListSuccessfully(t)
 
-	allPages, err := List(client.ServiceClient(), ListOpts{}).AllPages()
+	allPages, err := servers.List(client.ServiceClient(), servers.ListOpts{}).AllPages()
 	th.AssertNoErr(t, err)
-	actual, err := ExtractServers(allPages)
+	actual, err := servers.ExtractServers(allPages)
 	th.AssertNoErr(t, err)
 	th.CheckDeepEquals(t, ServerHerp, actual[0])
 	th.CheckDeepEquals(t, ServerDerp, actual[1])
@@ -59,7 +60,7 @@
 	defer th.TeardownHTTP()
 	HandleServerCreationSuccessfully(t, SingleServerBody)
 
-	actual, err := Create(client.ServiceClient(), CreateOpts{
+	actual, err := servers.Create(client.ServiceClient(), servers.CreateOpts{
 		Name:      "derp",
 		ImageRef:  "f90f6034-2570-4974-8351-6b49732ef2eb",
 		FlavorRef: "1",
@@ -74,8 +75,8 @@
 	defer th.TeardownHTTP()
 	HandleServerCreationWithCustomFieldSuccessfully(t, SingleServerBody)
 
-	actual, err := Create(client.ServiceClient(), CreateOptsWithCustomField{
-		CreateOpts: CreateOpts{
+	actual, err := servers.Create(client.ServiceClient(), CreateOptsWithCustomField{
+		CreateOpts: servers.CreateOpts{
 			Name:      "derp",
 			ImageRef:  "f90f6034-2570-4974-8351-6b49732ef2eb",
 			FlavorRef: "1",
@@ -92,7 +93,7 @@
 	defer th.TeardownHTTP()
 	HandleServerDeletionSuccessfully(t)
 
-	res := Delete(client.ServiceClient(), "asdfasdfasdf")
+	res := servers.Delete(client.ServiceClient(), "asdfasdfasdf")
 	th.AssertNoErr(t, res.Err)
 }
 
@@ -101,7 +102,7 @@
 	defer th.TeardownHTTP()
 	HandleServerForceDeletionSuccessfully(t)
 
-	res := ForceDelete(client.ServiceClient(), "asdfasdfasdf")
+	res := servers.ForceDelete(client.ServiceClient(), "asdfasdfasdf")
 	th.AssertNoErr(t, res.Err)
 }
 
@@ -111,7 +112,7 @@
 	HandleServerGetSuccessfully(t)
 
 	client := client.ServiceClient()
-	actual, err := Get(client, "1234asdf").Extract()
+	actual, err := servers.Get(client, "1234asdf").Extract()
 	if err != nil {
 		t.Fatalf("Unexpected Get error: %v", err)
 	}
@@ -125,7 +126,7 @@
 	HandleServerUpdateSuccessfully(t)
 
 	client := client.ServiceClient()
-	actual, err := Update(client, "1234asdf", UpdateOpts{Name: "new-name"}).Extract()
+	actual, err := servers.Update(client, "1234asdf", servers.UpdateOpts{Name: "new-name"}).Extract()
 	if err != nil {
 		t.Fatalf("Unexpected Update error: %v", err)
 	}
@@ -138,7 +139,7 @@
 	defer th.TeardownHTTP()
 	HandleAdminPasswordChangeSuccessfully(t)
 
-	res := ChangeAdminPassword(client.ServiceClient(), "1234asdf", "new-password")
+	res := servers.ChangeAdminPassword(client.ServiceClient(), "1234asdf", "new-password")
 	th.AssertNoErr(t, res.Err)
 }
 
@@ -147,7 +148,7 @@
 	defer th.TeardownHTTP()
 	HandlePasswordGetSuccessfully(t)
 
-	res := GetPassword(client.ServiceClient(), "1234asdf")
+	res := servers.GetPassword(client.ServiceClient(), "1234asdf")
 	th.AssertNoErr(t, res.Err)
 }
 
@@ -156,8 +157,8 @@
 	defer th.TeardownHTTP()
 	HandleRebootSuccessfully(t)
 
-	res := Reboot(client.ServiceClient(), "1234asdf", &RebootOpts{
-		Type: SoftReboot,
+	res := servers.Reboot(client.ServiceClient(), "1234asdf", &servers.RebootOpts{
+		Type: servers.SoftReboot,
 	})
 	th.AssertNoErr(t, res.Err)
 }
@@ -167,14 +168,14 @@
 	defer th.TeardownHTTP()
 	HandleRebuildSuccessfully(t, SingleServerBody)
 
-	opts := RebuildOpts{
+	opts := servers.RebuildOpts{
 		Name:       "new-name",
 		AdminPass:  "swordfish",
 		ImageID:    "http://104.130.131.164:8774/fcad67a6189847c4aecfa3c81a05783b/images/f90f6034-2570-4974-8351-6b49732ef2eb",
 		AccessIPv4: "1.2.3.4",
 	}
 
-	actual, err := Rebuild(client.ServiceClient(), "1234asdf", opts).Extract()
+	actual, err := servers.Rebuild(client.ServiceClient(), "1234asdf", opts).Extract()
 	th.AssertNoErr(t, err)
 
 	th.CheckDeepEquals(t, ServerDerp, *actual)
@@ -192,7 +193,7 @@
 		w.WriteHeader(http.StatusAccepted)
 	})
 
-	res := Resize(client.ServiceClient(), "1234asdf", ResizeOpts{FlavorRef: "2"})
+	res := servers.Resize(client.ServiceClient(), "1234asdf", servers.ResizeOpts{FlavorRef: "2"})
 	th.AssertNoErr(t, res.Err)
 }
 
@@ -208,7 +209,7 @@
 		w.WriteHeader(http.StatusNoContent)
 	})
 
-	res := ConfirmResize(client.ServiceClient(), "1234asdf")
+	res := servers.ConfirmResize(client.ServiceClient(), "1234asdf")
 	th.AssertNoErr(t, res.Err)
 }
 
@@ -224,7 +225,7 @@
 		w.WriteHeader(http.StatusAccepted)
 	})
 
-	res := RevertResize(client.ServiceClient(), "1234asdf")
+	res := servers.RevertResize(client.ServiceClient(), "1234asdf")
 	th.AssertNoErr(t, res.Err)
 }
 
@@ -234,7 +235,7 @@
 
 	HandleServerRescueSuccessfully(t)
 
-	res := Rescue(client.ServiceClient(), "1234asdf", RescueOpts{
+	res := servers.Rescue(client.ServiceClient(), "1234asdf", servers.RescueOpts{
 		AdminPass: "1234567890",
 	})
 	th.AssertNoErr(t, res.Err)
@@ -249,7 +250,7 @@
 	HandleMetadatumGetSuccessfully(t)
 
 	expected := map[string]string{"foo": "bar"}
-	actual, err := Metadatum(client.ServiceClient(), "1234asdf", "foo").Extract()
+	actual, err := servers.Metadatum(client.ServiceClient(), "1234asdf", "foo").Extract()
 	th.AssertNoErr(t, err)
 	th.AssertDeepEquals(t, expected, actual)
 }
@@ -261,7 +262,7 @@
 	HandleMetadatumCreateSuccessfully(t)
 
 	expected := map[string]string{"foo": "bar"}
-	actual, err := CreateMetadatum(client.ServiceClient(), "1234asdf", MetadatumOpts{"foo": "bar"}).Extract()
+	actual, err := servers.CreateMetadatum(client.ServiceClient(), "1234asdf", servers.MetadatumOpts{"foo": "bar"}).Extract()
 	th.AssertNoErr(t, err)
 	th.AssertDeepEquals(t, expected, actual)
 }
@@ -272,7 +273,7 @@
 
 	HandleMetadatumDeleteSuccessfully(t)
 
-	err := DeleteMetadatum(client.ServiceClient(), "1234asdf", "foo").ExtractErr()
+	err := servers.DeleteMetadatum(client.ServiceClient(), "1234asdf", "foo").ExtractErr()
 	th.AssertNoErr(t, err)
 }
 
@@ -283,7 +284,7 @@
 	HandleMetadataGetSuccessfully(t)
 
 	expected := map[string]string{"foo": "bar", "this": "that"}
-	actual, err := Metadata(client.ServiceClient(), "1234asdf").Extract()
+	actual, err := servers.Metadata(client.ServiceClient(), "1234asdf").Extract()
 	th.AssertNoErr(t, err)
 	th.AssertDeepEquals(t, expected, actual)
 }
@@ -295,7 +296,7 @@
 	HandleMetadataResetSuccessfully(t)
 
 	expected := map[string]string{"foo": "bar", "this": "that"}
-	actual, err := ResetMetadata(client.ServiceClient(), "1234asdf", MetadataOpts{
+	actual, err := servers.ResetMetadata(client.ServiceClient(), "1234asdf", servers.MetadataOpts{
 		"foo":  "bar",
 		"this": "that",
 	}).Extract()
@@ -310,7 +311,7 @@
 	HandleMetadataUpdateSuccessfully(t)
 
 	expected := map[string]string{"foo": "baz", "this": "those"}
-	actual, err := UpdateMetadata(client.ServiceClient(), "1234asdf", MetadataOpts{
+	actual, err := servers.UpdateMetadata(client.ServiceClient(), "1234asdf", servers.MetadataOpts{
 		"foo":  "baz",
 		"this": "those",
 	}).Extract()
@@ -325,10 +326,10 @@
 
 	expected := ListAddressesExpected
 	pages := 0
-	err := ListAddresses(client.ServiceClient(), "asdfasdfasdf").EachPage(func(page pagination.Page) (bool, error) {
+	err := servers.ListAddresses(client.ServiceClient(), "asdfasdfasdf").EachPage(func(page pagination.Page) (bool, error) {
 		pages++
 
-		actual, err := ExtractAddresses(page)
+		actual, err := servers.ExtractAddresses(page)
 		th.AssertNoErr(t, err)
 
 		if len(actual) != 2 {
@@ -349,10 +350,10 @@
 
 	expected := ListNetworkAddressesExpected
 	pages := 0
-	err := ListAddressesByNetwork(client.ServiceClient(), "asdfasdfasdf", "public").EachPage(func(page pagination.Page) (bool, error) {
+	err := servers.ListAddressesByNetwork(client.ServiceClient(), "asdfasdfasdf", "public").EachPage(func(page pagination.Page) (bool, error) {
 		pages++
 
-		actual, err := ExtractNetworkAddresses(page)
+		actual, err := servers.ExtractNetworkAddresses(page)
 		th.AssertNoErr(t, err)
 
 		if len(actual) != 2 {
@@ -371,7 +372,7 @@
 	defer th.TeardownHTTP()
 	HandleCreateServerImageSuccessfully(t)
 
-	_, err := CreateImage(client.ServiceClient(), "serverimage", CreateImageOpts{Name: "test"}).ExtractImageID()
+	_, err := servers.CreateImage(client.ServiceClient(), "serverimage", servers.CreateImageOpts{Name: "test"}).ExtractImageID()
 	th.AssertNoErr(t, err)
 }
 
@@ -379,8 +380,8 @@
 	name := "/etc/test"
 	contents := []byte("asdfasdf")
 
-	personality := Personality{
-		&File{
+	personality := servers.Personality{
+		&servers.File{
 			Path:     name,
 			Contents: contents,
 		},
diff --git a/openstack/compute/v2/servers/results_test.go b/openstack/compute/v2/servers/testing/results_test.go
similarity index 93%
rename from openstack/compute/v2/servers/results_test.go
rename to openstack/compute/v2/servers/testing/results_test.go
index 5b56055..e5334f0 100644
--- a/openstack/compute/v2/servers/results_test.go
+++ b/openstack/compute/v2/servers/testing/results_test.go
@@ -1,6 +1,4 @@
-// +build fixtures
-
-package servers
+package testing
 
 import (
 	"crypto/rsa"
@@ -9,6 +7,7 @@
 	"testing"
 
 	"github.com/gophercloud/gophercloud"
+	"github.com/gophercloud/gophercloud/openstack/compute/v2/servers"
 	th "github.com/gophercloud/gophercloud/testhelper"
 	"golang.org/x/crypto/ssh"
 )
@@ -21,7 +20,7 @@
 	if err != nil {
 		t.Fatalf("%s", err)
 	}
-	resp := GetPasswordResult{gophercloud.Result{Body: dejson}}
+	resp := servers.GetPasswordResult{gophercloud.Result{Body: dejson}}
 
 	pwd, err := resp.ExtractPassword(nil)
 	th.AssertEquals(t, pwd, "")
@@ -38,7 +37,7 @@
 	if err != nil {
 		t.Fatalf("%s", err)
 	}
-	resp := GetPasswordResult{gophercloud.Result{Body: dejson}}
+	resp := servers.GetPasswordResult{gophercloud.Result{Body: dejson}}
 
 	pwd, err := resp.ExtractPassword(nil)
 	th.AssertNoErr(t, err)
@@ -91,7 +90,7 @@
 	if err != nil {
 		t.Fatalf("%s", err)
 	}
-	resp := GetPasswordResult{gophercloud.Result{Body: dejson}}
+	resp := servers.GetPasswordResult{gophercloud.Result{Body: dejson}}
 
 	pwd, err := resp.ExtractPassword(privateKey.(*rsa.PrivateKey))
 	th.AssertNoErr(t, err)
