diff --git a/adminapi/restful.go b/adminapi/restful.go
index 1145172..e69e4e8 100644
--- a/adminapi/restful.go
+++ b/adminapi/restful.go
@@ -7,7 +7,7 @@
 	"github.com/go-chassis/go-chassis/core/common"
 	"github.com/go-chassis/go-chassis/core/config/model"
 	"github.com/go-chassis/go-chassis/core/router"
-	"github.com/go-chassis/go-chassis/metrics"
+	"github.com/go-chassis/go-chassis/pkg/metrics"
 	"github.com/go-chassis/go-chassis/server/restful"
 	"github.com/go-mesh/mesher/adminapi/health"
 	"github.com/go-mesh/mesher/adminapi/version"
diff --git a/bootstrap/bootstrap.go b/bootstrap/bootstrap.go
index 090be02..2574fdb 100644
--- a/bootstrap/bootstrap.go
+++ b/bootstrap/bootstrap.go
@@ -56,7 +56,9 @@
 	if err := adminapi.Init(); err != nil {
 		log.Println("Error occurred in starting admin server", err)
 	}
-	register.AdaptEndpoints()
+	if err := register.AdaptEndpoints(); err != nil {
+		return err
+	}
 	if cmd.Configs.LocalServicePorts == "" {
 		lager.Logger.Warnf("local service ports is missing, service can not be called by mesher")
 	} else {
diff --git a/go.mod b/go.mod
index ac6efbd..e7146d6 100644
--- a/go.mod
+++ b/go.mod
@@ -8,20 +8,22 @@
 	github.com/go-chassis/go-archaius v0.0.0-20181108111652-ab19b4eae276
 
 	github.com/go-chassis/go-cc-client v0.0.0-20181102101915-dea430061a34
-	github.com/go-chassis/go-chassis v1.0.2-0.20181109020043-b3581bd78ddc
+	github.com/go-chassis/go-chassis v1.1.1-0.20181130101036-30c84e3f6f47
 	github.com/go-chassis/gohessian v0.0.0-20180702061429-e5130c25af55
-	github.com/go-mesh/openlogging v0.0.0-20180912071658-0fd4707a75ab
+	github.com/go-mesh/openlogging v0.0.0-20181122085847-3daf3ad8ed35
+	github.com/gogo/googleapis v1.1.0 // indirect
 	github.com/gogo/protobuf v1.1.1
 	github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b // indirect
 	github.com/google/gofuzz v0.0.0-20170612174753-24818f796faf // indirect
 	github.com/imdario/mergo v0.3.6 // indirect
+	github.com/lyft/protoc-gen-validate v0.0.11 // indirect
 	github.com/onsi/gomega v1.4.2 // indirect
 	github.com/patrickmn/go-cache v2.1.0+incompatible
 	github.com/prometheus/client_golang v0.8.0
 	github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910
 	github.com/stretchr/testify v1.2.2
 	github.com/uber-go/atomic v1.3.2 // indirect
-	github.com/urfave/cli v0.0.0-20180821064027-934abfb2f102
+	github.com/urfave/cli v1.20.1-0.20181029213200-b67dcf995b6a
 	go.uber.org/atomic v1.3.2 // indirect
 	golang.org/x/crypto v0.0.0-20181030102418-4d3f4d9ffa16 // indirect
 	golang.org/x/net v0.0.0-20180906233101-161cd47e91fd
diff --git a/pkg/metrics/prometheus_exporter.go b/pkg/metrics/prometheus_exporter.go
index 247a999..ee56857 100644
--- a/pkg/metrics/prometheus_exporter.go
+++ b/pkg/metrics/prometheus_exporter.go
@@ -19,7 +19,7 @@
 
 import (
 	"github.com/go-chassis/go-chassis/core/lager"
-	"github.com/go-chassis/go-chassis/metrics"
+	"github.com/go-chassis/go-chassis/pkg/metrics"
 	"github.com/prometheus/client_golang/prometheus"
 	"runtime"
 	"sync"
diff --git a/register/register.go b/register/register.go
index 3bc984c..a7fd85f 100644
--- a/register/register.go
+++ b/register/register.go
@@ -29,15 +29,16 @@
 )
 
 // AdaptEndpoints moves http endpoint to rest endpoint
-func AdaptEndpoints() {
+func AdaptEndpoints() error {
+	var err error
 	// To be called by services based on CSE SDK,
 	// mesher has to register endpoint with rest://ip:port
 	oldProtoMap := config.GlobalDefinition.Cse.Protocols
 	if _, ok := oldProtoMap[common.HTTPProtocol]; !ok {
-		return
+		return nil
 	}
 	if _, ok := oldProtoMap[chassisCommon.ProtocolRest]; ok {
-		return
+		return nil
 	}
 
 	newProtoMap := make(map[string]chassisModel.Protocol)
@@ -48,7 +49,10 @@
 		newProtoMap[n] = proto
 	}
 	newProtoMap[chassisCommon.ProtocolRest] = oldProtoMap[common.HTTPProtocol]
-	registry.InstanceEndpoints = registry.MakeEndpointMap(newProtoMap)
+	registry.InstanceEndpoints, err = registry.MakeEndpointMap(newProtoMap)
+	if err != nil {
+		return err
+	}
 	for protocol, address := range registry.InstanceEndpoints {
 		if address == "" {
 			port := strings.Split(newProtoMap[protocol].Listen, ":")
@@ -59,4 +63,5 @@
 	}
 
 	lager.Logger.Debug("Adapt endpoints success")
+	return nil
 }
