diff --git a/src/de_codec.erl b/src/dubbo_codec.erl
similarity index 99%
rename from src/de_codec.erl
rename to src/dubbo_codec.erl
index 44afe81..388581b 100644
--- a/src/de_codec.erl
+++ b/src/dubbo_codec.erl
@@ -6,7 +6,7 @@
 %%% @end
 %%% Created : 20. 十月 2016 下午6:21
 %%%-------------------------------------------------------------------
--module(de_codec).
+-module(dubbo_codec).
 -author("dlive").
 
 -include("dubbo.hrl").
diff --git a/src/de_common_fun.erl b/src/dubbo_common_fun.erl
similarity index 95%
rename from src/de_common_fun.erl
rename to src/dubbo_common_fun.erl
index 31eb143..665d390 100644
--- a/src/de_common_fun.erl
+++ b/src/dubbo_common_fun.erl
@@ -6,7 +6,7 @@
 %%% @end
 %%% Created : 27. Dec 2017 3:01 PM
 %%%-------------------------------------------------------------------
--module(de_common_fun).
+-module(dubbo_common_fun).
 -author("dlive").
 
 %% API
diff --git a/src/dubbo_config_util.erl b/src/dubbo_config_util.erl
index c27f694..1f1a47e 100644
--- a/src/dubbo_config_util.erl
+++ b/src/dubbo_config_util.erl
@@ -28,7 +28,7 @@
     }.
 
 gen_provider(Application,Port,Interface,MethodList,Option)->
-    Host = de_network_tools:local_ipv4_binary(),
+    Host = dubbo_network_tools:local_ipv4_binary(),
     MethodList2= [atom_to_binary(Item,utf8) || Item <- MethodList ],
     #provider_config{
         protocol= <<"dubbo">>,
diff --git a/src/de_heartbeat.erl b/src/dubbo_heartbeat.erl
similarity index 83%
rename from src/de_heartbeat.erl
rename to src/dubbo_heartbeat.erl
index b6da7cb..8991f18 100644
--- a/src/de_heartbeat.erl
+++ b/src/dubbo_heartbeat.erl
@@ -6,16 +6,16 @@
 %%% @end
 %%% Created : 20. 十月 2016 下午5:55
 %%%-------------------------------------------------------------------
--module(de_heartbeat).
+-module(dubbo_heartbeat).
 -author("dlive").
 
 -include("dubbo.hrl").
 %% API
 -export([generate_request/2]).
 generate_request(undefined,NeedResponse)->
-    RequestId = de_id_count:gen_id(),
+    RequestId = dubbo_id_generator:gen_id(),
     generate_request(RequestId,NeedResponse);
 generate_request(RequestId,NeedResponse)->
     Req = #dubbo_request{is_event = true,is_twoway = true,mid = RequestId,data = undefined,mversion= <<"2.0.0">>},
-    {ok,Bin} = de_codec:encode_request(Req),
+    {ok,Bin} = dubbo_codec:encode_request(Req),
     {ok,Bin}.
\ No newline at end of file
diff --git a/src/de_id_count.erl b/src/dubbo_id_generator.erl
similarity index 99%
rename from src/de_id_count.erl
rename to src/dubbo_id_generator.erl
index 42da3cf..2db23e4 100644
--- a/src/de_id_count.erl
+++ b/src/dubbo_id_generator.erl
@@ -6,7 +6,7 @@
 %%% @end
 %%% Created : 17. 十月 2016 上午11:12
 %%%-------------------------------------------------------------------
--module(de_id_count).
+-module(dubbo_id_generator).
 -author("dlive").
 
 -behaviour(gen_server).
diff --git a/src/dubbo_invoker.erl b/src/dubbo_invoker.erl
index 73601af..895a6b1 100644
--- a/src/dubbo_invoker.erl
+++ b/src/dubbo_invoker.erl
@@ -30,7 +30,7 @@
             case dubbo_traffic_control:check_goon(HostFlag,199) of
                 ok ->
                     Request2 = merge_attachments(Request,RpcContext),
