diff --git a/acceptance/04-create-server.go b/acceptance/04-create-server.go
new file mode 100644
index 0000000..4c50e5d
--- /dev/null
+++ b/acceptance/04-create-server.go
@@ -0,0 +1,72 @@
+package main
+
+import (
+	"flag"
+	"fmt"
+	"log"
+	"github.com/rackspace/gophercloud"
+)
+
+var region, serverName, imageRef, flavorRef *string
+var adminPass = flag.String("a", "", "Administrator password (auto-assigned if none)")
+
+func main() {
+	provider, username, password := getCredentials()
+	region = flag.String("r", "DFW", "Rackspace region in which to create the server")
+	serverName = flag.String("n", randomString(16), "Server name (what you see in the control panel)")
+	imageRef = flag.String("i", "", "ID of image to deploy onto the server")  // TODO(sfalvo): Make this work in -quiet mode.
+	flavorRef = flag.String("f", "", "Flavor of server to deploy image upon") // TODO(sfalvo): Make this work in -quiet mode.
+
+	flag.Parse()
+
+	validations := map[string]string{
+		"an image reference (-i flag)": *imageRef,
+		"a server flavor (-f flag)":    *flavorRef,
+	}
+	for flag, value := range validations {
+		if value == "" {
+			log.Fatal(fmt.Sprintf("You must provide %s", flag))
+		}
+	}
+
+	auth, err := gophercloud.Authenticate(
+		provider,
+		gophercloud.AuthOptions{
+			Username: username,
+			Password: password,
+		},
+	)
+	if err != nil {
+		panic(err)
+	}
+
+	servers, err := gophercloud.ServersApi(auth, gophercloud.ApiCriteria{
+		Name:      "cloudServersOpenStack",
+		Region:    *region,
+		VersionId: "2",
+		UrlChoice: gophercloud.PublicURL,
+	})
+	if err != nil {
+		panic(err)
+	}
+
+	_, err = servers.CreateServer(gophercloud.NewServer{
+		Name:      *serverName,
+		ImageRef:  *imageRef,
+		FlavorRef: *flavorRef,
+		AdminPass: *adminPass,
+	})
+	if err != nil {
+		panic(err)
+	}
+
+	allServers, err := servers.ListServers()
+	if err != nil {
+		panic(err)
+	}
+
+	fmt.Printf("ID,Name,Status,Progress\n")
+	for _, i := range allServers {
+		fmt.Printf("%s,\"%s\",%s,%d\n", i.Id, i.Name, i.Status, i.Progress)
+	}
+}
diff --git a/acceptance/libargs.go b/acceptance/libargs.go
index 7b50f46..0af62d4 100644
--- a/acceptance/libargs.go
+++ b/acceptance/libargs.go
@@ -3,6 +3,7 @@
 import (
 	"fmt"
 	"os"
+	"crypto/rand"
 )
 
 // getCredentials will verify existence of needed credential information
@@ -23,3 +24,17 @@
 
 	return
 }
+
+// randomString generates a string of given length, but random content.
+// All content will be within the ASCII graphic character set.
+// (Implementation from Even Shaw's contribution on
+// http://stackoverflow.com/questions/12771930/what-is-the-fastest-way-to-generate-a-long-random-string-in-go).
+func randomString(n int) string {
+    const alphanum = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
+    var bytes = make([]byte, n)
+    rand.Read(bytes)
+    for i, b := range bytes {
+        bytes[i] = alphanum[b % byte(len(alphanum))]
+    }
+    return string(bytes)
+}
\ No newline at end of file
