diff --git a/params.go b/params.go
index 0fcc1f0..a72aaed 100644
--- a/params.go
+++ b/params.go
@@ -244,3 +244,25 @@
 	// Return an error if the underlying type of 'opts' isn't a struct.
 	return optsMap, fmt.Errorf("Options type is not a struct.")
 }
+
+// IDSliceToQueryString takes a slice of elements and converts them into a query
+// string. For example, if name=foo and slice=[]int{20, 40, 60}, then the
+// result would be `?name=20&name=40&name=60'
+func IDSliceToQueryString(name string, ids []int) string {
+	str := ""
+	for k, v := range ids {
+		if k == 0 {
+			str += "?"
+		} else {
+			str += "&"
+		}
+		str += fmt.Sprintf("%s=%s", name, strconv.Itoa(v))
+	}
+	return str
+}
+
+// IntWithinRange returns TRUE if an integer falls within a defined range, and
+// FALSE if not.
+func IntWithinRange(val, min, max int) bool {
+	return val > min && val < max
+}
diff --git a/rackspace/lb/v1/acl/requests.go b/rackspace/lb/v1/acl/requests.go
index d0623f5..e1e92ac 100644
--- a/rackspace/lb/v1/acl/requests.go
+++ b/rackspace/lb/v1/acl/requests.go
@@ -7,7 +7,6 @@
 	"github.com/racker/perigee"
 	"github.com/rackspace/gophercloud"
 	"github.com/rackspace/gophercloud/pagination"
-	"github.com/rackspace/gophercloud/rackspace/lb/v1"
 )
 
 // List is the operation responsible for returning a paginated collection of
@@ -96,7 +95,7 @@
 	}
 
 	url := rootURL(c, loadBalancerID)
