diff --git a/acceptance/openstack/client_test.go b/acceptance/openstack/client_test.go
index 578469d..053e2ac 100644
--- a/acceptance/openstack/client_test.go
+++ b/acceptance/openstack/client_test.go
@@ -3,6 +3,7 @@
 package openstack
 
 import (
+	"os"
 	"testing"
 
 	"github.com/rackspace/gophercloud/openstack"
@@ -17,7 +18,7 @@
 	}
 
 	// Trim out unused fields.
-	ao.TenantID, ao.TenantName = "", ""
+	ao.TenantID, ao.TenantName, ao.Username = "", "", ""
 
 	client, err := openstack.AuthenticatedClient(ao)
 	if err != nil {
@@ -29,4 +30,12 @@
 	}
 
 	t.Logf("Client successfully acquired a token: %v", client.TokenID)
+
+	// Find the storage service in the service catalog.
+	storage, err := openstack.NewStorageV1(client, os.Getenv("OS_REGION_NAME"))
+	if err != nil {
+		t.Errorf("Unable to locate a storage service: %v", err)
+	} else {
+		t.Logf("Located a storage service at endpoint: [%s]", storage.Endpoint)
+	}
 }
diff --git a/endpoint_search.go b/endpoint_search.go
index eea89e8..7611f19 100644
--- a/endpoint_search.go
+++ b/endpoint_search.go
@@ -3,6 +3,9 @@
 import "errors"
 
 var (
+	// ErrServiceNotFound is returned when no service matches the EndpointOpts.
+	ErrServiceNotFound = errors.New("No suitable service could be found in the service catalog.")
+
 	// ErrEndpointNotFound is returned when no available endpoints match the provided EndpointOpts.
 	ErrEndpointNotFound = errors.New("No suitable endpoint could be found in the service catalog.")
 )
diff --git a/openstack/client.go b/openstack/client.go
index b058823..207ba13 100644
--- a/openstack/client.go
+++ b/openstack/client.go
@@ -184,19 +184,19 @@
 	}
 
 	// Discover the service we're interested in.
-	computeResults, err := services3.List(v3Client, services3.ListOpts{ServiceType: opts.Type})
+	serviceResults, err := services3.List(v3Client, services3.ListOpts{ServiceType: opts.Type})
 	if err != nil {
 		return "", err
 	}
 
-	serviceResults, err := gophercloud.AllPages(computeResults)
+	allServiceResults, err := gophercloud.AllPages(serviceResults)
 	if err != nil {
 		return "", err
 	}
-	allServices := services3.AsServices(serviceResults)
+	allServices := services3.AsServices(allServiceResults)
 
 	if opts.Name != "" {
-		filtered := make([]services3.Service, 1)
+		filtered := make([]services3.Service, 0, 1)
 		for _, service := range allServices {
 			if service.Name == opts.Name {
 				filtered = append(filtered, service)
@@ -206,7 +206,7 @@
 	}
 
 	if len(allServices) == 0 {
-		return "", gophercloud.ErrEndpointNotFound
+		return "", gophercloud.ErrServiceNotFound
 	}
 	if len(allServices) > 1 {
 		return "", fmt.Errorf("Discovered %d matching services: %#v", len(allServices), allServices)
@@ -222,18 +222,16 @@
 	if err != nil {
 		return "", err
 	}
-
 	allEndpoints, err := gophercloud.AllPages(endpointResults)
 	if err != nil {
 		return "", err
 	}
-
 	endpoints := endpoints3.AsEndpoints(allEndpoints)
 
 	if opts.Name != "" {
-		filtered := make([]endpoints3.Endpoint, 1)
+		filtered := make([]endpoints3.Endpoint, 0, 1)
 		for _, endpoint := range endpoints {
-			if endpoint.Region == opts.Region {
+			if opts.Region == "" || endpoint.Region == opts.Region {
 				filtered = append(filtered, endpoint)
 			}
 		}
@@ -271,3 +269,12 @@
 		Endpoint: v3Endpoint,
 	}
 }
+
+// NewStorageV1 creates a ServiceClient that may be used with the v1 object storage package.
+func NewStorageV1(client *gophercloud.ProviderClient, region string) (*gophercloud.ServiceClient, error) {
+	url, err := client.EndpointLocator(gophercloud.EndpointOpts{Type: "object-store", Name: "swift"})
+	if err != nil {
+		return nil, err
+	}
+	return &gophercloud.ServiceClient{Provider: client, Endpoint: url}, nil
+}
