diff --git a/openstack/identity/v3/client.go b/openstack/identity/v3/client.go
index 0647471..8c6e3e4 100644
--- a/openstack/identity/v3/client.go
+++ b/openstack/identity/v3/client.go
@@ -1,29 +1,30 @@
 package v3
 
 import (
+	"time"
+
 	"github.com/rackspace/gophercloud"
-	"github.com/rackspace/gophercloud/openstack/identity/v3/tokens"
 )
 
-// Client abstracts the connection information necessary to make API calls to Identity v3
-// resources.
+// Client abstracts the connection information necessary to make API calls to Identity v3 resources.
+// It exists mainly to adhere to the IdentityService interface.
 type Client gophercloud.ServiceClient
 
-var (
-	nilClient = Client{}
-)
+// Token models a token acquired from the tokens/ API resource.
+type Token struct {
+	ID        string
+	ExpiresAt time.Time
+}
 
-// NewClient attempts to authenticate to the v3 identity endpoint. Returns a populated
-// IdentityV3Client on success or an error on failure.
-func NewClient(authOptions gophercloud.AuthOptions) (*Client, error) {
-	client := Client{Options: authOptions}
-
-	result, err := tokens.Create(&client, nil)
-	if err != nil {
-		return nil, err
+// NewClient creates a new client associated with the v3 identity service of a provider.
+func NewClient(provider *gophercloud.ProviderClient) *Client {
+	return &Client{
+		ProviderClient: *provider,
+		Endpoint:       provider.IdentityEndpoint + "v3/",
 	}
+}
 
-	// Assign the token and return.
-	client.TokenID = result.TokenID()
-	return &client, nil
+// Authenticate provides the supplied credentials to an identity v3 endpoint and attempts to acquire a token.
+func (c *Client) Authenticate(authOptions gophercloud.AuthOptions) (*Token, error) {
+	return nil, nil
 }
