Clarify ServiceClient and ProviderClient.
diff --git a/service_client.go b/service_client.go
new file mode 100644
index 0000000..2dccde1
--- /dev/null
+++ b/service_client.go
@@ -0,0 +1,18 @@
+package gophercloud
+
+import "strings"
+
+// ServiceClient stores details required to interact with a specific service API implemented by a provider.
+// Generally, you'll acquire these by calling the appropriate `New` method on a ProviderClient.
+type ServiceClient struct {
+	// ProviderClient is a reference to the provider that implements this service.
+	ProviderClient
+
+	// Endpoint is the base URL of the service's API, acquired from a service catalog.
+	Endpoint string
+}
+
+// ServiceURL constructs a URL for a resource belonging to this provider.
+func (client *ServiceClient) ServiceURL(parts ...string) string {
+	return client.Endpoint + strings.Join(parts, "/")
+}