diff --git a/cmd/mesher/mesher.go b/cmd/mesher/mesher.go
index 8c05b6a..06d8a85 100644
--- a/cmd/mesher/mesher.go
+++ b/cmd/mesher/mesher.go
@@ -24,6 +24,9 @@
 
 	_ "github.com/apache/servicecomb-mesher/proxy/handler"
 	//protocols
+	_ "github.com/apache/servicecomb-mesher/proxy/protocol/dubbo/client/chassis"
+	_ "github.com/apache/servicecomb-mesher/proxy/protocol/dubbo/server"
+	_ "github.com/apache/servicecomb-mesher/proxy/protocol/dubbo/simpleRegistry"
 	_ "github.com/apache/servicecomb-mesher/proxy/protocol/grpc"
 	_ "github.com/apache/servicecomb-mesher/proxy/protocol/http"
 	//ingress rule fetcher
@@ -37,9 +40,8 @@
 
 	_ "github.com/apache/servicecomb-mesher/proxy/handler/oauth2"
 
+	//middle wares
 	_ "github.com/go-chassis/go-chassis/middleware/circuit"
-
-	// rate limiter handler
 	_ "github.com/go-chassis/go-chassis/middleware/ratelimiter"
 )
 
diff --git a/go.mod b/go.mod
index c4ca0c0..4310b22 100644
--- a/go.mod
+++ b/go.mod
@@ -4,8 +4,8 @@
 	github.com/envoyproxy/go-control-plane v0.6.0
 	github.com/ghodss/yaml v1.0.0
 	github.com/go-chassis/foundation v0.1.1-0.20191113114104-2b05871e9ec4
-	github.com/go-chassis/go-archaius v1.3.0
-	github.com/go-chassis/go-chassis v1.8.2-0.20200505090058-f61a697f667a
+	github.com/go-chassis/go-archaius v1.3.2
+	github.com/go-chassis/go-chassis v1.8.2-0.20200728122719-5c6c673368c5
 	github.com/go-chassis/gohessian v0.0.0-20180702061429-e5130c25af55
 	github.com/go-mesh/openlogging v1.0.1
 	github.com/gogo/googleapis v1.3.1 // indirect
@@ -19,7 +19,6 @@
 	github.com/urfave/cli v1.20.1-0.20181029213200-b67dcf995b6a
 	golang.org/x/net v0.0.0-20191004110552-13f9640d40b9
 	golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45
-	golang.org/x/sys v0.0.0-20191018095205-727590c5006e // indirect
 	google.golang.org/grpc v1.19.1
 	gopkg.in/yaml.v2 v2.2.4
 	k8s.io/apimachinery v0.17.0
diff --git a/proxy/handler/oauth2/oauth2_handler.go b/proxy/handler/oauth2/oauth2_handler.go
index 6a0963a..bc0b444 100644
--- a/proxy/handler/oauth2/oauth2_handler.go
+++ b/proxy/handler/oauth2/oauth2_handler.go
@@ -79,8 +79,8 @@
 			}
 		}
 	}
-	chain.Next(inv, func(r *invocation.Response) error {
-		return cb(r)
+	chain.Next(inv, func(r *invocation.Response) {
+		cb(r)
 	})
 }
 
@@ -130,9 +130,5 @@
 		Err:    err,
 		Status: status,
 	}
-	err = cb(r)
-	if err != nil {
-		openlogging.Error("response error: " + err.Error())
-		return
-	}
+	cb(r)
 }
diff --git a/proxy/handler/oauth2/oauth2_handler_test.go b/proxy/handler/oauth2/oauth2_handler_test.go
index 2259513..39548df 100644
--- a/proxy/handler/oauth2/oauth2_handler_test.go
+++ b/proxy/handler/oauth2/oauth2_handler_test.go
@@ -80,9 +80,8 @@
 		i.Args = req
 
 		i.SetHeader("Authorization", "Basic dGVzdDp0ZXN0")
-		c.Next(i, func(r *invocation.Response) error {
+		c.Next(i, func(r *invocation.Response) {
 			assert.Error(t, r.Err)
-			return r.Err
 		})
 	})
 	t.Run("null grant_type", func(t *testing.T) {
@@ -94,9 +93,8 @@
 		i.Args = req
 
 		i.SetHeader("Authorization", "Basic dGVzdDp0ZXN0")
-		c.Next(i, func(r *invocation.Response) error {
+		c.Next(i, func(r *invocation.Response) {
 			assert.NoError(t, r.Err)
-			return r.Err
 		})
 	})
 
@@ -108,9 +106,8 @@
 		}
 		i.Args = req
 
-		c.Next(i, func(r *invocation.Response) error {
+		c.Next(i, func(r *invocation.Response) {
 			assert.NoError(t, r.Err)
-			return r.Err
 		})
 	})
 
@@ -123,9 +120,8 @@
 		i.Args = req
 
 		i.SetHeader("Authorization", "Basic dGVzdDp0ZXN0")
-		c.Next(i, func(r *invocation.Response) error {
+		c.Next(i, func(r *invocation.Response) {
 			assert.NoError(t, r.Err)
-			return r.Err
 		})
 	})
 }
