Separating rebuild result type from other actions
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.