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(),
