diff --git a/common/cpp/include/common/networking.h b/common/cpp/include/common/networking.h
index 6e8a6d630d3c11f4246343c18028fbb473c09bb7..6ea824a5f7926a755c9c948306af6b895a30f6e9 100644
--- a/common/cpp/include/common/networking.h
+++ b/common/cpp/include/common/networking.h
@@ -28,14 +28,12 @@ enum NetworkErrorCode : uint16_t {
 struct GenericNetworkRequest {
     OpCode              op_code;
     NetworkRequestId    request_id;
-    char                data[];
 };
 
 struct GenericNetworkResponse {
     OpCode              op_code;
     NetworkRequestId    request_id;
     NetworkErrorCode    error_code;
-    char                data[];
 };
 
 struct SendDataRequest : GenericNetworkRequest {
@@ -48,7 +46,7 @@ struct SendDataRequest : GenericNetworkRequest {
  * - ::NET_ERR__FILENAME_ALREADY_IN_USE
  * - ::NET_ERR__ALLOCATE_STORAGE_FAILED
  */
-struct SendDataResponse : GenericNetworkResponse {
+struct SendDataResponse :  GenericNetworkResponse {
 };
 /** @} */
 
diff --git a/common/cpp/include/system_wrappers/system_io.h b/common/cpp/include/system_wrappers/system_io.h
index 51a55eb03a4d70e4ba5a079ba2d997d8c70195b9..da12b4aba3c8b6b9b11afc7e129388263f2cf644 100644
--- a/common/cpp/include/system_wrappers/system_io.h
+++ b/common/cpp/include/system_wrappers/system_io.h
@@ -3,6 +3,11 @@
 
 #include "io.h"
 
+#if defined(_MSC_VER)
+#include <BaseTsd.h>
+typedef SSIZE_T ssize_t;
+#endif
+
 namespace hidra2 {
 
 class SystemIO final : public IO {
diff --git a/examples/producer/dummy-data-producer/dummy_data_producer.cpp b/examples/producer/dummy-data-producer/dummy_data_producer.cpp
index 5edf2c634f5ca6630adce9e126747c528ae378a2..ac3b80483295a147ace4f846c0434adc05d9c426 100644
--- a/examples/producer/dummy-data-producer/dummy_data_producer.cpp
+++ b/examples/producer/dummy-data-producer/dummy_data_producer.cpp
@@ -1,6 +1,7 @@
 
 #include <producer/producer.h>
 #include <iostream>
+#include <tuple>
 
 typedef std::tuple<std::string, size_t, uint64_t> ArgumentTuple;
 
diff --git a/producer/api/include/producer/producer.h b/producer/api/include/producer/producer.h
index 9e010db09354da8825fca968be8adad15e8ce085..456ced8d1f7a0aea57ea1977994f6106e43fbd06 100644
--- a/producer/api/include/producer/producer.h
+++ b/producer/api/include/producer/producer.h
@@ -2,6 +2,7 @@
 #define HIDRA2_PRODUCER__PRODUCER_H
 
 #include <memory>
+#include <string>
 
 namespace hidra2 {
 enum class ProducerError {
diff --git a/producer/api/src/producer_impl.cpp b/producer/api/src/producer_impl.cpp
index 819f99be12ce65363308d0aad1165873109c2cbd..9001457e16faf0c48a602bde0dd945d4a64feef5 100644
--- a/producer/api/src/producer_impl.cpp
+++ b/producer/api/src/producer_impl.cpp
@@ -1,5 +1,3 @@
-#include <sys/socket.h>
-#include <netinet/in.h>
 #include <iostream>
 #include <cstring>
 #include "producer_impl.h"
diff --git a/producer/api/unittests/test_producer_impl.cpp b/producer/api/unittests/test_producer_impl.cpp
index 2f9a93c7a6bc22d40cb0ece253bb98657f71505a..b7377370b195547921674e12b9222c44d584a2c9 100644
--- a/producer/api/unittests/test_producer_impl.cpp
+++ b/producer/api/unittests/test_producer_impl.cpp
@@ -1,6 +1,5 @@
 #include <gtest/gtest.h>
 #include <gmock/gmock.h>
-#include <netinet/in.h>
 #include "../src/producer_impl.h"
 #include "../../../common/cpp/unittests/MockIO.h"
 
diff --git a/receiver/src/network_producer_peer.cpp b/receiver/src/network_producer_peer.cpp
index b249b76c7c5764e31d5b637dabaa18e5c85f0099..f314ea1889c5815370fcda3ef81d430992f2d125 100644
--- a/receiver/src/network_producer_peer.cpp
+++ b/receiver/src/network_producer_peer.cpp
@@ -49,7 +49,7 @@ void NetworkProducerPeer::internal_receiver_thread_() {
 
         if(err != IOErrors::kNoError) {
             if(err == IOErrors::kTimeout) {
-                pthread_yield();
+                std::this_thread::yield();
                 continue;
             }
 
@@ -112,7 +112,7 @@ size_t NetworkProducerPeer::handle_generic_request_(GenericNetworkRequest* reque
 
     IOErrors err;
     //receive the rest of the message
-    io->Receive(socket_fd_, request->data, handler_information.request_size - sizeof(GenericNetworkRequest), &err);
+    io->Receive(socket_fd_, request + sizeof(GenericNetworkRequest), handler_information.request_size - sizeof(GenericNetworkRequest), &err);
     if(err != IOErrors::kNoError) {
         std::cerr << "[" << connection_id() << "] NetworkProducerPeer::handle_generic_request_/receive_timeout: " <<
                   request->op_code << std::endl;
diff --git a/receiver/src/network_producer_peer_handlers.cpp b/receiver/src/network_producer_peer_handlers.cpp
index 579542a4f0c13732cac67d167a6be1cf952b18df..24cbf36c18e0ea0bccdf66a3829a74e8eabffb36 100644
--- a/receiver/src/network_producer_peer_handlers.cpp
+++ b/receiver/src/network_producer_peer_handlers.cpp
@@ -1,10 +1,7 @@
 #include "network_producer_peer.h"
 #include "receiver.h"
-#include <sys/sendfile.h>
 #include <fcntl.h>
-#include <sys/mman.h>
 #include <cmath>
-#include <zconf.h>
 
 namespace hidra2 {
 
diff --git a/receiver/src/receiver.cpp b/receiver/src/receiver.cpp
index cd923cd3598da5737790bd9a260aad160f76de2c..d66a64c42ced956e4f0989fb5bb718203eee1693 100644
--- a/receiver/src/receiver.cpp
+++ b/receiver/src/receiver.cpp
@@ -1,6 +1,4 @@
 #include <cstring>
-#include <unistd.h>
-#include <arpa/inet.h>
 #include <iostream>
 #include "receiver.h"
 #include "network_producer_peer.h"
diff --git a/receiver/src/receiver.h b/receiver/src/receiver.h
index e9954656490cf22883a7c09c6f2abe7296e5a31a..d2974cd2fe0e905b962365d07e01c6ae2362ead2 100644
--- a/receiver/src/receiver.h
+++ b/receiver/src/receiver.h
@@ -2,7 +2,6 @@
 #define HIDRA2_RECEIVER_H
 
 #include <string>
-#include <netinet/in.h>
 #include <thread>
 #include <system_wrappers/has_io.h>
 #include "network_producer_peer.h"