diff --git a/_site/acceptance/openstack/compute/v2/servers_test.go b/_site/acceptance/openstack/compute/v2/servers_test.go
index 047d763..45d36ca 100644
--- a/_site/acceptance/openstack/compute/v2/servers_test.go
+++ b/_site/acceptance/openstack/compute/v2/servers_test.go
@@ -157,8 +157,8 @@
 	}
 
 	randomPassword := tools.MakeNewPassword(server.AdminPass)
-	err = servers.ChangeAdminPassword(client, server.ID, randomPassword)
-	if err != nil {
+	res = servers.ChangeAdminPassword(client, server.ID, randomPassword)
+	if res.Err != nil {
 		t.Fatal(err)
 	}
 
@@ -194,14 +194,14 @@
 		t.Fatal(err)
 	}
 
-	err = servers.Reboot(client, server.ID, "aldhjflaskhjf")
-	if err == nil {
+	res = servers.Reboot(client, server.ID, "aldhjflaskhjf")
+	if res.Err == nil {
 		t.Fatal("Expected the SDK to provide an ArgumentError here")
 	}
 
 	t.Logf("Attempting reboot of server %s", server.ID)
-	err = servers.Reboot(client, server.ID, servers.OSReboot)
-	if err != nil {
+	res = servers.Reboot(client, server.ID, servers.OSReboot)
+	if res.Err != nil {
 		t.Fatalf("Unable to reboot server: %v", err)
 	}
 
@@ -270,7 +270,7 @@
 
 	t.Logf("Attempting to resize server [%s]", server.ID)
 
-	if err := servers.Resize(client, server.ID, choices.FlavorIDResize); err != nil {
+	if res := servers.Resize(client, server.ID, choices.FlavorIDResize); res.Err != nil {
 		t.Fatal(err)
 	}
 
@@ -301,7 +301,7 @@
 
 	t.Logf("Attempting to confirm resize for server %s", server.ID)
 
-	if err = servers.ConfirmResize(client, server.ID); err != nil {
+	if res := servers.ConfirmResize(client, server.ID); res.Err != nil {
 		t.Fatal(err)
 	}
 
@@ -332,7 +332,7 @@
 
 	t.Logf("Attempting to revert resize for server %s", server.ID)
 
-	if err := servers.RevertResize(client, server.ID); err != nil {
+	if res := servers.RevertResize(client, server.ID); res.Err != nil {
 		t.Fatal(err)
 	}
 
diff --git a/_site/openstack/compute/v2/servers/requests.go b/_site/openstack/compute/v2/servers/requests.go
index 1b6e3b8..f673f94 100644
--- a/_site/openstack/compute/v2/servers/requests.go
+++ b/_site/openstack/compute/v2/servers/requests.go
@@ -290,7 +290,6 @@
 		}{
 			map[string]string{"type": string(how)},
 		},
-		Results:     &res.Resp,
 		MoreHeaders: client.Provider.AuthenticatedHeaders(),
 		OkCodes:     []int{202},
 	})
@@ -413,7 +412,6 @@
 		}{
 			map[string]interface{}{"flavorRef": flavorRef},
 		},
-		Results:     &res.Resp,
 		MoreHeaders: client.Provider.AuthenticatedHeaders(),
 		OkCodes:     []int{202},
 	})
@@ -429,7 +427,6 @@
 	_, res.Err = perigee.Request("POST", actionURL(client, id), perigee.Options{
 		ReqBody:     map[string]interface{}{"confirmResize": nil},
 		MoreHeaders: client.Provider.AuthenticatedHeaders(),
-		Results:     &res.Resp,
 		OkCodes:     []int{204},
 	})
 
@@ -444,7 +441,6 @@
 	_, res.Err = perigee.Request("POST", actionURL(client, id), perigee.Options{
 		ReqBody:     map[string]interface{}{"revertResize": nil},
 		MoreHeaders: client.Provider.AuthenticatedHeaders(),
-		Results:     &res.Resp,
 		OkCodes:     []int{202},
 	})
 
diff --git a/_site/openstack/compute/v2/servers/results.go b/_site/openstack/compute/v2/servers/results.go
index 492c5a8..1402d8a 100644
--- a/_site/openstack/compute/v2/servers/results.go
+++ b/_site/openstack/compute/v2/servers/results.go
@@ -40,10 +40,20 @@
 }
 
 // RebuildResult temporarily contains the response from a Rebuild call.
-type ActionResult struct {
+type RebuildResult struct {
 	serverResult
 }
 
+// ActionResult represents the result of server action operations, like reboot
+type ActionResult struct {
+	gophercloud.CommonResult
+}
+
+// Extract is a function that extracts error information from a result
+func (r ActionResult) Extract() error {
+	return r.Err
+}
+
 // Server exposes only the standard OpenStack fields corresponding to a given server on the user's account.
 type Server struct {
 	// ID uniquely identifies this server amongst all other servers, including those not accessible to the current tenant.
diff --git a/openstack/compute/v2/servers/requests.go b/openstack/compute/v2/servers/requests.go
index 7bbdb56..0b38175 100644
--- a/openstack/compute/v2/servers/requests.go
+++ b/openstack/compute/v2/servers/requests.go
@@ -348,7 +348,6 @@
 		}{
 			map[string]string{"type": string(how)},
 		},
-		Results:     &res.Resp,
 		MoreHeaders: client.Provider.AuthenticatedHeaders(),
 		OkCodes:     []int{202},
 	})
@@ -471,7 +470,6 @@
 		}{
 			map[string]interface{}{"flavorRef": flavorRef},
 		},
-		Results:     &res.Resp,
 		MoreHeaders: client.Provider.AuthenticatedHeaders(),
 		OkCodes:     []int{202},
 	})
@@ -487,7 +485,6 @@
 	_, res.Err = perigee.Request("POST", actionURL(client, id), perigee.Options{
 		ReqBody:     map[string]interface{}{"confirmResize": nil},
 		MoreHeaders: client.Provider.AuthenticatedHeaders(),
-		Results:     &res.Resp,
 		OkCodes:     []int{204},
 	})
 
@@ -502,7 +499,6 @@
 	_, res.Err = perigee.Request("POST", actionURL(client, id), perigee.Options{
 		ReqBody:     map[string]interface{}{"revertResize": nil},
 		MoreHeaders: client.Provider.AuthenticatedHeaders(),
-		Results:     &res.Resp,
 		OkCodes:     []int{202},
 	})
 
diff --git a/openstack/compute/v2/servers/results.go b/openstack/compute/v2/servers/results.go
index 492c5a8..1402d8a 100644
--- a/openstack/compute/v2/servers/results.go
+++ b/openstack/compute/v2/servers/results.go
@@ -40,10 +40,20 @@
 }
 
 // RebuildResult temporarily contains the response from a Rebuild call.
-type ActionResult struct {
+type RebuildResult struct {
 	serverResult
 }
 
+// ActionResult represents the result of server action operations, like reboot
+type ActionResult struct {
+	gophercloud.CommonResult
+}
+
+// Extract is a function that extracts error information from a result
+func (r ActionResult) Extract() error {
+	return r.Err
+}
+
 // Server exposes only the standard OpenStack fields corresponding to a given server on the user's account.
 type Server struct {
 	// ID uniquely identifies this server amongst all other servers, including those not accessible to the current tenant.
