diff --git a/rackspace/lb/v1/ssl/requests.go b/rackspace/lb/v1/ssl/requests.go
index c103d7a..e1fbbbd 100644
--- a/rackspace/lb/v1/ssl/requests.go
+++ b/rackspace/lb/v1/ssl/requests.go
@@ -9,8 +9,14 @@
 	"github.com/rackspace/gophercloud/pagination"
 )
 
+var (
+	errPrivateKey     = errors.New("PrivateKey is a required field")
+	errCertificate    = errors.New("Certificate is a required field")
+	errIntCertificate = errors.New("IntCertificate is a required field")
+)
+
 // UpdateOptsBuilder is the interface options structs have to satisfy in order
-// to be used in the main Create operation in this package.
+// to be used in the main Update operation in this package.
 type UpdateOptsBuilder interface {
 	ToSSLUpdateMap() (map[string]interface{}, error)
 }
@@ -37,12 +43,6 @@
 	SecureTrafficOnly *bool
 }
 
-var (
-	errPrivateKey     = errors.New("PrivateKey is a required field")
-	errCertificate    = errors.New("Certificate is a required field")
-	errIntCertificate = errors.New("IntCertificate is a required field")
-)
-
 // ToSSLUpdateMap casts a CreateOpts struct to a map.
 func (opts UpdateOpts) ToSSLUpdateMap() (map[string]interface{}, error) {
 	ssl := make(map[string]interface{})
@@ -124,6 +124,8 @@
 	return res
 }
 
+// ListCerts will list all of the certificate mappings associated with a
+// SSL-terminated HTTP load balancer.
 func ListCerts(c *gophercloud.ServiceClient, lbID int) pagination.Pager {
 	url := certURL(c, lbID)
 	return pagination.NewPager(c, url, func(r pagination.PageResult) pagination.Page {
@@ -131,10 +133,13 @@
 	})
 }
 
+// AddCertOptsBuilder is the interface options structs have to satisfy in order
+// to be used in the AddCert operation in this package.
 type AddCertOptsBuilder interface {
 	ToCertAddMap() (map[string]interface{}, error)
 }
 
+// AddCertOpts represents the options used when adding a new certificate mapping.
 type AddCertOpts struct {
 	HostName       string
 	PrivateKey     string
@@ -142,6 +147,7 @@
 	IntCertificate string
 }
 
+// ToCertAddMap will cast an AddCertOpts struct to a map for JSON serialization.
 func (opts AddCertOpts) ToCertAddMap() (map[string]interface{}, error) {
 	cm := make(map[string]interface{})
 
@@ -166,6 +172,10 @@
 	return map[string]interface{}{"certificateMapping": cm}, nil
 }
 
+// AddCert will add a new SSL certificate and allow an SSL-terminated HTTP
+// load balancer to use it. This feature is useful because it allows multiple
+// certificates to be used. The maximum number of certificates that can be
+// stored per LB is 20.
 func AddCert(c *gophercloud.ServiceClient, lbID int, opts AddCertOptsBuilder) AddCertResult {
 	var res AddCertResult
 
@@ -185,6 +195,7 @@
 	return res
 }
 
+// GetCert will show the details of an existing SSL certificate.
 func GetCert(c *gophercloud.ServiceClient, lbID, certID int) GetCertResult {
 	var res GetCertResult
 
@@ -197,10 +208,13 @@
 	return res
 }
 
+// UpdateCertOptsBuilder is the interface options structs have to satisfy in
+// order to be used in the UpdateCert operation in this package.
 type UpdateCertOptsBuilder interface {
 	ToCertUpdateMap() (map[string]interface{}, error)
 }
 
+// UpdateCertOpts represents the options needed to update a SSL certificate.
 type UpdateCertOpts struct {
 	HostName       string
 	PrivateKey     string
@@ -208,6 +222,8 @@
 	IntCertificate string
 }
 
+// ToCertUpdateMap will cast an UpdateCertOpts struct into a map for JSON
+// seralization.
 func (opts UpdateCertOpts) ToCertUpdateMap() (map[string]interface{}, error) {
 	cm := make(map[string]interface{})
 
@@ -227,6 +243,8 @@
 	return map[string]interface{}{"certificateMapping": cm}, nil
 }
 
+// UpdateCert is the operation responsible for updating the details of an
+// existing SSL certificate.
 func UpdateCert(c *gophercloud.ServiceClient, lbID, certID int, opts UpdateCertOptsBuilder) UpdateCertResult {
 	var res UpdateCertResult
 
@@ -246,6 +264,8 @@
 	return res
 }
 
+// DeleteCert is the operation responsible for permanently removing a SSL
+// certificate.
 func DeleteCert(c *gophercloud.ServiceClient, lbID, certID int) DeleteResult {
 	var res DeleteResult
 
diff --git a/rackspace/lb/v1/ssl/results.go b/rackspace/lb/v1/ssl/results.go
index d3f860b..283f774 100644
--- a/rackspace/lb/v1/ssl/results.go
+++ b/rackspace/lb/v1/ssl/results.go
@@ -69,6 +69,8 @@
 	return &response.SSL, err
 }
 
+// Certificate represents an SSL certificate associated with an SSL-terminated
+// HTTP load balancer.
 type Certificate struct {
 	ID             int
 	HostName       string
@@ -76,6 +78,7 @@
 	IntCertificate string `mapstructure:"intermediateCertificate"`
 }
 
+// CertPage represents a page of certificates.
 type CertPage struct {
 	pagination.LinkedPageBase
 }
@@ -89,8 +92,8 @@
 	return len(is) == 0, nil
 }
 
-// ExtractCertMappings accepts a Page struct, specifically a CertMappingPage struct, and extracts
-// the elements into a slice of CertMapping structs. In other words, a generic
+// ExtractCerts accepts a Page struct, specifically a CertPage struct, and
+// extracts the elements into a slice of Cert structs. In other words, a generic
 // collection is mapped into a relevant slice.
 func ExtractCerts(page pagination.Page) ([]Certificate, error) {
 	type NestedMap struct {
@@ -129,14 +132,17 @@
 	return &response.Cert, err
 }
 
+// AddCertResult represents the result of an AddCert operation.
 type AddCertResult struct {
 	certResult
 }
 
+// GetCertResult represents the result of a GetCert operation.
 type GetCertResult struct {
 	certResult
 }
 
+// UpdateCertResult represents the result of an UpdateCert operation.
 type UpdateCertResult struct {
 	certResult
 }
