diff --git a/client/hopclient.go b/client/hopclient.go
index cae5282f8810877a77405115bb5c149e1e6eeb15..96cf66d2c3af0d6a31f49d4d3490d4fc630455df 100644
--- a/client/hopclient.go
+++ b/client/hopclient.go
@@ -62,6 +62,11 @@ func NewHopClient(ctx context.Context, stop context.CancelFunc, kcp bool, proxyA
 	}
 }
 
+func NewDefaultHopClient(kcp bool, proxyAddr string, obfs4Endpoints []*Obfs4Config, minHopSeconds uint, hopJitter uint) *HopClient {
+	ctx, stop := context.WithCancel(context.Background())
+	return NewHopClient(ctx, stop, kcp, proxyAddr, obfs4Endpoints, minHopSeconds, hopJitter)
+}
+
 func (c *HopClient) Start() (bool, error) {
 	defer func() {
 		c.state = stopped
@@ -300,20 +305,12 @@ func (c *HopClient) readTCPWriteUDP() {
 	}
 }
 
-func (c *HopClient) Close() error {
-	// TODO: implement
-	return nil
-}
-
 func (c *HopClient) Stop() (bool, error) {
 	if !c.IsStarted() {
 		return false, ErrNotRunning
 	}
 
-	if err := c.Close(); err != nil {
-		c.error("error while stopping: %v", err)
-		return false, err
-	}
+	c.stop()
 
 	c.state = stopped