diff --git a/openstack/compute/servers/client.go b/openstack/compute/servers/client.go
index 03c5c15..3d51dd8 100644
--- a/openstack/compute/servers/client.go
+++ b/openstack/compute/servers/client.go
@@ -7,18 +7,18 @@
 
 // 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
+	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,
+		endpoint:  e,
+		authority: a,
+		options:   o,
 	}
 }
 
@@ -81,4 +81,3 @@
 
 	return c.token.Id, err
 }
-
diff --git a/openstack/compute/servers/doc.go b/openstack/compute/servers/doc.go
index c5c6777..77a7514 100644
--- a/openstack/compute/servers/doc.go
+++ b/openstack/compute/servers/doc.go
@@ -1,3 +1,2 @@
 // The servers package provides convenient access to standard, OpenStack-defined compute services.
 package servers
-
diff --git a/openstack/compute/servers/requests.go b/openstack/compute/servers/requests.go
index 385e3c2..28abd1c 100644
--- a/openstack/compute/servers/requests.go
+++ b/openstack/compute/servers/requests.go
@@ -7,7 +7,7 @@
 // ListResult abstracts the raw results of making a List() request against the
 // API.  As OpenStack extensions may freely alter the response bodies of
 // structures returned to the client, you may only safely access the data
-// provided through separate, type-safe accessors or methods. 
+// provided through separate, type-safe accessors or methods.
 type ListResult map[string]interface{}
 
 type ServerResult map[string]interface{}
@@ -22,7 +22,7 @@
 	}
 
 	err = perigee.Get(c.getListUrl(), perigee.Options{
-		Results: &lr,
+		Results:     &lr,
 		MoreHeaders: h,
 	})
 	return lr, err
@@ -39,11 +39,11 @@
 
 	err = perigee.Post(c.getCreateUrl(), perigee.Options{
 		Results: &sr,
-		ReqBody: map[string]interface{} {
+		ReqBody: map[string]interface{}{
 			"server": opts,
 		},
 		MoreHeaders: h,
-		OkCodes: []int{202},
+		OkCodes:     []int{202},
 	})
 	return sr, err
 }
@@ -57,7 +57,7 @@
 
 	err = perigee.Delete(c.getDeleteUrl(id), perigee.Options{
 		MoreHeaders: h,
-		OkCodes: []int{204},
+		OkCodes:     []int{204},
 	})
 	return err
 }
@@ -72,7 +72,7 @@
 	}
 
 	err = perigee.Get(c.getDetailUrl(id), perigee.Options{
-		Results: &sr,
+		Results:     &sr,
 		MoreHeaders: h,
 	})
 	return sr, err
@@ -96,4 +96,3 @@
 	})
 	return sr, err
 }
-
diff --git a/openstack/compute/servers/servers.go b/openstack/compute/servers/servers.go
index c02cf9f..e3bdbe3 100644
--- a/openstack/compute/servers/servers.go
+++ b/openstack/compute/servers/servers.go
@@ -1,8 +1,8 @@
 package servers
 
 import (
-	"github.com/mitchellh/mapstructure"
 	"fmt"
+	"github.com/mitchellh/mapstructure"
 )
 
 // ErrNotImplemented indicates a failure to discover a feature of the response from the API.
@@ -37,22 +37,22 @@
 //
 // Links includes HTTP references to the itself, useful for passing along to other APIs that might want a server reference.
 type Server struct {
-	Id string
-	TenantId string `mapstructure:tenant_id`
-	UserId string `mapstructure:user_id`
-	Name string
-	Updated string
-	Created string
-	HostId string
-	Status string
-	Progress int
+	Id         string
+	TenantId   string `mapstructure:tenant_id`
+	UserId     string `mapstructure:user_id`
+	Name       string
+	Updated    string
+	Created    string
+	HostId     string
+	Status     string
+	Progress   int
 	AccessIPv4 string
 	AccessIPv6 string
-	Image map[string]interface{}
-	Flavor map[string]interface{}
-	Addresses map[string]interface{}
-	Metadata map[string]interface{}
-	Links []interface{}
+	Image      map[string]interface{}
+	Flavor     map[string]interface{}
+	Addresses  map[string]interface{}
+	Metadata   map[string]interface{}
+	Links      []interface{}
 }
 
 // GetServers interprets the result of a List() call, producing a slice of Server entities.
@@ -86,4 +86,3 @@
 	err := mapstructure.Decode(serverObj, s)
 	return s, err
 }
-
diff --git a/openstack/compute/servers/servers_test.go b/openstack/compute/servers/servers_test.go
index 8a58a46..b4a094c 100644
--- a/openstack/compute/servers/servers_test.go
+++ b/openstack/compute/servers/servers_test.go
@@ -1,8 +1,8 @@
 package servers
 
 import (
-	"testing"
 	"encoding/json"
+	"testing"
 )
 
 // Taken from: http://docs.openstack.org/api/openstack-compute/2/content/List_Servers-d1e2078.html
@@ -186,4 +186,3 @@
 		return
 	}
 }
-
