diff --git a/acceptance/rackspace/compute/v2/bootfromvolume_test.go b/acceptance/rackspace/compute/v2/bootfromvolume_test.go
index 7e500e8..591a137 100644
--- a/acceptance/rackspace/compute/v2/bootfromvolume_test.go
+++ b/acceptance/rackspace/compute/v2/bootfromvolume_test.go
@@ -5,7 +5,9 @@
 import (
 	"testing"
 
-	"github.com/rackspace/gophercloud/openstack/compute/v2/extensions/bootfromvolume"
+	osBFV "github.com/rackspace/gophercloud/openstack/compute/v2/extensions/bootfromvolume"
+	"github.com/rackspace/gophercloud/rackspace/compute/v2/bootfromvolume"
+	"github.com/rackspace/gophercloud/rackspace/compute/v2/servers"
 	th "github.com/rackspace/gophercloud/testhelper"
 	"github.com/smashwilson/gophercloud/acceptance/tools"
 )
@@ -24,15 +26,19 @@
 	name := tools.RandomString("Gophercloud-", 8)
 	t.Logf("Creating server [%s].", name)
 
-	bd := bootfromvolume.BlockDevice{
+	bd := osBFV.BlockDevice{
 		UUID:       options.imageID,
 		SourceType: "image",
+		VolumeSize: 10,
 	}
 
-	server, err := bootfromvolume.Create(client, bootfromvolume.CreateOptsExt{
+	server, err := bootfromvolume.Create(client, servers.CreateOpts{
 		Name:        name,
+		FlavorRef:   "performance1-1",
 		BlockDevice: bd,
 	}).Extract()
 	th.AssertNoErr(t, err)
-	//defer deleteServer(t, client, server)
+	t.Logf("Created server: %+v\n", server)
+	defer deleteServer(t, client, server)
+	t.Logf("Deleting server [%s]...", name)
 }
diff --git a/openstack/compute/v2/extensions/bootfromvolume/requests.go b/openstack/compute/v2/extensions/bootfromvolume/requests.go
index d5b361b..e8ce739 100644
--- a/openstack/compute/v2/extensions/bootfromvolume/requests.go
+++ b/openstack/compute/v2/extensions/bootfromvolume/requests.go
@@ -15,36 +15,46 @@
 // volume.
 type BlockDevice struct {
 	// BootIndex [optional] is the boot index. It defaults to 0.
-	BootIndex int
+	BootIndex int `json:"boot_index"`
 
 	// DeleteOnTermination [optional] specifies whether or not to delete the attached volume
 	// when the server is deleted. Defaults to `false`.
-	DeleteOnTermination bool
+	DeleteOnTermination bool `json:"delete_on_termination"`
 
 	// DestinationType [optional] is the type that gets created. Possible values are "volume"
 	// and "local".
-	DestinationType string
+	DestinationType string `json:"destination_type"`
 
 	// SourceType [optional] must be one of: "volume", "snapshot", "image".
-	SourceType string
+	SourceType string `json:"source_type"`
 
 	// UUID [optional] is the unique identifier for the volume, snapshot, or image (see above)
-	UUID string
+	UUID string `json:"uuid"`
 
 	// VolumeSize [optional] is the size of the volume to create (in gigabytes).
-	VolumeSize int
+	VolumeSize int `json:"volume_size"`
 }
 
 // CreateOptsExt is a structure that extends the server `CreateOpts` structure
 // by allowing for a block device mapping.
 type CreateOptsExt struct {
 	servers.CreateOptsBuilder
-	BlockDevice BlockDevice
+	BlockDevice BlockDevice `json:"block_device_mapping_v2,omitempty"`
 }
 
 // ToServerCreateMap adds the block device mapping option to the base server
 // creation options.
 func (opts CreateOptsExt) ToServerCreateMap() (map[string]interface{}, error) {
+	base, err := opts.CreateOptsBuilder.ToServerCreateMap()
+	if err != nil {
+		return nil, err
+	}
+
+	var blockDevice BlockDevice
+	if opts.BlockDevice == blockDevice {
+		return base, nil
+	}
+
 	if opts.BlockDevice.SourceType != "volume" &&
 		opts.BlockDevice.SourceType != "image" &&
 		opts.BlockDevice.SourceType != "snapshot" &&
@@ -52,11 +62,6 @@
 		return nil, errors.New("SourceType must be one of: volume, image, snapshot, [blank].")
 	}
 
-	base, err := opts.CreateOptsBuilder.ToServerCreateMap()
-	if err != nil {
-		return nil, err
-	}
-
 	serverMap := base["server"].(map[string]interface{})
 
 	bd := make(map[string]interface{})
@@ -77,8 +82,8 @@
 }
 
 // Create requests the creation of a server from the given block device mapping.
-func Create(client *gophercloud.ServiceClient, opts servers.CreateOptsBuilder) servers.CreateResult {
-	var res servers.CreateResult
+func Create(client *gophercloud.ServiceClient, opts servers.CreateOptsBuilder) CreateResult {
+	var res CreateResult
 
 	reqBody, err := opts.ToServerCreateMap()
 	if err != nil {
@@ -90,7 +95,8 @@
 		MoreHeaders: client.AuthenticatedHeaders(),
 		ReqBody:     reqBody,
 		Results:     &res.Body,
-		OkCodes:     []int{200},
+		OkCodes:     []int{200, 202},
+		DumpReqJson: true,
 	})
 	return res
 }
diff --git a/openstack/compute/v2/extensions/bootfromvolume/results.go b/openstack/compute/v2/extensions/bootfromvolume/results.go
new file mode 100644
index 0000000..f60329f
--- /dev/null
+++ b/openstack/compute/v2/extensions/bootfromvolume/results.go
@@ -0,0 +1,10 @@
+package bootfromvolume
+
+import (
+	os "github.com/rackspace/gophercloud/openstack/compute/v2/servers"
+)
+
+// CreateResult temporarily contains the response from a Create call.
+type CreateResult struct {
+	os.CreateResult
+}
diff --git a/openstack/compute/v2/extensions/diskconfig/requests.go b/openstack/compute/v2/extensions/diskconfig/requests.go
index cc390f7..7407e0d 100644
--- a/openstack/compute/v2/extensions/diskconfig/requests.go
+++ b/openstack/compute/v2/extensions/diskconfig/requests.go
@@ -41,7 +41,7 @@
 	servers.CreateOptsBuilder
 
 	// DiskConfig [optional] controls how the created server's disk is partitioned.
-	DiskConfig DiskConfig
+	DiskConfig DiskConfig `json:"OS-DCF:diskConfig,omitempty"`
 }
 
 // ToServerCreateMap adds the diskconfig option to the base server creation options.
