diff --git a/openstack/db/v1/users/doc.go b/openstack/db/v1/users/doc.go
index 82abcb9..cf07832 100644
--- a/openstack/db/v1/users/doc.go
+++ b/openstack/db/v1/users/doc.go
@@ -1 +1,3 @@
+// Package users provides information and interaction with the user API
+// resource in the OpenStack Database service.
 package users
diff --git a/openstack/db/v1/users/requests.go b/openstack/db/v1/users/requests.go
index e596739..e0616db 100644
--- a/openstack/db/v1/users/requests.go
+++ b/openstack/db/v1/users/requests.go
@@ -1,11 +1,14 @@
 package users
 
 import (
+	"errors"
+
 	"github.com/rackspace/gophercloud"
 	db "github.com/rackspace/gophercloud/openstack/db/v1/databases"
 	"github.com/rackspace/gophercloud/pagination"
 )
 
+// CreateOptsBuilder is the top-level interface for creating JSON maps.
 type CreateOptsBuilder interface {
 	ToUserCreateMap() (map[string]interface{}, error)
 }
@@ -13,31 +16,46 @@
 // CreateOpts is the struct responsible for configuring a new user; often in the
 // context of an instance.
 type CreateOpts struct {
-	// Specifies a name for the user.
+	// [REQUIRED] Specifies a name for the user. Valid names can be composed
+	// of the following characters: letters (either case); numbers; these
+	// characters '@', '?', '#', ' ' but NEVER beginning a name string; '_' is
+	// permitted anywhere. Prohibited characters that are forbidden include:
+	// single quotes, double quotes, back quotes, semicolons, commas, backslashes,
+	// and forward slashes. Spaces at the front or end of a user name are also
+	// not permitted.
 	Name string
 
-	// Specifies a password for the user.
+	// [REQUIRED] Specifies a password for the user.
 	Password string
 
-	// An array of databases that this user will connect to. The `name` field is
-	// the only requirement for each option.
+	// [OPTIONAL] An array of databases that this user will connect to. The
+	// "name" field is the only requirement for each option.
 	Databases db.BatchCreateOpts
 
-	// 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. Optional; the default is "%".
+	// [OPTIONAL] 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. Optional; the default is "%".
 	Host string
 }
 
+// ToMap is a convenience function for creating sub-maps for individual users.
 func (opts CreateOpts) ToMap() (map[string]interface{}, error) {
-	user := map[string]interface{}{}
 
-	if opts.Name != "" {
-		user["name"] = opts.Name
+	if opts.Name == "root" {
+		return nil, errors.New("root is a reserved user name and cannot be used")
 	}
-	if opts.Password != "" {
-		user["password"] = opts.Password
+	if opts.Name == "" {
+		return nil, errors.New("Name is a required field")
 	}
+	if opts.Password == "" {
+		return nil, errors.New("Password is a required field")
+	}
+
+	user := map[string]interface{}{
+		"name":     opts.Name,
+		"password": opts.Password,
+	}
+
 	if opts.Host != "" {
 		user["host"] = opts.Host
 	}
@@ -53,8 +71,10 @@
 	return user, nil
 }
 
+// BatchCreateOpts allows multiple users to be created at once.
 type BatchCreateOpts []CreateOpts
 
+// ToUserCreateMap will generate a JSON map.
 func (opts BatchCreateOpts) ToUserCreateMap() (map[string]interface{}, error) {
 	var users []map[string]interface{}
 	for _, opt := range opts {
@@ -67,6 +87,10 @@
 	return map[string]interface{}{"users": users}, nil
 }
 
+// Create asynchronously provisions a new user for the specified database
+// instance based on the configuration defined in CreateOpts. If databases are
+// assigned for a particular user, the user will be granted all privileges
+// for those specified databases. "root" is a reserved name and cannot be used.
 func Create(client *gophercloud.ServiceClient, instanceID string, opts CreateOptsBuilder) CreateResult {
 	var res CreateResult
 
@@ -84,6 +108,9 @@
 	return res
 }
 
+// List will list all the users associated with a specified database instance,
+// along with their associated databases. This operation will not return any
+// system users or administrators for a database.
 func List(client *gophercloud.ServiceClient, instanceID string) pagination.Pager {
 	createPageFn := func(r pagination.PageResult) pagination.Page {
 		return UserPage{pagination.LinkedPageBase{PageResult: r}}
@@ -92,6 +119,7 @@
 	return pagination.NewPager(client, baseURL(client, instanceID), createPageFn)
 }
 
+// Delete will permanently delete a user from a specified database instance.
 func Delete(client *gophercloud.ServiceClient, instanceID, userName string) DeleteResult {
 	var res DeleteResult
 
diff --git a/openstack/db/v1/users/results.go b/openstack/db/v1/users/results.go
index ce07e76..217ddd8 100644
--- a/openstack/db/v1/users/results.go
+++ b/openstack/db/v1/users/results.go
@@ -19,10 +19,16 @@
 	Databases []db.Database
 }
 
+// CreateResult represents the result of a create operation.
 type CreateResult struct {
 	gophercloud.ErrResult
 }
 
+// DeleteResult represents the result of a delete operation.
+type DeleteResult struct {
+	gophercloud.ErrResult
+}
+
 // UserPage represents a single page of a paginated user collection.
 type UserPage struct {
 	pagination.LinkedPageBase
@@ -65,7 +71,3 @@
 
 	return response.Users, err
 }
-
-type DeleteResult struct {
-	gophercloud.ErrResult
-}