diff --git a/proxy/handler/port_rewrite.go b/proxy/handler/port_rewrite.go
index e00e0eb..d157c99 100644
--- a/proxy/handler/port_rewrite.go
+++ b/proxy/handler/port_rewrite.go
@@ -46,14 +46,12 @@
 			Err: err,
 		}
 
-		if err := cb(r); err != nil {
-			openlogging.Error("Response callBack error: " + err.Error())
-		}
+		cb(r)
 		return
 	}
 
-	chain.Next(inv, func(r *invocation.Response) error {
-		return cb(r)
+	chain.Next(inv, func(r *invocation.Response) {
+		cb(r)
 	})
 }
 
diff --git a/proxy/handler/port_rewrite_test.go b/proxy/handler/port_rewrite_test.go
index 04265b3..eb1bcf1 100644
--- a/proxy/handler/port_rewrite_test.go
+++ b/proxy/handler/port_rewrite_test.go
@@ -44,9 +44,8 @@
 		Endpoint:         "127.0.0.1:5555",
 	}
 
-	c.Next(i, func(r *invocation.Response) error {
+	c.Next(i, func(r *invocation.Response) {
 		assert.NoError(t, r.Err)
-		return r.Err
 	})
 }
 
@@ -66,9 +65,8 @@
 		Endpoint:         "",
 	}
 