@@ -51,6 +51,10 @@
 		return nil, err
 	}
 
+	if string(opts.DiskConfig) == "" {
+		return base, nil
+	}
+
 	serverMap := base["server"].(map[string]interface{})
 	serverMap["OS-DCF:diskConfig"] = string(opts.DiskConfig)
 
diff --git a/rackspace/compute/v2/bootfromvolume/delegate.go b/rackspace/compute/v2/bootfromvolume/delegate.go
new file mode 100644
index 0000000..636ced6
--- /dev/null
+++ b/rackspace/compute/v2/bootfromvolume/delegate.go
@@ -0,0 +1,12 @@
+package bootfromvolume
+
+import (
+  "github.com/rackspace/gophercloud"
+  osBFV "github.com/rackspace/gophercloud/openstack/compute/v2/extensions/bootfromvolume"
+  osServers "github.com/rackspace/gophercloud/openstack/compute/v2/servers"
+)
+
+// Create requests the creation of a server from the given block device mapping.
+func Create(client *gophercloud.ServiceClient, opts osServers.CreateOptsBuilder) osBFV.CreateResult {
+  return osBFV.Create(client, opts)
+}
diff --git a/rackspace/compute/v2/bootfromvolume/delegate_test.go b/rackspace/compute/v2/bootfromvolume/delegate_test.go
new file mode 100644
index 0000000..a564982
--- /dev/null
+++ b/rackspace/compute/v2/bootfromvolume/delegate_test.go
@@ -0,0 +1 @@
+package bootfromvolume
diff --git a/rackspace/compute/v2/servers/requests.go b/rackspace/compute/v2/servers/requests.go
index 357b174..4f40e83 100644
--- a/rackspace/compute/v2/servers/requests.go
+++ b/rackspace/compute/v2/servers/requests.go
@@ -89,7 +89,10 @@
 	serverMap := res["server"].(map[string]interface{})
 	serverMap["key_name"] = opts.KeyPair
 
-	serverMap["block_device_mapping_v2"] = opts.BlockDevice
+	var bd bootfromvolume.BlockDevice
+	if opts.BlockDevice != bd {
+		serverMap["block_device_mapping_v2"] = []bootfromvolume.BlockDevice{opts.BlockDevice}
+	}
 
 	return res, nil
 }
