diff --git a/acceptance/openstack/networking/v2/extension_test.go b/acceptance/openstack/networking/v2/extension_test.go
index 99c0ecd..edcbba4 100644
--- a/acceptance/openstack/networking/v2/extension_test.go
+++ b/acceptance/openstack/networking/v2/extension_test.go
@@ -34,7 +34,7 @@
 	Setup(t)
 	defer Teardown()
 
-	ext, err := extensions.Get(Client, "service-type")
+	ext, err := extensions.Get(Client, "service-type").Extract()
 	th.AssertNoErr(t, err)
 
 	th.AssertEquals(t, ext.Updated, "2013-01-20T00:00:00-00:00")
diff --git a/acceptance/openstack/networking/v2/network_test.go b/acceptance/openstack/networking/v2/network_test.go
index 4e37fc0..9f18597 100644
--- a/acceptance/openstack/networking/v2/network_test.go
+++ b/acceptance/openstack/networking/v2/network_test.go
@@ -16,11 +16,11 @@
 	defer Teardown()
 
 	// Create a network
-	res, err := networks.Create(Client, networks.CreateOpts{Name: "sample_network", AdminStateUp: true})
+	n, err := networks.Create(Client, networks.CreateOpts{Name: "sample_network", AdminStateUp: true}).Extract()
 	th.AssertNoErr(t, err)
-	th.AssertEquals(t, res.Name, "sample_network")
-	th.AssertEquals(t, res.AdminStateUp, true)
-	networkID := res.ID
+	th.AssertEquals(t, n.Name, "sample_network")
+	th.AssertEquals(t, n.AdminStateUp, true)
+	networkID := n.ID
 
 	// List networks
 	pager := networks.List(Client, networks.ListOpts{Limit: 2})
@@ -43,7 +43,7 @@
 	if networkID == "" {
 		t.Fatalf("In order to retrieve a network, the NetworkID must be set")
 	}
-	n, err := networks.Get(Client, networkID)
+	n, err = networks.Get(Client, networkID).Extract()
 	th.AssertNoErr(t, err)
 	th.AssertEquals(t, n.Status, "ACTIVE")
 	th.AssertDeepEquals(t, n.Subnets, []string{})
@@ -53,13 +53,13 @@
 	th.AssertEquals(t, n.ID, networkID)
 
 	// Update network
-	n, err = networks.Update(Client, networkID, networks.UpdateOpts{Name: "new_network_name"})
+	n, err = networks.Update(Client, networkID, networks.UpdateOpts{Name: "new_network_name"}).Extract()
 	th.AssertNoErr(t, err)
 	th.AssertEquals(t, n.Name, "new_network_name")
 
 	// Delete network
-	err = networks.Delete(Client, networkID)
-	th.AssertNoErr(t, err)
+	res := networks.Delete(Client, networkID)
+	th.AssertNoErr(t, res.Err)
 }
 
 func TestCreateMultipleNetworks(t *testing.T) {
diff --git a/acceptance/openstack/networking/v2/port_test.go b/acceptance/openstack/networking/v2/port_test.go
index 3842913..363a7fe 100644
--- a/acceptance/openstack/networking/v2/port_test.go
+++ b/acceptance/openstack/networking/v2/port_test.go
@@ -40,18 +40,18 @@
 	if portID == "" {
 		t.Fatalf("In order to retrieve a port, the portID must be set")
 	}
-	p, err := ports.Get(Client, portID)
+	p, err := ports.Get(Client, portID).Extract()
 	th.AssertNoErr(t, err)
 	th.AssertEquals(t, p.ID, portID)
 
 	// Update port
-	p, err = ports.Update(Client, portID, ports.UpdateOpts{Name: "new_port_name"})
+	p, err = ports.Update(Client, portID, ports.UpdateOpts{Name: "new_port_name"}).Extract()
 	th.AssertNoErr(t, err)
 	th.AssertEquals(t, p.Name, "new_port_name")
 
 	// Delete port
-	err = ports.Delete(Client, portID)
-	th.AssertNoErr(t, err)
+	res := ports.Delete(Client, portID)
+	th.AssertNoErr(t, res.Err)
 }
 
 func createPort(t *testing.T, networkID, subnetID string) string {
@@ -62,7 +62,7 @@
 		AdminStateUp: &enable,
 		FixedIPs:     []ports.IP{ports.IP{SubnetID: subnetID}},
 	}
-	p, err := ports.Create(Client, opts)
+	p, err := ports.Create(Client, opts).Extract()
 	th.AssertNoErr(t, err)
 	th.AssertEquals(t, p.NetworkID, networkID)
 	th.AssertEquals(t, p.Name, "my_port")
@@ -97,7 +97,7 @@
 }
 
 func createNetwork() (string, error) {
-	res, err := networks.Create(Client, networks.CreateOpts{Name: "tmp_network", AdminStateUp: true})
+	res, err := networks.Create(Client, networks.CreateOpts{Name: "tmp_network", AdminStateUp: true}).Extract()
 	return res.ID, err
 }
 
@@ -109,7 +109,7 @@
 		IPVersion:  subnets.IPv4,
 		Name:       "my_subnet",
 		EnableDHCP: &enable,
-	})
+	}).Extract()
 	return s.ID, err
 }
 
diff --git a/acceptance/openstack/networking/v2/subnet_test.go b/acceptance/openstack/networking/v2/subnet_test.go
index 6dcfcdc..2758e2a 100644
--- a/acceptance/openstack/networking/v2/subnet_test.go
+++ b/acceptance/openstack/networking/v2/subnet_test.go
@@ -38,9 +38,9 @@
 
 	// Setup network
 	t.Log("Setting up network")
-	res, err := networks.Create(Client, networks.CreateOpts{Name: "tmp_network", AdminStateUp: true})
+	n, err := networks.Create(Client, networks.CreateOpts{Name: "tmp_network", AdminStateUp: true}).Extract()
 	th.AssertNoErr(t, err)
-	networkID := res.ID
+	networkID := n.ID
 	defer networks.Delete(Client, networkID)
 
 	// Create subnet
@@ -53,7 +53,7 @@
 		Name:       "my_subnet",
 		EnableDHCP: &enable,
 	}
-	s, err := subnets.Create(Client, opts)
+	s, err := subnets.Create(Client, opts).Extract()
 	th.AssertNoErr(t, err)
 
 	th.AssertEquals(t, s.NetworkID, networkID)
@@ -65,20 +65,20 @@
 
 	// Get subnet
 	t.Log("Getting subnet")
-	s, err = subnets.Get(Client, subnetID)
+	s, err = subnets.Get(Client, subnetID).Extract()
 	th.AssertNoErr(t, err)
 	th.AssertEquals(t, s.ID, subnetID)
 
 	// Update subnet
 	t.Log("Update subnet")
-	s, err = subnets.Update(Client, subnetID, subnets.UpdateOpts{Name: "new_subnet_name"})
+	s, err = subnets.Update(Client, subnetID, subnets.UpdateOpts{Name: "new_subnet_name"}).Extract()
 	th.AssertNoErr(t, err)
 	th.AssertEquals(t, s.Name, "new_subnet_name")
 
 	// Delete subnet
 	t.Log("Delete subnet")
-	err = subnets.Delete(Client, subnetID)
-	th.AssertNoErr(t, err)
+	res := subnets.Delete(Client, subnetID)
+	th.AssertNoErr(t, res.Err)
 }
 
 func TestBatchCreate(t *testing.T) {
