Implement first function of cloud compute API
diff --git a/openstack/compute/servers/client.go b/openstack/compute/servers/client.go
new file mode 100644
index 0000000..a59a339
--- /dev/null
+++ b/openstack/compute/servers/client.go
@@ -0,0 +1,52 @@
+package servers
+
+import (
+	"fmt"
+	"github.com/rackspace/gophercloud/openstack/identity"
+)
+
+// Client abstracts the connection information needed to make API requests for OpenStack compute endpoints.
+type Client struct {
+	endpoint	string
+	authority	identity.AuthResults
+	options		identity.AuthOptions
+	token		*identity.Token
+}
+
+// NewClient creates a new Client structure to use when issuing requests to the server.
+func NewClient(e string, a identity.AuthResults, o identity.AuthOptions) *Client {
+	return &Client{
+		endpoint:	e,
+		authority:	a,
+		options:	o,
+	}
+}
+
+func (c *Client) getListUrl() string {
+	return fmt.Sprintf("%s/servers/detail", c.endpoint)
+}
+
+func (c *Client) getListHeaders() (map[string]string, error) {
+	t, err := c.getAuthToken()
+	if err != nil {
+		return map[string]string{}, err
+	}
+
+	return map[string]string{
+		"X-Auth-Token": t,
+	}, nil
+}
+
+func (c *Client) getAuthToken() (string, error) {
+	var err error
+
+	if c.token == nil {
+		c.token, err = identity.GetToken(c.authority)
+		if err != nil {
+			return "", err
+		}
+	}
+
+	return c.token.Id, err
+}
+