diff --git a/http.go b/http.go
index ac23865..5d43937 100644
--- a/http.go
+++ b/http.go
@@ -29,10 +29,8 @@
 	pb "github.com/golang/groupcache/groupcachepb"
 )
 
-// TODO: make this configurable?
 const defaultBasePath = "/_groupcache/"
 
-// TODO: make this configurable as well.
 const defaultReplicas = 50
 
 // HTTPPool implements PeerPicker for a pool of HTTP peers.
@@ -57,21 +55,59 @@
 	peers *consistenthash.Map
 }
 
-var httpPoolMade bool
+// HTTPPoolOptions are the configurations of a HTTPPool.
+type HTTPPoolOptions struct {
+	// BasePath specifies the HTTP path that will serve groupcache requests.
+	// If blank, it defaults to "/_groupcache/".
+	BasePath string
 
-// NewHTTPPool initializes an HTTP pool of peers.
-// It registers itself as a PeerPicker and as an HTTP handler with the
-// http.DefaultServeMux.
+	// Replicas specifies the number of key replicas on the consistent hash.
+	// If blank, it defaults to 50.
+	Replicas int
+
+	// HashFn specifies the hash function of the consistent hash.
+	// If blank, it defaults to crc32.ChecksumIEEE.
+	HashFn consistenthash.Hash
+}
+
+// NewHTTPPool initializes an HTTP pool of peers, and registers itself as a PeerPicker.
+// For convenience, it also registers itself as an http.Handler with http.DefaultServeMux.
 // The self argument be a valid base URL that points to the current server,
 // for example "http://example.net:8000".
 func NewHTTPPool(self string) *HTTPPool {
+	p := NewHTTPPoolOpts(self, nil)
+	http.Handle(p.basePath, p)
+	return p
+}
+
+var httpPoolMade bool
+
+// NewHTTPPoolOpts initializes an HTTP pool of peers with the given options.
+// Unlike NewHTTPPool, this function does not register the created pool as an HTTP handler.
+// The returned *HTTPPool implements http.Handler and must be registered using http.Handle.
+func NewHTTPPoolOpts(self string, o *HTTPPoolOptions) *HTTPPool {
 	if httpPoolMade {
 		panic("groupcache: NewHTTPPool must be called only once")
 	}
 	httpPoolMade = true
-	p := &HTTPPool{basePath: defaultBasePath, self: self, peers: consistenthash.New(defaultReplicas, nil)}
+
+	opts := HTTPPoolOptions{}
+	if o != nil {
+		opts = *o
+	}
+	if opts.BasePath == "" {
+		opts.BasePath = defaultBasePath
+	}
+	if opts.Replicas == 0 {
+		opts.Replicas = defaultReplicas
+	}
+
+	p := &HTTPPool{
+		basePath: opts.BasePath,
+		self:     self,
+		peers:    consistenthash.New(opts.Replicas, opts.HashFn),
+	}
 	RegisterPeerPicker(func() PeerPicker { return p })
-	http.Handle(defaultBasePath, p)
 	return p
 }
 
