diff --git a/openstack/db/v1/databases/requests.go b/openstack/db/v1/databases/requests.go
index 300e177..4d10878 100644
--- a/openstack/db/v1/databases/requests.go
+++ b/openstack/db/v1/databases/requests.go
@@ -3,7 +3,6 @@
 import (
 	"fmt"
 
-	"github.com/racker/perigee"
 	"github.com/rackspace/gophercloud"
 	"github.com/rackspace/gophercloud/pagination"
 )
@@ -68,16 +67,12 @@
 		return res
 	}
 
-	resp, err := perigee.Request("POST", baseURL(client, instanceID), perigee.Options{
-		MoreHeaders: client.AuthenticatedHeaders(),
-		ReqBody:     &reqBody,
-		Results:     &res.Body,
-		OkCodes:     []int{202},
+	_, res.Err = client.Request("POST", baseURL(client, instanceID), gophercloud.RequestOpts{
+		JSONBody:     &reqBody,
+		JSONResponse: &res.Body,
+		OkCodes:      []int{202},
 	})
 
-	res.Header = resp.HttpResponse.Header
-	res.Err = err
-
 	return res
 }
 
@@ -92,14 +87,10 @@
 func Delete(client *gophercloud.ServiceClient, instanceID, dbName string) DeleteResult {
 	var res DeleteResult
 
-	resp, err := perigee.Request("DELETE", dbURL(client, instanceID, dbName), perigee.Options{
-		MoreHeaders: client.AuthenticatedHeaders(),
-		Results:     &res.Body,
-		OkCodes:     []int{202},
+	_, res.Err = client.Request("DELETE", dbURL(client, instanceID, dbName), gophercloud.RequestOpts{
+		JSONBody: &res.Body,
+		OkCodes:  []int{202},
 	})
 
-	res.Header = resp.HttpResponse.Header
-	res.Err = err
-
 	return res
 }
diff --git a/openstack/db/v1/flavors/requests.go b/openstack/db/v1/flavors/requests.go
index 3799469..b67a07b 100644
--- a/openstack/db/v1/flavors/requests.go
+++ b/openstack/db/v1/flavors/requests.go
@@ -1,7 +1,6 @@
 package flavors
 
 import (
-	"github.com/racker/perigee"
 	"github.com/rackspace/gophercloud"
 	"github.com/rackspace/gophercloud/pagination"
 )
@@ -16,9 +15,11 @@
 
 func Get(client *gophercloud.ServiceClient, id string) GetResult {
 	var gr GetResult
-	gr.Err = perigee.Get(getURL(client, id), perigee.Options{
-		Results:     &gr.Body,
-		MoreHeaders: client.AuthenticatedHeaders(),
+
+	_, gr.Err = client.Request("GET", getURL(client, id), gophercloud.RequestOpts{
+		JSONResponse: &gr.Body,
+		OkCodes:      []int{200},
 	})
+
 	return gr
 }
diff --git a/openstack/db/v1/instances/requests.go b/openstack/db/v1/instances/requests.go
index 84e4615..fc971fd 100644
--- a/openstack/db/v1/instances/requests.go
+++ b/openstack/db/v1/instances/requests.go
@@ -3,7 +3,6 @@
 import (
 	"fmt"
 
-	"github.com/racker/perigee"
 	"github.com/rackspace/gophercloud"
 	db "github.com/rackspace/gophercloud/openstack/db/v1/databases"
 	"github.com/rackspace/gophercloud/openstack/db/v1/users"
@@ -87,16 +86,12 @@
 		return res
 	}
 
-	resp, err := perigee.Request("POST", baseURL(client), perigee.Options{
-		MoreHeaders: client.AuthenticatedHeaders(),
-		ReqBody:     &reqBody,
-		Results:     &res.Body,
-		OkCodes:     []int{200},
+	_, res.Err = client.Request("POST", baseURL(client), gophercloud.RequestOpts{
+		JSONBody:     &reqBody,
+		JSONResponse: &res.Body,
+		OkCodes:      []int{200},
 	})
 
-	res.Header = resp.HttpResponse.Header
-	res.Err = err
-
 	return res
 }
 
@@ -113,15 +108,11 @@
 func Get(client *gophercloud.ServiceClient, id string) GetResult {
 	var res GetResult
 
-	resp, err := perigee.Request("GET", resourceURL(client, id), perigee.Options{
-		MoreHeaders: client.AuthenticatedHeaders(),
-		Results:     &res.Body,
-		OkCodes:     []int{200},
+	_, res.Err = client.Request("GET", resourceURL(client, id), gophercloud.RequestOpts{
+		JSONResponse: &res.Body,
+		OkCodes:      []int{200},
 	})
 
-	res.Header = resp.HttpResponse.Header
-	res.Err = err
-
 	return res
 }
 
@@ -129,14 +120,10 @@
 func Delete(client *gophercloud.ServiceClient, id string) DeleteResult {
 	var res DeleteResult
 
-	resp, err := perigee.Request("DELETE", resourceURL(client, id), perigee.Options{
-		MoreHeaders: client.AuthenticatedHeaders(),
-		OkCodes:     []int{202},
+	_, res.Err = client.Request("DELETE", resourceURL(client, id), gophercloud.RequestOpts{
+		OkCodes: []int{202},
 	})
 
-	res.Header = resp.HttpResponse.Header
-	res.Err = err
-
 	return res
 }
 
@@ -145,15 +132,11 @@
 func EnableRootUser(client *gophercloud.ServiceClient, id string) UserRootResult {
 	var res UserRootResult
 
-	resp, err := perigee.Request("POST", userRootURL(client, id), perigee.Options{
-		MoreHeaders: client.AuthenticatedHeaders(),
-		Results:     &res.Body,
-		OkCodes:     []int{200},
+	_, res.Err = client.Request("POST", userRootURL(client, id), gophercloud.RequestOpts{
+		JSONResponse: &res.Body,
+		OkCodes:      []int{200},
 	})
 
-	res.Header = resp.HttpResponse.Header
-	res.Err = err
-
 	return res
 }
 
@@ -163,10 +146,9 @@
 func IsRootEnabled(client *gophercloud.ServiceClient, id string) (bool, error) {
 	var res gophercloud.Result
 
-	_, err := perigee.Request("GET", userRootURL(client, id), perigee.Options{
-		MoreHeaders: client.AuthenticatedHeaders(),
-		Results:     &res.Body,
-		OkCodes:     []int{200},
+	_, err := client.Request("GET", userRootURL(client, id), gophercloud.RequestOpts{
+		JSONResponse: &res.Body,
+		OkCodes:      []int{200},
 	})
 
 	return res.Body.(map[string]interface{})["rootEnabled"] == true, err
@@ -178,15 +160,11 @@
 func RestartService(client *gophercloud.ServiceClient, id string) ActionResult {
 	var res ActionResult
 
-	resp, err := perigee.Request("POST", actionURL(client, id), perigee.Options{
-		MoreHeaders: client.AuthenticatedHeaders(),
-		ReqBody:     map[string]bool{"restart": true},
-		OkCodes:     []int{202},
+	_, res.Err = client.Request("POST", actionURL(client, id), gophercloud.RequestOpts{
+		JSONBody: map[string]bool{"restart": true},
+		OkCodes:  []int{202},
 	})
 
-	res.Header = resp.HttpResponse.Header
-	res.Err = err
-
 	return res
 }
 
@@ -201,15 +179,11 @@
 		},
 	}
 
-	resp, err := perigee.Request("POST", actionURL(client, id), perigee.Options{
-		MoreHeaders: client.AuthenticatedHeaders(),
-		ReqBody:     reqBody,
-		OkCodes:     []int{202},
+	_, res.Err = client.Request("POST", actionURL(client, id), gophercloud.RequestOpts{
+		JSONBody: reqBody,
+		OkCodes:  []int{202},
 	})
 
-	res.Header = resp.HttpResponse.Header
-	res.Err = err
-
 	return res
 }
 
@@ -225,14 +199,10 @@
 		},
 	}
 
-	resp, err := perigee.Request("POST", actionURL(client, id), perigee.Options{
-		MoreHeaders: client.AuthenticatedHeaders(),
-		ReqBody:     reqBody,
-		OkCodes:     []int{202},
+	_, res.Err = client.Request("POST", actionURL(client, id), gophercloud.RequestOpts{
+		JSONBody: reqBody,
+		OkCodes:  []int{202},
 	})
 
-	res.Header = resp.HttpResponse.Header
-	res.Err = err
-
 	return res
 }
diff --git a/openstack/db/v1/users/requests.go b/openstack/db/v1/users/requests.go
index 529f43f..e596739 100644
--- a/openstack/db/v1/users/requests.go
+++ b/openstack/db/v1/users/requests.go
@@ -1,7 +1,6 @@
 package users
 
 import (
-	"github.com/racker/perigee"
 	"github.com/rackspace/gophercloud"
 	db "github.com/rackspace/gophercloud/openstack/db/v1/databases"
 	"github.com/rackspace/gophercloud/pagination"
@@ -77,15 +76,11 @@
 		return res
 	}
 
-	resp, err := perigee.Request("POST", baseURL(client, instanceID), perigee.Options{
-		MoreHeaders: client.AuthenticatedHeaders(),
-		ReqBody:     &reqBody,
-		OkCodes:     []int{202},
+	_, res.Err = client.Request("POST", baseURL(client, instanceID), gophercloud.RequestOpts{
+		JSONBody: &reqBody,
+		OkCodes:  []int{202},
 	})
 
-	res.Header = resp.HttpResponse.Header
-	res.Err = err
-
 	return res
 }
 
@@ -100,13 +95,9 @@
 func Delete(client *gophercloud.ServiceClient, instanceID, userName string) DeleteResult {
 	var res DeleteResult
 
-	resp, err := perigee.Request("DELETE", userURL(client, instanceID, userName), perigee.Options{
-		MoreHeaders: client.AuthenticatedHeaders(),
-		OkCodes:     []int{202},
+	_, res.Err = client.Request("DELETE", userURL(client, instanceID, userName), gophercloud.RequestOpts{
+		OkCodes: []int{202},
 	})
 
-	res.Header = resp.HttpResponse.Header
-	res.Err = err
-
 	return res
 }
diff --git a/rackspace/db/v1/backups/requests.go b/rackspace/db/v1/backups/requests.go
index 7bc14ff..9bcc25a 100644
--- a/rackspace/db/v1/backups/requests.go
+++ b/rackspace/db/v1/backups/requests.go
@@ -3,7 +3,6 @@
 import (
 	"errors"
 
-	"github.com/racker/perigee"
 	"github.com/rackspace/gophercloud"
 	"github.com/rackspace/gophercloud/pagination"
 )
@@ -49,11 +48,10 @@
 		return res
 	}
 
-	_, res.Err = perigee.Request("POST", baseURL(client), perigee.Options{
-		MoreHeaders: client.AuthenticatedHeaders(),
-		ReqBody:     &reqBody,
-		Results:     &res.Body,
-		OkCodes:     []int{202},
+	_, res.Err = client.Request("POST", baseURL(client), gophercloud.RequestOpts{
+		JSONBody:     &reqBody,
+		JSONResponse: &res.Body,
+		OkCodes:      []int{202},
 	})
 
 	return res
@@ -96,10 +94,9 @@
 func Get(client *gophercloud.ServiceClient, id string) GetResult {
 	var res GetResult
 
-	_, res.Err = perigee.Request("GET", resourceURL(client, id), perigee.Options{
-		MoreHeaders: client.AuthenticatedHeaders(),
-		Results:     &res.Body,
-		OkCodes:     []int{200},
+	_, res.Err = client.Request("GET", resourceURL(client, id), gophercloud.RequestOpts{
+		JSONResponse: &res.Body,
+		OkCodes:      []int{200},
 	})
 
 	return res
@@ -108,9 +105,8 @@
 func Delete(client *gophercloud.ServiceClient, id string) DeleteResult {
 	var res DeleteResult
 
-	_, res.Err = perigee.Request("DELETE", resourceURL(client, id), perigee.Options{
-		MoreHeaders: client.AuthenticatedHeaders(),
-		OkCodes:     []int{202},
+	_, res.Err = client.Request("DELETE", resourceURL(client, id), gophercloud.RequestOpts{
+		OkCodes: []int{202},
 	})
 
 	return res
diff --git a/rackspace/db/v1/backups/requests_test.go b/rackspace/db/v1/backups/requests_test.go
index 60fe064..e5d8f7c 100644
--- a/rackspace/db/v1/backups/requests_test.go
+++ b/rackspace/db/v1/backups/requests_test.go
@@ -4,6 +4,7 @@
 	"testing"
 
 	"github.com/rackspace/gophercloud/pagination"
+	"github.com/rackspace/gophercloud/rackspace/db/v1/datastores"
 	th "github.com/rackspace/gophercloud/testhelper"
 	fake "github.com/rackspace/gophercloud/testhelper/client"
 )
@@ -36,7 +37,7 @@
 		Size:        100,
 		Status:      "NEW",
 		Updated:     "2014-02-13T21:47:16",
-		Datastore: datastores.Datastore{
+		Datastore: datastores.DatastorePartial{
 			Version:   "5.1",
 			Type:      "MySQL",
 			VersionID: "20000000-0000-0000-0000-000000000002",
@@ -71,7 +72,7 @@
 				Size:        0.141026,
 				Status:      "COMPLETED",
 				Updated:     "2014-06-18T21:24:39",
-				Datastore: datastores.Datastore{
+				Datastore: datastores.DatastorePartial{
 					Version:   "5.1",
 					Type:      "MySQL",
 					VersionID: "20000000-0000-0000-0000-000000000002",
@@ -109,7 +110,7 @@
 		Size:        100,
 		Status:      "NEW",
 		Updated:     "2014-02-13T21:47:16",
-		Datastore: datastores.Datastore{
+		Datastore: datastores.DatastorePartial{
 			Version:   "5.1",
 			Type:      "MySQL",
 			VersionID: "20000000-0000-0000-0000-000000000002",
diff --git a/rackspace/db/v1/backups/results.go b/rackspace/db/v1/backups/results.go
index 475a41d..402fc86 100644
--- a/rackspace/db/v1/backups/results.go
+++ b/rackspace/db/v1/backups/results.go
@@ -18,7 +18,7 @@
 	Status      string
 	Created     string
 	Updated     string
-	Datastore   datastores.Datastore
+	Datastore   datastores.DatastorePartial
 }
 
 type CreateResult struct {
diff --git a/rackspace/db/v1/datastores/results.go b/rackspace/db/v1/datastores/results.go
index fbfb2cf..31fd838 100644
--- a/rackspace/db/v1/datastores/results.go
+++ b/rackspace/db/v1/datastores/results.go
@@ -20,6 +20,12 @@
 	Versions       []Version
 }
 
+type DatastorePartial struct {
+	Version   string
+	Type      string
+	VersionID string `json:"version_id" mapstructure:"version_id"`
+}
+
 type GetResult struct {
 	gophercloud.Result
 }
diff --git a/rackspace/db/v1/instances/delegate_test.go b/rackspace/db/v1/instances/delegate_test.go
index 3ba7a5e..d43b1e1 100644
--- a/rackspace/db/v1/instances/delegate_test.go
+++ b/rackspace/db/v1/instances/delegate_test.go
@@ -7,6 +7,7 @@
 	osDBs "github.com/rackspace/gophercloud/openstack/db/v1/databases"
 	os "github.com/rackspace/gophercloud/openstack/db/v1/instances"
 	osUsers "github.com/rackspace/gophercloud/openstack/db/v1/users"
+	"github.com/rackspace/gophercloud/rackspace/db/v1/datastores"
 	th "github.com/rackspace/gophercloud/testhelper"
 	fake "github.com/rackspace/gophercloud/testhelper/client"
 )
@@ -16,7 +17,7 @@
 var expectedInstance = &Instance{
 	Created:   "2014-02-13T21:47:13",
 	Updated:   "2014-02-13T21:47:13",
-	Datastore: Datastore{Type: "mysql", Version: "5.6"},
+	Datastore: datastores.DatastorePartial{Type: "mysql", Version: "5.6"},
 	Flavor: os.Flavor{
 		ID: "1",
 		Links: []gophercloud.Link{
diff --git a/rackspace/db/v1/instances/requests.go b/rackspace/db/v1/instances/requests.go
index 66bc872..cfebd5d 100644
--- a/rackspace/db/v1/instances/requests.go
+++ b/rackspace/db/v1/instances/requests.go
@@ -1,7 +1,6 @@
 package instances
 
 import (
-	"github.com/racker/perigee"
 	"github.com/rackspace/gophercloud"
 	"github.com/rackspace/gophercloud/pagination"
 	"github.com/rackspace/gophercloud/rackspace/db/v1/backups"
@@ -10,10 +9,9 @@
 func GetDefaultConfig(client *gophercloud.ServiceClient, id string) ConfigResult {
 	var res ConfigResult
 
-	_, res.Err = perigee.Request("GET", configURL(client, id), perigee.Options{
-		MoreHeaders: client.AuthenticatedHeaders(),
-		Results:     &res.Body,
-		OkCodes:     []int{200},
+	_, res.Err = client.Request("GET", configURL(client, id), gophercloud.RequestOpts{
+		JSONResponse: &res.Body,
+		OkCodes:      []int{200},
 	})
 
 	return res
@@ -26,10 +24,9 @@
 
 	var res UpdateResult
 
-	_, res.Err = perigee.Request("PUT", resourceURL(client, instanceID), perigee.Options{
-		MoreHeaders: client.AuthenticatedHeaders(),
-		ReqBody:     map[string]map[string]string{"instance": reqBody},
-		OkCodes:     []int{202},
+	_, res.Err = client.Request("PUT", resourceURL(client, instanceID), gophercloud.RequestOpts{
+		JSONBody: map[string]map[string]string{"instance": reqBody},
+		OkCodes:  []int{202},
 	})
 
 	return res
@@ -45,10 +42,9 @@
 func DetachReplica(client *gophercloud.ServiceClient, replicaID string) DetachResult {
 	var res DetachResult
 
-	_, res.Err = perigee.Request("PATCH", resourceURL(client, replicaID), perigee.Options{
-		MoreHeaders: client.AuthenticatedHeaders(),
-		ReqBody:     map[string]interface{}{"instance": map[string]string{"replica_of": "", "slave_of": ""}},
-		OkCodes:     []int{202},
+	_, res.Err = client.Request("PATCH", resourceURL(client, replicaID), gophercloud.RequestOpts{
+		JSONBody: map[string]interface{}{"instance": map[string]string{"replica_of": "", "slave_of": ""}},
+		OkCodes:  []int{202},
 	})
 
 	return res
diff --git a/rackspace/db/v1/instances/requests_test.go b/rackspace/db/v1/instances/requests_test.go
index 2cafa22..35afe01 100644
--- a/rackspace/db/v1/instances/requests_test.go
+++ b/rackspace/db/v1/instances/requests_test.go
@@ -7,6 +7,7 @@
 	os "github.com/rackspace/gophercloud/openstack/db/v1/instances"
 	"github.com/rackspace/gophercloud/pagination"
 	"github.com/rackspace/gophercloud/rackspace/db/v1/backups"
+	"github.com/rackspace/gophercloud/rackspace/db/v1/datastores"
 	th "github.com/rackspace/gophercloud/testhelper"
 	fake "github.com/rackspace/gophercloud/testhelper/client"
 )
@@ -23,7 +24,7 @@
 	ID:        "8367c312-7c40-4a66-aab1-5767478914fc",
 	Volume:    os.Volume{Size: 1},
 	Flavor:    os.Flavor{ID: "9"},
-	Datastore: Datastore{Version: "5.6", Type: "mysql"},
+	Datastore: datastores.DatastorePartial{Version: "5.6", Type: "mysql"},
 	ReplicaOf: &Instance{
 		ID: "6bdca2fc-418e-40bd-a595-62abda61862d",
 	},
@@ -121,7 +122,7 @@
 				Size:        0.141026,
 				Status:      "COMPLETED",
 				Updated:     "2014-06-18T21:24:39",
-				Datastore:   backups.Datastore{Version: "5.1", Type: "MySQL", VersionID: "20000000-0000-0000-0000-000000000002"},
+				Datastore:   datastores.DatastorePartial{Version: "5.1", Type: "MySQL", VersionID: "20000000-0000-0000-0000-000000000002"},
 			},
 		}
 
@@ -181,7 +182,7 @@
 				IP:        []string{"10.0.0.3"},
 				Volume:    os.Volume{Size: 1},
 				Flavor:    os.Flavor{ID: "9"},
-				Datastore: Datastore{Version: "5.6", Type: "mysql"},
+				Datastore: datastores.DatastorePartial{Version: "5.6", Type: "mysql"},
 				ReplicaOf: &Instance{
 					ID: "8b499b45-52d6-402d-b398-f9d8f279c69a",
 				},
@@ -226,7 +227,7 @@
 			Size: 1,
 		},
 		Flavor: os.Flavor{ID: "9"},
-		Datastore: Datastore{
+		Datastore: datastores.DatastorePartial{
 			Version: "5.6",
 			Type:    "mysql",
 		},
diff --git a/rackspace/db/v1/instances/results.go b/rackspace/db/v1/instances/results.go
index e0c5aa5..2ce302b 100644
--- a/rackspace/db/v1/instances/results.go
+++ b/rackspace/db/v1/instances/results.go
@@ -17,7 +17,7 @@
 	Updated string //time.Time
 
 	// Indicates how the instance stores data.
-	Datastore datastores.Datastore
+	Datastore datastores.DatastorePartial
 
 	// Indicates the hardware flavor the instance uses.
 	Flavor os.Flavor
diff --git a/rackspace/db/v1/users/requests.go b/rackspace/db/v1/users/requests.go
index 18303e9..f526cf9 100644
--- a/rackspace/db/v1/users/requests.go
+++ b/rackspace/db/v1/users/requests.go
@@ -1,7 +1,6 @@
 package users
 
 import (
-	"github.com/racker/perigee"
 	"github.com/rackspace/gophercloud"
 	db "github.com/rackspace/gophercloud/openstack/db/v1/databases"
 	os "github.com/rackspace/gophercloud/openstack/db/v1/users"
@@ -17,10 +16,9 @@
 		return res
 	}
 
-	_, res.Err = perigee.Request("PUT", baseURL(client, instanceID), perigee.Options{
-		MoreHeaders: client.AuthenticatedHeaders(),
-		ReqBody:     &reqBody,
-		OkCodes:     []int{202},
+	_, res.Err = client.Request("PUT", baseURL(client, instanceID), gophercloud.RequestOpts{
+		JSONBody: &reqBody,
+		OkCodes:  []int{202},
 	})
 
 	return res
@@ -36,10 +34,9 @@
 	}
 	reqBody = map[string]interface{}{"user": reqBody}
 
-	_, res.Err = perigee.Request("PUT", userURL(client, instanceID, userName), perigee.Options{
-		MoreHeaders: client.AuthenticatedHeaders(),
-		ReqBody:     &reqBody,
-		OkCodes:     []int{202},
+	_, res.Err = client.Request("PUT", userURL(client, instanceID, userName), gophercloud.RequestOpts{
+		JSONBody: &reqBody,
+		OkCodes:  []int{202},
 	})
 
 	return res
@@ -48,10 +45,9 @@
 func Get(client *gophercloud.ServiceClient, instanceID, userName string) GetResult {
 	var res GetResult
 
-	_, res.Err = perigee.Request("GET", userURL(client, instanceID, userName), perigee.Options{
-		MoreHeaders: client.AuthenticatedHeaders(),
-		Results:     &res.Body,
-		OkCodes:     []int{200},
+	_, res.Err = client.Request("GET", userURL(client, instanceID, userName), gophercloud.RequestOpts{
+		JSONResponse: &res.Body,
+		OkCodes:      []int{200},
 	})
 
 	return res
@@ -74,10 +70,9 @@
 		return res
 	}
 
-	_, res.Err = perigee.Request("PUT", dbsURL(client, instanceID, userName), perigee.Options{
-		MoreHeaders: client.AuthenticatedHeaders(),
-		ReqBody:     &reqBody,
-		OkCodes:     []int{202},
+	_, res.Err = client.Request("PUT", dbsURL(client, instanceID, userName), gophercloud.RequestOpts{
+		JSONBody: &reqBody,
+		OkCodes:  []int{202},
 	})
 
 	return res
@@ -86,9 +81,8 @@
 func RevokeAccess(client *gophercloud.ServiceClient, instanceID, userName, dbName string) RevokeAccessResult {
 	var res RevokeAccessResult
 
-	_, res.Err = perigee.Request("DELETE", dbURL(client, instanceID, userName, dbName), perigee.Options{
-		MoreHeaders: client.AuthenticatedHeaders(),
-		OkCodes:     []int{202},
+	_, res.Err = client.Request("DELETE", dbURL(client, instanceID, userName, dbName), gophercloud.RequestOpts{
+		OkCodes: []int{202},
 	})
 
 	return res
