diff --git a/chaos/cu_toolkit/driver_manager/driver/AbstractRemoteIODriver.h b/chaos/cu_toolkit/driver_manager/driver/AbstractRemoteIODriver.h
index 1ca41ca5d67e153ce26fd11d6a04866005117ce5..7f863fb136badbe36645ffafeb88fcaaede5eb30 100644
--- a/chaos/cu_toolkit/driver_manager/driver/AbstractRemoteIODriver.h
+++ b/chaos/cu_toolkit/driver_manager/driver/AbstractRemoteIODriver.h
@@ -243,7 +243,9 @@ namespace chaos {
                                     }
                                 }
                             } else {
-                                if(!message->hasKey(MESSAGE)){
+                                if(message->hasKey(AUTHORIZATION_KEY)) {
+                                    sendAuthenticationACK();
+                                } else if(!message->hasKey(MESSAGE)){
                                     //send error because not right type of req index
                                     EndpointType::sendError(connection_identifier,
                                                             -2, "message field is mandatory", __PRETTY_FUNCTION__);
diff --git a/chaos_micro_unit_toolkit/connection/unit_proxy/raw_driver/RawDriverUnitProxy.cpp b/chaos_micro_unit_toolkit/connection/unit_proxy/raw_driver/RawDriverUnitProxy.cpp
index dd6e571d905eb6d4e479687c771f62c1653df253..cf683970f5323246baacbc7a0854d9a9f9b924bf 100644
--- a/chaos_micro_unit_toolkit/connection/unit_proxy/raw_driver/RawDriverUnitProxy.cpp
+++ b/chaos_micro_unit_toolkit/connection/unit_proxy/raw_driver/RawDriverUnitProxy.cpp
@@ -51,24 +51,35 @@ bool RawDriverUnitProxy::manageAutorizationPhase() {
         //!check authentication state
         RemoteMessageUniquePtr result = getNextMessage();
         if(result->message->hasKey(AUTHORIZATION_STATE) ||
-           result->message->isBoolValue(AUTHORIZATION_STATE)) {
-            authorization_state = (AuthorizationState)result->message->getBoolValue(AUTHORIZATION_STATE);
+           result->message->isInt32Value(AUTHORIZATION_STATE)) {
+            switch (result->message->getInt32Value(AUTHORIZATION_STATE)) {
+                case 0:
+                    authorization_state = AuthorizationStateDenied;
+                    break;
+                case 1:
+                    authorization_state = AuthorizationStateOk;
+                    break;
+                default:
+                     authorization_state = AuthorizationStateDenied;
+                    break;
+            }
+            
         }
     }
     return result;
 }
 
-int RawDriverUnitProxy::sendMessage(DataPackUniquePtr& message_data) {
-    DataPackUniquePtr message(new DataPack());
-    message->addDataPack(MESSAGE, *message_data);
+int RawDriverUnitProxy::sendMessage(CDWUniquePtr& message_data) {
+    CDWUniquePtr message(new DataPack());
+    message->addCDWValue(MESSAGE, *message_data);
     return AbstractUnitProxy::sendMessage(message);
 }
 
 int RawDriverUnitProxy::sendAnswer(RemoteMessageUniquePtr& message,
                                    CDWUniquePtr& message_data) {
     if(message->is_request == false) return - 1;
-    DataPackUniquePtr answer(new DataPack());
-    answer->addInt32(REQUEST_IDENTIFICATION, message->message_id);
-    answer->addDataPack(MESSAGE, *message_data);
+    CDWUniquePtr answer(new DataPack());
+    answer->addInt32Value(REQUEST_IDENTIFICATION, message->message_id);
+    answer->addCDWValue(MESSAGE, *message_data);
     return AbstractUnitProxy::sendMessage(answer);
 }
diff --git a/example/ChaosPerformanceTester/main.cpp b/example/ChaosPerformanceTester/main.cpp
index 77b345b547af0989be25b860ac64f28c3bfb6188..a29f66078a9b35699836138e37683cb4e89d384f 100644
--- a/example/ChaosPerformanceTester/main.cpp
+++ b/example/ChaosPerformanceTester/main.cpp
@@ -39,7 +39,6 @@ using namespace std;
 using namespace chaos;
 using namespace chaos::common::network;
 using namespace chaos::ui;
-using namespace bson;
 using namespace boost;
 using namespace boost::posix_time;
 using namespace boost::date_time;