use passed options
diff --git a/http.go b/http.go
index 8f637d7..14eb345 100644
--- a/http.go
+++ b/http.go
@@ -46,12 +46,12 @@
 	// If nil, the client uses http.DefaultTransport.
 	Transport func(Context) http.RoundTripper
 
-	// base path including leading and trailing slash, e.g. "/_groupcache/"
-	basePath string
-
 	// this peer's base URL, e.g. "https://example.net:8000"
 	self string
 
+	// opts specifies the options.
+	opts HTTPPoolOptions
+
 	mu          sync.Mutex // guards peers and httpGetters
 	peers       *consistenthash.Map
 	httpGetters map[string]*httpGetter // keyed by e.g. "http://10.0.0.2:8008"
@@ -78,7 +78,7 @@
 // for example "http://example.net:8000".
 func NewHTTPPool(self string) *HTTPPool {
 	p := NewHTTPPoolOpts(self, nil)
-	http.Handle(p.basePath, p)
+	http.Handle(p.opts.BasePath, p)
 	return p
 }
 
@@ -93,23 +93,21 @@
 	}
 	httpPoolMade = true
 
-	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),
 		httpGetters: make(map[string]*httpGetter),
 	}
+	if o != nil {
+		p.opts = *o
+	}
+	if p.opts.BasePath == "" {
+		p.opts.BasePath = defaultBasePath
+	}
+	if p.opts.Replicas == 0 {
+		p.opts.Replicas = defaultReplicas
+	}
+	p.peers = consistenthash.New(p.opts.Replicas, p.opts.HashFn)
+
 	RegisterPeerPicker(func() PeerPicker { return p })
 	return p
 }
@@ -120,11 +118,11 @@
 func (p *HTTPPool) Set(peers ...string) {
 	p.mu.Lock()
 	defer p.mu.Unlock()
-	p.peers = consistenthash.New(defaultReplicas, nil)
+	p.peers = consistenthash.New(p.opts.Replicas, p.opts.HashFn)
 	p.peers.Add(peers...)
 	p.httpGetters = make(map[string]*httpGetter, len(peers))
 	for _, peer := range peers {
-		p.httpGetters[peer] = &httpGetter{transport: p.Transport, baseURL: peer + p.basePath}
+		p.httpGetters[peer] = &httpGetter{transport: p.Transport, baseURL: peer + p.opts.BasePath}
 	}
 }
 
@@ -142,10 +140,10 @@
 
 func (p *HTTPPool) ServeHTTP(w http.ResponseWriter, r *http.Request) {
 	// Parse request.
-	if !strings.HasPrefix(r.URL.Path, p.basePath) {
+	if !strings.HasPrefix(r.URL.Path, p.opts.BasePath) {
 		panic("HTTPPool serving unexpected path: " + r.URL.Path)
 	}
-	parts := strings.SplitN(r.URL.Path[len(p.basePath):], "/", 2)
+	parts := strings.SplitN(r.URL.Path[len(p.opts.BasePath):], "/", 2)
 	if len(parts) != 2 {
 		http.Error(w, "bad request", http.StatusBadRequest)
 		return