diff --git a/common/constant/default.go b/common/constant/default.go
index ed947d5ce0b9078666c7ce4e4ab53d09d9ad1a12..c0c68170e225998cc88941161ec27ae99e1cbb78 100644
--- a/common/constant/default.go
+++ b/common/constant/default.go
@@ -12,5 +12,5 @@ const (
 )
 
 const (
-	ECHO = "$echo"
+	ECHO = "Echo"
 )
diff --git a/common/proxy/proxy.go b/common/proxy/proxy.go
index b157b360ba000367e0fc2c0382689e1862095ed4..b9377286507def555f1ac39f2a764e5399c8324d 100644
--- a/common/proxy/proxy.go
+++ b/common/proxy/proxy.go
@@ -32,6 +32,10 @@ func NewProxy(invoke protocol.Invoker, callBack interface{}, attachments map[str
 }
 
 // proxy implement
+// In consumer, RPCService like:
+// 		type XxxProvider struct {
+//  		Yyy func(ctx context.Context, args []interface{}, rsp *Zzz) error
+// 		}
 func (p *Proxy) Implement(v config.RPCService) error {
 
 	// check parameters, incoming interface must be a elem's pointer.
diff --git a/filter/imp/echo_filter.go b/filter/imp/echo_filter.go
index b4803e03ffdec820681a9f82d5efe0eec3ca6320..3ddff24c8f1b823a0b5d2520f771e5366eab9814 100644
--- a/filter/imp/echo_filter.go
+++ b/filter/imp/echo_filter.go
@@ -1,5 +1,9 @@
 package imp
 
+import (
+	log "github.com/AlexStocks/log4go"
+)
+
 import (
 	"github.com/dubbo/dubbo-go/common/constant"
 	"github.com/dubbo/dubbo-go/common/extension"
@@ -13,11 +17,14 @@ func init() {
 	extension.SetFilter(ECHO, GetFilter)
 }
 
+// RPCService need a Echo method in consumer, if you want to use EchoFilter
+// eg:
+//		Echo func(ctx context.Context, args []interface{}, rsp *Xxx) error
 type EchoFilter struct {
 }
 
 func (ef *EchoFilter) Invoke(invoker protocol.Invoker, invocation protocol.Invocation) protocol.Result {
-
+	log.Info("invoking echo filter.")
 	if invocation.MethodName() == constant.ECHO && len(invocation.Arguments()) == 1 {
 		return &protocol.RPCResult{
 			Rest: invocation.Arguments()[0],