diff --git a/rackspace/networking/v2/networks/delegate.go b/rackspace/networking/v2/networks/delegate.go
new file mode 100644
index 0000000..e040d58
--- /dev/null
+++ b/rackspace/networking/v2/networks/delegate.go
@@ -0,0 +1,11 @@
+package networks
+
+import (
+  "github.com/rackspace/gophercloud"
+  os "github.com/rackspace/gophercloud/openstack/networking/v2/networks"
+)
+
+// Delete accepts a unique ID and deletes the network associated with it.
+func Delete(c *gophercloud.ServiceClient, id string) os.DeleteResult {
+  return os.Delete(c, id)
+}
diff --git a/rackspace/networking/v2/networks/delegate_test.go b/rackspace/networking/v2/networks/delegate_test.go
new file mode 100644
index 0000000..83c4a6a
--- /dev/null
+++ b/rackspace/networking/v2/networks/delegate_test.go
@@ -0,0 +1 @@
+package networks
diff --git a/rackspace/networking/v2/networks/requests.go b/rackspace/networking/v2/networks/requests.go
new file mode 100644
index 0000000..f7896b8
--- /dev/null
+++ b/rackspace/networking/v2/networks/requests.go
@@ -0,0 +1,90 @@
+package networks
+
+import (
+  "errors"
+
+  "github.com/rackspace/gophercloud"
+  "github.com/rackspace/gophercloud/pagination"
+
+  "github.com/racker/perigee"
+)
+
+// List returns a Pager which allows you to iterate over a collection of
+// networks. It accepts a ListOpts struct, which allows you to filter and sort
+// the returned collection for greater efficiency.
+func List(c *gophercloud.ServiceClient) pagination.Pager {
+  url := listURL(c)
+  return pagination.NewPager(c, url, func(r pagination.PageResult) pagination.Page {
+    return NetworkPage{pagination.SinglePageBase{PageResult: r}}
+  })
+}
+
+// Get retrieves a specific network based on its unique ID.
+func Get(c *gophercloud.ServiceClient, id string) GetResult {
+  var res GetResult
+  _, res.Err = perigee.Request("GET", getURL(c, id), perigee.Options{
+    MoreHeaders: c.Provider.AuthenticatedHeaders(),
+    Results:     &res.Body,
+    OkCodes:     []int{200},
+  })
+  return res
+}
+
+// CreateOptsBuilder is the interface options structs have to satisfy in order
+// to be used in the main Create operation in this package. Since many
+// extensions decorate or modify the common logic, it is useful for them to
+// satisfy a basic interface in order for them to be used.
+type CreateOptsBuilder interface {
+  ToNetworkCreateMap() (map[string]interface{}, error)
+}
+
+// CreateOpts is the common options struct used in this package's Create
+// operation.
+type CreateOpts struct{
+  // REQUIRED. See Network object for more info.
+  CIDR string
+  // REQUIRED. See Network object for more info.
+  Label string
+}
+
+// ToNetworkCreateMap casts a CreateOpts struct to a map.
+func (opts CreateOpts) ToNetworkCreateMap() (map[string]interface{}, error) {
+  n := make(map[string]interface{})
+
+  if opts.CIDR == "" {
+    return nil, errors.New("Required field CIDR not set.")
+  }
+  if opts.Label == "" {
+    return nil, errors.New("Required field Label not set.")
+  }
+
+  n["label"] = opts.Label
+  n["cidr"] = opts.CIDR
+  return map[string]interface{}{"network": n}, nil
+}
+
+// Create accepts a CreateOpts struct and creates a new network using the values
+// provided. This operation does not actually require a request body, i.e. the
+// CreateOpts struct argument can be empty.
+//
+// The tenant ID that is contained in the URI is the tenant that creates the
+// network. An admin user, however, has the option of specifying another tenant
+// ID in the CreateOpts struct.
+func Create(c *gophercloud.ServiceClient, opts CreateOptsBuilder) CreateResult {
+  var res CreateResult
+
+  reqBody, err := opts.ToNetworkCreateMap()
+  if err != nil {
+    res.Err = err
+    return res
+  }
+
+  // Send request to API
+  _, res.Err = perigee.Request("POST", createURL(c), perigee.Options{
+    MoreHeaders: c.Provider.AuthenticatedHeaders(),
+    ReqBody:     &reqBody,
+    Results:     &res.Body,
+    OkCodes:     []int{201},
+  })
+  return res
+}
diff --git a/rackspace/networking/v2/networks/requests_test.go b/rackspace/networking/v2/networks/requests_test.go
new file mode 100644
index 0000000..83c4a6a
--- /dev/null
+++ b/rackspace/networking/v2/networks/requests_test.go
@@ -0,0 +1 @@
+package networks
diff --git a/rackspace/networking/v2/networks/results.go b/rackspace/networking/v2/networks/results.go
new file mode 100644
index 0000000..2334faf
--- /dev/null
+++ b/rackspace/networking/v2/networks/results.go
@@ -0,0 +1,70 @@
+package networks
+
+import (
+  "github.com/mitchellh/mapstructure"
+  "github.com/rackspace/gophercloud"
+  "github.com/rackspace/gophercloud/pagination"
+)
+
+type commonResult struct {
+  gophercloud.Result
+}
+
+// Extract is a function that accepts a result and extracts a network resource.
+func (r commonResult) Extract() (*Network, error) {
+  if r.Err != nil {
+    return nil, r.Err
+  }
+
+  var res struct {
+    Network *Network `json:"network"`
+  }
+
+  err := mapstructure.Decode(r.Body, &res)
+
+  return res.Network, err
+}
+
+// CreateResult represents the result of a create operation.
+type CreateResult struct {
+  commonResult
+}
+
+// GetResult represents the result of a get operation.
+type GetResult struct {
+  commonResult
+}
+
+// DeleteResult represents the result of a delete operation.
+type DeleteResult commonResult
+
+// Network represents, well, a network.
+type Network struct {
+  // UUID for the network
+  ID string `mapstructure:"id" json:"id"`
+
+  // Human-readable name for the network. Might not be unique.
+  Label string `mapstructure:"label" json:"label"`
+
+  // Classless Inter-Domain Routing
+  CIDR string `mapstructure:"cidr" json:"cidr"`
+}
+
+// NetworkPage is the page returned by a pager when traversing over a
+// collection of networks.
+type NetworkPage struct {
+  pagination.SinglePageBase
+}
+
+// ExtractNetworks accepts a Page struct, specifically a NetworkPage struct,
+// and extracts the elements into a slice of Network structs. In other words,
+// a generic collection is mapped into a relevant slice.
+func ExtractNetworks(page pagination.Page) ([]Network, error) {
+  var resp struct {
+    Networks []Network `mapstructure:"networks" json:"networks"`
+  }
+
+  err := mapstructure.Decode(page.(NetworkPage).Body, &resp)
+
+  return resp.Networks, err
+}
diff --git a/rackspace/networking/v2/networks/urls.go b/rackspace/networking/v2/networks/urls.go
new file mode 100644
index 0000000..65d843b
--- /dev/null
+++ b/rackspace/networking/v2/networks/urls.go
@@ -0,0 +1,27 @@
+package networks
+
+import "github.com/rackspace/gophercloud"
+
+func resourceURL(c *gophercloud.ServiceClient, id string) string {
+  return c.ServiceURL("os-networksv2", id)
+}
+
+func rootURL(c *gophercloud.ServiceClient) string {
+  return c.ServiceURL("networks")
+}
+
+func getURL(c *gophercloud.ServiceClient, id string) string {
+  return resourceURL(c, id)
+}
+
+func listURL(c *gophercloud.ServiceClient) string {
+  return rootURL(c)
+}
+
+func createURL(c *gophercloud.ServiceClient) string {
+  return rootURL(c)
+}
+
+func deleteURL(c *gophercloud.ServiceClient, id string) string {
+  return resourceURL(c, id)
+}
diff --git a/rackspace/networking/v2/networks/urls_test.go b/rackspace/networking/v2/networks/urls_test.go
new file mode 100644
index 0000000..2e064b0
--- /dev/null
+++ b/rackspace/networking/v2/networks/urls_test.go
@@ -0,0 +1,38 @@
+package networks
+
+import (
+  "testing"
+
+  "github.com/rackspace/gophercloud"
+  th "github.com/rackspace/gophercloud/testhelper"
+)
+
+const endpoint = "http://localhost:57909"
+
+func endpointClient() *gophercloud.ServiceClient {
+  return &gophercloud.ServiceClient{Endpoint: endpoint}
+}
+
+func TestGetURL(t *testing.T) {
+  actual := getURL(endpointClient(), "foo")
+  expected := endpoint + "os-networksv2/foo"
+  th.AssertEquals(t, expected, actual)
+}
+
+func TestCreateURL(t *testing.T) {
+  actual := createURL(endpointClient())
+  expected := endpoint + "os-networksv2"
+  th.AssertEquals(t, expected, actual)
+}
+
+func TestListURL(t *testing.T) {
+  actual := createURL(endpointClient())
+  expected := endpoint + "os-networksv2"
+  th.AssertEquals(t, expected, actual)
+}
+
+func TestDeleteURL(t *testing.T) {
+  actual := deleteURL(endpointClient(), "foo")
+  expected := endpoint + "os-networksv2/foo"
+  th.AssertEquals(t, expected, actual)
+}
