diff --git a/openstack/identity/v2/extensions/delegate.go b/openstack/identity/v2/extensions/delegate.go
index b3f921a..77bf7fb 100644
--- a/openstack/identity/v2/extensions/delegate.go
+++ b/openstack/identity/v2/extensions/delegate.go
@@ -79,11 +79,9 @@
 // List returns a Pager which allows you to iterate over the full collection of extensions.
 // It does not accept query parameters.
 func List(c *gophercloud.ServiceClient) pagination.Pager {
-	pager := common.List(c)
-	pager.CreatePage = func(r pagination.LastHTTPResponse) pagination.Page {
+	return common.List(c).WithPageCreator(func(r pagination.LastHTTPResponse) pagination.Page {
 		return ExtensionPage{
 			ExtensionPage: common.ExtensionPage{SinglePageBase: pagination.SinglePageBase(r)},
 		}
-	}
-	return pager
+	})
 }
diff --git a/pagination/pager.go b/pagination/pager.go
index 50ea055..75fe408 100644
--- a/pagination/pager.go
+++ b/pagination/pager.go
@@ -31,9 +31,9 @@
 type Pager struct {
 	client *gophercloud.ServiceClient
 
-	InitialURL string
+	initialURL string
 
-	CreatePage func(r LastHTTPResponse) Page
+	createPage func(r LastHTTPResponse) Page
 
 	Err error
 
@@ -46,8 +46,18 @@
 func NewPager(client *gophercloud.ServiceClient, initialURL string, createPage func(r LastHTTPResponse) Page) Pager {
 	return Pager{
 		client:     client,
-		InitialURL: initialURL,
-		CreatePage: createPage,
+		initialURL: initialURL,
+		createPage: createPage,
+	}
+}
+
+// WithPageCreator returns a new Pager that substitutes a different page creation function. This is
+// useful for overriding List functions in delegation.
+func (p Pager) WithPageCreator(createPage func(r LastHTTPResponse) Page) Pager {
+	return Pager{
+		client:     p.client,
+		initialURL: p.initialURL,
+		createPage: createPage,
 	}
 }
 
@@ -62,7 +72,7 @@
 		return nil, err
 	}
 
-	return p.CreatePage(remembered), nil
+	return p.createPage(remembered), nil
 }
 
 // EachPage iterates over each page returned by a Pager, yielding one at a time to a handler function.
@@ -71,7 +81,7 @@
 	if p.Err != nil {
 		return p.Err
 	}
-	currentURL := p.InitialURL
+	currentURL := p.initialURL
 	for {
 		currentPage, err := p.fetchNextPage(currentURL)
 		if err != nil {
diff --git a/rackspace/identity/v2/extensions/delegate.go b/rackspace/identity/v2/extensions/delegate.go
index ffbcf92..3500cfd 100644
--- a/rackspace/identity/v2/extensions/delegate.go
+++ b/rackspace/identity/v2/extensions/delegate.go
@@ -43,11 +43,9 @@
 // List returns a Pager which allows you to iterate over the full collection of extensions.
 // It does not accept query parameters.
 func List(c *gophercloud.ServiceClient) pagination.Pager {
-	pager := os.List(c)
-	pager.CreatePage = func(r pagination.LastHTTPResponse) pagination.Page {
+	return os.List(c).WithPageCreator(func(r pagination.LastHTTPResponse) pagination.Page {
 		return ExtensionPage{
 			ExtensionPage: common.ExtensionPage{SinglePageBase: pagination.SinglePageBase(r)},
 		}
-	}
-	return pager
+	})
 }
