diff --git a/openstack/networking/v2/apiversions/errors.go b/openstack/networking/v2/apiversions/errors.go
deleted file mode 100644
index 76bdb14..0000000
--- a/openstack/networking/v2/apiversions/errors.go
+++ /dev/null
@@ -1 +0,0 @@
-package apiversions
diff --git a/openstack/networking/v2/apiversions/testing/doc.go b/openstack/networking/v2/apiversions/testing/doc.go
new file mode 100644
index 0000000..7603f83
--- /dev/null
+++ b/openstack/networking/v2/apiversions/testing/doc.go
@@ -0,0 +1 @@
+package testing
diff --git a/openstack/networking/v2/apiversions/requests_test.go b/openstack/networking/v2/apiversions/testing/requests_test.go
similarity index 78%
rename from openstack/networking/v2/apiversions/requests_test.go
rename to openstack/networking/v2/apiversions/testing/requests_test.go
index 375bfa6..5a66a2a 100644
--- a/openstack/networking/v2/apiversions/requests_test.go
+++ b/openstack/networking/v2/apiversions/testing/requests_test.go
@@ -1,10 +1,11 @@
-package apiversions
+package testing
 
 import (
 	"fmt"
 	"net/http"
 	"testing"
 
+	"github.com/gophercloud/gophercloud/openstack/networking/v2/apiversions"
 	"github.com/gophercloud/gophercloud/pagination"
 	th "github.com/gophercloud/gophercloud/testhelper"
 	fake "github.com/gophercloud/gophercloud/testhelper/client"
@@ -40,16 +41,16 @@
 
 	count := 0
 
-	ListVersions(fake.ServiceClient()).EachPage(func(page pagination.Page) (bool, error) {
+	apiversions.ListVersions(fake.ServiceClient()).EachPage(func(page pagination.Page) (bool, error) {
 		count++
-		actual, err := ExtractAPIVersions(page)
+		actual, err := apiversions.ExtractAPIVersions(page)
 		if err != nil {
 			t.Errorf("Failed to extract API versions: %v", err)
 			return false, err
 		}
 
-		expected := []APIVersion{
-			APIVersion{
+		expected := []apiversions.APIVersion{
+			{
 				Status: "CURRENT",
 				ID:     "v2.0",
 			},
@@ -73,8 +74,8 @@
 		w.WriteHeader(http.StatusOK)
 	})
 
-	ListVersions(fake.ServiceClient()).EachPage(func(page pagination.Page) (bool, error) {
-		if _, err := ExtractAPIVersions(page); err == nil {
+	apiversions.ListVersions(fake.ServiceClient()).EachPage(func(page pagination.Page) (bool, error) {
+		if _, err := apiversions.ExtractAPIVersions(page); err == nil {
 			t.Fatalf("Expected error, got nil")
 		}
 		return true, nil
@@ -132,24 +133,24 @@
 
 	count := 0
 
-	ListVersionResources(fake.ServiceClient(), "v2.0").EachPage(func(page pagination.Page) (bool, error) {
+	apiversions.ListVersionResources(fake.ServiceClient(), "v2.0").EachPage(func(page pagination.Page) (bool, error) {
 		count++
-		actual, err := ExtractVersionResources(page)
+		actual, err := apiversions.ExtractVersionResources(page)
 		if err != nil {
 			t.Errorf("Failed to extract version resources: %v", err)
 			return false, err
 		}
 
-		expected := []APIVersionResource{
-			APIVersionResource{
+		expected := []apiversions.APIVersionResource{
+			{
 				Name:       "subnet",
 				Collection: "subnets",
 			},
-			APIVersionResource{
+			{
 				Name:       "network",
 				Collection: "networks",
 			},
-			APIVersionResource{
+			{
 				Name:       "port",
 				Collection: "ports",
 			},
@@ -173,8 +174,8 @@
 		w.WriteHeader(http.StatusOK)
 	})
 
-	ListVersionResources(fake.ServiceClient(), "v2.0").EachPage(func(page pagination.Page) (bool, error) {
-		if _, err := ExtractVersionResources(page); err == nil {
+	apiversions.ListVersionResources(fake.ServiceClient(), "v2.0").EachPage(func(page pagination.Page) (bool, error) {
+		if _, err := apiversions.ExtractVersionResources(page); err == nil {
 			t.Fatalf("Expected error, got nil")
 		}
 		return true, nil
diff --git a/openstack/networking/v2/extensions/external/testing/doc.go b/openstack/networking/v2/extensions/external/testing/doc.go
new file mode 100644
index 0000000..7603f83
--- /dev/null
+++ b/openstack/networking/v2/extensions/external/testing/doc.go
@@ -0,0 +1 @@
+package testing
diff --git a/openstack/networking/v2/extensions/external/results_test.go b/openstack/networking/v2/extensions/external/testing/results_test.go
similarity index 89%
rename from openstack/networking/v2/extensions/external/results_test.go
rename to openstack/networking/v2/extensions/external/testing/results_test.go
index c5d72e9..2ddc3ac 100644
--- a/openstack/networking/v2/extensions/external/results_test.go
+++ b/openstack/networking/v2/extensions/external/testing/results_test.go
@@ -1,4 +1,4 @@
-package external
+package testing
 
 import (
 	"errors"
@@ -7,6 +7,7 @@
 	"testing"
 
 	"github.com/gophercloud/gophercloud"
+	"github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/external"
 	"github.com/gophercloud/gophercloud/openstack/networking/v2/networks"
 	"github.com/gophercloud/gophercloud/pagination"
 	th "github.com/gophercloud/gophercloud/testhelper"
@@ -60,14 +61,14 @@
 
 	networks.List(fake.ServiceClient(), networks.ListOpts{}).EachPage(func(page pagination.Page) (bool, error) {
 		count++
-		actual, err := ExtractList(page)
+		actual, err := external.ExtractList(page)
 		if err != nil {
 			t.Errorf("Failed to extract networks: %v", err)
 			return false, err
 		}
 
-		expected := []NetworkExternal{
-			NetworkExternal{
+		expected := []external.NetworkExternal{
+			{
 				Status:       "ACTIVE",
 				Subnets:      []string{"25778974-48a8-46e7-8998-9dc8c70d2f06"},
 				Name:         "net1",
@@ -77,7 +78,7 @@
 				ID:           "0f38d5ad-10a6-428f-a5fc-825cfe0f1970",
 				External:     false,
 			},
-			NetworkExternal{
+			{
 				Status:       "ACTIVE",
 				Subnets:      []string{"2f1fb918-9b0e-4bf9-9a50-6cebbb4db2c5"},
 				Name:         "ext_net",
@@ -129,7 +130,7 @@
 	})
 
 	res := networks.Get(fake.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22")
-	n, err := ExtractGet(res)
+	n, err := external.ExtractGet(res)
 
 	th.AssertNoErr(t, err)
 	th.AssertEquals(t, true, n.External)
@@ -175,10 +176,10 @@
 		`)
 	})
 
-	options := CreateOpts{networks.CreateOpts{Name: "ext_net", AdminStateUp: gophercloud.Enabled}, gophercloud.Enabled}
+	options := external.CreateOpts{networks.CreateOpts{Name: "ext_net", AdminStateUp: gophercloud.Enabled}, gophercloud.Enabled}
 	res := networks.Create(fake.ServiceClient(), options)
 
-	n, err := ExtractCreate(res)
+	n, err := external.ExtractCreate(res)
 
 	th.AssertNoErr(t, err)
 	th.AssertEquals(t, true, n.External)
@@ -223,9 +224,9 @@
 		`)
 	})
 
-	options := UpdateOpts{networks.UpdateOpts{Name: "new_name"}, gophercloud.Enabled}
+	options := external.UpdateOpts{networks.UpdateOpts{Name: "new_name"}, gophercloud.Enabled}
 	res := networks.Update(fake.ServiceClient(), "4e8e5957-649f-477b-9e5b-f1f75b21c03c", options)
-	n, err := ExtractUpdate(res)
+	n, err := external.ExtractUpdate(res)
 
 	th.AssertNoErr(t, err)
 	th.AssertEquals(t, true, n.External)
@@ -235,21 +236,21 @@
 	gr := networks.GetResult{}
 	gr.Err = errors.New("")
 
-	if _, err := ExtractGet(gr); err == nil {
+	if _, err := external.ExtractGet(gr); err == nil {
 		t.Fatalf("Expected error, got one")
 	}
 
 	ur := networks.UpdateResult{}
 	ur.Err = errors.New("")
 
-	if _, err := ExtractUpdate(ur); err == nil {
+	if _, err := external.ExtractUpdate(ur); err == nil {
 		t.Fatalf("Expected error, got one")
 	}
 
 	cr := networks.CreateResult{}
 	cr.Err = errors.New("")
 
-	if _, err := ExtractCreate(cr); err == nil {
+	if _, err := external.ExtractCreate(cr); err == nil {
 		t.Fatalf("Expected error, got one")
 	}
 }
diff --git a/openstack/networking/v2/extensions/fwaas/firewalls/testing/doc.go b/openstack/networking/v2/extensions/fwaas/firewalls/testing/doc.go
new file mode 100644
index 0000000..7603f83
--- /dev/null
+++ b/openstack/networking/v2/extensions/fwaas/firewalls/testing/doc.go
@@ -0,0 +1 @@
+package testing
diff --git a/openstack/networking/v2/extensions/fwaas/firewalls/requests_test.go b/openstack/networking/v2/extensions/fwaas/firewalls/testing/requests_test.go
similarity index 89%
rename from openstack/networking/v2/extensions/fwaas/firewalls/requests_test.go
rename to openstack/networking/v2/extensions/fwaas/firewalls/testing/requests_test.go
index 29a7832..01ab732 100644
--- a/openstack/networking/v2/extensions/fwaas/firewalls/requests_test.go
+++ b/openstack/networking/v2/extensions/fwaas/firewalls/testing/requests_test.go
@@ -1,4 +1,4 @@
-package firewalls
+package testing
 
 import (
 	"fmt"
@@ -7,17 +7,11 @@
 
 	"github.com/gophercloud/gophercloud"
 	fake "github.com/gophercloud/gophercloud/openstack/networking/v2/common"
+	"github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/fwaas/firewalls"
 	"github.com/gophercloud/gophercloud/pagination"
 	th "github.com/gophercloud/gophercloud/testhelper"
 )
 
-func TestURLs(t *testing.T) {
-	th.SetupHTTP()
-	defer th.TeardownHTTP()
-
-	th.AssertEquals(t, th.Endpoint()+"v2.0/fw/firewalls", rootURL(fake.ServiceClient()))
-}
-
 func TestList(t *testing.T) {
 	th.SetupHTTP()
 	defer th.TeardownHTTP()
@@ -57,16 +51,16 @@
 
 	count := 0
 
-	List(fake.ServiceClient(), ListOpts{}).EachPage(func(page pagination.Page) (bool, error) {
+	firewalls.List(fake.ServiceClient(), firewalls.ListOpts{}).EachPage(func(page pagination.Page) (bool, error) {
 		count++
-		actual, err := ExtractFirewalls(page)
+		actual, err := firewalls.ExtractFirewalls(page)
 		if err != nil {
 			t.Errorf("Failed to extract members: %v", err)
 			return false, err
 		}
 
-		expected := []Firewall{
-			Firewall{
+		expected := []firewalls.Firewall{
+			{
 				Status:       "ACTIVE",
 				Name:         "fw1",
 				AdminStateUp: false,
@@ -75,7 +69,7 @@
 				ID:           "fb5b5315-64f6-4ea3-8e58-981cc37c6f61",
 				Description:  "OpenStack firewall 1",
 			},
-			Firewall{
+			{
 				Status:       "PENDING_UPDATE",
 				Name:         "fw2",
 				AdminStateUp: true,
@@ -134,14 +128,14 @@
     `)
 	})
 
-	options := CreateOpts{
+	options := firewalls.CreateOpts{
 		TenantID:     "b4eedccc6fb74fa8a7ad6b08382b852b",
 		Name:         "fw",
 		Description:  "OpenStack firewall",
 		AdminStateUp: gophercloud.Enabled,
 		PolicyID:     "19ab8c87-4a32-4e6a-a74e-b77fffb89a0c",
 	}
-	_, err := Create(fake.ServiceClient(), options).Extract()
+	_, err := firewalls.Create(fake.ServiceClient(), options).Extract()
 	th.AssertNoErr(t, err)
 }
 
@@ -171,7 +165,7 @@
         `)
 	})
 
-	fw, err := Get(fake.ServiceClient(), "fb5b5315-64f6-4ea3-8e58-981cc37c6f61").Extract()
+	fw, err := firewalls.Get(fake.ServiceClient(), "fb5b5315-64f6-4ea3-8e58-981cc37c6f61").Extract()
 	th.AssertNoErr(t, err)
 
 	th.AssertEquals(t, "ACTIVE", fw.Status)
@@ -221,14 +215,14 @@
     `)
 	})
 
-	options := UpdateOpts{
+	options := firewalls.UpdateOpts{
 		Name:         "fw",
 		Description:  "updated fw",
 		AdminStateUp: gophercloud.Disabled,
 		PolicyID:     "19ab8c87-4a32-4e6a-a74e-b77fffb89a0c",
 	}
 
-	_, err := Update(fake.ServiceClient(), "ea5b5315-64f6-4ea3-8e58-981cc37c6576", options).Extract()
+	_, err := firewalls.Update(fake.ServiceClient(), "ea5b5315-64f6-4ea3-8e58-981cc37c6576", options).Extract()
 	th.AssertNoErr(t, err)
 }
 
@@ -242,6 +236,6 @@
 		w.WriteHeader(http.StatusNoContent)
 	})
 
-	res := Delete(fake.ServiceClient(), "4ec89087-d057-4e2c-911f-60a3b47ee304")
+	res := firewalls.Delete(fake.ServiceClient(), "4ec89087-d057-4e2c-911f-60a3b47ee304")
 	th.AssertNoErr(t, res.Err)
 }
diff --git a/openstack/networking/v2/extensions/fwaas/policies/testing/doc.go b/openstack/networking/v2/extensions/fwaas/policies/testing/doc.go
new file mode 100644
index 0000000..7603f83
--- /dev/null
+++ b/openstack/networking/v2/extensions/fwaas/policies/testing/doc.go
@@ -0,0 +1 @@
+package testing
diff --git a/openstack/networking/v2/extensions/fwaas/policies/requests_test.go b/openstack/networking/v2/extensions/fwaas/policies/testing/requests_test.go
similarity index 90%
rename from openstack/networking/v2/extensions/fwaas/policies/requests_test.go
rename to openstack/networking/v2/extensions/fwaas/policies/testing/requests_test.go
index 23d6a66..11b9848 100644
--- a/openstack/networking/v2/extensions/fwaas/policies/requests_test.go
+++ b/openstack/networking/v2/extensions/fwaas/policies/testing/requests_test.go
@@ -1,4 +1,4 @@
-package policies
+package testing
 
 import (
 	"fmt"
@@ -7,17 +7,11 @@
 
 	"github.com/gophercloud/gophercloud"
 	fake "github.com/gophercloud/gophercloud/openstack/networking/v2/common"
+	"github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/fwaas/policies"
 	"github.com/gophercloud/gophercloud/pagination"
 	th "github.com/gophercloud/gophercloud/testhelper"
 )
 
-func TestURLs(t *testing.T) {
-	th.SetupHTTP()
-	defer th.TeardownHTTP()
-
-	th.AssertEquals(t, th.Endpoint()+"v2.0/fw/firewall_policies", rootURL(fake.ServiceClient()))
-}
-
 func TestList(t *testing.T) {
 	th.SetupHTTP()
 	defer th.TeardownHTTP()
@@ -62,16 +56,16 @@
 
 	count := 0
 
-	List(fake.ServiceClient(), ListOpts{}).EachPage(func(page pagination.Page) (bool, error) {
+	policies.List(fake.ServiceClient(), policies.ListOpts{}).EachPage(func(page pagination.Page) (bool, error) {
 		count++
-		actual, err := ExtractPolicies(page)
+		actual, err := policies.ExtractPolicies(page)
 		if err != nil {
 			t.Errorf("Failed to extract members: %v", err)
 			return false, err
 		}
 
-		expected := []Policy{
-			Policy{
+		expected := []policies.Policy{
+			{
 				Name: "policy1",
 				Rules: []string{
 					"75452b36-268e-4e75-aaf4-f0e7ed50bc97",
@@ -83,7 +77,7 @@
 				ID:          "f2b08c1e-aa81-4668-8ae1-1401bcb0576c",
 				Description: "Firewall policy 1",
 			},
-			Policy{
+			{
 				Name: "policy2",
 				Rules: []string{
 					"03d2a6ad-633f-431a-8463-4370d06a22c8",
@@ -151,7 +145,7 @@
         `)
 	})
 
-	options := CreateOpts{
+	options := policies.CreateOpts{
 		TenantID:    "9145d91459d248b1b02fdaca97c6a75d",
 		Name:        "policy",
 		Description: "Firewall policy",
@@ -163,7 +157,7 @@
 		},
 	}
 
-	_, err := Create(fake.ServiceClient(), options).Extract()
+	_, err := policies.Create(fake.ServiceClient(), options).Extract()
 	th.AssertNoErr(t, err)
 }
 
@@ -196,7 +190,7 @@
         `)
 	})
 
-	policy, err := Get(fake.ServiceClient(), "bcab5315-64f6-4ea3-8e58-981cc37c6f61").Extract()
+	policy, err := policies.Get(fake.ServiceClient(), "bcab5315-64f6-4ea3-8e58-981cc37c6f61").Extract()
 	th.AssertNoErr(t, err)
 
 	th.AssertEquals(t, "www", policy.Name)
@@ -252,7 +246,7 @@
     `)
 	})
 
-	options := UpdateOpts{
+	options := policies.UpdateOpts{
 		Name:        "policy",
 		Description: "Firewall policy",
 		Rules: []string{
@@ -261,7 +255,7 @@
 		},
 	}
 
-	_, err := Update(fake.ServiceClient(), "f2b08c1e-aa81-4668-8ae1-1401bcb0576c", options).Extract()
+	_, err := policies.Update(fake.ServiceClient(), "f2b08c1e-aa81-4668-8ae1-1401bcb0576c", options).Extract()
 	th.AssertNoErr(t, err)
 }
 
@@ -275,6 +269,6 @@
 		w.WriteHeader(http.StatusNoContent)
 	})
 
-	res := Delete(fake.ServiceClient(), "4ec89077-d057-4a2b-911f-60a3b47ee304")
+	res := policies.Delete(fake.ServiceClient(), "4ec89077-d057-4a2b-911f-60a3b47ee304")
 	th.AssertNoErr(t, res.Err)
 }
diff --git a/openstack/networking/v2/extensions/fwaas/rules/testing/doc.go b/openstack/networking/v2/extensions/fwaas/rules/testing/doc.go
new file mode 100644
index 0000000..7603f83
--- /dev/null
+++ b/openstack/networking/v2/extensions/fwaas/rules/testing/doc.go
@@ -0,0 +1 @@
+package testing
diff --git a/openstack/networking/v2/extensions/fwaas/rules/requests_test.go b/openstack/networking/v2/extensions/fwaas/rules/testing/requests_test.go
similarity index 91%
rename from openstack/networking/v2/extensions/fwaas/rules/requests_test.go
rename to openstack/networking/v2/extensions/fwaas/rules/testing/requests_test.go
index 4ca73e7..dbf377a 100644
--- a/openstack/networking/v2/extensions/fwaas/rules/requests_test.go
+++ b/openstack/networking/v2/extensions/fwaas/rules/testing/requests_test.go
@@ -1,4 +1,4 @@
-package rules
+package testing
 
 import (
 	"fmt"
@@ -7,17 +7,11 @@
 
 	"github.com/gophercloud/gophercloud"
 	fake "github.com/gophercloud/gophercloud/openstack/networking/v2/common"
+	"github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/fwaas/rules"
 	"github.com/gophercloud/gophercloud/pagination"
 	th "github.com/gophercloud/gophercloud/testhelper"
 )
 
-func TestURLs(t *testing.T) {
-	th.SetupHTTP()
-	defer th.TeardownHTTP()
-
-	th.AssertEquals(t, th.Endpoint()+"v2.0/fw/firewall_rules", rootURL(fake.ServiceClient()))
-}
-
 func TestList(t *testing.T) {
 	th.SetupHTTP()
 	defer th.TeardownHTTP()
@@ -73,16 +67,16 @@
 
 	count := 0
 
-	List(fake.ServiceClient(), ListOpts{}).EachPage(func(page pagination.Page) (bool, error) {
+	rules.List(fake.ServiceClient(), rules.ListOpts{}).EachPage(func(page pagination.Page) (bool, error) {
 		count++
-		actual, err := ExtractRules(page)
+		actual, err := rules.ExtractRules(page)
 		if err != nil {
 			t.Errorf("Failed to extract members: %v", err)
 			return false, err
 		}
 
-		expected := []Rule{
-			Rule{
+		expected := []rules.Rule{
+			{
 				Protocol:             "tcp",
 				Description:          "ssh rule",
 				SourcePort:           "",
@@ -99,7 +93,7 @@
 				IPVersion:            4,
 				Shared:               false,
 			},
-			Rule{
+			{
 				Protocol:             "udp",
 				Description:          "udp rule",
 				SourcePort:           "",
@@ -177,7 +171,7 @@
         `)
 	})
 
-	options := CreateOpts{
+	options := rules.CreateOpts{
 		TenantID:             "80cf934d6ffb4ef5b244f1c512ad1e61",
 		Protocol:             "tcp",
 		Description:          "ssh rule",
@@ -187,7 +181,7 @@
 		Action:               "allow",
 	}
 
-	_, err := Create(fake.ServiceClient(), options).Extract()
+	_, err := rules.Create(fake.ServiceClient(), options).Extract()
 	th.AssertNoErr(t, err)
 }
 
@@ -225,7 +219,7 @@
         `)
 	})
 
-	rule, err := Get(fake.ServiceClient(), "f03bd950-6c56-4f5e-a307-45967078f507").Extract()
+	rule, err := rules.Get(fake.ServiceClient(), "f03bd950-6c56-4f5e-a307-45967078f507").Extract()
 	th.AssertNoErr(t, err)
 
 	th.AssertEquals(t, "tcp", rule.Protocol)
@@ -297,7 +291,7 @@
 	newName := "ssh_form_any"
 	newAction := "allow"
 
-	options := UpdateOpts{
+	options := rules.UpdateOpts{
 		Protocol:             &newProtocol,
 		Description:          &newDescription,
 		DestinationIPAddress: &newDestinationIP,
@@ -307,7 +301,7 @@
 		Enabled:              gophercloud.Disabled,
 	}
 
-	_, err := Update(fake.ServiceClient(), "f03bd950-6c56-4f5e-a307-45967078f507", options).Extract()
+	_, err := rules.Update(fake.ServiceClient(), "f03bd950-6c56-4f5e-a307-45967078f507", options).Extract()
 	th.AssertNoErr(t, err)
 }
 
@@ -321,6 +315,6 @@
 		w.WriteHeader(http.StatusNoContent)
 	})
 
-	res := Delete(fake.ServiceClient(), "4ec89077-d057-4a2b-911f-60a3b47ee304")
+	res := rules.Delete(fake.ServiceClient(), "4ec89077-d057-4a2b-911f-60a3b47ee304")
 	th.AssertNoErr(t, res.Err)
 }
diff --git a/openstack/networking/v2/extensions/layer3/floatingips/testing/doc.go b/openstack/networking/v2/extensions/layer3/floatingips/testing/doc.go
new file mode 100644
index 0000000..7603f83
--- /dev/null
+++ b/openstack/networking/v2/extensions/layer3/floatingips/testing/doc.go
@@ -0,0 +1 @@
+package testing
diff --git a/openstack/networking/v2/extensions/layer3/floatingips/requests_test.go b/openstack/networking/v2/extensions/layer3/floatingips/testing/requests_test.go
similarity index 87%
rename from openstack/networking/v2/extensions/layer3/floatingips/requests_test.go
rename to openstack/networking/v2/extensions/layer3/floatingips/testing/requests_test.go
index 3e9a91f..45f27eb 100644
--- a/openstack/networking/v2/extensions/layer3/floatingips/requests_test.go
+++ b/openstack/networking/v2/extensions/layer3/floatingips/testing/requests_test.go
@@ -1,4 +1,4 @@
-package floatingips
+package testing
 
 import (
 	"fmt"
@@ -6,6 +6,7 @@
 	"testing"
 
 	fake "github.com/gophercloud/gophercloud/openstack/networking/v2/common"
+	"github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/layer3/floatingips"
 	"github.com/gophercloud/gophercloud/pagination"
 	th "github.com/gophercloud/gophercloud/testhelper"
 )
@@ -51,16 +52,16 @@
 
 	count := 0
 
-	List(fake.ServiceClient(), ListOpts{}).EachPage(func(page pagination.Page) (bool, error) {
+	floatingips.List(fake.ServiceClient(), floatingips.ListOpts{}).EachPage(func(page pagination.Page) (bool, error) {
 		count++
-		actual, err := ExtractFloatingIPs(page)
+		actual, err := floatingips.ExtractFloatingIPs(page)
 		if err != nil {
 			t.Errorf("Failed to extract floating IPs: %v", err)
 			return false, err
 		}
 
-		expected := []FloatingIP{
-			FloatingIP{
+		expected := []floatingips.FloatingIP{
+			{
 				FloatingNetworkID: "6d67c30a-ddb4-49a1-bec3-a65b286b4170",
 				FixedIP:           "",
 				FloatingIP:        "192.0.0.4",
@@ -69,7 +70,7 @@
 				PortID:            "",
 				ID:                "2f95fd2b-9f6a-4e8e-9e9a-2cbe286cbf9e",
 			},
-			FloatingIP{
+			{
 				FloatingNetworkID: "90f742b1-6d17-487b-ba95-71881dbc0b64",
 				FixedIP:           "192.0.0.2",
 				FloatingIP:        "10.0.0.3",
@@ -100,19 +101,19 @@
 		fmt.Fprintf(w, `{"floatingips": [{}], "floatingips_links": {}}`)
 	})
 
-	List(fake.ServiceClient(), ListOpts{}).EachPage(func(page pagination.Page) (bool, error) {
-		ExtractFloatingIPs(page)
+	floatingips.List(fake.ServiceClient(), floatingips.ListOpts{}).EachPage(func(page pagination.Page) (bool, error) {
+		floatingips.ExtractFloatingIPs(page)
 		return true, nil
 	})
 }
 
 func TestRequiredFieldsForCreate(t *testing.T) {
-	res1 := Create(fake.ServiceClient(), CreateOpts{FloatingNetworkID: ""})
+	res1 := floatingips.Create(fake.ServiceClient(), floatingips.CreateOpts{FloatingNetworkID: ""})
 	if res1.Err == nil {
 		t.Fatalf("Expected error, got none")
 	}
 
-	res2 := Create(fake.ServiceClient(), CreateOpts{FloatingNetworkID: "foo", PortID: ""})
+	res2 := floatingips.Create(fake.ServiceClient(), floatingips.CreateOpts{FloatingNetworkID: "foo", PortID: ""})
 	if res2.Err == nil {
 		t.Fatalf("Expected error, got none")
 	}
@@ -154,12 +155,12 @@
 		`)
 	})
 
-	options := CreateOpts{
+	options := floatingips.CreateOpts{
 		FloatingNetworkID: "376da547-b977-4cfe-9cba-275c80debf57",
 		PortID:            "ce705c24-c1ef-408a-bda3-7bbd946164ab",
 	}
 
-	ip, err := Create(fake.ServiceClient(), options).Extract()
+	ip, err := floatingips.Create(fake.ServiceClient(), options).Extract()
 	th.AssertNoErr(t, err)
 
 	th.AssertEquals(t, "2f245a7b-796b-4f26-9cf9-9e82d248fda7", ip.ID)
@@ -204,11 +205,11 @@
 				`)
 	})
 
-	options := CreateOpts{
+	options := floatingips.CreateOpts{
 		FloatingNetworkID: "376da547-b977-4cfe-9cba-275c80debf57",
 	}
 
-	ip, err := Create(fake.ServiceClient(), options).Extract()
+	ip, err := floatingips.Create(fake.ServiceClient(), options).Extract()
 	th.AssertNoErr(t, err)
 
 	th.AssertEquals(t, "2f245a7b-796b-4f26-9cf9-9e82d248fda7", ip.ID)
@@ -245,7 +246,7 @@
       `)
 	})
 
-	ip, err := Get(fake.ServiceClient(), "2f245a7b-796b-4f26-9cf9-9e82d248fda7").Extract()
+	ip, err := floatingips.Get(fake.ServiceClient(), "2f245a7b-796b-4f26-9cf9-9e82d248fda7").Extract()
 	th.AssertNoErr(t, err)
 
 	th.AssertEquals(t, "90f742b1-6d17-487b-ba95-71881dbc0b64", ip.FloatingNetworkID)
@@ -292,7 +293,7 @@
 	`)
 	})
 
-	ip, err := Update(fake.ServiceClient(), "2f245a7b-796b-4f26-9cf9-9e82d248fda7", UpdateOpts{PortID: "423abc8d-2991-4a55-ba98-2aaea84cc72e"}).Extract()
+	ip, err := floatingips.Update(fake.ServiceClient(), "2f245a7b-796b-4f26-9cf9-9e82d248fda7", floatingips.UpdateOpts{PortID: "423abc8d-2991-4a55-ba98-2aaea84cc72e"}).Extract()
 	th.AssertNoErr(t, err)
 
 	th.AssertDeepEquals(t, "423abc8d-2991-4a55-ba98-2aaea84cc72e", ip.PortID)
@@ -333,7 +334,7 @@
     `)
 	})
 
-	ip, err := Update(fake.ServiceClient(), "2f245a7b-796b-4f26-9cf9-9e82d248fda7", UpdateOpts{}).Extract()
+	ip, err := floatingips.Update(fake.ServiceClient(), "2f245a7b-796b-4f26-9cf9-9e82d248fda7", floatingips.UpdateOpts{}).Extract()
 	th.AssertNoErr(t, err)
 
 	th.AssertDeepEquals(t, "", ip.FixedIP)
@@ -350,6 +351,6 @@
 		w.WriteHeader(http.StatusNoContent)
 	})
 
-	res := Delete(fake.ServiceClient(), "2f245a7b-796b-4f26-9cf9-9e82d248fda7")
+	res := floatingips.Delete(fake.ServiceClient(), "2f245a7b-796b-4f26-9cf9-9e82d248fda7")
 	th.AssertNoErr(t, res.Err)
 }
diff --git a/openstack/networking/v2/extensions/layer3/routers/testing/doc.go b/openstack/networking/v2/extensions/layer3/routers/testing/doc.go
new file mode 100644
index 0000000..7603f83
--- /dev/null
+++ b/openstack/networking/v2/extensions/layer3/routers/testing/doc.go
@@ -0,0 +1 @@
+package testing
diff --git a/openstack/networking/v2/extensions/layer3/routers/requests_test.go b/openstack/networking/v2/extensions/layer3/routers/testing/requests_test.go
similarity index 79%
rename from openstack/networking/v2/extensions/layer3/routers/requests_test.go
rename to openstack/networking/v2/extensions/layer3/routers/testing/requests_test.go
index c6cd7b3..bf7f35e 100644
--- a/openstack/networking/v2/extensions/layer3/routers/requests_test.go
+++ b/openstack/networking/v2/extensions/layer3/routers/testing/requests_test.go
@@ -1,4 +1,4 @@
-package routers
+package testing
 
 import (
 	"fmt"
@@ -6,17 +6,11 @@
 	"testing"
 
 	fake "github.com/gophercloud/gophercloud/openstack/networking/v2/common"
+	"github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/layer3/routers"
 	"github.com/gophercloud/gophercloud/pagination"
 	th "github.com/gophercloud/gophercloud/testhelper"
 )
 
-func TestURLs(t *testing.T) {
-	th.SetupHTTP()
-	defer th.TeardownHTTP()
-
-	th.AssertEquals(t, th.Endpoint()+"v2.0/routers", rootURL(fake.ServiceClient()))
-}
-
 func TestList(t *testing.T) {
 	th.SetupHTTP()
 	defer th.TeardownHTTP()
@@ -58,27 +52,27 @@
 
 	count := 0
 
-	List(fake.ServiceClient(), ListOpts{}).EachPage(func(page pagination.Page) (bool, error) {
+	routers.List(fake.ServiceClient(), routers.ListOpts{}).EachPage(func(page pagination.Page) (bool, error) {
 		count++
-		actual, err := ExtractRouters(page)
+		actual, err := routers.ExtractRouters(page)
 		if err != nil {
 			t.Errorf("Failed to extract routers: %v", err)
 			return false, err
 		}
 
-		expected := []Router{
-			Router{
+		expected := []routers.Router{
+			{
 				Status:       "ACTIVE",
-				GatewayInfo:  GatewayInfo{NetworkID: ""},
+				GatewayInfo:  routers.GatewayInfo{NetworkID: ""},
 				AdminStateUp: true,
 				Distributed:  false,
 				Name:         "second_routers",
 				ID:           "7177abc4-5ae9-4bb7-b0d4-89e94a4abf3b",
 				TenantID:     "6b96ff0cb17a4b859e1e575d221683d3",
 			},
-			Router{
+			{
 				Status:       "ACTIVE",
-				GatewayInfo:  GatewayInfo{NetworkID: "3c5bcddd-6af9-4e6b-9c3e-c153e521cab8"},
+				GatewayInfo:  routers.GatewayInfo{NetworkID: "3c5bcddd-6af9-4e6b-9c3e-c153e521cab8"},
 				AdminStateUp: true,
 				Distributed:  false,
 				Name:         "router1",
@@ -139,19 +133,19 @@
 	})
 
 	asu := false
-	gwi := GatewayInfo{NetworkID: "8ca37218-28ff-41cb-9b10-039601ea7e6b"}
+	gwi := routers.GatewayInfo{NetworkID: "8ca37218-28ff-41cb-9b10-039601ea7e6b"}
 
-	options := CreateOpts{
+	options := routers.CreateOpts{
 		Name:         "foo_router",
 		AdminStateUp: &asu,
 		GatewayInfo:  &gwi,
 	}
-	r, err := Create(fake.ServiceClient(), options).Extract()
+	r, err := routers.Create(fake.ServiceClient(), options).Extract()
 	th.AssertNoErr(t, err)
 
 	th.AssertEquals(t, "foo_router", r.Name)
 	th.AssertEquals(t, false, r.AdminStateUp)
-	th.AssertDeepEquals(t, GatewayInfo{NetworkID: "8ca37218-28ff-41cb-9b10-039601ea7e6b"}, r.GatewayInfo)
+	th.AssertDeepEquals(t, routers.GatewayInfo{NetworkID: "8ca37218-28ff-41cb-9b10-039601ea7e6b"}, r.GatewayInfo)
 }
 
 func TestGet(t *testing.T) {
@@ -188,16 +182,16 @@
 			`)
 	})
 
-	n, err := Get(fake.ServiceClient(), "a07eea83-7710-4860-931b-5fe220fae533").Extract()
+	n, err := routers.Get(fake.ServiceClient(), "a07eea83-7710-4860-931b-5fe220fae533").Extract()
 	th.AssertNoErr(t, err)
 
 	th.AssertEquals(t, n.Status, "ACTIVE")
-	th.AssertDeepEquals(t, n.GatewayInfo, GatewayInfo{NetworkID: "85d76829-6415-48ff-9c63-5c5ca8c61ac6"})
+	th.AssertDeepEquals(t, n.GatewayInfo, routers.GatewayInfo{NetworkID: "85d76829-6415-48ff-9c63-5c5ca8c61ac6"})
 	th.AssertEquals(t, n.Name, "router1")
 	th.AssertEquals(t, n.AdminStateUp, true)
 	th.AssertEquals(t, n.TenantID, "d6554fe62e2f41efbb6e026fad5c1542")
 	th.AssertEquals(t, n.ID, "a07eea83-7710-4860-931b-5fe220fae533")
-	th.AssertDeepEquals(t, n.Routes, []Route{Route{DestinationCIDR: "40.0.1.0/24", NextHop: "10.1.0.10"}})
+	th.AssertDeepEquals(t, n.Routes, []routers.Route{{DestinationCIDR: "40.0.1.0/24", NextHop: "10.1.0.10"}})
 }
 
 func TestUpdate(t *testing.T) {
@@ -252,16 +246,16 @@
 		`)
 	})
 
-	gwi := GatewayInfo{NetworkID: "8ca37218-28ff-41cb-9b10-039601ea7e6b"}
-	r := []Route{Route{DestinationCIDR: "40.0.1.0/24", NextHop: "10.1.0.10"}}
-	options := UpdateOpts{Name: "new_name", GatewayInfo: &gwi, Routes: r}
+	gwi := routers.GatewayInfo{NetworkID: "8ca37218-28ff-41cb-9b10-039601ea7e6b"}
+	r := []routers.Route{{DestinationCIDR: "40.0.1.0/24", NextHop: "10.1.0.10"}}
+	options := routers.UpdateOpts{Name: "new_name", GatewayInfo: &gwi, Routes: r}
 
-	n, err := Update(fake.ServiceClient(), "4e8e5957-649f-477b-9e5b-f1f75b21c03c", options).Extract()
+	n, err := routers.Update(fake.ServiceClient(), "4e8e5957-649f-477b-9e5b-f1f75b21c03c", options).Extract()
 	th.AssertNoErr(t, err)
 
 	th.AssertEquals(t, n.Name, "new_name")
-	th.AssertDeepEquals(t, n.GatewayInfo, GatewayInfo{NetworkID: "8ca37218-28ff-41cb-9b10-039601ea7e6b"})
-	th.AssertDeepEquals(t, n.Routes, []Route{Route{DestinationCIDR: "40.0.1.0/24", NextHop: "10.1.0.10"}})
+	th.AssertDeepEquals(t, n.GatewayInfo, routers.GatewayInfo{NetworkID: "8ca37218-28ff-41cb-9b10-039601ea7e6b"})
+	th.AssertDeepEquals(t, n.Routes, []routers.Route{{DestinationCIDR: "40.0.1.0/24", NextHop: "10.1.0.10"}})
 }
 
 func TestAllRoutesRemoved(t *testing.T) {
@@ -302,13 +296,13 @@
 		`)
 	})
 
-	r := []Route{}
-	options := UpdateOpts{Routes: r}
+	r := []routers.Route{}
+	options := routers.UpdateOpts{Routes: r}
 
-	n, err := Update(fake.ServiceClient(), "4e8e5957-649f-477b-9e5b-f1f75b21c03c", options).Extract()
+	n, err := routers.Update(fake.ServiceClient(), "4e8e5957-649f-477b-9e5b-f1f75b21c03c", options).Extract()
 	th.AssertNoErr(t, err)
 
-	th.AssertDeepEquals(t, n.Routes, []Route{})
+	th.AssertDeepEquals(t, n.Routes, []routers.Route{})
 }
 
 func TestDelete(t *testing.T) {
@@ -321,7 +315,7 @@
 		w.WriteHeader(http.StatusNoContent)
 	})
 
-	res := Delete(fake.ServiceClient(), "4e8e5957-649f-477b-9e5b-f1f75b21c03c")
+	res := routers.Delete(fake.ServiceClient(), "4e8e5957-649f-477b-9e5b-f1f75b21c03c")
 	th.AssertNoErr(t, res.Err)
 }
 
@@ -353,8 +347,8 @@
 `)
 	})
 
-	opts := AddInterfaceOpts{SubnetID: "a2f1f29d-571b-4533-907f-5803ab96ead1"}
-	res, err := AddInterface(fake.ServiceClient(), "4e8e5957-649f-477b-9e5b-f1f75b21c03c", opts).Extract()
+	opts := routers.AddInterfaceOpts{SubnetID: "a2f1f29d-571b-4533-907f-5803ab96ead1"}
+	res, err := routers.AddInterface(fake.ServiceClient(), "4e8e5957-649f-477b-9e5b-f1f75b21c03c", opts).Extract()
 	th.AssertNoErr(t, err)
 
 	th.AssertEquals(t, "0d32a837-8069-4ec3-84c4-3eef3e10b188", res.SubnetID)
@@ -364,11 +358,11 @@
 }
 
 func TestAddInterfaceRequiredOpts(t *testing.T) {
-	_, err := AddInterface(fake.ServiceClient(), "foo", AddInterfaceOpts{}).Extract()
+	_, err := routers.AddInterface(fake.ServiceClient(), "foo", routers.AddInterfaceOpts{}).Extract()
 	if err == nil {
 		t.Fatalf("Expected error, got none")
 	}
-	_, err = AddInterface(fake.ServiceClient(), "foo", AddInterfaceOpts{SubnetID: "bar", PortID: "baz"}).Extract()
+	_, err = routers.AddInterface(fake.ServiceClient(), "foo", routers.AddInterfaceOpts{SubnetID: "bar", PortID: "baz"}).Extract()
 	if err == nil {
 		t.Fatalf("Expected error, got none")
 	}
@@ -402,8 +396,8 @@
 `)
 	})
 
-	opts := RemoveInterfaceOpts{SubnetID: "a2f1f29d-571b-4533-907f-5803ab96ead1"}
-	res, err := RemoveInterface(fake.ServiceClient(), "4e8e5957-649f-477b-9e5b-f1f75b21c03c", opts).Extract()
+	opts := routers.RemoveInterfaceOpts{SubnetID: "a2f1f29d-571b-4533-907f-5803ab96ead1"}
+	res, err := routers.RemoveInterface(fake.ServiceClient(), "4e8e5957-649f-477b-9e5b-f1f75b21c03c", opts).Extract()
 	th.AssertNoErr(t, err)
 
 	th.AssertEquals(t, "0d32a837-8069-4ec3-84c4-3eef3e10b188", res.SubnetID)
diff --git a/openstack/networking/v2/extensions/lbaas/members/testing/doc.go b/openstack/networking/v2/extensions/lbaas/members/testing/doc.go
new file mode 100644
index 0000000..7603f83
--- /dev/null
+++ b/openstack/networking/v2/extensions/lbaas/members/testing/doc.go
@@ -0,0 +1 @@
+package testing
diff --git a/openstack/networking/v2/extensions/lbaas/members/requests_test.go b/openstack/networking/v2/extensions/lbaas/members/testing/requests_test.go
similarity index 87%
rename from openstack/networking/v2/extensions/lbaas/members/requests_test.go
rename to openstack/networking/v2/extensions/lbaas/members/testing/requests_test.go
index 27593e7..3e4f1d4 100644
--- a/openstack/networking/v2/extensions/lbaas/members/requests_test.go
+++ b/openstack/networking/v2/extensions/lbaas/members/testing/requests_test.go
@@ -1,4 +1,4 @@
-package members
+package testing
 
 import (
 	"fmt"
@@ -7,17 +7,11 @@
 
 	"github.com/gophercloud/gophercloud"
 	fake "github.com/gophercloud/gophercloud/openstack/networking/v2/common"
+	"github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/lbaas/members"
 	"github.com/gophercloud/gophercloud/pagination"
 	th "github.com/gophercloud/gophercloud/testhelper"
 )
 
-func TestURLs(t *testing.T) {
-	th.SetupHTTP()
-	defer th.TeardownHTTP()
-
-	th.AssertEquals(t, th.Endpoint()+"v2.0/lb/members", rootURL(fake.ServiceClient()))
-}
-
 func TestList(t *testing.T) {
 	th.SetupHTTP()
 	defer th.TeardownHTTP()
@@ -59,16 +53,16 @@
 
 	count := 0
 
-	List(fake.ServiceClient(), ListOpts{}).EachPage(func(page pagination.Page) (bool, error) {
+	members.List(fake.ServiceClient(), members.ListOpts{}).EachPage(func(page pagination.Page) (bool, error) {
 		count++
-		actual, err := ExtractMembers(page)
+		actual, err := members.ExtractMembers(page)
 		if err != nil {
 			t.Errorf("Failed to extract members: %v", err)
 			return false, err
 		}
 
-		expected := []Member{
-			Member{
+		expected := []members.Member{
+			{
 				Status:       "ACTIVE",
 				Weight:       1,
 				AdminStateUp: true,
@@ -78,7 +72,7 @@
 				ProtocolPort: 80,
 				ID:           "701b531b-111a-4f21-ad85-4795b7b12af6",
 			},
-			Member{
+			{
 				Status:       "ACTIVE",
 				Weight:       1,
 				AdminStateUp: true,
@@ -138,13 +132,13 @@
     `)
 	})
 
-	options := CreateOpts{
+	options := members.CreateOpts{
 		TenantID:     "453105b9-1754-413f-aab1-55f1af620750",
 		Address:      "192.0.2.14",
 		ProtocolPort: 8080,
 		PoolID:       "foo",
 	}
-	_, err := Create(fake.ServiceClient(), options).Extract()
+	_, err := members.Create(fake.ServiceClient(), options).Extract()
 	th.AssertNoErr(t, err)
 }
 
@@ -174,7 +168,7 @@
       `)
 	})
 
-	m, err := Get(fake.ServiceClient(), "975592ca-e308-48ad-8298-731935ee9f45").Extract()
+	m, err := members.Get(fake.ServiceClient(), "975592ca-e308-48ad-8298-731935ee9f45").Extract()
 	th.AssertNoErr(t, err)
 
 	th.AssertEquals(t, "975592ca-e308-48ad-8298-731935ee9f45", m.ID)
@@ -223,9 +217,9 @@
     `)
 	})
 
-	options := UpdateOpts{AdminStateUp: gophercloud.Disabled}
+	options := members.UpdateOpts{AdminStateUp: gophercloud.Disabled}
 
-	_, err := Update(fake.ServiceClient(), "332abe93-f488-41ba-870b-2ac66be7f853", options).Extract()
+	_, err := members.Update(fake.ServiceClient(), "332abe93-f488-41ba-870b-2ac66be7f853", options).Extract()
 	th.AssertNoErr(t, err)
 }
 
@@ -239,6 +233,6 @@
 		w.WriteHeader(http.StatusNoContent)
 	})
 
-	res := Delete(fake.ServiceClient(), "332abe93-f488-41ba-870b-2ac66be7f853")
+	res := members.Delete(fake.ServiceClient(), "332abe93-f488-41ba-870b-2ac66be7f853")
 	th.AssertNoErr(t, res.Err)
 }
diff --git a/openstack/networking/v2/extensions/lbaas/monitors/testing/doc.go b/openstack/networking/v2/extensions/lbaas/monitors/testing/doc.go
new file mode 100644
index 0000000..7603f83
--- /dev/null
+++ b/openstack/networking/v2/extensions/lbaas/monitors/testing/doc.go
@@ -0,0 +1 @@
+package testing
diff --git a/openstack/networking/v2/extensions/lbaas/monitors/requests_test.go b/openstack/networking/v2/extensions/lbaas/monitors/testing/requests_test.go
similarity index 87%
rename from openstack/networking/v2/extensions/lbaas/monitors/requests_test.go
rename to openstack/networking/v2/extensions/lbaas/monitors/testing/requests_test.go
index bd22ae1..f736074 100644
--- a/openstack/networking/v2/extensions/lbaas/monitors/requests_test.go
+++ b/openstack/networking/v2/extensions/lbaas/monitors/testing/requests_test.go
@@ -1,4 +1,4 @@
-package monitors
+package testing
 
 import (
 	"fmt"
@@ -7,16 +7,11 @@
 
 	"github.com/gophercloud/gophercloud"
 	fake "github.com/gophercloud/gophercloud/openstack/networking/v2/common"
+	"github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/lbaas/monitors"
 	"github.com/gophercloud/gophercloud/pagination"
 	th "github.com/gophercloud/gophercloud/testhelper"
 )
 
-func TestURLs(t *testing.T) {
-	th.SetupHTTP()
-	defer th.TeardownHTTP()
-	th.AssertEquals(t, th.Endpoint()+"v2.0/lb/health_monitors", rootURL(fake.ServiceClient()))
-}
-
 func TestList(t *testing.T) {
 	th.SetupHTTP()
 	defer th.TeardownHTTP()
@@ -59,16 +54,16 @@
 
 	count := 0
 
-	List(fake.ServiceClient(), ListOpts{}).EachPage(func(page pagination.Page) (bool, error) {
+	monitors.List(fake.ServiceClient(), monitors.ListOpts{}).EachPage(func(page pagination.Page) (bool, error) {
 		count++
-		actual, err := ExtractMonitors(page)
+		actual, err := monitors.ExtractMonitors(page)
 		if err != nil {
 			t.Errorf("Failed to extract monitors: %v", err)
 			return false, err
 		}
 
-		expected := []Monitor{
-			Monitor{
+		expected := []monitors.Monitor{
+			{
 				AdminStateUp: true,
 				TenantID:     "83657cfcdfe44cd5920adaf26c48ceea",
 				Delay:        10,
@@ -77,7 +72,7 @@
 				Type:         "PING",
 				ID:           "466c8345-28d8-4f84-a246-e04380b0461d",
 			},
-			Monitor{
+			{
 				AdminStateUp:  true,
 				TenantID:      "83657cfcdfe44cd5920adaf26c48ceea",
 				Delay:         5,
@@ -102,7 +97,7 @@
 }
 
 func TestDelayMustBeGreaterOrEqualThanTimeout(t *testing.T) {
-	_, err := Create(fake.ServiceClient(), CreateOpts{
+	_, err := monitors.Create(fake.ServiceClient(), monitors.CreateOpts{
 		Type:          "HTTP",
 		Delay:         1,
 		Timeout:       10,
@@ -115,7 +110,7 @@
 		t.Fatalf("Expected error, got none")
 	}
 
-	_, err = Update(fake.ServiceClient(), "453105b9-1754-413f-aab1-55f1af620750", UpdateOpts{
+	_, err = monitors.Update(fake.ServiceClient(), "453105b9-1754-413f-aab1-55f1af620750", monitors.UpdateOpts{
 		Delay:   1,
 		Timeout: 10,
 	}).Extract()
@@ -170,7 +165,7 @@
 		`)
 	})
 
-	_, err := Create(fake.ServiceClient(), CreateOpts{
+	_, err := monitors.Create(fake.ServiceClient(), monitors.CreateOpts{
 		Type:          "HTTP",
 		TenantID:      "453105b9-1754-413f-aab1-55f1af620750",
 		Delay:         20,
@@ -184,11 +179,11 @@
 }
 
 func TestRequiredCreateOpts(t *testing.T) {
-	res := Create(fake.ServiceClient(), CreateOpts{})
+	res := monitors.Create(fake.ServiceClient(), monitors.CreateOpts{})
 	if res.Err == nil {
 		t.Fatalf("Expected error, got none")
 	}
-	res = Create(fake.ServiceClient(), CreateOpts{Type: TypeHTTP})
+	res = monitors.Create(fake.ServiceClient(), monitors.CreateOpts{Type: monitors.TypeHTTP})
 	if res.Err == nil {
 		t.Fatalf("Expected error, got none")
 	}
@@ -224,7 +219,7 @@
 			`)
 	})
 
-	hm, err := Get(fake.ServiceClient(), "f3eeab00-8367-4524-b662-55e64d4cacb5").Extract()
+	hm, err := monitors.Get(fake.ServiceClient(), "f3eeab00-8367-4524-b662-55e64d4cacb5").Extract()
 	th.AssertNoErr(t, err)
 
 	th.AssertEquals(t, "f3eeab00-8367-4524-b662-55e64d4cacb5", hm.ID)
@@ -288,7 +283,7 @@
 		`)
 	})
 
-	_, err := Update(fake.ServiceClient(), "b05e44b5-81f9-4551-b474-711a722698f7", UpdateOpts{
+	_, err := monitors.Update(fake.ServiceClient(), "b05e44b5-81f9-4551-b474-711a722698f7", monitors.UpdateOpts{
 		Delay:         30,
 		Timeout:       20,
 		MaxRetries:    10,
@@ -310,6 +305,6 @@
 		w.WriteHeader(http.StatusNoContent)
 	})
 
-	res := Delete(fake.ServiceClient(), "b05e44b5-81f9-4551-b474-711a722698f7")
+	res := monitors.Delete(fake.ServiceClient(), "b05e44b5-81f9-4551-b474-711a722698f7")
 	th.AssertNoErr(t, res.Err)
 }
diff --git a/openstack/networking/v2/extensions/lbaas/pools/testing/doc.go b/openstack/networking/v2/extensions/lbaas/pools/testing/doc.go
new file mode 100644
index 0000000..7603f83
--- /dev/null
+++ b/openstack/networking/v2/extensions/lbaas/pools/testing/doc.go
@@ -0,0 +1 @@
+package testing
diff --git a/openstack/networking/v2/extensions/lbaas/pools/requests_test.go b/openstack/networking/v2/extensions/lbaas/pools/testing/requests_test.go
similarity index 87%
rename from openstack/networking/v2/extensions/lbaas/pools/requests_test.go
rename to openstack/networking/v2/extensions/lbaas/pools/testing/requests_test.go
index 5ef0a3b..a42d1aa 100644
--- a/openstack/networking/v2/extensions/lbaas/pools/requests_test.go
+++ b/openstack/networking/v2/extensions/lbaas/pools/testing/requests_test.go
@@ -1,4 +1,4 @@
-package pools
+package testing
 
 import (
 	"fmt"
@@ -6,17 +6,11 @@
 	"testing"
 
 	fake "github.com/gophercloud/gophercloud/openstack/networking/v2/common"
+	"github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/lbaas/pools"
 	"github.com/gophercloud/gophercloud/pagination"
 	th "github.com/gophercloud/gophercloud/testhelper"
 )
 
-func TestURLs(t *testing.T) {
-	th.SetupHTTP()
-	defer th.TeardownHTTP()
-
-	th.AssertEquals(t, th.Endpoint()+"v2.0/lb/pools", rootURL(fake.ServiceClient()))
-}
-
 func TestList(t *testing.T) {
 	th.SetupHTTP()
 	defer th.TeardownHTTP()
@@ -61,16 +55,16 @@
 
 	count := 0
 
-	List(fake.ServiceClient(), ListOpts{}).EachPage(func(page pagination.Page) (bool, error) {
+	pools.List(fake.ServiceClient(), pools.ListOpts{}).EachPage(func(page pagination.Page) (bool, error) {
 		count++
-		actual, err := ExtractPools(page)
+		actual, err := pools.ExtractPools(page)
 		if err != nil {
 			t.Errorf("Failed to extract pools: %v", err)
 			return false, err
 		}
 
-		expected := []Pool{
-			Pool{
+		expected := []pools.Pool{
+			{
 				Status:      "ACTIVE",
 				LBMethod:    "ROUND_ROBIN",
 				Protocol:    "HTTP",
@@ -149,14 +143,14 @@
 		`)
 	})
 
-	options := CreateOpts{
-		LBMethod: LBMethodRoundRobin,
+	options := pools.CreateOpts{
+		LBMethod: pools.LBMethodRoundRobin,
 		Protocol: "HTTP",
 		Name:     "Example pool",
 		SubnetID: "1981f108-3c48-48d2-b908-30f7d28532c9",
 		TenantID: "2ffc6e22aae24e4795f87155d24c896f",
 	}
-	p, err := Create(fake.ServiceClient(), options).Extract()
+	p, err := pools.Create(fake.ServiceClient(), options).Extract()
 	th.AssertNoErr(t, err)
 
 	th.AssertEquals(t, "PENDING_CREATE", p.Status)
@@ -203,7 +197,7 @@
 			`)
 	})
 
-	n, err := Get(fake.ServiceClient(), "332abe93-f488-41ba-870b-2ac66be7f853").Extract()
+	n, err := pools.Get(fake.ServiceClient(), "332abe93-f488-41ba-870b-2ac66be7f853").Extract()
 	th.AssertNoErr(t, err)
 
 	th.AssertEquals(t, n.ID, "332abe93-f488-41ba-870b-2ac66be7f853")
@@ -254,9 +248,9 @@
 		`)
 	})
 
-	options := UpdateOpts{Name: "SuperPool", LBMethod: LBMethodLeastConnections}
+	options := pools.UpdateOpts{Name: "SuperPool", LBMethod: pools.LBMethodLeastConnections}
 
-	n, err := Update(fake.ServiceClient(), "332abe93-f488-41ba-870b-2ac66be7f853", options).Extract()
+	n, err := pools.Update(fake.ServiceClient(), "332abe93-f488-41ba-870b-2ac66be7f853", options).Extract()
 	th.AssertNoErr(t, err)
 
 	th.AssertEquals(t, "SuperPool", n.Name)
@@ -273,7 +267,7 @@
 		w.WriteHeader(http.StatusNoContent)
 	})
 
-	res := Delete(fake.ServiceClient(), "332abe93-f488-41ba-870b-2ac66be7f853")
+	res := pools.Delete(fake.ServiceClient(), "332abe93-f488-41ba-870b-2ac66be7f853")
 	th.AssertNoErr(t, res.Err)
 }
 
@@ -299,7 +293,7 @@
 		fmt.Fprintf(w, `{}`)
 	})
 
-	_, err := AssociateMonitor(fake.ServiceClient(), "332abe93-f488-41ba-870b-2ac66be7f853", "b624decf-d5d3-4c66-9a3d-f047e7786181").Extract()
+	_, err := pools.AssociateMonitor(fake.ServiceClient(), "332abe93-f488-41ba-870b-2ac66be7f853", "b624decf-d5d3-4c66-9a3d-f047e7786181").Extract()
 	th.AssertNoErr(t, err)
 }
 
@@ -313,6 +307,6 @@
 		w.WriteHeader(http.StatusNoContent)
 	})
 
-	res := DisassociateMonitor(fake.ServiceClient(), "332abe93-f488-41ba-870b-2ac66be7f853", "b624decf-d5d3-4c66-9a3d-f047e7786181")
+	res := pools.DisassociateMonitor(fake.ServiceClient(), "332abe93-f488-41ba-870b-2ac66be7f853", "b624decf-d5d3-4c66-9a3d-f047e7786181")
 	th.AssertNoErr(t, res.Err)
 }
diff --git a/openstack/networking/v2/extensions/lbaas/vips/testing/doc.go b/openstack/networking/v2/extensions/lbaas/vips/testing/doc.go
new file mode 100644
index 0000000..7603f83
--- /dev/null
+++ b/openstack/networking/v2/extensions/lbaas/vips/testing/doc.go
@@ -0,0 +1 @@
+package testing
diff --git a/openstack/networking/v2/extensions/lbaas/vips/requests_test.go b/openstack/networking/v2/extensions/lbaas/vips/testing/requests_test.go
similarity index 85%
rename from openstack/networking/v2/extensions/lbaas/vips/requests_test.go
rename to openstack/networking/v2/extensions/lbaas/vips/testing/requests_test.go
index a7612da..7f9b6dd 100644
--- a/openstack/networking/v2/extensions/lbaas/vips/requests_test.go
+++ b/openstack/networking/v2/extensions/lbaas/vips/testing/requests_test.go
@@ -1,4 +1,4 @@
-package vips
+package testing
 
 import (
 	"fmt"
@@ -7,18 +7,11 @@
 
 	"github.com/gophercloud/gophercloud"
 	fake "github.com/gophercloud/gophercloud/openstack/networking/v2/common"
+	"github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/lbaas/vips"
 	"github.com/gophercloud/gophercloud/pagination"
 	th "github.com/gophercloud/gophercloud/testhelper"
 )
 
-func TestURLs(t *testing.T) {
-	th.SetupHTTP()
-	defer th.TeardownHTTP()
-
-	th.AssertEquals(t, th.Endpoint()+"v2.0/lb/vips", rootURL(fake.ServiceClient()))
-	th.AssertEquals(t, th.Endpoint()+"v2.0/lb/vips/foo", resourceURL(fake.ServiceClient(), "foo"))
-}
-
 func TestList(t *testing.T) {
 	th.SetupHTTP()
 	defer th.TeardownHTTP()
@@ -70,16 +63,16 @@
 
 	count := 0
 
-	List(fake.ServiceClient(), ListOpts{}).EachPage(func(page pagination.Page) (bool, error) {
+	vips.List(fake.ServiceClient(), vips.ListOpts{}).EachPage(func(page pagination.Page) (bool, error) {
 		count++
-		actual, err := ExtractVIPs(page)
+		actual, err := vips.ExtractVIPs(page)
 		if err != nil {
 			t.Errorf("Failed to extract LBs: %v", err)
 			return false, err
 		}
 
-		expected := []VirtualIP{
-			VirtualIP{
+		expected := []vips.VirtualIP{
+			{
 				ID:           "db902c0c-d5ff-4753-b465-668ad9656918",
 				TenantID:     "310df60f-2a10-4ee5-9554-98393092194c",
 				Name:         "web_vip",
@@ -90,12 +83,12 @@
 				Protocol:     "HTTP",
 				ProtocolPort: 80,
 				PoolID:       "cfc6589d-f949-4c66-99d2-c2da56ef3764",
-				Persistence:  SessionPersistence{},
+				Persistence:  vips.SessionPersistence{},
 				ConnLimit:    0,
 				AdminStateUp: true,
 				Status:       "ACTIVE",
 			},
-			VirtualIP{
+			{
 				ID:           "36e08a3e-a78f-4b40-a229-1e7e23eee1ab",
 				TenantID:     "310df60f-2a10-4ee5-9554-98393092194c",
 				Name:         "db_vip",
@@ -106,7 +99,7 @@
 				Protocol:     "TCP",
 				ProtocolPort: 3306,
 				PoolID:       "41efe233-7591-43c5-9cf7-923964759f9e",
-				Persistence:  SessionPersistence{Type: "SOURCE_IP"},
+				Persistence:  vips.SessionPersistence{Type: "SOURCE_IP"},
 				ConnLimit:    2000,
 				AdminStateUp: true,
 				Status:       "INACTIVE",
@@ -170,17 +163,17 @@
 		`)
 	})
 
-	opts := CreateOpts{
+	opts := vips.CreateOpts{
 		Protocol:     "HTTP",
 		Name:         "NewVip",
 		AdminStateUp: gophercloud.Enabled,
 		SubnetID:     "8032909d-47a1-4715-90af-5153ffe39861",
 		PoolID:       "61b1f87a-7a21-4ad3-9dda-7f81d249944f",
 		ProtocolPort: 80,
-		Persistence:  &SessionPersistence{Type: "SOURCE_IP"},
+		Persistence:  &vips.SessionPersistence{Type: "SOURCE_IP"},
 	}
 
-	r, err := Create(fake.ServiceClient(), opts).Extract()
+	r, err := vips.Create(fake.ServiceClient(), opts).Extract()
 	th.AssertNoErr(t, err)
 
 	th.AssertEquals(t, "PENDING_CREATE", r.Status)
@@ -199,23 +192,23 @@
 }
 
 func TestRequiredCreateOpts(t *testing.T) {
-	res := Create(fake.ServiceClient(), CreateOpts{})
+	res := vips.Create(fake.ServiceClient(), vips.CreateOpts{})
 	if res.Err == nil {
 		t.Fatalf("Expected error, got none")
 	}
-	res = Create(fake.ServiceClient(), CreateOpts{Name: "foo"})
+	res = vips.Create(fake.ServiceClient(), vips.CreateOpts{Name: "foo"})
 	if res.Err == nil {
 		t.Fatalf("Expected error, got none")
 	}
-	res = Create(fake.ServiceClient(), CreateOpts{Name: "foo", SubnetID: "bar"})
+	res = vips.Create(fake.ServiceClient(), vips.CreateOpts{Name: "foo", SubnetID: "bar"})
 	if res.Err == nil {
 		t.Fatalf("Expected error, got none")
 	}
-	res = Create(fake.ServiceClient(), CreateOpts{Name: "foo", SubnetID: "bar", Protocol: "bar"})
+	res = vips.Create(fake.ServiceClient(), vips.CreateOpts{Name: "foo", SubnetID: "bar", Protocol: "bar"})
 	if res.Err == nil {
 		t.Fatalf("Expected error, got none")
 	}
-	res = Create(fake.ServiceClient(), CreateOpts{Name: "foo", SubnetID: "bar", Protocol: "bar", ProtocolPort: 80})
+	res = vips.Create(fake.ServiceClient(), vips.CreateOpts{Name: "foo", SubnetID: "bar", Protocol: "bar", ProtocolPort: 80})
 	if res.Err == nil {
 		t.Fatalf("Expected error, got none")
 	}
@@ -257,7 +250,7 @@
 			`)
 	})
 
-	vip, err := Get(fake.ServiceClient(), "4ec89087-d057-4e2c-911f-60a3b47ee304").Extract()
+	vip, err := vips.Get(fake.ServiceClient(), "4ec89087-d057-4e2c-911f-60a3b47ee304").Extract()
 	th.AssertNoErr(t, err)
 
 	th.AssertEquals(t, "ACTIVE", vip.Status)
@@ -265,7 +258,7 @@
 	th.AssertEquals(t, "", vip.Description)
 	th.AssertEquals(t, true, vip.AdminStateUp)
 	th.AssertEquals(t, 1000, vip.ConnLimit)
-	th.AssertEquals(t, SessionPersistence{Type: "APP_COOKIE", CookieName: "MyAppCookie"}, vip.Persistence)
+	th.AssertEquals(t, vips.SessionPersistence{Type: "APP_COOKIE", CookieName: "MyAppCookie"}, vip.Persistence)
 }
 
 func TestUpdate(t *testing.T) {
@@ -311,11 +304,11 @@
 	})
 
 	i1000 := 1000
-	options := UpdateOpts{
+	options := vips.UpdateOpts{
 		ConnLimit:   &i1000,
-		Persistence: &SessionPersistence{Type: "SOURCE_IP"},
+		Persistence: &vips.SessionPersistence{Type: "SOURCE_IP"},
 	}
-	vip, err := Update(fake.ServiceClient(), "4ec89087-d057-4e2c-911f-60a3b47ee304", options).Extract()
+	vip, err := vips.Update(fake.ServiceClient(), "4ec89087-d057-4e2c-911f-60a3b47ee304", options).Extract()
 	th.AssertNoErr(t, err)
 
 	th.AssertEquals(t, "PENDING_UPDATE", vip.Status)
@@ -332,6 +325,6 @@
 		w.WriteHeader(http.StatusNoContent)
 	})
 
-	res := Delete(fake.ServiceClient(), "4ec89087-d057-4e2c-911f-60a3b47ee304")
+	res := vips.Delete(fake.ServiceClient(), "4ec89087-d057-4e2c-911f-60a3b47ee304")
 	th.AssertNoErr(t, res.Err)
 }
diff --git a/openstack/networking/v2/extensions/provider/testing/doc.go b/openstack/networking/v2/extensions/provider/testing/doc.go
new file mode 100644
index 0000000..7603f83
--- /dev/null
+++ b/openstack/networking/v2/extensions/provider/testing/doc.go
@@ -0,0 +1 @@
+package testing
diff --git a/openstack/networking/v2/extensions/provider/results_test.go b/openstack/networking/v2/extensions/provider/testing/results_test.go
similarity index 95%
rename from openstack/networking/v2/extensions/provider/results_test.go
rename to openstack/networking/v2/extensions/provider/testing/results_test.go
index d41e39e..3b6a6fd 100644
--- a/openstack/networking/v2/extensions/provider/results_test.go
+++ b/openstack/networking/v2/extensions/provider/testing/results_test.go
@@ -1,4 +1,4 @@
-package provider
+package testing
 
 import (
 	"fmt"
@@ -7,6 +7,7 @@
 
 	"github.com/gophercloud/gophercloud"
 	fake "github.com/gophercloud/gophercloud/openstack/networking/v2/common"
+	"github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/provider"
 	"github.com/gophercloud/gophercloud/openstack/networking/v2/networks"
 	"github.com/gophercloud/gophercloud/pagination"
 	th "github.com/gophercloud/gophercloud/testhelper"
@@ -63,14 +64,14 @@
 
 	networks.List(fake.ServiceClient(), networks.ListOpts{}).EachPage(func(page pagination.Page) (bool, error) {
 		count++
-		actual, err := ExtractList(page)
+		actual, err := provider.ExtractList(page)
 		if err != nil {
 			t.Errorf("Failed to extract networks: %v", err)
 			return false, err
 		}
 
-		expected := []NetworkExtAttrs{
-			NetworkExtAttrs{
+		expected := []provider.NetworkExtAttrs{
+			{
 				Status:          "ACTIVE",
 				Subnets:         []string{"54d6f61d-db07-451c-9ab3-b9609b6b6f0b"},
 				Name:            "private-network",
@@ -82,7 +83,7 @@
 				PhysicalNetwork: "",
 				SegmentationID:  "",
 			},
-			NetworkExtAttrs{
+			{
 				Status:          "ACTIVE",
 				Subnets:         []string{"08eae331-0402-425a-923c-34f7cfe39c1b"},
 				Name:            "private",
@@ -138,7 +139,7 @@
 	})
 
 	res := networks.Get(fake.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22")
-	n, err := ExtractGet(res)
+	n, err := provider.ExtractGet(res)
 
 	th.AssertNoErr(t, err)
 
@@ -190,7 +191,7 @@
 
 	options := networks.CreateOpts{Name: "sample_network", AdminStateUp: gophercloud.Enabled}
 	res := networks.Create(fake.ServiceClient(), options)
-	n, err := ExtractCreate(res)
+	n, err := provider.ExtractCreate(res)
 
 	th.AssertNoErr(t, err)
 
@@ -244,7 +245,7 @@
 	iTrue := true
 	options := networks.UpdateOpts{Name: "new_network_name", AdminStateUp: gophercloud.Disabled, Shared: &iTrue}
 	res := networks.Update(fake.ServiceClient(), "4e8e5957-649f-477b-9e5b-f1f75b21c03c", options)
-	n, err := ExtractUpdate(res)
+	n, err := provider.ExtractUpdate(res)
 
 	th.AssertNoErr(t, err)
 
diff --git a/openstack/networking/v2/extensions/security/groups/testing/doc.go b/openstack/networking/v2/extensions/security/groups/testing/doc.go
new file mode 100644
index 0000000..7603f83
--- /dev/null
+++ b/openstack/networking/v2/extensions/security/groups/testing/doc.go
@@ -0,0 +1 @@
+package testing
diff --git a/openstack/networking/v2/extensions/security/groups/requests_test.go b/openstack/networking/v2/extensions/security/groups/testing/requests_test.go
similarity index 88%
rename from openstack/networking/v2/extensions/security/groups/requests_test.go
rename to openstack/networking/v2/extensions/security/groups/testing/requests_test.go
index 4519e6c..acd3230 100644
--- a/openstack/networking/v2/extensions/security/groups/requests_test.go
+++ b/openstack/networking/v2/extensions/security/groups/testing/requests_test.go
@@ -1,4 +1,4 @@
-package groups
+package testing
 
 import (
 	"fmt"
@@ -6,19 +6,12 @@
 	"testing"
 
 	fake "github.com/gophercloud/gophercloud/openstack/networking/v2/common"
+	"github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/security/groups"
 	"github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/security/rules"
 	"github.com/gophercloud/gophercloud/pagination"
 	th "github.com/gophercloud/gophercloud/testhelper"
 )
 
-func TestURLs(t *testing.T) {
-	th.SetupHTTP()
-	defer th.TeardownHTTP()
-
-	th.AssertEquals(t, th.Endpoint()+"v2.0/security-groups", rootURL(fake.ServiceClient()))
-	th.AssertEquals(t, th.Endpoint()+"v2.0/security-groups/foo", resourceURL(fake.ServiceClient(), "foo"))
-}
-
 func TestList(t *testing.T) {
 	th.SetupHTTP()
 	defer th.TeardownHTTP()
@@ -47,16 +40,16 @@
 
 	count := 0
 
-	List(fake.ServiceClient(), ListOpts{}).EachPage(func(page pagination.Page) (bool, error) {
+	groups.List(fake.ServiceClient(), groups.ListOpts{}).EachPage(func(page pagination.Page) (bool, error) {
 		count++
-		actual, err := ExtractGroups(page)
+		actual, err := groups.ExtractGroups(page)
 		if err != nil {
 			t.Errorf("Failed to extract secgroups: %v", err)
 			return false, err
 		}
 
-		expected := []SecGroup{
-			SecGroup{
+		expected := []groups.SecGroup{
+			{
 				Description: "default",
 				ID:          "85cc3048-abc3-43cc-89b3-377341426ac5",
 				Name:        "default",
@@ -134,8 +127,8 @@
     `)
 	})
 
-	opts := CreateOpts{Name: "new-webservers", Description: "security group for webservers"}
-	_, err := Create(fake.ServiceClient(), opts).Extract()
+	opts := groups.CreateOpts{Name: "new-webservers", Description: "security group for webservers"}
+	_, err := groups.Create(fake.ServiceClient(), opts).Extract()
 	th.AssertNoErr(t, err)
 }
 
@@ -188,7 +181,7 @@
       `)
 	})
 
-	sg, err := Get(fake.ServiceClient(), "85cc3048-abc3-43cc-89b3-377341426ac5").Extract()
+	sg, err := groups.Get(fake.ServiceClient(), "85cc3048-abc3-43cc-89b3-377341426ac5").Extract()
 	th.AssertNoErr(t, err)
 
 	th.AssertEquals(t, "default", sg.Description)
@@ -208,6 +201,6 @@
 		w.WriteHeader(http.StatusNoContent)
 	})
 
-	res := Delete(fake.ServiceClient(), "4ec89087-d057-4e2c-911f-60a3b47ee304")
+	res := groups.Delete(fake.ServiceClient(), "4ec89087-d057-4e2c-911f-60a3b47ee304")
 	th.AssertNoErr(t, res.Err)
 }
diff --git a/openstack/networking/v2/extensions/security/rules/testing/doc.go b/openstack/networking/v2/extensions/security/rules/testing/doc.go
new file mode 100644
index 0000000..7603f83
--- /dev/null
+++ b/openstack/networking/v2/extensions/security/rules/testing/doc.go
@@ -0,0 +1 @@
+package testing
diff --git a/openstack/networking/v2/extensions/security/rules/requests_test.go b/openstack/networking/v2/extensions/security/rules/testing/requests_test.go
similarity index 83%
rename from openstack/networking/v2/extensions/security/rules/requests_test.go
rename to openstack/networking/v2/extensions/security/rules/testing/requests_test.go
index 974b3ce..968fd04 100644
--- a/openstack/networking/v2/extensions/security/rules/requests_test.go
+++ b/openstack/networking/v2/extensions/security/rules/testing/requests_test.go
@@ -1,4 +1,4 @@
-package rules
+package testing
 
 import (
 	"fmt"
@@ -6,18 +6,11 @@
 	"testing"
 
 	fake "github.com/gophercloud/gophercloud/openstack/networking/v2/common"
+	"github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/security/rules"
 	"github.com/gophercloud/gophercloud/pagination"
 	th "github.com/gophercloud/gophercloud/testhelper"
 )
 
-func TestURLs(t *testing.T) {
-	th.SetupHTTP()
-	defer th.TeardownHTTP()
-
-	th.AssertEquals(t, th.Endpoint()+"v2.0/security-group-rules", rootURL(fake.ServiceClient()))
-	th.AssertEquals(t, th.Endpoint()+"v2.0/security-group-rules/foo", resourceURL(fake.ServiceClient(), "foo"))
-}
-
 func TestList(t *testing.T) {
 	th.SetupHTTP()
 	defer th.TeardownHTTP()
@@ -63,16 +56,16 @@
 
 	count := 0
 
-	List(fake.ServiceClient(), ListOpts{}).EachPage(func(page pagination.Page) (bool, error) {
+	rules.List(fake.ServiceClient(), rules.ListOpts{}).EachPage(func(page pagination.Page) (bool, error) {
 		count++
-		actual, err := ExtractRules(page)
+		actual, err := rules.ExtractRules(page)
 		if err != nil {
 			t.Errorf("Failed to extract secrules: %v", err)
 			return false, err
 		}
 
-		expected := []SecGroupRule{
-			SecGroupRule{
+		expected := []rules.SecGroupRule{
+			{
 				Direction:      "egress",
 				EtherType:      "IPv6",
 				ID:             "3c0e45ff-adaf-4124-b083-bf390e5482ff",
@@ -84,7 +77,7 @@
 				SecGroupID:     "85cc3048-abc3-43cc-89b3-377341426ac5",
 				TenantID:       "e4f50856753b4dc6afee5fa6b9b6c550",
 			},
-			SecGroupRule{
+			{
 				Direction:      "egress",
 				EtherType:      "IPv4",
 				ID:             "93aa42e5-80db-4581-9391-3a608bd0e448",
@@ -152,33 +145,33 @@
     `)
 	})
 
-	opts := CreateOpts{
+	opts := rules.CreateOpts{
 		Direction:     "ingress",
 		PortRangeMin:  80,
-		EtherType:     EtherType4,
+		EtherType:     rules.EtherType4,
 		PortRangeMax:  80,
 		Protocol:      "tcp",
 		RemoteGroupID: "85cc3048-abc3-43cc-89b3-377341426ac5",
 		SecGroupID:    "a7734e61-b545-452d-a3cd-0189cbd9747a",
 	}
-	_, err := Create(fake.ServiceClient(), opts).Extract()
+	_, err := rules.Create(fake.ServiceClient(), opts).Extract()
 	th.AssertNoErr(t, err)
 }
 
 func TestRequiredCreateOpts(t *testing.T) {
-	res := Create(fake.ServiceClient(), CreateOpts{Direction: DirIngress})
+	res := rules.Create(fake.ServiceClient(), rules.CreateOpts{Direction: rules.DirIngress})
 	if res.Err == nil {
 		t.Fatalf("Expected error, got none")
 	}
-	res = Create(fake.ServiceClient(), CreateOpts{Direction: DirIngress, EtherType: EtherType4})
+	res = rules.Create(fake.ServiceClient(), rules.CreateOpts{Direction: rules.DirIngress, EtherType: rules.EtherType4})
 	if res.Err == nil {
 		t.Fatalf("Expected error, got none")
 	}
-	res = Create(fake.ServiceClient(), CreateOpts{Direction: DirIngress, EtherType: EtherType4})
+	res = rules.Create(fake.ServiceClient(), rules.CreateOpts{Direction: rules.DirIngress, EtherType: rules.EtherType4})
 	if res.Err == nil {
 		t.Fatalf("Expected error, got none")
 	}
-	res = Create(fake.ServiceClient(), CreateOpts{Direction: DirIngress, EtherType: EtherType4, SecGroupID: "something", Protocol: "foo"})
+	res = rules.Create(fake.ServiceClient(), rules.CreateOpts{Direction: rules.DirIngress, EtherType: rules.EtherType4, SecGroupID: "something", Protocol: "foo"})
 	if res.Err == nil {
 		t.Fatalf("Expected error, got none")
 	}
@@ -213,7 +206,7 @@
       `)
 	})
 
-	sr, err := Get(fake.ServiceClient(), "3c0e45ff-adaf-4124-b083-bf390e5482ff").Extract()
+	sr, err := rules.Get(fake.ServiceClient(), "3c0e45ff-adaf-4124-b083-bf390e5482ff").Extract()
 	th.AssertNoErr(t, err)
 
 	th.AssertEquals(t, "egress", sr.Direction)
@@ -238,6 +231,6 @@
 		w.WriteHeader(http.StatusNoContent)
 	})
 
-	res := Delete(fake.ServiceClient(), "4ec89087-d057-4e2c-911f-60a3b47ee304")
+	res := rules.Delete(fake.ServiceClient(), "4ec89087-d057-4e2c-911f-60a3b47ee304")
 	th.AssertNoErr(t, res.Err)
 }
diff --git a/openstack/networking/v2/extensions/delegate_test.go b/openstack/networking/v2/extensions/testing/delegate_test.go
similarity index 88%
rename from openstack/networking/v2/extensions/delegate_test.go
rename to openstack/networking/v2/extensions/testing/delegate_test.go
index 26ab0ef..618d052 100755
--- a/openstack/networking/v2/extensions/delegate_test.go
+++ b/openstack/networking/v2/extensions/testing/delegate_test.go
@@ -1,4 +1,4 @@
-package extensions
+package testing
 
 import (
 	"fmt"
@@ -7,6 +7,7 @@
 
 	common "github.com/gophercloud/gophercloud/openstack/common/extensions"
 	fake "github.com/gophercloud/gophercloud/openstack/networking/v2/common"
+	"github.com/gophercloud/gophercloud/openstack/networking/v2/extensions"
 	"github.com/gophercloud/gophercloud/pagination"
 	th "github.com/gophercloud/gophercloud/testhelper"
 )
@@ -39,15 +40,15 @@
 
 	count := 0
 
-	List(fake.ServiceClient()).EachPage(func(page pagination.Page) (bool, error) {
+	extensions.List(fake.ServiceClient()).EachPage(func(page pagination.Page) (bool, error) {
 		count++
-		actual, err := ExtractExtensions(page)
+		actual, err := extensions.ExtractExtensions(page)
 		if err != nil {
 			t.Errorf("Failed to extract extensions: %v", err)
 		}
 
-		expected := []Extension{
-			Extension{
+		expected := []extensions.Extension{
+			{
 				common.Extension{
 					Updated:     "2013-01-20T00:00:00-00:00",
 					Name:        "Neutron Service Type Management",
@@ -94,7 +95,7 @@
     `)
 	})
 
-	ext, err := Get(fake.ServiceClient(), "agent").Extract()
+	ext, err := extensions.Get(fake.ServiceClient(), "agent").Extract()
 	th.AssertNoErr(t, err)
 
 	th.AssertEquals(t, ext.Updated, "2013-02-03T10:00:00-00:00")
diff --git a/openstack/networking/v2/extensions/testing/doc.go b/openstack/networking/v2/extensions/testing/doc.go
new file mode 100644
index 0000000..7603f83
--- /dev/null
+++ b/openstack/networking/v2/extensions/testing/doc.go
@@ -0,0 +1 @@
+package testing
diff --git a/openstack/networking/v2/networks/errors.go b/openstack/networking/v2/networks/errors.go
deleted file mode 100644
index 83c4a6a..0000000
--- a/openstack/networking/v2/networks/errors.go
+++ /dev/null
@@ -1 +0,0 @@
-package networks
diff --git a/openstack/networking/v2/networks/testing/doc.go b/openstack/networking/v2/networks/testing/doc.go
new file mode 100644
index 0000000..7603f83
--- /dev/null
+++ b/openstack/networking/v2/networks/testing/doc.go
@@ -0,0 +1 @@
+package testing
diff --git a/openstack/networking/v2/networks/requests_test.go b/openstack/networking/v2/networks/testing/requests_test.go
similarity index 87%
rename from openstack/networking/v2/networks/requests_test.go
rename to openstack/networking/v2/networks/testing/requests_test.go
index c5660ac..5b9f03d 100644
--- a/openstack/networking/v2/networks/requests_test.go
+++ b/openstack/networking/v2/networks/testing/requests_test.go
@@ -1,4 +1,4 @@
-package networks
+package testing
 
 import (
 	"fmt"
@@ -6,6 +6,7 @@
 	"testing"
 
 	fake "github.com/gophercloud/gophercloud/openstack/networking/v2/common"
+	"github.com/gophercloud/gophercloud/openstack/networking/v2/networks"
 	"github.com/gophercloud/gophercloud/pagination"
 	th "github.com/gophercloud/gophercloud/testhelper"
 )
@@ -54,16 +55,16 @@
 	client := fake.ServiceClient()
 	count := 0
 
-	List(client, ListOpts{}).EachPage(func(page pagination.Page) (bool, error) {
+	networks.List(client, networks.ListOpts{}).EachPage(func(page pagination.Page) (bool, error) {
 		count++
-		actual, err := ExtractNetworks(page)
+		actual, err := networks.ExtractNetworks(page)
 		if err != nil {
 			t.Errorf("Failed to extract networks: %v", err)
 			return false, err
 		}
 
-		expected := []Network{
-			Network{
+		expected := []networks.Network{
+			{
 				Status:       "ACTIVE",
 				Subnets:      []string{"54d6f61d-db07-451c-9ab3-b9609b6b6f0b"},
 				Name:         "private-network",
@@ -72,7 +73,7 @@
 				Shared:       true,
 				ID:           "d32019d3-bc6e-4319-9c1d-6722fc136a22",
 			},
-			Network{
+			{
 				Status:       "ACTIVE",
 				Subnets:      []string{"08eae331-0402-425a-923c-34f7cfe39c1b"},
 				Name:         "private",
@@ -121,7 +122,7 @@
 			`)
 	})
 
-	n, err := Get(fake.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22").Extract()
+	n, err := networks.Get(fake.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22").Extract()
 	th.AssertNoErr(t, err)
 
 	th.AssertEquals(t, n.Status, "ACTIVE")
@@ -170,8 +171,8 @@
 	})
 
 	iTrue := true
-	options := CreateOpts{Name: "sample_network", AdminStateUp: &iTrue}
-	n, err := Create(fake.ServiceClient(), options).Extract()
+	options := networks.CreateOpts{Name: "sample_network", AdminStateUp: &iTrue}
+	n, err := networks.Create(fake.ServiceClient(), options).Extract()
 	th.AssertNoErr(t, err)
 
 	th.AssertEquals(t, n.Status, "ACTIVE")
@@ -208,8 +209,8 @@
 	})
 
 	iTrue := true
-	options := CreateOpts{Name: "sample_network", AdminStateUp: &iTrue, Shared: &iTrue, TenantID: "12345"}
-	_, err := Create(fake.ServiceClient(), options).Extract()
+	options := networks.CreateOpts{Name: "sample_network", AdminStateUp: &iTrue, Shared: &iTrue, TenantID: "12345"}
+	_, err := networks.Create(fake.ServiceClient(), options).Extract()
 	th.AssertNoErr(t, err)
 }
 
@@ -251,8 +252,8 @@
 	})
 
 	iTrue, iFalse := true, false
-	options := UpdateOpts{Name: "new_network_name", AdminStateUp: &iFalse, Shared: &iTrue}
-	n, err := Update(fake.ServiceClient(), "4e8e5957-649f-477b-9e5b-f1f75b21c03c", options).Extract()
+	options := networks.UpdateOpts{Name: "new_network_name", AdminStateUp: &iFalse, Shared: &iTrue}
+	n, err := networks.Update(fake.ServiceClient(), "4e8e5957-649f-477b-9e5b-f1f75b21c03c", options).Extract()
 	th.AssertNoErr(t, err)
 
 	th.AssertEquals(t, n.Name, "new_network_name")
@@ -271,6 +272,6 @@
 		w.WriteHeader(http.StatusNoContent)
 	})
 
-	res := Delete(fake.ServiceClient(), "4e8e5957-649f-477b-9e5b-f1f75b21c03c")
+	res := networks.Delete(fake.ServiceClient(), "4e8e5957-649f-477b-9e5b-f1f75b21c03c")
 	th.AssertNoErr(t, res.Err)
 }
diff --git a/openstack/networking/v2/ports/testing/doc.go b/openstack/networking/v2/ports/testing/doc.go
new file mode 100644
index 0000000..7603f83
--- /dev/null
+++ b/openstack/networking/v2/ports/testing/doc.go
@@ -0,0 +1 @@
+package testing
diff --git a/openstack/networking/v2/ports/requests_test.go b/openstack/networking/v2/ports/testing/requests_test.go
similarity index 82%
rename from openstack/networking/v2/ports/requests_test.go
rename to openstack/networking/v2/ports/testing/requests_test.go
index bcd69d4..007dc5a 100644
--- a/openstack/networking/v2/ports/requests_test.go
+++ b/openstack/networking/v2/ports/testing/requests_test.go
@@ -1,4 +1,4 @@
-package ports
+package testing
 
 import (
 	"fmt"
@@ -6,6 +6,7 @@
 	"testing"
 
 	fake "github.com/gophercloud/gophercloud/openstack/networking/v2/common"
+	"github.com/gophercloud/gophercloud/openstack/networking/v2/ports"
 	"github.com/gophercloud/gophercloud/pagination"
 	th "github.com/gophercloud/gophercloud/testhelper"
 )
@@ -50,16 +51,16 @@
 
 	count := 0
 
-	List(fake.ServiceClient(), ListOpts{}).EachPage(func(page pagination.Page) (bool, error) {
+	ports.List(fake.ServiceClient(), ports.ListOpts{}).EachPage(func(page pagination.Page) (bool, error) {
 		count++
-		actual, err := ExtractPorts(page)
+		actual, err := ports.ExtractPorts(page)
 		if err != nil {
 			t.Errorf("Failed to extract subnets: %v", err)
 			return false, nil
 		}
 
-		expected := []Port{
-			Port{
+		expected := []ports.Port{
+			{
 				Status:       "ACTIVE",
 				Name:         "",
 				AdminStateUp: true,
@@ -67,8 +68,8 @@
 				TenantID:     "",
 				DeviceOwner:  "network:router_gateway",
 				MACAddress:   "fa:16:3e:58:42:ed",
-				FixedIPs: []IP{
-					IP{
+				FixedIPs: []ports.IP{
+					{
 						SubnetID:  "008ba151-0b8c-4a67-98b5-0d2b87666062",
 						IPAddress: "172.24.4.2",
 					},
@@ -124,7 +125,7 @@
 			`)
 	})
 
-	n, err := Get(fake.ServiceClient(), "46d4bfb9-b26e-41f3-bd2e-e6dcc1ccedb2").Extract()
+	n, err := ports.Get(fake.ServiceClient(), "46d4bfb9-b26e-41f3-bd2e-e6dcc1ccedb2").Extract()
 	th.AssertNoErr(t, err)
 
 	th.AssertEquals(t, n.Status, "ACTIVE")
@@ -134,8 +135,8 @@
 	th.AssertEquals(t, n.TenantID, "7e02058126cc4950b75f9970368ba177")
 	th.AssertEquals(t, n.DeviceOwner, "network:router_interface")
 	th.AssertEquals(t, n.MACAddress, "fa:16:3e:23:fd:d7")
-	th.AssertDeepEquals(t, n.FixedIPs, []IP{
-		IP{SubnetID: "a0304c3a-4f08-4c43-88af-d796509c97d2", IPAddress: "10.0.0.1"},
+	th.AssertDeepEquals(t, n.FixedIPs, []ports.IP{
+		{SubnetID: "a0304c3a-4f08-4c43-88af-d796509c97d2", IPAddress: "10.0.0.1"},
 	})
 	th.AssertEquals(t, n.ID, "46d4bfb9-b26e-41f3-bd2e-e6dcc1ccedb2")
 	th.AssertDeepEquals(t, n.SecurityGroups, []string{})
@@ -211,19 +212,19 @@
 	})
 
 	asu := true
-	options := CreateOpts{
+	options := ports.CreateOpts{
 		Name:         "private-port",
 		AdminStateUp: &asu,
 		NetworkID:    "a87cc70a-3e15-4acf-8205-9b711a3531b7",
-		FixedIPs: []IP{
-			IP{SubnetID: "a0304c3a-4f08-4c43-88af-d796509c97d2", IPAddress: "10.0.0.2"},
+		FixedIPs: []ports.IP{
+			{SubnetID: "a0304c3a-4f08-4c43-88af-d796509c97d2", IPAddress: "10.0.0.2"},
 		},
 		SecurityGroups: []string{"foo"},
-		AllowedAddressPairs: []AddressPair{
-			AddressPair{IPAddress: "10.0.0.4", MACAddress: "fa:16:3e:c9:cb:f0"},
+		AllowedAddressPairs: []ports.AddressPair{
+			{IPAddress: "10.0.0.4", MACAddress: "fa:16:3e:c9:cb:f0"},
 		},
 	}
-	n, err := Create(fake.ServiceClient(), options).Extract()
+	n, err := ports.Create(fake.ServiceClient(), options).Extract()
 	th.AssertNoErr(t, err)
 
 	th.AssertEquals(t, n.Status, "DOWN")
@@ -233,18 +234,18 @@
 	th.AssertEquals(t, n.TenantID, "d6700c0c9ffa4f1cb322cd4a1f3906fa")
 	th.AssertEquals(t, n.DeviceOwner, "")
 	th.AssertEquals(t, n.MACAddress, "fa:16:3e:c9:cb:f0")
-	th.AssertDeepEquals(t, n.FixedIPs, []IP{
-		IP{SubnetID: "a0304c3a-4f08-4c43-88af-d796509c97d2", IPAddress: "10.0.0.2"},
+	th.AssertDeepEquals(t, n.FixedIPs, []ports.IP{
+		{SubnetID: "a0304c3a-4f08-4c43-88af-d796509c97d2", IPAddress: "10.0.0.2"},
 	})
 	th.AssertEquals(t, n.ID, "65c0ee9f-d634-4522-8954-51021b570b0d")
 	th.AssertDeepEquals(t, n.SecurityGroups, []string{"f0ac4394-7e4a-4409-9701-ba8be283dbc3"})
-	th.AssertDeepEquals(t, n.AllowedAddressPairs, []AddressPair{
-		AddressPair{IPAddress: "10.0.0.4", MACAddress: "fa:16:3e:c9:cb:f0"},
+	th.AssertDeepEquals(t, n.AllowedAddressPairs, []ports.AddressPair{
+		{IPAddress: "10.0.0.4", MACAddress: "fa:16:3e:c9:cb:f0"},
 	})
 }
 
 func TestRequiredCreateOpts(t *testing.T) {
-	res := Create(fake.ServiceClient(), CreateOpts{})
+	res := ports.Create(fake.ServiceClient(), ports.CreateOpts{})
 	if res.Err == nil {
 		t.Fatalf("Expected error, got none")
 	}
@@ -317,26 +318,26 @@
 		`)
 	})
 
-	options := UpdateOpts{
+	options := ports.UpdateOpts{
 		Name: "new_port_name",
-		FixedIPs: []IP{
-			IP{SubnetID: "a0304c3a-4f08-4c43-88af-d796509c97d2", IPAddress: "10.0.0.3"},
+		FixedIPs: []ports.IP{
+			{SubnetID: "a0304c3a-4f08-4c43-88af-d796509c97d2", IPAddress: "10.0.0.3"},
 		},
 		SecurityGroups: []string{"f0ac4394-7e4a-4409-9701-ba8be283dbc3"},
-		AllowedAddressPairs: []AddressPair{
-			AddressPair{IPAddress: "10.0.0.4", MACAddress: "fa:16:3e:c9:cb:f0"},
+		AllowedAddressPairs: []ports.AddressPair{
+			{IPAddress: "10.0.0.4", MACAddress: "fa:16:3e:c9:cb:f0"},
 		},
 	}
 
-	s, err := Update(fake.ServiceClient(), "65c0ee9f-d634-4522-8954-51021b570b0d", options).Extract()
+	s, err := ports.Update(fake.ServiceClient(), "65c0ee9f-d634-4522-8954-51021b570b0d", options).Extract()
 	th.AssertNoErr(t, err)
 
 	th.AssertEquals(t, s.Name, "new_port_name")
-	th.AssertDeepEquals(t, s.FixedIPs, []IP{
-		IP{SubnetID: "a0304c3a-4f08-4c43-88af-d796509c97d2", IPAddress: "10.0.0.3"},
+	th.AssertDeepEquals(t, s.FixedIPs, []ports.IP{
+		{SubnetID: "a0304c3a-4f08-4c43-88af-d796509c97d2", IPAddress: "10.0.0.3"},
 	})
-	th.AssertDeepEquals(t, s.AllowedAddressPairs, []AddressPair{
-		AddressPair{IPAddress: "10.0.0.4", MACAddress: "fa:16:3e:c9:cb:f0"},
+	th.AssertDeepEquals(t, s.AllowedAddressPairs, []ports.AddressPair{
+		{IPAddress: "10.0.0.4", MACAddress: "fa:16:3e:c9:cb:f0"},
 	})
 	th.AssertDeepEquals(t, s.SecurityGroups, []string{"f0ac4394-7e4a-4409-9701-ba8be283dbc3"})
 }
@@ -351,6 +352,6 @@
 		w.WriteHeader(http.StatusNoContent)
 	})
 
-	res := Delete(fake.ServiceClient(), "65c0ee9f-d634-4522-8954-51021b570b0d")
+	res := ports.Delete(fake.ServiceClient(), "65c0ee9f-d634-4522-8954-51021b570b0d")
 	th.AssertNoErr(t, res.Err)
 }
diff --git a/openstack/networking/v2/subnets/errors.go b/openstack/networking/v2/subnets/errors.go
deleted file mode 100644
index d2f7b46..0000000
--- a/openstack/networking/v2/subnets/errors.go
+++ /dev/null
@@ -1,14 +0,0 @@
-package subnets
-
-import "fmt"
-
-func err(str string) error {
-	return fmt.Errorf("%s", str)
-}
-
-var (
-	errNetworkIDRequired    = err("A network ID is required")
-	errCIDRRequired         = err("A valid CIDR is required")
-	errInvalidIPType        = err("An IP type must either be 4 or 6")
-	errInvalidGatewayConfig = err("Both disabling the gateway and specifying a gateway is not allowed")
-)
diff --git a/openstack/networking/v2/subnets/testing/doc.go b/openstack/networking/v2/subnets/testing/doc.go
new file mode 100644
index 0000000..7603f83
--- /dev/null
+++ b/openstack/networking/v2/subnets/testing/doc.go
@@ -0,0 +1 @@
+package testing
diff --git a/openstack/networking/v2/subnets/requests_test.go b/openstack/networking/v2/subnets/testing/requests_test.go
similarity index 85%
rename from openstack/networking/v2/subnets/requests_test.go
rename to openstack/networking/v2/subnets/testing/requests_test.go
index 4241c63..13fa9df 100644
--- a/openstack/networking/v2/subnets/requests_test.go
+++ b/openstack/networking/v2/subnets/testing/requests_test.go
@@ -1,4 +1,4 @@
-package subnets
+package testing
 
 import (
 	"fmt"
@@ -6,6 +6,7 @@
 	"testing"
 
 	fake "github.com/gophercloud/gophercloud/openstack/networking/v2/common"
+	"github.com/gophercloud/gophercloud/openstack/networking/v2/subnets"
 	"github.com/gophercloud/gophercloud/pagination"
 	th "github.com/gophercloud/gophercloud/testhelper"
 )
@@ -85,64 +86,64 @@
 
 	count := 0
 
-	List(fake.ServiceClient(), ListOpts{}).EachPage(func(page pagination.Page) (bool, error) {
+	subnets.List(fake.ServiceClient(), subnets.ListOpts{}).EachPage(func(page pagination.Page) (bool, error) {
 		count++
-		actual, err := ExtractSubnets(page)
+		actual, err := subnets.ExtractSubnets(page)
 		if err != nil {
 			t.Errorf("Failed to extract subnets: %v", err)
 			return false, nil
 		}
 
-		expected := []Subnet{
-			Subnet{
+		expected := []subnets.Subnet{
+			{
 				Name:           "private-subnet",
 				EnableDHCP:     true,
 				NetworkID:      "db193ab3-96e3-4cb3-8fc5-05f4296d0324",
 				TenantID:       "26a7980765d0414dbc1fc1f88cdb7e6e",
 				DNSNameservers: []string{},
-				AllocationPools: []AllocationPool{
-					AllocationPool{
+				AllocationPools: []subnets.AllocationPool{
+					{
 						Start: "10.0.0.2",
 						End:   "10.0.0.254",
 					},
 				},
-				HostRoutes: []HostRoute{},
+				HostRoutes: []subnets.HostRoute{},
 				IPVersion:  4,
 				GatewayIP:  "10.0.0.1",
 				CIDR:       "10.0.0.0/24",
 				ID:         "08eae331-0402-425a-923c-34f7cfe39c1b",
 			},
-			Subnet{
+			{
 				Name:           "my_subnet",
 				EnableDHCP:     true,
 				NetworkID:      "d32019d3-bc6e-4319-9c1d-6722fc136a22",
 				TenantID:       "4fd44f30292945e481c7b8a0c8908869",
 				DNSNameservers: []string{},
-				AllocationPools: []AllocationPool{
-					AllocationPool{
+				AllocationPools: []subnets.AllocationPool{
+					{
 						Start: "192.0.0.2",
 						End:   "192.255.255.254",
 					},
 				},
-				HostRoutes: []HostRoute{},
+				HostRoutes: []subnets.HostRoute{},
 				IPVersion:  4,
 				GatewayIP:  "192.0.0.1",
 				CIDR:       "192.0.0.0/8",
 				ID:         "54d6f61d-db07-451c-9ab3-b9609b6b6f0b",
 			},
-			Subnet{
+			subnets.Subnet{
 				Name:           "my_gatewayless_subnet",
 				EnableDHCP:     true,
 				NetworkID:      "d32019d3-bc6e-4319-9c1d-6722fc136a23",
 				TenantID:       "4fd44f30292945e481c7b8a0c8908869",
 				DNSNameservers: []string{},
-				AllocationPools: []AllocationPool{
-					AllocationPool{
+				AllocationPools: []subnets.AllocationPool{
+					{
 						Start: "192.168.1.2",
 						End:   "192.168.1.254",
 					},
 				},
-				HostRoutes: []HostRoute{},
+				HostRoutes: []subnets.HostRoute{},
 				IPVersion:  4,
 				GatewayIP:  "",
 				CIDR:       "192.168.1.0/24",
@@ -195,7 +196,7 @@
 			`)
 	})
 
-	s, err := Get(fake.ServiceClient(), "54d6f61d-db07-451c-9ab3-b9609b6b6f0b").Extract()
+	s, err := subnets.Get(fake.ServiceClient(), "54d6f61d-db07-451c-9ab3-b9609b6b6f0b").Extract()
 	th.AssertNoErr(t, err)
 
 	th.AssertEquals(t, s.Name, "my_subnet")
@@ -203,13 +204,13 @@
 	th.AssertEquals(t, s.NetworkID, "d32019d3-bc6e-4319-9c1d-6722fc136a22")
 	th.AssertEquals(t, s.TenantID, "4fd44f30292945e481c7b8a0c8908869")
 	th.AssertDeepEquals(t, s.DNSNameservers, []string{})
-	th.AssertDeepEquals(t, s.AllocationPools, []AllocationPool{
-		AllocationPool{
+	th.AssertDeepEquals(t, s.AllocationPools, []subnets.AllocationPool{
+		{
 			Start: "192.0.0.2",
 			End:   "192.255.255.254",
 		},
 	})
-	th.AssertDeepEquals(t, s.HostRoutes, []HostRoute{})
+	th.AssertDeepEquals(t, s.HostRoutes, []subnets.HostRoute{})
 	th.AssertEquals(t, s.IPVersion, 4)
 	th.AssertEquals(t, s.GatewayIP, "192.0.0.1")
 	th.AssertEquals(t, s.CIDR, "192.0.0.0/8")
@@ -271,22 +272,22 @@
 		`)
 	})
 
-	opts := CreateOpts{
+	opts := subnets.CreateOpts{
 		NetworkID: "d32019d3-bc6e-4319-9c1d-6722fc136a22",
 		IPVersion: 4,
 		CIDR:      "192.168.199.0/24",
-		AllocationPools: []AllocationPool{
-			AllocationPool{
+		AllocationPools: []subnets.AllocationPool{
+			{
 				Start: "192.168.199.2",
 				End:   "192.168.199.254",
 			},
 		},
 		DNSNameservers: []string{"foo"},
-		HostRoutes: []HostRoute{
-			HostRoute{NextHop: "bar"},
+		HostRoutes: []subnets.HostRoute{
+			{NextHop: "bar"},
 		},
 	}
-	s, err := Create(fake.ServiceClient(), opts).Extract()
+	s, err := subnets.Create(fake.ServiceClient(), opts).Extract()
 	th.AssertNoErr(t, err)
 
 	th.AssertEquals(t, s.Name, "")
@@ -294,13 +295,13 @@
 	th.AssertEquals(t, s.NetworkID, "d32019d3-bc6e-4319-9c1d-6722fc136a22")
 	th.AssertEquals(t, s.TenantID, "4fd44f30292945e481c7b8a0c8908869")
 	th.AssertDeepEquals(t, s.DNSNameservers, []string{})
-	th.AssertDeepEquals(t, s.AllocationPools, []AllocationPool{
-		AllocationPool{
+	th.AssertDeepEquals(t, s.AllocationPools, []subnets.AllocationPool{
+		{
 			Start: "192.168.199.2",
 			End:   "192.168.199.254",
 		},
 	})
-	th.AssertDeepEquals(t, s.HostRoutes, []HostRoute{})
+	th.AssertDeepEquals(t, s.HostRoutes, []subnets.HostRoute{})
 	th.AssertEquals(t, s.IPVersion, 4)
 	th.AssertEquals(t, s.GatewayIP, "192.168.199.1")
 	th.AssertEquals(t, s.CIDR, "192.168.199.0/24")
@@ -359,32 +360,32 @@
 		`)
 	})
 
-	opts := CreateOpts{
+	opts := subnets.CreateOpts{
 		NetworkID: "d32019d3-bc6e-4319-9c1d-6722fc136a23",
 		IPVersion: 4,
 		CIDR:      "192.168.1.0/24",
-		AllocationPools: []AllocationPool{
-			AllocationPool{
+		AllocationPools: []subnets.AllocationPool{
+			{
 				Start: "192.168.1.2",
 				End:   "192.168.1.254",
 			},
 		},
 		DNSNameservers: []string{},
 	}
-	s, err := Create(fake.ServiceClient(), opts).Extract()
+	s, err := subnets.Create(fake.ServiceClient(), opts).Extract()
 	th.AssertNoErr(t, err)
 
 	th.AssertEquals(t, s.Name, "")
 	th.AssertEquals(t, s.EnableDHCP, true)
 	th.AssertEquals(t, s.NetworkID, "d32019d3-bc6e-4319-9c1d-6722fc136a23")
 	th.AssertEquals(t, s.TenantID, "4fd44f30292945e481c7b8a0c8908869")
-	th.AssertDeepEquals(t, s.AllocationPools, []AllocationPool{
-		AllocationPool{
+	th.AssertDeepEquals(t, s.AllocationPools, []subnets.AllocationPool{
+		{
 			Start: "192.168.1.2",
 			End:   "192.168.1.254",
 		},
 	})
-	th.AssertDeepEquals(t, s.HostRoutes, []HostRoute{})
+	th.AssertDeepEquals(t, s.HostRoutes, []subnets.HostRoute{})
 	th.AssertEquals(t, s.IPVersion, 4)
 	th.AssertEquals(t, s.GatewayIP, "")
 	th.AssertEquals(t, s.CIDR, "192.168.1.0/24")
@@ -392,17 +393,17 @@
 }
 
 func TestRequiredCreateOpts(t *testing.T) {
-	res := Create(fake.ServiceClient(), CreateOpts{})
+	res := subnets.Create(fake.ServiceClient(), subnets.CreateOpts{})
 	if res.Err == nil {
 		t.Fatalf("Expected error, got none")
 	}
 
-	res = Create(fake.ServiceClient(), CreateOpts{NetworkID: "foo"})
+	res = subnets.Create(fake.ServiceClient(), subnets.CreateOpts{NetworkID: "foo"})
 	if res.Err == nil {
 		t.Fatalf("Expected error, got none")
 	}
 
-	res = Create(fake.ServiceClient(), CreateOpts{NetworkID: "foo", CIDR: "bar", IPVersion: 40})
+	res = subnets.Create(fake.ServiceClient(), subnets.CreateOpts{NetworkID: "foo", CIDR: "bar", IPVersion: 40})
 	if res.Err == nil {
 		t.Fatalf("Expected error, got none")
 	}
@@ -454,14 +455,14 @@
 	`)
 	})
 
-	opts := UpdateOpts{
+	opts := subnets.UpdateOpts{
 		Name:           "my_new_subnet",
 		DNSNameservers: []string{"foo"},
-		HostRoutes: []HostRoute{
-			HostRoute{NextHop: "bar"},
+		HostRoutes: []subnets.HostRoute{
+			{NextHop: "bar"},
 		},
 	}
-	s, err := Update(fake.ServiceClient(), "08eae331-0402-425a-923c-34f7cfe39c1b", opts).Extract()
+	s, err := subnets.Update(fake.ServiceClient(), "08eae331-0402-425a-923c-34f7cfe39c1b", opts).Extract()
 	th.AssertNoErr(t, err)
 
 	th.AssertEquals(t, s.Name, "my_new_subnet")
@@ -478,6 +479,6 @@
 		w.WriteHeader(http.StatusNoContent)
 	})
 
-	res := Delete(fake.ServiceClient(), "08eae331-0402-425a-923c-34f7cfe39c1b")
+	res := subnets.Delete(fake.ServiceClient(), "08eae331-0402-425a-923c-34f7cfe39c1b")
 	th.AssertNoErr(t, res.Err)
 }
diff --git a/openstack/networking/v2/subnets/results_test.go b/openstack/networking/v2/subnets/testing/results_test.go
similarity index 77%
rename from openstack/networking/v2/subnets/results_test.go
rename to openstack/networking/v2/subnets/testing/results_test.go
index ce71a46..a227ccd 100644
--- a/openstack/networking/v2/subnets/results_test.go
+++ b/openstack/networking/v2/subnets/testing/results_test.go
@@ -1,10 +1,12 @@
-package subnets
+package testing
 
 import (
 	"encoding/json"
-	"github.com/gophercloud/gophercloud"
-	th "github.com/gophercloud/gophercloud/testhelper"
 	"testing"
+
+	"github.com/gophercloud/gophercloud"
+	"github.com/gophercloud/gophercloud/openstack/networking/v2/subnets"
+	th "github.com/gophercloud/gophercloud/testhelper"
 )
 
 func TestHostRoute(t *testing.T) {
@@ -26,7 +28,7 @@
       "host_routes": [
         {
           "destination": "172.20.1.0/24",
-		  "nexthop": "172.16.0.2"
+		  		"nexthop": "172.16.0.2"
         }
       ],
       "ip_version": 4,
@@ -43,12 +45,15 @@
 		t.Fatalf("%s", err)
 	}
 
-	resp := commonResult{gophercloud.Result{Body: dejson}}
-	subnet, err := resp.Extract()
+	resp := gophercloud.Result{Body: dejson}
+	var subnetWrapper struct {
+		Subnet subnets.Subnet `json:"subnet"`
+	}
+	err = resp.ExtractInto(&subnetWrapper)
 	if err != nil {
 		t.Fatalf("%s", err)
 	}
-	route := subnet.HostRoutes[0]
+	route := subnetWrapper.Subnet.HostRoutes[0]
 	th.AssertEquals(t, route.NextHop, "172.16.0.2")
 	th.AssertEquals(t, route.DestinationCIDR, "172.20.1.0/24")
 }
