diff --git a/chaos_micro_unit_toolkit/CMakeLists.txt b/chaos_micro_unit_toolkit/CMakeLists.txt
index 37f34fb46bfe554a37ddc86b0b14d9c9d5127659..b0faf4c4877cab3148a0fece209fb8e8cedc45c8 100644
--- a/chaos_micro_unit_toolkit/CMakeLists.txt
+++ b/chaos_micro_unit_toolkit/CMakeLists.txt
@@ -2,7 +2,11 @@ cmake_minimum_required(VERSION 2.8)
 
 project(chaos_micro_unit_toolkit)
 
-INCLUDE_DIRECTORIES( ../)
+if(WIN32)
+include_directories(${ALL_WINDOWS_INCLUDE_DIR})
+else()
+include_directories(../)
+endif(WIN32)
 
 SET(source ChaosMicroUnitToolkit.cpp)
 SET(source ${source} data/DataPack.cpp)
@@ -46,7 +50,13 @@ ADD_LIBRARY(${PROJECT_NAME} SHARED ${source})
 set_target_properties(${PROJECT_NAME} PROPERTIES VERSION 1.0.0 SOVERSION 1)
 ENDIF ()
 
+
+
+if(WIN32)
+TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${ALL_WINDOWS_LIBPATH} )
+else()
 TARGET_LINK_LIBRARIES(${PROJECT_NAME} pthread)
+endif()
 
 FILE(GLOB files "*.h")
 INSTALL(FILES ${files} DESTINATION include/chaos_micro_unit_toolkit)
diff --git a/chaos_micro_unit_toolkit/connection/connection_adapter/AbstractConnectionAdapter.cpp b/chaos_micro_unit_toolkit/connection/connection_adapter/AbstractConnectionAdapter.cpp
index 10688c13b63cde0a8e2e31da7740d3bd602b409b..22f99aa0bde5835b8b28e49d241303e14c09bb3e 100644
--- a/chaos_micro_unit_toolkit/connection/connection_adapter/AbstractConnectionAdapter.cpp
+++ b/chaos_micro_unit_toolkit/connection/connection_adapter/AbstractConnectionAdapter.cpp
@@ -33,7 +33,7 @@ adapter_request_id(0){}
 
 AbstractConnectionAdapter::~AbstractConnectionAdapter() {}
 
