diff --git a/authenticate.go b/authenticate.go
index 2320da7..09ee36f 100644
--- a/authenticate.go
+++ b/authenticate.go
@@ -14,7 +14,7 @@
 
 type Auth struct {
 	PasswordCredentials PasswordCredentials `json:"passwordCredentials"`
-	TenantId string `json:"tenantId,omitempty"`
+	TenantId            string              `json:"tenantId,omitempty"`
 }
 
 type PasswordCredentials struct {
@@ -37,7 +37,7 @@
 
 	err = perigee.Post(p.AuthEndpoint, perigee.Options{
 		CustomClient: c.httpClient,
-		ReqBody:      &AuthContainer{
+		ReqBody: &AuthContainer{
 			Auth: Auth{
 				PasswordCredentials: PasswordCredentials{
 					Username: options.Username,
diff --git a/authenticate_test.go b/authenticate_test.go
index e1c391d..69b8bcc 100644
--- a/authenticate_test.go
+++ b/authenticate_test.go
@@ -1,21 +1,20 @@
 package gophercloud
 
 import (
-	"testing"
-	"net/http"
-	"io/ioutil"
-	"strings"
 	"encoding/json"
+	"io/ioutil"
+	"net/http"
+	"strings"
+	"testing"
 )
 
-
 type testTransport struct {
-	called int
+	called   int
 	response string
 }
 
 func (t *testTransport) RoundTrip(req *http.Request) (rsp *http.Response, err error) {
-	t.called++;
+	t.called++
 
 	headers := make(http.Header)
 	headers.Add("Content-Type", "application/xml; charset=UTF-8")
@@ -23,25 +22,25 @@
 	body := ioutil.NopCloser(strings.NewReader(t.response))
 
 	rsp = &http.Response{
-		Status: "200 OK",
-		StatusCode: 200,
-		Proto: "HTTP/1.1",
-		ProtoMajor: 1,
-		ProtoMinor: 1,
-		Header: headers,
-		Body: body,
-		ContentLength: -1,
+		Status:           "200 OK",
+		StatusCode:       200,
+		Proto:            "HTTP/1.1",
+		ProtoMajor:       1,
+		ProtoMinor:       1,
+		Header:           headers,
+		Body:             body,
+		ContentLength:    -1,
 		TransferEncoding: nil,
-		Close: true,
-		Trailer: nil,
-		Request: req,
+		Close:            true,
+		Trailer:          nil,
+		Request:          req,
 	}
 	return
 }
 
 type tenantIdCheckTransport struct {
 	expectTenantId bool
-	tenantIdFound bool
+	tenantIdFound  bool
 }
 
 func (t *tenantIdCheckTransport) RoundTrip(req *http.Request) (rsp *http.Response, err error) {
@@ -53,18 +52,18 @@
 	body := ioutil.NopCloser(strings.NewReader("t.response"))
 
 	rsp = &http.Response{
-		Status: "200 OK",
-		StatusCode: 200,
-		Proto: "HTTP/1.1",
-		ProtoMajor: 1,
-		ProtoMinor: 1,
-		Header: headers,
-		Body: body,
-		ContentLength: -1,
+		Status:           "200 OK",
+		StatusCode:       200,
+		Proto:            "HTTP/1.1",
+		ProtoMajor:       1,
+		ProtoMinor:       1,
+		Header:           headers,
+		Body:             body,
+		ContentLength:    -1,
 		TransferEncoding: nil,
-		Close: true,
-		Trailer: nil,
-		Request: req,
+		Close:            true,
+		Trailer:          nil,
+		Request:          req,
 	}
 
 	bytes, err := ioutil.ReadAll(req.Body)
diff --git a/context.go b/context.go
index a35242c..28cb5f9 100644
--- a/context.go
+++ b/context.go
@@ -15,10 +15,10 @@
 func TestContext() *Context {
 	return &Context{
 		providerMap: make(map[string]*Provider),
-		httpClient: &http.Client{},
+		httpClient:  &http.Client{},
 	}
 }
 
 func (c *Context) UseCustomClient(hc *http.Client) {
-	c.httpClient = hc;
+	c.httpClient = hc
 }
diff --git a/package.go b/package.go
index 3b1939b..c05681e 100644
--- a/package.go
+++ b/package.go
@@ -1,2 +1 @@
 package gophercloud
-
diff --git a/provider.go b/provider.go
index 6d3212a..08bdfbe 100644
--- a/provider.go
+++ b/provider.go
@@ -22,4 +22,4 @@
 		}
 	}
 	return nil, ErrProvider
-}
\ No newline at end of file
+}
