diff --git a/acceptance/openstack/identity/02-rbac-monitoring.go b/acceptance/openstack/identity/02-rbac-monitoring.go
new file mode 100644
index 0000000..707177e
--- /dev/null
+++ b/acceptance/openstack/identity/02-rbac-monitoring.go
@@ -0,0 +1,64 @@
+package main
+
+import (
+	"fmt"
+	"github.com/rackspace/gophercloud/openstack/identity"
+	"github.com/rackspace/gophercloud/openstack/utils"
+	"github.com/rackspace/gophercloud/rackspace/monitoring"
+	"github.com/rackspace/gophercloud/rackspace/monitoring/notificationPlans"
+)
+
+func main() {
+	ao, err := utils.AuthOptions()
+	if err != nil {
+		panic(err)
+	}
+
+	ao.AllowReauth = true
+	r, err := identity.Authenticate(ao)
+	if err != nil {
+		panic(err)
+	}
+
+	// Find the cloud monitoring API
+
+	sc, err := identity.ServiceCatalog(r)
+	if err != nil {
+		panic(err)
+	}
+
+	ces, err := sc.CatalogEntries()
+	if err != nil {
+		panic(err)
+	}
+
+	monUrl, err := findMonitoringEndpoint(ces)
+	if err != nil {
+		panic(err)
+	}
+
+	// Build ourselves an interface to cloud monitoring!
+
+	np := notificationPlans.NewClient(monitoring.Options{
+		Endpoint:       monUrl,
+		AuthOptions:    ao,
+		Authentication: r,
+	})
+
+	// Try to delete a bogus notification plan
+
+	dr, err := np.Delete("ajkhdlkajhdflkajshdf")
+	if err != nil {
+		panic(err)
+	}
+	fmt.Printf("%#v\n", dr)
+}
+
+func findMonitoringEndpoint(ces []identity.CatalogEntry) (string, error) {
+	for _, ce := range ces {
+		if ce.Type == "rax:monitor" {
+			return ce.Endpoints[0].PublicURL, nil
+		}
+	}
+	return "", fmt.Errorf("No monitoring API in the service catalog")
+}
diff --git a/openstack/identity/service_catalog.go b/openstack/identity/service_catalog.go
index fc2717a..af6bbdb 100644
--- a/openstack/identity/service_catalog.go
+++ b/openstack/identity/service_catalog.go
@@ -7,17 +7,17 @@
 }
 
 type CatalogEntry struct {
-	Name string
-	Type string
+	Name      string
+	Type      string
 	Endpoints []Endpoint
 }
 
 type Endpoint struct {
-	TenantId string
-	PublicURL string
+	TenantId    string
+	PublicURL   string
 	InternalURL string
-	Region string
-	VersionId string
+	Region      string
+	VersionId   string
 	VersionInfo string
 	VersionList string
 }
@@ -45,8 +45,8 @@
 			return ces, err
 		}
 		ces[i] = CatalogEntry{
-			Name: d["name"].(string),
-			Type: d["type"].(string),
+			Name:      d["name"].(string),
+			Type:      d["type"].(string),
 			Endpoints: eps,
 		}
 	}
diff --git a/openstack/identity/service_catalog_test.go b/openstack/identity/service_catalog_test.go
index 4411b9f..82e4d9a 100644
--- a/openstack/identity/service_catalog_test.go
+++ b/openstack/identity/service_catalog_test.go
@@ -1,8 +1,8 @@
 package identity
 
 import (
-	"testing"
 	"encoding/json"
+	"testing"
 )
 
 func TestServiceCatalog(t *testing.T) {
@@ -88,4 +88,4 @@
 		return true
 	}
 	return false
-}
\ No newline at end of file
+}
diff --git a/rackspace/monitoring/common.go b/rackspace/monitoring/common.go
new file mode 100644
index 0000000..d68a349
--- /dev/null
+++ b/rackspace/monitoring/common.go
@@ -0,0 +1,11 @@
+package monitoring
+
+import (
+	"github.com/rackspace/gophercloud/openstack/identity"
+)
+
+type Options struct {
+	Endpoint       string
+	AuthOptions    identity.AuthOptions
+	Authentication identity.AuthResults
+}
diff --git a/rackspace/monitoring/notificationPlans/requests.go b/rackspace/monitoring/notificationPlans/requests.go
new file mode 100644
index 0000000..b77cefd
--- /dev/null
+++ b/rackspace/monitoring/notificationPlans/requests.go
@@ -0,0 +1,32 @@
+package notificationPlans
+
+import (
+	"fmt"
+	"github.com/rackspace/gophercloud/rackspace/monitoring"
+	"github.com/racker/perigee"
+)
+
+var ErrNotImplemented = fmt.Errorf("notificationPlans feature not yet implemented")
+
+type Client struct {
+	options monitoring.Options
+}
+
+type DeleteResults map[string]interface{}
+
+func NewClient(mo monitoring.Options) *Client {
+	return &Client{
+		options: mo,
+	}
+}
+
+func (c *Client) Delete(id string) (DeleteResults, error) {
+	var dr DeleteResults
+
+	url := fmt.Sprintf("%s/notification_plans/%s", c.options.Endpoint, id)
+	err := perigee.Delete(url, perigee.Options{
+		Results: &dr,
+		OkCodes: []int{204},
+	})
+	return dr, err
+}
