Add provider registry support.
diff --git a/provider.go b/provider.go
new file mode 100644
index 0000000..f2249c3
--- /dev/null
+++ b/provider.go
@@ -0,0 +1,24 @@
+package gophercloud
+
+import (
+)
+
+type Provider struct {
+	// empty.
+}
+
+var providerMap = make(map[string]*Provider)
+
+func (c *Context) RegisterProvider(name string, p *Provider) error {
+	c.providerMap[name] = p
+	return nil
+}
+
+func (c *Context) ProviderByName(name string) (p *Provider, err error) {
+	for provider, descriptor := range c.providerMap {
+		if name == provider {
+			return descriptor, nil
+		}
+	}
+	return nil, ErrProvider
+}
\ No newline at end of file