diff --git a/openstack/compute/v2/servers/requests.go b/openstack/compute/v2/servers/requests.go
index d161a17..18a2237 100644
--- a/openstack/compute/v2/servers/requests.go
+++ b/openstack/compute/v2/servers/requests.go
@@ -96,6 +96,35 @@
 	FixedIP string
 }
 
+// Personality is an array of files that are injected into the server at launch.
+type Personality []File
+
+// Marshal marshals the personality, marshalling each of the files.
+func (p Personality) Marshal() []map[string]string {
+	personality := make([]map[string]string, len(p))
+	for i, file := range p {
+		personality[i] = file.Marshal()
+	}
+
+	return personality
+}
+
+// File is used within CreateOpts and RebuildOpts to inject a file into the server at launch.
+type File struct {
+	// Path of the file
+	Path string `json:"path"`
+	// Contents of the file. Maximum content size is 255 bytes.
+	Contents []byte `json:"contents"`
+}
+
+// Marshal marshals the file, base64 encoding the contents.
+func (f File) Marshal() map[string]string {
+	return map[string]string{
+		"path":     f.Path,
+		"contents": base64.StdEncoding.EncodeToString(f.Contents),
+	}
+}
+
 // CreateOpts specifies server creation parameters.
 type CreateOpts struct {
 	// Name [required] is the name to assign to the newly launched server.
@@ -125,10 +154,9 @@
 	// Metadata [optional] contains key-value pairs (up to 255 bytes each) to attach to the server.
 	Metadata map[string]string
 
-	// Personality [optional] includes a list of maps with the path and contents
-	// of a file to inject into the server at launch. Contents should be
-	// base64 encoded. The maximum size of the file is 255 bytes (decoded).
-	Personality []map[string]string
+	// Personality [optional] includes files to inject into the server at launch.
+	// Create will base64-encode file contents for you.
+	Personality Personality
 
 	// ConfigDrive [optional] enables metadata injection through a configuration drive.
 	ConfigDrive bool
@@ -156,9 +184,6 @@
 		encoded := base64.StdEncoding.EncodeToString(opts.UserData)
 		server["user_data"] = &encoded
 	}
-	if opts.Personality != nil {
-		server["personality"] = opts.Personality
-	}
 	if opts.ConfigDrive {
 		server["config_drive"] = "true"
 	}
@@ -203,6 +228,10 @@
 		server["networks"] = networks
 	}
 
+	if len(opts.Personality) > 0 {
+		server["personality"] = opts.Personality.Marshal()
+	}
+
 	return map[string]interface{}{"server": server}, nil
 }
 
@@ -392,10 +421,9 @@
 	// Metadata [optional] contains key-value pairs (up to 255 bytes each) to attach to the server.
 	Metadata map[string]string
 
-	// Personality [optional] includes a list of maps with the path and contents
-	// of a file to inject into the server at launch. Contents should be
-	// base64 encoded. The maximum size of the file is 255 bytes (decoded).
-	Personality []map[string]string
+	// Personality [optional] includes files to inject into the server at launch.
+	// Rebuild will base64-encode file contents for you.
+	Personality Personality
 }
 
 // ToServerRebuildMap formats a RebuildOpts struct into a map for use in JSON
@@ -431,8 +459,8 @@
 		server["metadata"] = opts.Metadata
 	}
 
-	if opts.Personality != nil {
-		server["personality"] = opts.Personality
+	if len(opts.Personality) > 0 {
+		server["personality"] = opts.Personality.Marshal()
 	}
 
 	return map[string]interface{}{"rebuild": server}, nil
diff --git a/openstack/compute/v2/servers/requests_test.go b/openstack/compute/v2/servers/requests_test.go
index 62b89e0..83fcdb0 100644
--- a/openstack/compute/v2/servers/requests_test.go
+++ b/openstack/compute/v2/servers/requests_test.go
@@ -1,6 +1,7 @@
 package servers
 
 import (
+	"encoding/base64"
 	"net/http"
 	"testing"
 
@@ -325,3 +326,25 @@
 	th.AssertNoErr(t, err)
 	th.CheckEquals(t, 1, pages)
 }
+
+func TestMarshalPersonality(t *testing.T) {
+	name := "test"
+	contents := []byte("asdfasdf")
+
+	personality := Personality{
+		File{
+			Path:     name,
+			Contents: contents,
+		},
+	}
+
+	actual := personality.Marshal()
+
+	if actual[0]["path"] != name {
+		t.Fatal("file path incorrect")
+	}
+
+	if actual[0]["contents"] != base64.StdEncoding.EncodeToString(contents) {
+		t.Fatal("file contents incorrect")
+	}
+}
diff --git a/rackspace/compute/v2/servers/requests.go b/rackspace/compute/v2/servers/requests.go
index 96dc931..1ebb897 100644
--- a/rackspace/compute/v2/servers/requests.go
+++ b/rackspace/compute/v2/servers/requests.go
@@ -36,10 +36,9 @@
 	// Metadata [optional] contains key-value pairs (up to 255 bytes each) to attach to the server.
 	Metadata map[string]string
 
-	// Personality [optional] includes a list of maps with the path and contents
-	// of a file to inject into the server at launch. Contents should be
-	// base64 encoded. The maximum size of the file is 255 bytes (decoded).
-	Personality []map[string]string
+	// Personality [optional] includes files to inject into the server at launch.
+	// Create will base64-encode file contents for you.
+	Personality os.Personality
 
 	// ConfigDrive [optional] enables metadata injection through a configuration drive.
 	ConfigDrive bool
@@ -131,10 +130,9 @@
 	// Metadata [optional] contains key-value pairs (up to 255 bytes each) to attach to the server.
 	Metadata map[string]string
 
-	// Personality [optional] includes a list of maps with the path and contents
-	// of a file to inject into the server at launch. Contents should be
-	// base64 encoded. The maximum size of the file is 255 bytes (decoded).
-	Personality []map[string]string
+	// Personality [optional] includes files to inject into the server at launch.
+	// Rebuild will base64-encode file contents for you.
+	Personality os.Personality
 
 	// Rackspace-specific stuff begins here.
 
