diff --git a/acceptance/openstack/networking/v2/extensions/pkg.go b/acceptance/openstack/networking/v2/extensions/pkg.go
new file mode 100644
index 0000000..aeec0fa
--- /dev/null
+++ b/acceptance/openstack/networking/v2/extensions/pkg.go
@@ -0,0 +1 @@
+package extensions
diff --git a/acceptance/openstack/networking/v2/extensions/provider_test.go b/acceptance/openstack/networking/v2/extensions/provider_test.go
new file mode 100644
index 0000000..dc21ae5
--- /dev/null
+++ b/acceptance/openstack/networking/v2/extensions/provider_test.go
@@ -0,0 +1,67 @@
+// +build acceptance networking
+
+package extensions
+
+import (
+	"strconv"
+	"testing"
+
+	"github.com/rackspace/gophercloud/openstack/networking/v2/networks"
+	"github.com/rackspace/gophercloud/pagination"
+	th "github.com/rackspace/gophercloud/testhelper"
+)
+
+func TestNetworkCRUDOperations(t *testing.T) {
+	Setup(t)
+	defer Teardown()
+
+	// Create a network
+	n, err := networks.Create(Client, networks.CreateOpts{Name: "sample_network", AdminStateUp: true}).Extract()
+	th.AssertNoErr(t, err)
+	th.AssertEquals(t, n.Name, "sample_network")
+	th.AssertEquals(t, n.AdminStateUp, true)
+	networkID := n.ID
+
+	// List networks
+	pager := networks.List(Client, networks.ListOpts{Limit: 2})
+	err = pager.EachPage(func(page pagination.Page) (bool, error) {
+		t.Logf("--- Page ---")
+
+		networkList, err := networks.ExtractNetworks(page)
+		th.AssertNoErr(t, err)
+
+		for _, n := range networkList {
+			t.Logf("Network: ID [%s] Name [%s] Status [%s] Is shared? [%s]",
+				n.ID, n.Name, n.Status, strconv.FormatBool(n.Shared))
+		}
+
+		return true, nil
+	})
+	th.CheckNoErr(t, err)
+
+	// Get a network
+	if networkID == "" {
+		t.Fatalf("In order to retrieve a network, the NetworkID must be set")
+	}
+	n, err = networks.Get(Client, networkID).Extract()
+	th.AssertNoErr(t, err)
+	th.AssertEquals(t, n.Status, "ACTIVE")
+	th.AssertDeepEquals(t, n.Subnets, []string{})
+	th.AssertEquals(t, n.Name, "sample_network")
+	th.AssertEquals(t, n.AdminStateUp, true)
+	th.AssertEquals(t, n.Shared, false)
+	th.AssertEquals(t, n.ID, networkID)
+
+	// Update network
+	n, err = networks.Update(Client, networkID, networks.UpdateOpts{Name: "new_network_name"}).Extract()
+	th.AssertNoErr(t, err)
+	th.AssertEquals(t, n.Name, "new_network_name")
+
+	// Delete network
+	res := networks.Delete(Client, networkID)
+	th.AssertNoErr(t, res.Err)
+}
+
+func TestCreateMultipleNetworks(t *testing.T) {
+	//networks.CreateMany()
+}
diff --git a/acceptance/openstack/networking/v2/extensions/quota_test.go b/acceptance/openstack/networking/v2/extensions/quota_test.go
deleted file mode 100644
index f855046..0000000
--- a/acceptance/openstack/networking/v2/extensions/quota_test.go
+++ /dev/null
@@ -1,45 +0,0 @@
-// +build acceptance networking quotas
-
-package extensions
-
-import (
-	"testing"
-
-	base "github.com/rackspace/gophercloud/acceptance/openstack/networking/v2"
-	"github.com/rackspace/gophercloud/openstack/networking/v2/extensions/quotas"
-)
-
-func TestQuotas(t *testing.T) {
-	base.Setup()
-	defer Teardown()
-
-	setQuotas(t)
-	getQuotas(t)
-	resetQuotas(t)
-}
-
-func getQuotas(t *testing.T) {
-	qs, err := quotas.Get(base.Client).Extract()
-	th.AssertNoErr(t, err)
-	th.AssertEquals(t, qs.Subnet, 10)
-	th.AssertEquals(t, qs.Router, 10)
-	th.AssertEquals(t, qs.Port, 50)
-	th.AssertEquals(t, qs.Network, 10)
-	th.AssertEquals(t, qs.FloatingIP, 50)
-}
-
-func setQuotas(t *testing.T) {
-	i10, i20, i30 := 10, 20, 30
-	opts := UpdateOpts{Member: &i30, Pool: &i20, SecGroup: &i20, HealthMonitor: &i10}
-	qs, err := quotas.Update(base.Client).Extract()
-	th.AssertNoErr(t, err)
-	th.AssertEquals(t, qs.Member, 30)
-	th.AssertEquals(t, qs.Pool, 20)
-	th.AssertEquals(t, qs.SecGroup, 20)
-	th.AssertEquals(t, qs.HealthMonitor, 10)
-}
-
-func resetQuotas(t *testing.T) {
-	res := quotas.Reset(base.Client)
-	th.AssertNoErr(t, res.Err)
-}