-	url += v1.IDSliceToQueryString("id", itemIDs)
+	url += gophercloud.IDSliceToQueryString("id", itemIDs)
 
 	_, res.Err = perigee.Request("DELETE", url, perigee.Options{
 		MoreHeaders: c.AuthenticatedHeaders(),
diff --git a/rackspace/lb/v1/common.go b/rackspace/lb/v1/common.go
deleted file mode 100644
index 1f33709..0000000
--- a/rackspace/lb/v1/common.go
+++ /dev/null
@@ -1,28 +0,0 @@
-package v1
-
-import (
-	"fmt"
-	"strconv"
-)
-
-// IDSliceToQueryString takes a slice of elements and converts them into a query
-// string. For example, if name=foo and slice=[]int{20, 40, 60}, then the
-// result would be `?name=20&name=40&name=60'
-func IDSliceToQueryString(name string, ids []int) string {
-	str := ""
-	for k, v := range ids {
-		if k == 0 {
-			str += "?"
-		} else {
-			str += "&"
-		}
-		str += fmt.Sprintf("%s=%s", name, strconv.Itoa(v))
-	}
-	return str
-}
-
-// WithinRange returns TRUE if an integer falls within a defined range, and
-// FALSE if not.
-func WithinRange(val, min, max int) bool {
-	return val > min && val < max
-}
diff --git a/rackspace/lb/v1/lbs/requests.go b/rackspace/lb/v1/lbs/requests.go
index 2d57520..eae54d1 100644
--- a/rackspace/lb/v1/lbs/requests.go
+++ b/rackspace/lb/v1/lbs/requests.go
@@ -8,7 +8,6 @@
 
 	"github.com/rackspace/gophercloud"
 	"github.com/rackspace/gophercloud/pagination"
-	"github.com/rackspace/gophercloud/rackspace/lb/v1"
 	"github.com/rackspace/gophercloud/rackspace/lb/v1/acl"
 	"github.com/rackspace/gophercloud/rackspace/lb/v1/monitors"
 	"github.com/rackspace/gophercloud/rackspace/lb/v1/nodes"
@@ -271,7 +270,7 @@
 	}
 
 	url := rootURL(c)
-	url += v1.IDSliceToQueryString("id", ids)
+	url += gophercloud.IDSliceToQueryString("id", ids)
 
 	_, res.Err = perigee.Request("DELETE", url, perigee.Options{
 		MoreHeaders: c.AuthenticatedHeaders(),
diff --git a/rackspace/lb/v1/monitors/requests.go b/rackspace/lb/v1/monitors/requests.go
index aa6ec5b..cfc35d2 100644
--- a/rackspace/lb/v1/monitors/requests.go
+++ b/rackspace/lb/v1/monitors/requests.go
@@ -6,7 +6,6 @@
 	"github.com/racker/perigee"
 
 	"github.com/rackspace/gophercloud"
-	"github.com/rackspace/gophercloud/rackspace/lb/v1"
 )
 
 var (
@@ -41,13 +40,13 @@
 func (opts UpdateConnectMonitorOpts) ToMonitorUpdateMap() (map[string]interface{}, error) {
 	type m map[string]interface{}
 
-	if !v1.WithinRange(opts.AttemptLimit, 1, 10) {
+	if !gophercloud.IntWithinRange(opts.AttemptLimit, 1, 10) {
 		return m{}, errAttemptLimit
 	}
-	if !v1.WithinRange(opts.Delay, 1, 3600) {
+	if !gophercloud.IntWithinRange(opts.Delay, 1, 3600) {
 		return m{}, errDelay
 	}
-	if !v1.WithinRange(opts.Timeout, 1, 300) {
+	if !gophercloud.IntWithinRange(opts.Timeout, 1, 300) {
 		return m{}, errTimeout
 	}
 
@@ -95,13 +94,13 @@
 func (opts UpdateHTTPMonitorOpts) ToMonitorUpdateMap() (map[string]interface{}, error) {
 	type m map[string]interface{}
 
-	if !v1.WithinRange(opts.AttemptLimit, 1, 10) {
+	if !gophercloud.IntWithinRange(opts.AttemptLimit, 1, 10) {
 		return m{}, errAttemptLimit
 	}
-	if !v1.WithinRange(opts.Delay, 1, 3600) {
+	if !gophercloud.IntWithinRange(opts.Delay, 1, 3600) {
 		return m{}, errDelay
 	}
-	if !v1.WithinRange(opts.Timeout, 1, 300) {
+	if !gophercloud.IntWithinRange(opts.Timeout, 1, 300) {
 		return m{}, errTimeout
 	}
 	if opts.Type != HTTP && opts.Type != HTTPS {
diff --git a/rackspace/lb/v1/nodes/requests.go b/rackspace/lb/v1/nodes/requests.go
index 1c3765a..bfd0aed 100644
--- a/rackspace/lb/v1/nodes/requests.go
+++ b/rackspace/lb/v1/nodes/requests.go
@@ -7,7 +7,6 @@
 	"github.com/racker/perigee"
 	"github.com/rackspace/gophercloud"
 	"github.com/rackspace/gophercloud/pagination"
-	"github.com/rackspace/gophercloud/rackspace/lb/v1"
 )
 
 // List is the operation responsible for returning a paginated collection of
@@ -146,7 +145,7 @@
 	}
 
 	url := rootURL(c, loadBalancerID)
-	url += v1.IDSliceToQueryString("id", nodeIDs)
+	url += gophercloud.IDSliceToQueryString("id", nodeIDs)
 
 	_, res.Err = perigee.Request("DELETE", url, perigee.Options{
 		MoreHeaders: c.AuthenticatedHeaders(),
diff --git a/rackspace/lb/v1/vips/requests.go b/rackspace/lb/v1/vips/requests.go
index 7401362..42f0c1d 100644
--- a/rackspace/lb/v1/vips/requests.go
+++ b/rackspace/lb/v1/vips/requests.go
@@ -7,7 +7,6 @@
 
 	"github.com/rackspace/gophercloud"
 	"github.com/rackspace/gophercloud/pagination"
-	"github.com/rackspace/gophercloud/rackspace/lb/v1"
 )
 
 // List is the operation responsible for returning a paginated collection of
@@ -92,7 +91,7 @@
 	}
 
 	url := rootURL(c, loadBalancerID)
-	url += v1.IDSliceToQueryString("id", vipIDs)
+	url += gophercloud.IDSliceToQueryString("id", vipIDs)
 
 	_, res.Err = perigee.Request("DELETE", url, perigee.Options{
 		MoreHeaders: c.AuthenticatedHeaders(),
