diff --git a/openstack/db/v1/instances/requests.go b/openstack/db/v1/instances/requests.go
index fd9eea7..ecf8d46 100644
--- a/openstack/db/v1/instances/requests.go
+++ b/openstack/db/v1/instances/requests.go
@@ -6,6 +6,7 @@
 	"github.com/racker/perigee"
 	"github.com/rackspace/gophercloud"
 	db "github.com/rackspace/gophercloud/openstack/db/v1/databases"
+	users "github.com/rackspace/gophercloud/openstack/db/v1/databases"
 	"github.com/rackspace/gophercloud/pagination"
 )
 
@@ -14,63 +15,6 @@
 	ToInstanceCreateMap() (map[string]interface{}, error)
 }
 
-// UserOpts is the struct responsible for configuring a user; often in the
-// context of an instance.
-type UserOpts struct {
-	// Specifies a name for the user.
-	Name string
-
-	// 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.
-	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 "%".
-	Host string
-}
-
-func (opts UserOpts) ToMap() (map[string]interface{}, error) {
-	user := map[string]interface{}{}
-
-	if opts.Name != "" {
-		user["name"] = opts.Name
-	}
-	if opts.Password != "" {
-		user["password"] = opts.Password
-	}
-	if opts.Host != "" {
-		user["host"] = opts.Host
-	}
-
-	var dbs []map[string]string
-	for _, db := range opts.Databases {
-		dbs = append(dbs, map[string]string{"name": db.Name})
-	}
-	if len(dbs) > 0 {
-		user["databases"] = dbs
-	}
-
-	return user, nil
-}
-
-type UsersOpts []UserOpts
-
-func (opts UsersOpts) ToMap() ([]map[string]interface{}, error) {
-	var users []map[string]interface{}
-	for _, opt := range opts {
-		user, err := opt.ToMap()
-		if err != nil {
-			return users, err
-		}
-		users = append(users, user)
-	}
-	return users, nil
-}
-
 // CreateOpts is the struct responsible for configuring a new database instance.
 type CreateOpts struct {
 	// Either the integer UUID (in string form) of the flavor, or its URI
@@ -89,7 +33,7 @@
 	Databases db.BatchCreateOpts
 
 	// A slice of user information options.
-	Users UsersOpts
+	Users users.BatchCreateOpts
 }
 
 func (opts CreateOpts) ToInstanceCreateMap() (map[string]interface{}, error) {
@@ -116,11 +60,11 @@
 		instance["databases"] = dbs["databases"]
 	}
 	if len(opts.Users) > 0 {
-		users, err := opts.Users.ToMap()
+		users, err := opts.Users.ToUserCreateMap()
 		if err != nil {
 			return nil, err
 		}
-		instance["users"] = users
+		instance["users"] = users["users"]
 	}
 
 	return map[string]interface{}{"instance": instance}, nil
