diff --git a/rackspace/db/v1/users/delegate.go b/rackspace/db/v1/users/delegate.go
index 0e724f5..0bb4c8c 100644
--- a/rackspace/db/v1/users/delegate.go
+++ b/rackspace/db/v1/users/delegate.go
@@ -6,14 +6,17 @@
 	"github.com/rackspace/gophercloud/pagination"
 )
 
+// Create will create a new database user for the specified database instance.
 func Create(client *gophercloud.ServiceClient, instanceID string, opts os.CreateOptsBuilder) os.CreateResult {
 	return os.Create(client, instanceID, opts)
 }
 
+// List will list all available users for a specified database instance.
 func List(client *gophercloud.ServiceClient, instanceID string) pagination.Pager {
 	return os.List(client, instanceID)
 }
 
+// Delete will permanently remove a user from a specified database instance.
 func Delete(client *gophercloud.ServiceClient, instanceID, userName string) os.DeleteResult {
 	return os.Delete(client, instanceID, userName)
 }
diff --git a/rackspace/db/v1/users/doc.go b/rackspace/db/v1/users/doc.go
new file mode 100644
index 0000000..84f2eb3
--- /dev/null
+++ b/rackspace/db/v1/users/doc.go
@@ -0,0 +1,3 @@
+// Package users provides information and interaction with the user API
+// resource in the Rackspace Database service.
+package users
diff --git a/rackspace/db/v1/users/requests.go b/rackspace/db/v1/users/requests.go
index f526cf9..7c30079 100644
--- a/rackspace/db/v1/users/requests.go
+++ b/rackspace/db/v1/users/requests.go
@@ -7,6 +7,17 @@
 	"github.com/rackspace/gophercloud/pagination"
 )
 
+/*
+ChangePassword changes the password for one or more users. For example, to
+change the respective passwords for two users:
+
+	opts := os.BatchCreateOpts{
+		os.CreateOpts{Name: "db_user_1", Password: "new_password_1"},
+		os.CreateOpts{Name: "db_user_2", Password: "new_password_2"},
+	}
+
+	ChangePassword(client, "instance_id", opts)
+*/
 func ChangePassword(client *gophercloud.ServiceClient, instanceID string, opts os.BatchCreateOpts) UpdatePasswordsResult {
 	var res UpdatePasswordsResult
 
@@ -24,6 +35,8 @@
 	return res
 }
 
+// Update will modify the attributes of a specified user. Attributes that can
+// be updated are: user name, password, and host.
 func Update(client *gophercloud.ServiceClient, instanceID, userName string, opts os.CreateOpts) UpdateResult {
 	var res UpdateResult
 
@@ -42,6 +55,7 @@
 	return res
 }
 
+// Get will retrieve the details for a particular user.
 func Get(client *gophercloud.ServiceClient, instanceID, userName string) GetResult {
 	var res GetResult
 
@@ -53,6 +67,7 @@
 	return res
 }
 
+// ListAccess will list all of the databases a user has access to.
 func ListAccess(client *gophercloud.ServiceClient, instanceID, userName string) pagination.Pager {
 	pageFn := func(r pagination.PageResult) pagination.Page {
 		return AccessPage{pagination.LinkedPageBase{PageResult: r}}
@@ -61,6 +76,18 @@
 	return pagination.NewPager(client, dbsURL(client, instanceID, userName), pageFn)
 }
 
+/*
+GrantAccess for the specified user to one or more databases on a specified
+instance. For example, to add a user to multiple databases:
+
+	opts := db.BatchCreateOpts{
+		db.CreateOpts{Name: "database_1"},
+		db.CreateOpts{Name: "database_3"},
+		db.CreateOpts{Name: "database_19"},
+	}
+
+	GrantAccess(client, "instance_id", "user_name", opts)
+*/
 func GrantAccess(client *gophercloud.ServiceClient, instanceID, userName string, opts db.BatchCreateOpts) GrantAccessResult {
 	var res GrantAccessResult
 
@@ -78,6 +105,19 @@
 	return res
 }
 
+/*
+RevokeAccess will revoke access for the specified user to one or more databases
+on a specified instance. For example, to remove a user's access to multiple
+databases:
+
+	opts := db.BatchCreateOpts{
+		db.CreateOpts{Name: "database_1"},
+		db.CreateOpts{Name: "database_3"},
+		db.CreateOpts{Name: "database_19"},
+	}
+
+	RevokeAccess(client, "instance_id", "user_name", opts)
+*/
 func RevokeAccess(client *gophercloud.ServiceClient, instanceID, userName, dbName string) RevokeAccessResult {
 	var res RevokeAccessResult
 
diff --git a/rackspace/db/v1/users/results.go b/rackspace/db/v1/users/results.go
index 3537e68..3d4acb4 100644
--- a/rackspace/db/v1/users/results.go
+++ b/rackspace/db/v1/users/results.go
@@ -15,24 +15,31 @@
 	// The user password
 	Password string
 
+	// Specifies the host from which a user is allowed to connect to the database.
+	// Possible values are a string containing an IPv4 address or "%" to allow
+	// connecting from any host.
 	Host string
 
 	// The databases associated with this user
 	Databases []db.Database
 }
 
+// UpdatePasswordsResult represents the result of changing a user password.
 type UpdatePasswordsResult struct {
 	gophercloud.ErrResult
 }
 
+// UpdateResult represents the result of updating a user.
 type UpdateResult struct {
 	gophercloud.ErrResult
 }
 
+// GetResult represents the result of getting a user.
 type GetResult struct {
 	gophercloud.Result
 }
 
+// Extract will retrieve a User struct from a getresult.
 func (r GetResult) Extract() (*User, error) {
 	if r.Err != nil {
 		return nil, r.Err
@@ -88,10 +95,12 @@
 	return response.DBs, err
 }
 
+// GrantAccessResult represents the result of granting access to a user.
 type GrantAccessResult struct {
 	gophercloud.ErrResult
 }
 
+// RevokeAccessResult represents the result of revoking access to a user.
 type RevokeAccessResult struct {
 	gophercloud.ErrResult
 }