-                    {ok,RequestData} = de_codec:encode_request(Request2),
+                    {ok,RequestData} = dubbo_codec:encode_request(Request2),
                     Ref=get_ref(RequestState),
                     RequestState2 = request_context:update(<<"t_agent_e">>,RequestState),
                     gen_server:cast(Pid,{send_request,Ref,Request2,RequestData,CallBackPid,RequestState2}),
diff --git a/src/dubbo_netty_client.erl b/src/dubbo_netty_client.erl
index 1fbdcf6..318b793 100644
--- a/src/dubbo_netty_client.erl
+++ b/src/dubbo_netty_client.erl
@@ -305,7 +305,7 @@
 
 
 send_heartbeat_msg(Mid,NeedResponse,State)->
-    {ok,Bin} = de_heartbeat:generate_request(Mid,NeedResponse),
+    {ok,Bin} = dubbo_heartbeat:generate_request(Mid,NeedResponse),
     NewState = case send_msg(Bin,State) of
         ok ->
             logger:info("send one heartbeat msg to server"),
@@ -348,7 +348,7 @@
 process_data(Data,State)->
     TmpTime = time_util:timestamp_ms(),
     <<Header:16/binary,RestData/binary>> = Data,
-    case de_codec:decode_header(Header) of
+    case dubbo_codec:decode_header(Header) of
         {ok,response,ResponseInfo}->
             %%心跳包的回应，是否会造成错误
             dubbo_traffic_control:decr_count(State#state.host_flag),
@@ -359,7 +359,7 @@
 %%                    RequestState2 = request_context:update(<<"t_net_b">>,TmpTime,RequestState),
                     RequestState3 = request_context:update(<<"t_net_e">>,RequestState),
 
-                    {ok,Res} = de_codec:decode_response(ResponseInfo,RestData),
+                    {ok,Res} = dubbo_codec:decode_response(ResponseInfo,RestData),
 
                     %%从另一条路返回
 %%                    case Res#dubbo_response.is_event of
@@ -392,7 +392,7 @@
 %%            {ok,State3} =process_response(Res#dubbo_response.is_event,Res,State,TmpTime),
             {ok,State};
         {ok,request,RequestInfo}->
-            {ok,Req} = de_codec:decode_request(RequestInfo,RestData),
+            {ok,Req} = dubbo_codec:decode_request(RequestInfo,RestData),
             logger:info("get one request mid ~p, is_event ~p",[Req#dubbo_request.mid,Req#dubbo_request.is_event]),
             {ok,State2} = process_request(Req#dubbo_request.is_event,Req,State),
             {ok,State2};
diff --git a/src/de_network_tools.erl b/src/dubbo_network_tools.erl
similarity index 96%
rename from src/de_network_tools.erl
rename to src/dubbo_network_tools.erl
index 7527885..a74b8e4 100644
--- a/src/de_network_tools.erl
+++ b/src/dubbo_network_tools.erl
@@ -6,7 +6,7 @@
 %%% @end
 %%% Created : 21. Mar 2018 4:07 PM
 %%%-------------------------------------------------------------------
--module(de_network_tools).
+-module(dubbo_network_tools).
 -author("dlive").
 
 %% API
diff --git a/src/dubbo_provider_protocol.erl b/src/dubbo_provider_protocol.erl
index e3707eb..d787e12 100644
--- a/src/dubbo_provider_protocol.erl
+++ b/src/dubbo_provider_protocol.erl
@@ -155,14 +155,14 @@
 
 process_data(Data,State)->
     <<Header:16/binary,RestData/binary>> = Data,
-    case de_codec:decode_header(Header) of
+    case dubbo_codec:decode_header(Header) of
         {ok,request,RequestInfo}->
-            {ok,Req} = de_codec:decode_request(RequestInfo,RestData),
+            {ok,Req} = dubbo_codec:decode_request(RequestInfo,RestData),
             logger:info("get one request mid ~p, is_event ~p",[Req#dubbo_request.mid,Req#dubbo_request.is_event]),
             {ok,State2} = process_request(Req#dubbo_request.is_event,Req,State),
             {ok,State2};
         {ok,response,ResponseInfo}->
-            {ok,Res} = de_codec:decode_response(ResponseInfo,RestData),
+            {ok,Res} = dubbo_codec:decode_response(ResponseInfo,RestData),
             logger:info("get one response mid ~p, is_event ~p state ~p",[Res#dubbo_response.mid,Res#dubbo_response.is_event,Res#dubbo_response.state]),
             {ok,State3} =process_response(Res#dubbo_response.is_event,Res,State),
             {ok,State3};
diff --git a/src/dubbo_provider_worker.erl b/src/dubbo_provider_worker.erl
index 00d299e..bf1d8a2 100644
--- a/src/dubbo_provider_worker.erl
+++ b/src/dubbo_provider_worker.erl
@@ -184,13 +184,13 @@
                     ok;
                 #dubbo_rpc_invocation{}=ResultInvoca ->
                     #dubbo_request{mid = Mid} = Request,
-                    {ok,Content }= de_codec:encode_response(#dubbo_response{mid=Mid,is_event = false,data= ResultInvoca}),
+                    {ok,Content }= dubbo_codec:encode_response(#dubbo_response{mid=Mid,is_event = false,data= ResultInvoca}),
                     {ok,Content};
                 ResultObj->
 %%                    Data = #databaseOperateResponse{databaseOperateRsp = "ha-ha"},
                     #dubbo_request{mid = Mid} = Request,
                     Data2 =#dubbo_rpc_invocation{parameters = [ResultObj]},
-                    {ok,Content }= de_codec:encode_response(#dubbo_response{mid=Mid,is_event = false,data= Data2}),
+                    {ok,Content }= dubbo_codec:encode_response(#dubbo_response{mid=Mid,is_event = false,data= Data2}),
                     {ok,Content}
             end;
         {error,Reason}  ->
diff --git a/src/dubbo_serializa_fastjson.erl b/src/dubbo_serializa_fastjson.erl
index 8a34bc5..ca8ed41 100644
--- a/src/dubbo_serializa_fastjson.erl
+++ b/src/dubbo_serializa_fastjson.erl
@@ -286,7 +286,7 @@
     decode_request_body_args(RestList,Data,State,ArgsObjList);
 decode_request_body_args([_ArgsType|RestList],Data,State,ArgsObjList) ->
     {Rest,ArgObj,NewState } = hessianDecode2:decode(Data,State),
-    ArgObj2 = de_type_transfer:classobj_to_native(ArgObj,NewState),
+    ArgObj2 = dubbo_type_transfer:classobj_to_native(ArgObj,NewState),
     decode_request_body_args(RestList,Rest,NewState,ArgsObjList++[ArgObj2]).
 
 string_encode(Data) when is_binary(Data)->
diff --git a/src/dubbo_serializa_hession.erl b/src/dubbo_serializa_hession.erl
index 314573a..2481b9f 100644
--- a/src/dubbo_serializa_hession.erl
+++ b/src/dubbo_serializa_hession.erl
@@ -242,5 +242,5 @@
     decode_request_body_args(RestList,Data,State,ArgsObjList);
 decode_request_body_args([_ArgsType|RestList],Data,State,ArgsObjList) ->
     {Rest,ArgObj,NewState } = hessianDecode2:decode(Data,State),
-    ArgObj2 = de_type_transfer:classobj_to_native(ArgObj,NewState),
+    ArgObj2 = dubbo_type_transfer:classobj_to_native(ArgObj,NewState),
     decode_request_body_args(RestList,Rest,NewState,ArgsObjList++[ArgObj2]).
\ No newline at end of file
diff --git a/src/de_type_transfer.erl b/src/dubbo_type_transfer.erl
similarity index 98%
rename from src/de_type_transfer.erl
rename to src/dubbo_type_transfer.erl
index ac734cb..9a5609d 100644
--- a/src/de_type_transfer.erl
+++ b/src/dubbo_type_transfer.erl
@@ -6,7 +6,7 @@
 %%% @end
 %%% Created : 27. 十月 2016 下午8:28
 %%%-------------------------------------------------------------------
--module(de_type_transfer).
+-module(dubbo_type_transfer).
 -author("dlive").
 
 -include("hessian.hrl").
diff --git a/src/dubbo_zookeeper.erl b/src/dubbo_zookeeper.erl
index e6bfcb8..8e1e96f 100644
--- a/src/dubbo_zookeeper.erl
+++ b/src/dubbo_zookeeper.erl
@@ -250,7 +250,7 @@
     %% revision参数字段的作用是什么？ 暂时不添加
     Methods=lists_util:join(Consumer#consumer_config.methods,<<",">>),
     Value=io_lib:format(<<"consumer://~s/~s?application=~s&category=~s&check=~p&default.timeout=~p&dubbo=~s&interface=~s&methods=~s&side=~s&timestamp=~p">>,
-        [de_common_fun:local_ip_v4_str(),
+        [dubbo_common_fun:local_ip_v4_str(),
             Consumer#consumer_config.interface,
             Consumer#consumer_config.application,
             Consumer#consumer_config.category,
diff --git a/src/dubboerl_app.erl b/src/dubboerl_app.erl
index 8a6a0e5..79452d7 100644
--- a/src/dubboerl_app.erl
+++ b/src/dubboerl_app.erl
@@ -37,6 +37,6 @@
     List = java_type_defined:get_list(),
     lists:map(
         fun({NativeType,ForeignType,Fields}) ->
-            de_type_transfer:pre_process_typedef(NativeType,ForeignType,Fields)
+            dubbo_type_transfer:pre_process_typedef(NativeType,ForeignType,Fields)
         end,List),
     ok.
\ No newline at end of file
diff --git a/src/request_context.erl b/src/request_context.erl
index 5ddbae7..6d40d48 100644
--- a/src/request_context.erl
+++ b/src/request_context.erl
@@ -105,12 +105,10 @@
                 ])
     end.
 
-trace(Info)->
-%%    gen_server:cast({monitor_trace,'monitor@agent_monitor.me'},{trace,Info}).
+trace(_Info)->
     ok.
 
-trace_end(Info)->
-%%    gen_server:cast({monitor_trace,'monitor@agent_monitor.me'},{trace_end,Info}).
+trace_end(_Info)->
     ok.
 
 test()->
diff --git a/test/dubbo_common_fun_tests.erl b/test/dubbo_common_fun_tests.erl
index 6c977ae..c2cebbb 100644
--- a/test/dubbo_common_fun_tests.erl
+++ b/test/dubbo_common_fun_tests.erl
@@ -12,8 +12,8 @@
 -include_lib("eunit/include/eunit.hrl").
 
 request_gen_test() ->
-    de_id_count:init([]),
-    Id = de_id_count:gen_id(),
+    dubbo_id_generator:init([]),
+    Id = dubbo_id_generator:gen_id(),
     ?assert(is_integer(Id)).
 
 string_join_test()->
diff --git a/test/hession_encode_tests.erl b/test/hession_encode_tests.erl
index 69922fb..9bd1ac1 100644
--- a/test/hession_encode_tests.erl
+++ b/test/hession_encode_tests.erl
@@ -29,9 +29,9 @@
     {Bin, State0} = hessianEncode:encode(RequestArg0, EncodingState0),
 
     type_register:init(),
-    de_type_transfer:pre_process_typedef(de_TestReq,<<"com.ifcoder.demo.bean.UserInfoRequest">>,record_info(fields,de_TestReq)),
+    dubbo_type_transfer:pre_process_typedef(de_TestReq,<<"com.ifcoder.demo.bean.UserInfoRequest">>,record_info(fields,de_TestReq)),
     {<<>>,Data,State2 } = hessianDecode2:decode(Bin,hessianDecode2:init()),
-    DecodeResult = de_type_transfer:java_to_native(Data,State2),
+    DecodeResult = dubbo_type_transfer:java_to_native(Data,State2),
     ?assert(is_record(DecodeResult,de_TestReq)),
     ?assertEqual(DecodeResult#de_TestReq.name,<<"nameinfo">>),
     ?assertEqual(DecodeResult#de_TestReq.nick,<<"nickname">>),