-	c.Next(i, func(r *invocation.Response) error {
+	c.Next(i, func(r *invocation.Response) {
 		assert.Error(t, r.Err)
-		return r.Err
 	})
 
 }
diff --git a/proxy/handler/skywalking_handler.go b/proxy/handler/skywalking_handler.go
index c0006d8..33dd811 100644
--- a/proxy/handler/skywalking_handler.go
+++ b/proxy/handler/skywalking_handler.go
@@ -48,8 +48,8 @@
 	if err != nil {
 		openlogging.GetLogger().Errorf("CreateEntrySpan error:%s", err.Error())
 	}
-	chain.Next(i, func(r *invocation.Response) (err error) {
-		err = cb(r)
+	chain.Next(i, func(r *invocation.Response) {
+		cb(r)
 		span.Tag(go2sky.TagHTTPMethod, i.Protocol)
 		span.Tag(go2sky.TagURL, HTTPPrefix+i.MicroServiceName+i.URLPathFormat)
 		span.Tag(go2sky.TagStatusCode, strconv.Itoa(r.Status))
@@ -85,8 +85,8 @@
 	if err != nil {
 		openlogging.GetLogger().Errorf("CreateExitSpan error:%s", err.Error())
 	}
-	chain.Next(i, func(r *invocation.Response) (err error) {
-		err = cb(r)
+	chain.Next(i, func(r *invocation.Response) {
+		cb(r)
 		span.Tag(go2sky.TagHTTPMethod, i.Protocol)
 		span.Tag(go2sky.TagURL, HTTPPrefix+i.MicroServiceName+i.URLPathFormat)
 		span.Tag(go2sky.TagStatusCode, strconv.Itoa(r.Status))
@@ -102,7 +102,6 @@
 		spanExit.End()
 		span.End()
 		openlogging.GetLogger().Debugf("SkyWalkingConsumerHandler end.")
-		return
 	})
 }
 
diff --git a/proxy/handler/skywalking_handler_test.go b/proxy/handler/skywalking_handler_test.go
index 3e7a1bf..be6ded6 100644
--- a/proxy/handler/skywalking_handler_test.go
+++ b/proxy/handler/skywalking_handler_test.go
@@ -82,9 +82,8 @@
 	gcconfig.GlobalDefinition.Cse.Handler.Chain.Consumer = make(map[string]string)
 	gcconfig.GlobalDefinition.Cse.Handler.Chain.Consumer["skywalking-provider"] = "skywalking-provider"
 
-	c.Next(initInv(), func(r *invocation.Response) error {
+	c.Next(initInv(), func(r *invocation.Response) {
 		assert.Equal(t, r.Err, nil)
-		return r.Err
 	})
 }
 
@@ -113,8 +112,7 @@
 	gcconfig.GlobalDefinition.Cse.Handler.Chain.Consumer = make(map[string]string)
 	gcconfig.GlobalDefinition.Cse.Handler.Chain.Consumer["skywalking-consumer"] = "skywalking-consumer"
 
-	c.Next(initInv(), func(r *invocation.Response) error {
+	c.Next(initInv(), func(r *invocation.Response) {
 		assert.Equal(t, r.Err, nil)
-		return r.Err
 	})
 }
diff --git a/proxy/pkg/egress/archaius/egress.go b/proxy/pkg/egress/archaius/egress.go
index 5e1487c..e77385e 100644
--- a/proxy/pkg/egress/archaius/egress.go
+++ b/proxy/pkg/egress/archaius/egress.go
@@ -52,7 +52,7 @@
 	configs := config.GetEgressConfig()
 	ok, _ := egress.ValidateEgressRule(configs.Destinations)
 	if !ok {
-		err := fmt.Errorf("Egress rule type assertion fail, key: %s", configs.Destinations)
+		err := fmt.Errorf("egress rule type assertion fail, key: %v", configs.Destinations)
 		return err
 	}
 
diff --git a/proxy/protocol/dubbo/proxy/dubbo_proxy_ouput.go b/proxy/protocol/dubbo/proxy/dubbo_proxy_ouput.go
index 8ac6e97..9aaec2d 100755
--- a/proxy/protocol/dubbo/proxy/dubbo_proxy_ouput.go
+++ b/proxy/protocol/dubbo/proxy/dubbo_proxy_ouput.go
@@ -123,8 +123,8 @@
 				return err
 			}
 		}
-		c.Next(inv, func(ir *invocation.Response) error {
-			return handleDubboRequest(inv, ctx, ir)
+		c.Next(inv, func(ir *invocation.Response) {
+			handleDubboRequest(inv, ctx, ir)
 		})
 	} else { //come from other mesher
 		ctx.Req.SetAttachment(ProxyTag, "")
@@ -133,8 +133,8 @@
 			openlogging.Error("Get Provider Chain failed: " + err.Error())
 			return err
 		}
-		c.Next(inv, func(ir *invocation.Response) error {
-			return handleDubboRequest(inv, ctx, ir)
+		c.Next(inv, func(ir *invocation.Response) {
+			handleDubboRequest(inv, ctx, ir)
 		})
 	}
 
diff --git a/proxy/protocol/grpc/reverse_proxy.go b/proxy/protocol/grpc/reverse_proxy.go
index fa61aac..0b2fd92 100755
--- a/proxy/protocol/grpc/reverse_proxy.go
+++ b/proxy/protocol/grpc/reverse_proxy.go
@@ -129,13 +129,9 @@
 		metrics.RecordLatency(serviceLabelValues, timeTaken)
 	}(time.Now())
 	var invRsp *invocation.Response
-	c.Next(inv, func(ir *invocation.Response) error {
+	c.Next(inv, func(ir *invocation.Response) {
 		//Send the request to the destination
 		invRsp = ir
-		if invRsp != nil {
-			return invRsp.Err
-		}
-		return nil
 	})
 	resp, err := handleRequest(w, r, inv, invRsp)
 	if err != nil {
@@ -178,13 +174,9 @@
 		r.Header.Set(XForwardedHost, r.Host)
 	}
 	var invRsp *invocation.Response
-	c.Next(inv, func(ir *invocation.Response) error {
+	c.Next(inv, func(ir *invocation.Response) {
 		//Send the request to the destination
 		invRsp = ir
-		if invRsp != nil {
-			return invRsp.Err
-		}
-		return nil
 	})
 	if _, err = handleRequest(w, r, inv, invRsp); err != nil {
 		lager.Logger.Error("Handle request failed: " + err.Error())
diff --git a/proxy/protocol/http/gateway.go b/proxy/protocol/http/gateway.go
index d89dd4d..add3521 100644
--- a/proxy/protocol/http/gateway.go
+++ b/proxy/protocol/http/gateway.go
@@ -35,12 +35,8 @@
 		return nil, err
 	}
 	var invRsp *invocation.Response
-	c.Next(inv, func(ir *invocation.Response) error {
+	c.Next(inv, func(ir *invocation.Response) {
 		invRsp = ir
-		if invRsp != nil {
-			return invRsp.Err
-		}
-		return nil
 	})
 	return invRsp, nil
 }
@@ -91,13 +87,9 @@
 		return
 	}
 	var invRsp *invocation.Response
-	c.Next(inv, func(ir *invocation.Response) error {
+	c.Next(inv, func(ir *invocation.Response) {
 		//Send the request to the destination
 		invRsp = ir
-		if invRsp != nil {
-			return invRsp.Err
-		}
-		return nil
 	})
 	resp, err := handleRequest(w, inv, invRsp)
 	if err != nil {
diff --git a/proxy/protocol/http/sidecar.go b/proxy/protocol/http/sidecar.go
index 4b3a3ad..35bff87 100755
--- a/proxy/protocol/http/sidecar.go
+++ b/proxy/protocol/http/sidecar.go
@@ -147,13 +147,9 @@
 		metrics.RecordLatency(serviceLabelValues, timeTaken)
 	}(time.Now())
 	var invRsp *invocation.Response
-	c.Next(inv, func(ir *invocation.Response) error {
+	c.Next(inv, func(ir *invocation.Response) {
 		//Send the request to the destination
 		invRsp = ir
-		if invRsp != nil {
-			return invRsp.Err
-		}
-		return nil
 	})
 	resp, err := handleRequest(w, inv, invRsp)
 	if err != nil {
@@ -196,13 +192,9 @@
 		r.Header.Set(XForwardedHost, r.Host)
 	}
 	var invRsp *invocation.Response
-	c.Next(inv, func(ir *invocation.Response) error {
+	c.Next(inv, func(ir *invocation.Response) {
 		//Send the request to the destination
 		invRsp = ir
-		if invRsp != nil {
-			return invRsp.Err
-		}
-		return nil
 	})
 	if _, err = handleRequest(w, inv, invRsp); err != nil {
 		lager.Logger.Error("Handle request failed: " + err.Error())