-void AbstractConnectionAdapter::handleReceivedMessage(data::CDWShrdPtr& received_message) {
+void AbstractConnectionAdapter::handleReceivedMessage(CDWShrdPtr& received_message) {
     //checn whenever the message is a response or spontaneus message
     if(received_message->hasKey("etx_request_id") &&
        received_message->isInt32Value("etx_request_id")) {
@@ -44,14 +44,14 @@ void AbstractConnectionAdapter::handleReceivedMessage(data::CDWShrdPtr& received
     }
 }
 
-int AbstractConnectionAdapter::sendMessage(data::CDWUniquePtr& message) {
+int AbstractConnectionAdapter::sendMessage(CDWUniquePtr& message) {
     if(connection_status != ConnectionStateAccepted){
         return -1;
     }
     return sendRawMessage(message);
 }
 
-int AbstractConnectionAdapter::sendRequest(data::CDWUniquePtr& message,
+int AbstractConnectionAdapter::sendRequest(CDWUniquePtr& message,
                                            uint32_t& request_id) {
     request_id = adapter_request_id++;
     message->addInt32Value("ext_request_id", request_id);
diff --git a/chaos_micro_unit_toolkit/connection/connection_adapter/http/HTTPConnectionAdapter.cpp b/chaos_micro_unit_toolkit/connection/connection_adapter/http/HTTPConnectionAdapter.cpp
index 144364d01328ee27b59d7d9d7accfe5a04ae9d84..8a34466b1cd715a0af7128e5bf4c5f37e63e295b 100644
--- a/chaos_micro_unit_toolkit/connection/connection_adapter/http/HTTPConnectionAdapter.cpp
+++ b/chaos_micro_unit_toolkit/connection/connection_adapter/http/HTTPConnectionAdapter.cpp
@@ -26,7 +26,7 @@
 using namespace chaos::micro_unit_toolkit::data;
 using namespace chaos::micro_unit_toolkit::connection::connection_adapter::http;
 
-const chaos::micro_unit_toolkit::connection::ConnectionType HTTPConnectionAdapter::connection_type = ConnectionTypeHTTP;
+const chaos::micro_unit_toolkit::connection::ConnectionType HTTPConnectionAdapter::connection_type = chaos::micro_unit_toolkit::connection::ConnectionType::ConnectionTypeHTTP;
 
 HTTPConnectionAdapter::HTTPConnectionAdapter(const std::string& endpoint,
                                          const std::string& connection_header):
diff --git a/chaos_micro_unit_toolkit/connection/unit_proxy/AbstractUnitProxy.cpp b/chaos_micro_unit_toolkit/connection/unit_proxy/AbstractUnitProxy.cpp
index 15116c53ef4d7468c84a300ac0dd82a7f56183cb..68f5c11881ec2bcf5aa6a598ade8578f8b158df3 100644
--- a/chaos_micro_unit_toolkit/connection/unit_proxy/AbstractUnitProxy.cpp
+++ b/chaos_micro_unit_toolkit/connection/unit_proxy/AbstractUnitProxy.cpp
@@ -53,7 +53,7 @@ std::string RemoteMessage::getErrorDomain() const {
 }
 
 AbstractUnitProxy::AbstractUnitProxy(const std::string& _authorization_key,
-                                     ChaosUniquePtr<connection_adapter::AbstractConnectionAdapter>& _protocol_adapter):
+                                     ChaosUniquePtr<chaos::micro_unit_toolkit::connection::connection_adapter::AbstractConnectionAdapter>& _protocol_adapter):
 connection_adapter(MOVE(_protocol_adapter)),
 unit_state(UnitStateUnknown),
 authorization_key(_authorization_key){assert(connection_adapter.get());}
diff --git a/chaos_micro_unit_toolkit/connection/unit_proxy/UnitProxyHandlerWrapper.cpp b/chaos_micro_unit_toolkit/connection/unit_proxy/UnitProxyHandlerWrapper.cpp
index 73bfa45876070a3235875840fffa55b4e366c9fe..2fc3d365edfbf16cabfaedab294cc430909f998b 100644
--- a/chaos_micro_unit_toolkit/connection/unit_proxy/UnitProxyHandlerWrapper.cpp
+++ b/chaos_micro_unit_toolkit/connection/unit_proxy/UnitProxyHandlerWrapper.cpp
@@ -21,7 +21,10 @@
 
 #include <chaos_micro_unit_toolkit/connection/unit_proxy/UnitProxyHandlerWrapper.h>
 #include <iostream>
+#ifndef _WIN32
 #include <unistd.h>
+#endif
+#include <chaos/cu_toolkit/windowsCompliant.h>
 #include <cassert>
 
 using namespace chaos::micro_unit_toolkit::data;
diff --git a/chaos_micro_unit_toolkit/connection/unit_proxy/raw_driver/ExternalDriverHandlerWrapper.cpp b/chaos_micro_unit_toolkit/connection/unit_proxy/raw_driver/ExternalDriverHandlerWrapper.cpp
index 1ce4dc61135a69c34eca47749365dc61685bc434..89edf915c552ed70de8f646e98e0a8b00eb1a4dd 100644
--- a/chaos_micro_unit_toolkit/connection/unit_proxy/raw_driver/ExternalDriverHandlerWrapper.cpp
+++ b/chaos_micro_unit_toolkit/connection/unit_proxy/raw_driver/ExternalDriverHandlerWrapper.cpp
@@ -35,7 +35,7 @@ using namespace chaos::micro_unit_toolkit::connection::unit_proxy::raw_driver;
 #define DEINIT_OPCODE           "deinit"
 #define CONFIGURATION_STATE     "configuration_state"
 
-ExternalDriverHandlerWrapper::ExternalDriverHandlerWrapper(UnitProxyHandler handler,
+ExternalDriverHandlerWrapper::ExternalDriverHandlerWrapper(chaos::micro_unit_toolkit::connection::unit_proxy::UnitProxyHandler handler,
                                                            void *user_data,
                                                            ChaosUniquePtr<ExternalDriverUnitProxy>& _u_proxy):
 UnitProxyHandlerWrapper(handler,
@@ -51,7 +51,7 @@ authorized(false){}
 
 ExternalDriverHandlerWrapper::~ExternalDriverHandlerWrapper(){}
 
-int ExternalDriverHandlerWrapper::sendMessage(data::CDWUniquePtr& message_data) {
+int ExternalDriverHandlerWrapper::sendMessage(CDWUniquePtr& message_data) {
     ExternalDriverUnitProxy * const rd = static_cast<ExternalDriverUnitProxy*>(base_unit.get());
     return rd->sendMessage(message_data);
 }