diff --git a/acceptance/openstack/compute/v2/quotaset_test.go b/acceptance/openstack/compute/v2/quotaset_test.go
index e0c4bae..1a691c0 100644
--- a/acceptance/openstack/compute/v2/quotaset_test.go
+++ b/acceptance/openstack/compute/v2/quotaset_test.go
@@ -69,7 +69,7 @@
 	}
 
 	for _, tenant := range allTenants {
-		if tenant.Name == name{
+		if tenant.Name == name {
 			return tenant.ID, nil
 		}
 	}
@@ -120,49 +120,47 @@
 	}
 
 	idclient, err := clients.NewIdentityV2Client()
-	if err != nil{
+	if err != nil {
 		t.Fatalf("Could not create IdentityClient to look up tenant id!")
 	}
 
 	tenantid, err := getTenantIDByName(t, idclient, os.Getenv("OS_TENANT_NAME"))
-	if err != nil{
+	if err != nil {
 		t.Fatalf("Id for Tenant named '%' not found. Please set OS_TENANT_NAME appropriately", os.Getenv("OS_TENANT_NAME"))
 	}
-	
 
 	//save original quotas
-	orig, err := quotasets.Get(client,tenantid).Extract()
-	th.AssertNoErr(t,err)
+	orig, err := quotasets.Get(client, tenantid).Extract()
+	th.AssertNoErr(t, err)
 
 	//Test Update
-	res, err := quotasets.Update(client,tenantid,UpdatQuotaOpts).Extract()
-	th.AssertNoErr(t,err)
-	th.AssertEquals(t,UpdatedQuotas,*res)
+	res, err := quotasets.Update(client, tenantid, UpdatQuotaOpts).Extract()
+	th.AssertNoErr(t, err)
+	th.AssertEquals(t, UpdatedQuotas, *res)
 
 	//Test Delete
-	_,  err = quotasets.Delete(client,tenantid).Extract()
-	th.AssertNoErr(t,err)
+	_, err = quotasets.Delete(client, tenantid).Extract()
+	th.AssertNoErr(t, err)
 	//We dont know the default quotas, so just check if the quotas are not the same as before
-	newres, err := quotasets.Get(client,tenantid).Extract()
-	if newres == res{
+	newres, err := quotasets.Get(client, tenantid).Extract()
+	if newres == res {
 		t.Fatalf("Quotas after delete equal quotas before delete!")
 	}
 
-
 	restore := quotasets.UpdateOpts{}
-	FillUpdateOptsFromQuotaSet(*orig,&restore)
+	FillUpdateOptsFromQuotaSet(*orig, &restore)
 
 	//restore original quotas
-	res, err = quotasets.Update(client,tenantid,restore).Extract()
-	th.AssertNoErr(t,err)
+	res, err = quotasets.Update(client, tenantid, restore).Extract()
+	th.AssertNoErr(t, err)
 
 	orig.ID = ""
-	th.AssertEquals(t,*orig,*res)
+	th.AssertEquals(t, *orig, *res)
 
 }
 
 // Makes sure that the FillUpdateOptsFromQuotaSet() helper function works properly
-func TestFillFromQuotaSetHelperFunction(t *testing.T){
+func TestFillFromQuotaSetHelperFunction(t *testing.T) {
 	op := &quotasets.UpdateOpts{}
 	expected := `
 	{
@@ -181,6 +179,6 @@
 	"server_groups": 2,
 	"server_group_members": 3
 	}`
-	FillUpdateOptsFromQuotaSet(UpdatedQuotas,op)
-	th.AssertJSONEquals(t,expected,op)
+	FillUpdateOptsFromQuotaSet(UpdatedQuotas, op)
+	th.AssertJSONEquals(t, expected, op)
 }
diff --git a/acceptance/openstack/pkg.go b/acceptance/openstack/pkg.go
index 3a8ecdb..ef11064 100644
--- a/acceptance/openstack/pkg.go
+++ b/acceptance/openstack/pkg.go
@@ -1,4 +1,3 @@
 // +build acceptance
 
 package openstack
-
diff --git a/openstack/blockstorage/v1/apiversions/urls.go b/openstack/blockstorage/v1/apiversions/urls.go
index c9cf895..d1861ac 100644
--- a/openstack/blockstorage/v1/apiversions/urls.go
+++ b/openstack/blockstorage/v1/apiversions/urls.go
@@ -1,8 +1,8 @@
 package apiversions
 
 import (
-	"strings"
 	"net/url"
+	"strings"
 
 	"github.com/gophercloud/gophercloud"
 )
diff --git a/openstack/compute/v2/extensions/defsecrules/results.go b/openstack/compute/v2/extensions/defsecrules/results.go
index 61b918d..f990c99 100644
--- a/openstack/compute/v2/extensions/defsecrules/results.go
+++ b/openstack/compute/v2/extensions/defsecrules/results.go
@@ -1,6 +1,8 @@
 package defsecrules
 
 import (
+	"encoding/json"
+
 	"github.com/gophercloud/gophercloud"
 	"github.com/gophercloud/gophercloud/openstack/compute/v2/extensions/secgroups"
 	"github.com/gophercloud/gophercloud/pagination"
@@ -10,6 +12,16 @@
 // normal security rule.
 type DefaultRule secgroups.Rule
 
+func (r *DefaultRule) UnmarshalJSON(b []byte) error {
+	var s secgroups.Rule
+	err := json.Unmarshal(b, &s)
+	if err != nil {
+		return err
+	}
+	*r = DefaultRule(s)
+	return nil
+}
+
 // DefaultRulePage is a single page of a DefaultRule collection.
 type DefaultRulePage struct {
 	pagination.SinglePageBase
diff --git a/openstack/compute/v2/extensions/quotasets/requests.go b/openstack/compute/v2/extensions/quotasets/requests.go
index 64fc8ff..bb9cb22 100644
--- a/openstack/compute/v2/extensions/quotasets/requests.go
+++ b/openstack/compute/v2/extensions/quotasets/requests.go
@@ -74,6 +74,3 @@
 
 	return gophercloud.BuildRequestBody(opts, "quota_set")
 }
-
-
-
diff --git a/openstack/compute/v2/extensions/quotasets/testing/fixtures.go b/openstack/compute/v2/extensions/quotasets/testing/fixtures.go
index 0945f9b..79305a7 100644
--- a/openstack/compute/v2/extensions/quotasets/testing/fixtures.go
+++ b/openstack/compute/v2/extensions/quotasets/testing/fixtures.go
@@ -2,12 +2,12 @@
 
 import (
 	"fmt"
-	"net/http"
-	"testing"
+	"github.com/gophercloud/gophercloud"
 	"github.com/gophercloud/gophercloud/openstack/compute/v2/extensions/quotasets"
 	th "github.com/gophercloud/gophercloud/testhelper"
 	"github.com/gophercloud/gophercloud/testhelper/client"
-	"github.com/gophercloud/gophercloud"
+	"net/http"
+	"testing"
 )
 
 // GetOutput is a sample response to a Get call.
@@ -45,18 +45,16 @@
 	SecurityGroups:           10,
 	Cores:                    200,
 	Instances:                25,
-	ServerGroups: 			  2,
+	ServerGroups:             2,
 	ServerGroupMembers:       3,
 }
 
-
 //The expected update Body. Is also returned by PUT request
 const UpdateOutput = `{"quota_set":{"cores":200,"fixed_ips":0,"floating_ips":0,"injected_file_content_bytes":10240,"injected_file_path_bytes":255,"injected_files":5,"instances":25,"key_pairs":10,"metadata_items":128,"ram":200000,"security_group_rules":20,"security_groups":10,"server_groups":2,"server_group_members":3}}`
 
 //The expected partialupdate Body. Is also returned by PUT request
 const PartialUpdateBody = `{"quota_set":{"cores":200, "force":true}}`
 
-
 //Result of Quota-update
 var UpdatedQuotaSet = quotasets.UpdateOpts{
 	FixedIps:                 gophercloud.IntToPointer(0),
@@ -71,7 +69,7 @@
 	SecurityGroups:           gophercloud.IntToPointer(10),
 	Cores:                    gophercloud.IntToPointer(200),
 	Instances:                gophercloud.IntToPointer(25),
-	ServerGroups: 			  gophercloud.IntToPointer(2),
+	ServerGroups:             gophercloud.IntToPointer(2),
 	ServerGroupMembers:       gophercloud.IntToPointer(3),
 }
 
@@ -91,7 +89,7 @@
 	th.Mux.HandleFunc("/os-quota-sets/"+FirstTenantID, func(w http.ResponseWriter, r *http.Request) {
 		th.TestMethod(t, r, "PUT")
 		th.TestHeader(t, r, "X-Auth-Token", client.TokenID)
-		th.TestJSONRequest(t,r,UpdateOutput)
+		th.TestJSONRequest(t, r, UpdateOutput)
 		w.Header().Add("Content-Type", "application/json")
 		fmt.Fprintf(w, UpdateOutput)
 	})
@@ -102,7 +100,7 @@
 	th.Mux.HandleFunc("/os-quota-sets/"+FirstTenantID, func(w http.ResponseWriter, r *http.Request) {
 		th.TestMethod(t, r, "PUT")
 		th.TestHeader(t, r, "X-Auth-Token", client.TokenID)
-		th.TestJSONRequest(t,r,PartialUpdateBody)
+		th.TestJSONRequest(t, r, PartialUpdateBody)
 		w.Header().Add("Content-Type", "application/json")
 		fmt.Fprintf(w, UpdateOutput)
 	})
@@ -113,8 +111,8 @@
 	th.Mux.HandleFunc("/os-quota-sets/"+FirstTenantID, func(w http.ResponseWriter, r *http.Request) {
 		th.TestMethod(t, r, "DELETE")
 		th.TestHeader(t, r, "X-Auth-Token", client.TokenID)
-		th.TestBody(t,r,"")	
+		th.TestBody(t, r, "")
 		w.Header().Add("Content-Type", "application/json")
 		w.WriteHeader(202)
 	})
-}
\ No newline at end of file
+}
diff --git a/openstack/compute/v2/extensions/quotasets/testing/requests_test.go b/openstack/compute/v2/extensions/quotasets/testing/requests_test.go
index e63f6aa..0193f97 100644
--- a/openstack/compute/v2/extensions/quotasets/testing/requests_test.go
+++ b/openstack/compute/v2/extensions/quotasets/testing/requests_test.go
@@ -3,11 +3,11 @@
 import (
 	"testing"
 
+	"errors"
+	"github.com/gophercloud/gophercloud"
 	"github.com/gophercloud/gophercloud/openstack/compute/v2/extensions/quotasets"
 	th "github.com/gophercloud/gophercloud/testhelper"
 	"github.com/gophercloud/gophercloud/testhelper/client"
-	"github.com/gophercloud/gophercloud"
-	"errors"
 )
 
 func TestGet(t *testing.T) {
@@ -32,7 +32,7 @@
 	th.SetupHTTP()
 	defer th.TeardownHTTP()
 	HandlePartialPutSuccessfully(t)
-	opts := quotasets.UpdateOpts{Cores:gophercloud.IntToPointer(200), Force:true}
+	opts := quotasets.UpdateOpts{Cores: gophercloud.IntToPointer(200), Force: true}
 	actual, err := quotasets.Update(client.ServiceClient(), FirstTenantID, opts).Extract()
 	th.AssertNoErr(t, err)
 	th.CheckDeepEquals(t, &FirstQuotaSet, actual)
@@ -46,20 +46,19 @@
 	th.AssertNoErr(t, err)
 }
 
-type ErrorUpdateOpts quotasets.UpdateOpts;
+type ErrorUpdateOpts quotasets.UpdateOpts
 
 func (opts ErrorUpdateOpts) ToComputeQuotaUpdateMap() (map[string]interface{}, error) {
 	return nil, errors.New("This is an error")
 }
 
-func TestErrorInToComputeQuotaUpdateMap(t *testing.T){
+func TestErrorInToComputeQuotaUpdateMap(t *testing.T) {
 	opts := &ErrorUpdateOpts{}
 	th.SetupHTTP()
 	defer th.TeardownHTTP()
 	HandlePutSuccessfully(t)
 	_, err := quotasets.Update(client.ServiceClient(), FirstTenantID, opts).Extract()
-	if err == nil{
+	if err == nil {
 		t.Fatal("Error handling failed")
 	}
 }
-
diff --git a/openstack/compute/v2/extensions/quotasets/urls.go b/openstack/compute/v2/extensions/quotasets/urls.go
index 4e15613..64190e9 100644
--- a/openstack/compute/v2/extensions/quotasets/urls.go
+++ b/openstack/compute/v2/extensions/quotasets/urls.go
@@ -18,4 +18,4 @@
 
 func deleteURL(c *gophercloud.ServiceClient, tenantID string) string {
 	return getURL(c, tenantID)
-}
\ No newline at end of file
+}
diff --git a/openstack/compute/v2/images/results.go b/openstack/compute/v2/images/results.go
index a55b8f1..1090327 100644
--- a/openstack/compute/v2/images/results.go
+++ b/openstack/compute/v2/images/results.go
@@ -45,7 +45,7 @@
 	Status   string
 
 	Updated string
-	
+
 	Metadata map[string]string
 }
 
diff --git a/openstack/networking/v2/extensions/portsbinding/testing/fixtures.go b/openstack/networking/v2/extensions/portsbinding/testing/fixtures.go
index 3231f66..f688c20 100644
--- a/openstack/networking/v2/extensions/portsbinding/testing/fixtures.go
+++ b/openstack/networking/v2/extensions/portsbinding/testing/fixtures.go
@@ -168,7 +168,8 @@
             	"f0ac4394-7e4a-4409-9701-ba8be283dbc3"
         	],
         	"binding:host_id": "HOST1",
-        	"binding:vnic_type": "normal"
+        	"binding:vnic_type": "normal",
+					"allowed_address_pairs": null
 		}
 }
 			`)
diff --git a/script/coverage b/script/coverage
index ab3a4f3..3efa81b 100755
--- a/script/coverage
+++ b/script/coverage
@@ -1,4 +1,7 @@
 #!/bin/bash
+
+set -e
+
 n=1
 for testpkg in $(go list ./testing ./.../testing); do
   covpkg="${testpkg/"/testing"/}"
