diff --git a/openstack/db/v1/instances/results.go b/openstack/db/v1/instances/results.go
index 48b930c..f211868 100644
--- a/openstack/db/v1/instances/results.go
+++ b/openstack/db/v1/instances/results.go
@@ -6,29 +6,62 @@
 	"github.com/rackspace/gophercloud/pagination"
 )
 
+// Flavor represents information about a hardware flavor for a database instance.
 type Flavor struct {
-	ID    string
+	// The unique identifier for a flavor.
+	ID string
+
+	// Various links which allow a user to reference the flavor.
 	Links []gophercloud.Link
 }
 
+// Volume represents information about an attached volume for a database instance.
 type Volume struct {
+	// The size in GB of the volume
 	Size int
 }
 
+// Instance represents a remote MySQL instance.
 type Instance struct {
-	Created  string //time.Time
-	Updated  string //time.Time
-	Flavor   Flavor
+	// Indicates the datetime that the instance was created
+	Created string //time.Time
+
+	// Indicates the most recent datetime that the instance was updated.
+	Updated string //time.Time
+
+	// Indicates the hardware flavor the instance uses.
+	Flavor Flavor
+
+	// A DNS-resolvable hostname associated with the database instance (rather
+	// than an IPv4 address). Since the hostname always resolves to the correct
+	// IP address of the database instance, this relieves the user from the task
+	// of maintaining the mapping. Note that although the IP address may likely
+	// change on resizing, migrating, and so forth, the hostname always resolves
+	// to the correct database instance.
 	Hostname string
-	ID       string
-	Links    []gophercloud.Link
-	Name     string
-	Status   string
-	Volume   Volume
+
+	// Indicates the unique identifier for the instance resource.
+	ID string
+
+	// Exposes various links that reference the instance resource.
+	Links []gophercloud.Link
+
+	// The human-readable name of the instance.
+	Name string
+
+	// The build status of the instance.
+	Status string
+
+	// Information about the attached volume of the instance.
+	Volume Volume
 }
 
+// User represents a database user
 type User struct {
-	Name     string
+	// The user name
+	Name string
+
+	// The user password
 	Password string
 }
 
@@ -41,14 +74,17 @@
 	commonResult
 }
 
+// GetResult represents the result of a Get operation.
 type GetResult struct {
 	commonResult
 }
 
+// DeleteResult represents the result of a Delete operation.
 type DeleteResult struct {
 	gophercloud.ErrResult
 }
 
+// Extract will extract an Instance from various result structs.
 func (r commonResult) Extract() (*Instance, error) {
 	if r.Err != nil {
 		return nil, r.Err
@@ -63,10 +99,12 @@
 	return &response.Instance, err
 }
 
+// InstancePage represents a single page of a paginated instance collection.
 type InstancePage struct {
 	pagination.LinkedPageBase
 }
 
+// IsEmpty checks to see whether the collection is empty.
 func (page InstancePage) IsEmpty() (bool, error) {
 	instances, err := ExtractInstances(page)
 	if err != nil {
@@ -75,6 +113,7 @@
 	return len(instances) == 0, nil
 }
 
+// NextPageURL will retrieve the next page URL.
 func (page InstancePage) NextPageURL() (string, error) {
 	type resp struct {
 		Links []gophercloud.Link `mapstructure:"instances_links"`
@@ -89,6 +128,8 @@
 	return gophercloud.ExtractNextURL(r.Links)
 }
 
+// ExtractInstances will convert a generic pagination struct into a more
+// relevant slice of Instance structs.
 func ExtractInstances(page pagination.Page) ([]Instance, error) {
 	casted := page.(InstancePage).Body
 
@@ -101,10 +142,12 @@
 	return response.Instances, err
 }
 
+// UserRootResult represents the result of an operation to enable the root user.
 type UserRootResult struct {
 	gophercloud.Result
 }
 
+// Extract will extract root user information from a UserRootResult.
 func (r UserRootResult) Extract() (*User, error) {
 	if r.Err != nil {
 		return nil, r.Err
@@ -119,6 +162,9 @@
 	return &response.User, err
 }
 
+// ActionResult represents the result of action requests, such as: restarting
+// an instance service, resizing its memory allocation, and resizing its
+// attached volume size.
 type ActionResult struct {
 	gophercloud.ErrResult
 }
