diff --git a/common/cpp/include/common/networking.h b/common/cpp/include/common/networking.h
index d1c79909bd44b9fe83f7833ffe461c57d8c05d99..39e5590f058130bda5dc16da5f81652526d8aec9 100644
--- a/common/cpp/include/common/networking.h
+++ b/common/cpp/include/common/networking.h
@@ -12,6 +12,10 @@ namespace asapo {
 
 typedef uint64_t NetworkRequestId;
 
+enum class NetworkConnectionType {
+    kAsapoTcp, // ASAPOs TCP (Multiple connections for parallel data transfers)
+};
+
 enum Opcode : uint8_t {
     kOpcodeUnknownOp = 1,
     kOpcodeTransferData,
diff --git a/examples/producer/dummy-data-producer/dummy_data_producer.cpp b/examples/producer/dummy-data-producer/dummy_data_producer.cpp
index 59aaf83a5798d4e8b40a1f125a8c1013f9a38a14..97be3a35fe8f3e18801dad8c45ac8c7547edfab1 100644
--- a/examples/producer/dummy-data-producer/dummy_data_producer.cpp
+++ b/examples/producer/dummy-data-producer/dummy_data_producer.cpp
@@ -16,7 +16,7 @@ std::mutex mutex;
 int iterations_remained;
 
 struct Args {
-    std::string receiver_address;
+    std::string discovery_service_endpoint;
     std::string beamtime_id;
     std::string stream;
     std::string token;
@@ -29,7 +29,7 @@ struct Args {
 };
 
 void PrintCommandArguments(const Args& args) {
-    std::cout << "receiver_address: " << args.receiver_address << std::endl
+    std::cout << "discovery_service_endpoint: " << args.discovery_service_endpoint << std::endl
               << "beamtime_id: " << args.beamtime_id << std::endl
               << "Package size: " << args.number_of_bytes / 1000 << "k" << std::endl
               << "iterations: " << args.iterations << std::endl
@@ -76,7 +76,7 @@ void ProcessCommandArguments(int argc, char* argv[], Args* args) {
         exit(EXIT_FAILURE);
     }
     try {
-        args->receiver_address = argv[1];
+        args->discovery_service_endpoint = argv[1];
         args->beamtime_id = argv[2];
         TryGetStreamAndToken(args);
         args->number_of_bytes = std::stoull(argv[3]) * 1000;
@@ -178,7 +178,7 @@ bool SendDummyData(asapo::Producer* producer, size_t number_of_byte, uint64_t it
 
 std::unique_ptr<asapo::Producer> CreateProducer(const Args& args) {
     asapo::Error err;
-    auto producer = asapo::Producer::Create(args.receiver_address, args.nthreads,
+    auto producer = asapo::Producer::Create(args.discovery_service_endpoint, args.nthreads,
                                             args.mode % 10 == 0 ? asapo::RequestHandlerType::kTcp : asapo::RequestHandlerType::kFilesystem,
                                             asapo::SourceCredentials{args.beamtime_id, "", args.stream, args.token }, 3600, &err);
     if(err) {
diff --git a/receiver/CMakeLists.txt b/receiver/CMakeLists.txt
index 182559e7cde925628de70229e91b76e88ca634d6..f7340a3684242816e620c7f1719317414f77daf3 100644
--- a/receiver/CMakeLists.txt
+++ b/receiver/CMakeLists.txt
@@ -1,34 +1,45 @@
 set(TARGET_NAME receiver)
-set(SOURCE_FILES
-        src/receiver.cpp
+
+set(RECEIVER_CORE_FILES
         src/connection.cpp
+        src/data_cache.cpp
+        src/receiver.cpp
         src/request.cpp
-        src/request_handler_file_process.cpp
-        src/statistics.cpp
-        src/statistics_sender_influx_db.cpp
         src/receiver_config.cpp
         src/receiver_logger.cpp
-        src/request_handler_db_write.cpp
-        src/request_handler_receive_data.cpp
-        src/request_handler_authorize.cpp
-        src/statistics_sender_fluentd.cpp
-        src/requests_dispatcher.cpp
+        src/statistics/receiver_statistics.cpp
+        src/statistics/statistics.cpp
+        src/statistics/statistics_sender_influx_db.cpp
+        src/statistics/statistics_sender_fluentd.cpp
+        src/request_handler/requests_dispatcher.cpp
+        src/request_handler/request_handler_file_process.cpp
+        src/request_handler/request_handler_db_write.cpp
+        src/request_handler/request_handler_receive_data.cpp
+        src/request_handler/request_handler_authorize.cpp
+        src/request_handler/request_handler_db_meta_write.cpp
+        src/request_handler/request_handler_receive_metadata.cpp
+        src/request_handler/request_handler_db_check_request.cpp
+        src/request_handler/request_factory.cpp
+        src/request_handler/request_handler_db.cpp
+        src/file_processors/write_file_processor.cpp
+        src/file_processors/file_processor.cpp
+        src/file_processors/receive_file_processor.cpp
+        )
+
+set(RDS_FILES
         src/receiver_data_server/receiver_data_server.cpp
-        src/receiver_data_server/tcp_server.cpp
         src/receiver_data_server/receiver_data_server_request.cpp
         src/receiver_data_server/receiver_data_server_logger.cpp
-        src/data_cache.cpp
-        src/receiver_data_server/receiver_data_server_request_handler_factory.cpp
-        src/receiver_data_server/receiver_data_server_request_handler.cpp
-        src/receiver_statistics.cpp
-        src/request_handler_db_meta_write.cpp
-        src/request_handler_receive_metadata.cpp
-        src/request_handler_db_check_request.cpp
-        src/request_factory.cpp
-        src/write_file_processor.cpp
-        src/request_handler_db.cpp
-        src/file_processor.cpp
-        src/receive_file_processor.cpp)
+        src/receiver_data_server/net_server/rds_tcp_server.cpp
+        src/receiver_data_server/request_handler/receiver_data_server_request_handler_factory.cpp
+        src/receiver_data_server/request_handler/receiver_data_server_request_handler.cpp
+        )
+
+
+set(SOURCE_FILES
+        ${RECEIVER_CORE_FILES}
+        ${RDS_FILES}
+        )
 
 
 ################################
@@ -64,35 +75,52 @@ set_property(TARGET ${TARGET_NAME} PROPERTY ENABLE_EXPORTS true)
 set(TEST_SOURCE_FILES
         unittests/test_receiver.cpp
         unittests/test_connection.cpp
-        unittests/test_statistics.cpp
-        unittests/test_receiver_statistics.cpp
+        unittests/statistics/test_statistics.cpp
+        unittests/statistics/test_receiver_statistics.cpp
         unittests/test_config.cpp
         unittests/test_request.cpp
-        unittests/test_request_factory.cpp
-        unittests/test_request_handler_file_process.cpp
-        unittests/test_request_handler_db_writer.cpp
-        unittests/test_request_handler_db_check_request.cpp
-        unittests/test_request_handler_db_meta_writer.cpp
-        unittests/test_request_handler_db.cpp
-        unittests/test_request_handler_authorizer.cpp
-        unittests/test_request_handler_receive_data.cpp
-        unittests/test_request_handler_receive_metadata.cpp
-        unittests/test_statistics_sender_influx_db.cpp
-        unittests/test_statistics_sender_fluentd.cpp
+        unittests/request_handler/test_request_factory.cpp
+        unittests/request_handler/test_request_handler_file_process.cpp
+        unittests/request_handler/test_request_handler_db_writer.cpp
+        unittests/request_handler/test_request_handler_db_check_request.cpp
+        unittests/request_handler/test_request_handler_db_meta_writer.cpp
+        unittests/request_handler/test_request_handler_db.cpp
+        unittests/request_handler/test_request_handler_authorizer.cpp
+        unittests/request_handler/test_request_handler_receive_data.cpp
+        unittests/request_handler/test_request_handler_receive_metadata.cpp
+        unittests/statistics/test_statistics_sender_influx_db.cpp
+        unittests/statistics/test_statistics_sender_fluentd.cpp
         unittests/mock_receiver_config.cpp
-        unittests/test_requests_dispatcher.cpp
+        unittests/request_handler/test_requests_dispatcher.cpp
         unittests/test_datacache.cpp
-        unittests/test_write_file_processor.cpp
-        unittests/test_receive_file_processor.cpp
+        unittests/file_processors/test_write_file_processor.cpp
+        unittests/file_processors/test_receive_file_processor.cpp
         )
 #
 set(TEST_LIBRARIES "${TARGET_NAME};system_io")
-gtest(${TARGET_NAME} "${TEST_SOURCE_FILES}" "${TEST_LIBRARIES}" ${CMAKE_CURRENT_SOURCE_DIR}/src/main.cpp)
+gtest(${TARGET_NAME} "${TEST_SOURCE_FILES}" "${TEST_LIBRARIES}"
+        ${CMAKE_CURRENT_SOURCE_DIR}/src/main.cpp
+        ${CMAKE_CURRENT_SOURCE_DIR}/src/receiver_data_server/*.cpp
+        ${CMAKE_CURRENT_SOURCE_DIR}/src/receiver_data_server/*.h
+        ${CMAKE_CURRENT_SOURCE_DIR}/src/receiver_data_server/net_server/*.cpp
+        ${CMAKE_CURRENT_SOURCE_DIR}/src/receiver_data_server/net_server/*.h
+        ${CMAKE_CURRENT_SOURCE_DIR}/src/receiver_data_server/request_handler/*.cpp
+        ${CMAKE_CURRENT_SOURCE_DIR}/src/receiver_data_server/request_handler/*.h
+        )
 
 set(TEST_SOURCE_FILES_RDS
         unittests/receiver_data_server/test_receiver_data_server.cpp
-        unittests/receiver_data_server/test_tcp_server.cpp
-        unittests/receiver_data_server/test_request_handler_factory.cpp
-        unittests/receiver_data_server/test_request_handler.cpp
+        unittests/receiver_data_server/net_server/test_rds_tcp_server.cpp
+        unittests/receiver_data_server/request_handler/test_request_handler_factory.cpp
+        unittests/receiver_data_server/request_handler/test_request_handler.cpp
+        )
+gtest(${TARGET_NAME}_RDS "${TEST_SOURCE_FILES_RDS}" "${TEST_LIBRARIES}"
+        ${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp
+        ${CMAKE_CURRENT_SOURCE_DIR}/src/*.h
+        ${CMAKE_CURRENT_SOURCE_DIR}/src/statistics/*.cpp
+        ${CMAKE_CURRENT_SOURCE_DIR}/src/statistics/*.h
+        ${CMAKE_CURRENT_SOURCE_DIR}/src/request_handler/*.cpp
+        ${CMAKE_CURRENT_SOURCE_DIR}/src/request_handler/*.h
+        ${CMAKE_CURRENT_SOURCE_DIR}/src/file_processors/*.cpp
+        ${CMAKE_CURRENT_SOURCE_DIR}/src/file_processors/*.h
         )
-gtest(${TARGET_NAME}_RDS "${TEST_SOURCE_FILES_RDS}" "${TEST_LIBRARIES}" ${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/*.h)
diff --git a/receiver/src/connection.h b/receiver/src/connection.h
index 98352230fbd1d9470dafce74a0f57feefb13ea92..7fb825881954d5a96ce10de0a8772cbe72eb8e09 100644
--- a/receiver/src/connection.h
+++ b/receiver/src/connection.h
@@ -14,9 +14,9 @@
 #include "common/networking.h"
 #include "io/io.h"
 #include "request.h"
-#include "receiver_statistics.h"
+#include "statistics/receiver_statistics.h"
 #include "logger/logger.h"
-#include "requests_dispatcher.h"
+#include "request_handler/requests_dispatcher.h"
 #include "data_cache.h"
 
 namespace asapo {
diff --git a/receiver/src/file_processor.cpp b/receiver/src/file_processors/file_processor.cpp
similarity index 83%
rename from receiver/src/file_processor.cpp
rename to receiver/src/file_processors/file_processor.cpp
index e8425048e13565ba03d4d26b095b9b24189fabbe..d940e31395914b397b6e749ddcc04052faf58862 100644
--- a/receiver/src/file_processor.cpp
+++ b/receiver/src/file_processors/file_processor.cpp
@@ -1,7 +1,7 @@
 #include "file_processor.h"
 
 #include "io/io_factory.h"
-#include "receiver_logger.h"
+#include "../receiver_logger.h"
 
 namespace asapo {
 
@@ -9,4 +9,4 @@ FileProcessor::FileProcessor(): io__{GenerateDefaultIO()}, log__{GetDefaultRecei
 
 }
 
-}
\ No newline at end of file
+}
diff --git a/receiver/src/file_processor.h b/receiver/src/file_processors/file_processor.h
similarity index 100%
rename from receiver/src/file_processor.h
rename to receiver/src/file_processors/file_processor.h
diff --git a/receiver/src/receive_file_processor.cpp b/receiver/src/file_processors/receive_file_processor.cpp
similarity index 88%
rename from receiver/src/receive_file_processor.cpp
rename to receiver/src/file_processors/receive_file_processor.cpp
index 15311fc33e336270a70f45b72ad9f233896d5aae..1388e4f1c08613ed7ee07a19a46a2d4aadd7f198 100644
--- a/receiver/src/receive_file_processor.cpp
+++ b/receiver/src/file_processors/receive_file_processor.cpp
@@ -1,10 +1,10 @@
 #include "receive_file_processor.h"
 
 #include "io/io_factory.h"
-#include "receiver_error.h"
+#include "../receiver_error.h"
 #include "preprocessor/definitions.h"
-#include "request.h"
-#include "receiver_config.h"
+#include "../request.h"
+#include "../receiver_config.h"
 
 namespace asapo {
 
@@ -24,4 +24,4 @@ Error ReceiveFileProcessor::ProcessFile(const Request* request, bool overwrite)
     return err;
 }
 
-}
\ No newline at end of file
+}
diff --git a/receiver/src/receive_file_processor.h b/receiver/src/file_processors/receive_file_processor.h
similarity index 100%
rename from receiver/src/receive_file_processor.h
rename to receiver/src/file_processors/receive_file_processor.h
diff --git a/receiver/src/write_file_processor.cpp b/receiver/src/file_processors/write_file_processor.cpp
similarity index 90%
rename from receiver/src/write_file_processor.cpp
rename to receiver/src/file_processors/write_file_processor.cpp
index ff5822762e2d6c7d21927bb5fae6a2d7cac8b901..58a956f10536020a51f2c810d73af0e6901aa494 100644
--- a/receiver/src/write_file_processor.cpp
+++ b/receiver/src/file_processors/write_file_processor.cpp
@@ -1,10 +1,10 @@
 #include "write_file_processor.h"
 
 #include "io/io_factory.h"
-#include "receiver_error.h"
+#include "../receiver_error.h"
 #include "preprocessor/definitions.h"
-#include "request.h"
-#include "receiver_config.h"
+#include "../request.h"
+#include "../receiver_config.h"
 
 namespace asapo {
 
@@ -31,4 +31,4 @@ Error WriteFileProcessor::ProcessFile(const Request* request, bool overwrite) co
     return err;
 }
 
-}
\ No newline at end of file
+}
diff --git a/receiver/src/write_file_processor.h b/receiver/src/file_processors/write_file_processor.h
similarity index 100%
rename from receiver/src/write_file_processor.h
rename to receiver/src/file_processors/write_file_processor.h
diff --git a/receiver/src/main.cpp b/receiver/src/main.cpp
index e0b018749036b231c66efcb9c835c0f86652a420..e09fefd4d19eb96abd4af1b1b0f39b1e63266974 100644
--- a/receiver/src/main.cpp
+++ b/receiver/src/main.cpp
@@ -1,4 +1,5 @@
 #include <iostream>
+#include <utility>
 #include "receiver.h"
 
 #include "receiver_config_factory.h"
@@ -8,8 +9,7 @@
 #include "common/version.h"
 
 #include "receiver_data_server/receiver_data_server.h"
-
-#include "data_cache.h"
+#include "receiver_data_server/net_server/rds_tcp_server.h"
 
 asapo::Error ReadConfigFile(int argc, char* argv[]) {
     if (argc != 2) {
@@ -20,12 +20,41 @@ asapo::Error ReadConfigFile(int argc, char* argv[]) {
     return factory.SetConfig(argv[1]);
 }
 
-std::thread StartDataServer(const asapo::ReceiverConfig* config, asapo::SharedCache cache) {
-    static const std::string dataserver_address = "0.0.0.0:" + std::to_string(config->dataserver.listen_port);
-    return std::thread([config, cache] {
-        asapo::ReceiverDataServer data_server{dataserver_address, config->log_level, cache, config->dataserver};
-        data_server.Run();
-    });
+void AddDataServers(const asapo::ReceiverConfig* config, asapo::SharedCache cache,
+                    std::vector<asapo::RdsNetServerPtr>& netServers) {
+    // Add TCP
+    netServers.emplace_back(new asapo::RdsTcpServer("0.0.0.0:" + std::to_string(config->dataserver.listen_port)));
+}
+
+std::vector<std::thread> StartDataServers(const asapo::ReceiverConfig* config, asapo::SharedCache cache,
+                                          asapo::Error* error) {
+    std::vector<asapo::RdsNetServerPtr> netServers;
+    std::vector<std::thread> dataServerThreads;
+
+    AddDataServers(config, cache, netServers);
+
+    for (auto& server : netServers) {
+        *error = server->Initialize();
+        if (*error) {
+            return {};
+        }
+    }
+
+    dataServerThreads.reserve(netServers.size());
+    for (auto& server : netServers) {
+        // Allocate the server here in order to make sure all variables are still available
+        auto data_server = new asapo::ReceiverDataServer{
+            std::move(server),
+            config->log_level,
+            cache,
+            config->dataserver};
+        dataServerThreads.emplace_back(std::thread([data_server] {
+            // We use a std::unique_ptr here in order to clean up the data_server once Run() is done.
+            std::unique_ptr<asapo::ReceiverDataServer>(data_server)->Run();
+        }));
+    }
+
+    return dataServerThreads;
 }
 
 int StartReceiver(const asapo::ReceiverConfig* config, asapo::SharedCache cache,
@@ -66,7 +95,12 @@ int main (int argc, char* argv[]) {
         cache.reset(new asapo::DataCache{config->datacache_size_gb * 1024 * 1024 * 1024, (float)config->datacache_reserved_share / 100});
     }
 
-    auto data_thread = StartDataServer(config, cache);
+    auto dataServerThreads = StartDataServers(config, cache, &err);
+    if (err) {
+        logger->Error("Cannot start data server: " + err->Explain());
+        return 1;
+    }
+
     auto exit_code = StartReceiver(config, cache, logger);
     return exit_code;
 }
diff --git a/receiver/src/receiver_config.cpp b/receiver/src/receiver_config.cpp
index d919cfd0eea6616b6eeb35cf9408d6657e6b2c2d..f0dffeef0455e5de6c090d99b193ca14747672f8 100644
--- a/receiver/src/receiver_config.cpp
+++ b/receiver/src/receiver_config.cpp
@@ -48,9 +48,9 @@ Error ReceiverConfigFactory::SetConfig(std::string file_name) {
 
 }
 
-const ReceiverConfig*  GetReceiverConfig() {
+const ReceiverConfig* GetReceiverConfig() {
     return &config;
 }
 
 
-}
\ No newline at end of file
+}
diff --git a/receiver/src/receiver_config.h b/receiver/src/receiver_config.h
index 514905eac527d7d29ea57ca3448c533f92ca9ecc..e82b04258941ba8764caadcdc74e7fd99f4b1e02 100644
--- a/receiver/src/receiver_config.h
+++ b/receiver/src/receiver_config.h
@@ -5,7 +5,7 @@
 #include "common/error.h"
 #include "logger/logger.h"
 
-#include "receiver_data_server/receiver_datacenter_config.h"
+#include "receiver_data_server/receiver_data_server_config.h"
 namespace asapo {
 
 struct ReceiverConfig {
@@ -23,7 +23,7 @@ struct ReceiverConfig {
     uint64_t receive_to_disk_threshold_mb = 0;
     LogLevel log_level = LogLevel::Info;
     std::string tag;
-    ReceiverDataCenterConfig dataserver;
+    ReceiverDataServerConfig dataserver;
     std::string discovery_server;
 };
 
diff --git a/receiver/src/receiver_data_server/rds_net_server.h b/receiver/src/receiver_data_server/net_server/rds_net_server.h
similarity index 85%
rename from receiver/src/receiver_data_server/rds_net_server.h
rename to receiver/src/receiver_data_server/net_server/rds_net_server.h
index ee49cc4af4bedd97ef9d1416ed39143cb55859de..e834d164d111e03953a5817510cb41adf37935f6 100644
--- a/receiver/src/receiver_data_server/rds_net_server.h
+++ b/receiver/src/receiver_data_server/net_server/rds_net_server.h
@@ -1,9 +1,9 @@
 #ifndef ASAPO_RDS_NET_SERVER_H
 #define ASAPO_RDS_NET_SERVER_H
 
-#include "../data_cache.h"
+#include "../../data_cache.h"
 #include "common/error.h"
-#include "receiver_data_server_request.h"
+#include "../receiver_data_server_request.h"
 
 namespace asapo {
 
@@ -23,6 +23,8 @@ class RdsNetServer {
     virtual ~RdsNetServer() = default;
 };
 
+using RdsNetServerPtr = std::unique_ptr<asapo::RdsNetServer>;
+
 }
 
 #endif //ASAPO_RDS_NET_SERVER_H
diff --git a/receiver/src/receiver_data_server/tcp_server.cpp b/receiver/src/receiver_data_server/net_server/rds_tcp_server.cpp
similarity index 75%
rename from receiver/src/receiver_data_server/tcp_server.cpp
rename to receiver/src/receiver_data_server/net_server/rds_tcp_server.cpp
index bd8bb807c387151e60e5c25eabdbe70edbe680fa..8d681e9f400213dd9cdd7e354b2c393a7c861717 100644
--- a/receiver/src/receiver_data_server/tcp_server.cpp
+++ b/receiver/src/receiver_data_server/net_server/rds_tcp_server.cpp
@@ -1,15 +1,15 @@
-#include "tcp_server.h"
-#include "receiver_data_server_logger.h"
+#include "rds_tcp_server.h"
+#include "../receiver_data_server_logger.h"
 
 #include "io/io_factory.h"
 #include "common/networking.h"
 
 namespace asapo {
 
-TcpServer::TcpServer(std::string address) : io__{GenerateDefaultIO()}, log__{GetDefaultReceiverDataServerLogger()},
+RdsTcpServer::RdsTcpServer(std::string address) : io__{GenerateDefaultIO()}, log__{GetDefaultReceiverDataServerLogger()},
     address_{std::move(address)} {}
 
-Error TcpServer::Initialize() {
+Error RdsTcpServer::Initialize() {
     Error err;
     if (master_socket_ == kDisconnectedSocketDescriptor) {
         master_socket_ = io__->CreateAndBindIPTCPSocketListener(address_, kMaxPendingConnections, &err);
@@ -24,7 +24,7 @@ Error TcpServer::Initialize() {
     return err;
 }
 
-ListSocketDescriptors TcpServer::GetActiveSockets(Error* err) {
+ListSocketDescriptors RdsTcpServer::GetActiveSockets(Error* err) {
     std::vector<std::string> new_connections;
     auto sockets = io__->WaitSocketsActivity(master_socket_, &sockets_to_listen_, &new_connections, err);
     for (auto& connection : new_connections) {
@@ -33,14 +33,14 @@ ListSocketDescriptors TcpServer::GetActiveSockets(Error* err) {
     return sockets;
 }
 
-void TcpServer::CloseSocket(SocketDescriptor socket) {
+void RdsTcpServer::CloseSocket(SocketDescriptor socket) {
     sockets_to_listen_.erase(std::remove(sockets_to_listen_.begin(), sockets_to_listen_.end(), socket),
                              sockets_to_listen_.end());
     log__->Debug("connection " + io__->AddressFromSocket(socket) + " closed");
     io__->CloseSocket(socket, nullptr);
 }
 
-ReceiverDataServerRequestPtr TcpServer::ReadRequest(SocketDescriptor socket, Error* err) {
+ReceiverDataServerRequestPtr RdsTcpServer::ReadRequest(SocketDescriptor socket, Error* err) {
     GenericRequestHeader header;
     io__->Receive(socket, &header,
                   sizeof(GenericRequestHeader), err);
@@ -56,7 +56,7 @@ ReceiverDataServerRequestPtr TcpServer::ReadRequest(SocketDescriptor socket, Err
     return ReceiverDataServerRequestPtr{new ReceiverDataServerRequest{header, (uint64_t) socket}};
 }
 
-GenericRequests TcpServer::ReadRequests(const ListSocketDescriptors& sockets) {
+GenericRequests RdsTcpServer::ReadRequests(const ListSocketDescriptors& sockets) {
     GenericRequests requests;
     for (auto client : sockets) {
         Error err;
@@ -71,7 +71,7 @@ GenericRequests TcpServer::ReadRequests(const ListSocketDescriptors& sockets) {
     return requests;
 }
 
-GenericRequests TcpServer::GetNewRequests(Error* err) {
+GenericRequests RdsTcpServer::GetNewRequests(Error* err) {
     auto sockets = GetActiveSockets(err);
     if (*err) {
         return {};
@@ -80,7 +80,7 @@ GenericRequests TcpServer::GetNewRequests(Error* err) {
     return ReadRequests(sockets);
 }
 
-TcpServer::~TcpServer() {
+RdsTcpServer::~RdsTcpServer() {
     if (!io__) return; // need for test that override io__ to run
     for (auto client : sockets_to_listen_) {
         io__->CloseSocket(client, nullptr);
@@ -88,11 +88,11 @@ TcpServer::~TcpServer() {
     io__->CloseSocket(master_socket_, nullptr);
 }
 
-void TcpServer::HandleAfterError(uint64_t source_id) {
+void RdsTcpServer::HandleAfterError(uint64_t source_id) {
     CloseSocket(source_id);
 }
 
-Error TcpServer::SendResponse(const ReceiverDataServerRequest* request, const GenericNetworkResponse* response) {
+Error RdsTcpServer::SendResponse(const ReceiverDataServerRequest* request, const GenericNetworkResponse* response) {
     Error err;
     io__->Send(request->source_id, response, sizeof(*response), &err);
     if (err) {
@@ -102,8 +102,8 @@ Error TcpServer::SendResponse(const ReceiverDataServerRequest* request, const Ge
 }
 
 Error
-TcpServer::SendResponseAndSlotData(const ReceiverDataServerRequest* request, const GenericNetworkResponse* response,
-                                   const CacheMeta* cache_slot) {
+RdsTcpServer::SendResponseAndSlotData(const ReceiverDataServerRequest* request, const GenericNetworkResponse* response,
+                                      const CacheMeta* cache_slot) {
     Error err;
 
     err = SendResponse(request, response);
diff --git a/receiver/src/receiver_data_server/tcp_server.h b/receiver/src/receiver_data_server/net_server/rds_tcp_server.h
similarity index 87%
rename from receiver/src/receiver_data_server/tcp_server.h
rename to receiver/src/receiver_data_server/net_server/rds_tcp_server.h
index bf27acafc1d50ac9219cad6bd66f96c3a314352a..5d28f042c5800f68a4791b26712545dfd92419c4 100644
--- a/receiver/src/receiver_data_server/tcp_server.h
+++ b/receiver/src/receiver_data_server/net_server/rds_tcp_server.h
@@ -4,15 +4,15 @@
 #include "rds_net_server.h"
 #include "io/io.h"
 #include "logger/logger.h"
-#include "receiver_data_server_request.h"
+#include "../receiver_data_server_request.h"
 namespace asapo {
 
 const int kMaxPendingConnections = 5;
 
-class TcpServer : public RdsNetServer {
+class RdsTcpServer : public RdsNetServer {
   public:
-    explicit TcpServer(std::string address);
-    ~TcpServer() override;
+    explicit RdsTcpServer(std::string address);
+    ~RdsTcpServer() override;
 
     Error Initialize() override;
 
diff --git a/receiver/src/receiver_data_server/receiver_data_server.cpp b/receiver/src/receiver_data_server/receiver_data_server.cpp
index 81566167b717499b7a3d76c4bc79db6ae437f800..5526d602a9f34283fe65bab55dd71418910f1665 100644
--- a/receiver/src/receiver_data_server/receiver_data_server.cpp
+++ b/receiver/src/receiver_data_server/receiver_data_server.cpp
@@ -1,14 +1,14 @@
 #include "receiver_data_server.h"
-#include "tcp_server.h"
+#include "net_server/rds_tcp_server.h"
 #include "receiver_data_server_logger.h"
-#include "receiver_data_server_request_handler_factory.h"
+#include "request_handler/receiver_data_server_request_handler_factory.h"
 
 namespace asapo {
 
-ReceiverDataServer::ReceiverDataServer(std::string address, LogLevel log_level,
-                                       SharedCache data_cache, const ReceiverDataCenterConfig& config) : net__{new TcpServer(address)},
-                                                   log__{GetDefaultReceiverDataServerLogger()}, data_cache_{data_cache},
-config_{config}, statistics__{new Statistics()} {
+ReceiverDataServer::ReceiverDataServer(std::unique_ptr<RdsNetServer> net_server, LogLevel log_level,
+                                       SharedCache data_cache, const ReceiverDataServerConfig& config) : net__{std::move(net_server)},
+    log__{GetDefaultReceiverDataServerLogger()}, data_cache_{data_cache},
+    config_{config}, statistics__{new Statistics()} {
     request_handler_factory_.reset(new ReceiverDataServerRequestHandlerFactory(net__.get(), data_cache_.get(),
                                    statistics__.get()));
     GetDefaultReceiverDataServerLogger()->SetLogLevel(log_level);
@@ -17,13 +17,6 @@ config_{config}, statistics__{new Statistics()} {
 }
 
 void ReceiverDataServer::Run() {
-    {
-        Error startError = net__->Initialize();
-        if (startError) {
-            log__->Error(std::string("Error starting rds net server: ") + startError->Explain());
-            return;
-        }
-    }
     while (true) {
         statistics__->SendIfNeeded();
         Error err;
diff --git a/receiver/src/receiver_data_server/receiver_data_server.h b/receiver/src/receiver_data_server/receiver_data_server.h
index 889ce357c5fa43ab19a3c5874e3bc3c8a81a8eae..8262aa31b0ae17aa4882a71f408eb4cdd6d23cff 100644
--- a/receiver/src/receiver_data_server/receiver_data_server.h
+++ b/receiver/src/receiver_data_server/receiver_data_server.h
@@ -3,13 +3,13 @@
 
 #include <memory>
 
-#include "rds_net_server.h"
+#include "net_server/rds_net_server.h"
 #include "request/request_pool.h"
 #include "logger/logger.h"
 #include "../data_cache.h"
-#include "../statistics.h"
+#include "../statistics/statistics.h"
 
-#include "receiver_datacenter_config.h"
+#include "receiver_data_server_config.h"
 
 namespace asapo {
 
@@ -18,15 +18,16 @@ class ReceiverDataServer {
     // important to create it before request_pool__
     std::unique_ptr<RequestHandlerFactory> request_handler_factory_;
   public:
-    explicit ReceiverDataServer(std::string address, LogLevel log_level, SharedCache data_cache,
-                                const ReceiverDataCenterConfig& config);
+    explicit ReceiverDataServer(std::unique_ptr<RdsNetServer> net_server, LogLevel log_level, SharedCache data_cache,
+                                const ReceiverDataServerConfig& config);
+
     std::unique_ptr<RequestPool> request_pool__;
     std::unique_ptr<RdsNetServer> net__;
     const AbstractLogger* log__;
     void Run();
   private:
     SharedCache data_cache_;
-    const ReceiverDataCenterConfig& config_;
+    const ReceiverDataServerConfig& config_;
   public:
     std::unique_ptr<Statistics>statistics__;
 
diff --git a/receiver/src/receiver_data_server/receiver_data_server_config.h b/receiver/src/receiver_data_server/receiver_data_server_config.h
new file mode 100644
index 0000000000000000000000000000000000000000..46a3594dd645bbe61a4e59753974aeeceb7bdba5
--- /dev/null
+++ b/receiver/src/receiver_data_server/receiver_data_server_config.h
@@ -0,0 +1,18 @@
+#ifndef ASAPO_RECEIVER_DATA_SERVER_CONFIG_H
+#define ASAPO_RECEIVER_DATA_SERVER_CONFIG_H
+
+#include <string>
+
+namespace asapo {
+
+struct ReceiverDataServerConfig {
+    uint64_t listen_port = 0;
+    uint64_t nthreads = 0;
+    std::string tag;
+    std::string advertise_uri;
+};
+
+}
+
+
+#endif //ASAPO_RECEIVER_DATA_SERVER_CONFIG_H
diff --git a/receiver/src/receiver_data_server/receiver_datacenter_config.h b/receiver/src/receiver_data_server/receiver_datacenter_config.h
deleted file mode 100644
index 27b4c401cddab0948dbe6a9dfc4c512e64d4221f..0000000000000000000000000000000000000000
--- a/receiver/src/receiver_data_server/receiver_datacenter_config.h
+++ /dev/null
@@ -1,18 +0,0 @@
-#ifndef ASAPO_RECEIVER_DATACENTER_CONFIG_H
-#define ASAPO_RECEIVER_DATACENTER_CONFIG_H
-
-#include <string>
-
-namespace asapo {
-
-struct ReceiverDataCenterConfig {
-    uint64_t listen_port = 0;
-    uint64_t nthreads = 0;
-    std::string tag;
-    std::string advertise_uri;
-};
-
-}
-
-
-#endif //ASAPO_RECEIVER_DATACENTER_CONFIG_H
diff --git a/receiver/src/receiver_data_server/receiver_data_server_request_handler.cpp b/receiver/src/receiver_data_server/request_handler/receiver_data_server_request_handler.cpp
similarity index 98%
rename from receiver/src/receiver_data_server/receiver_data_server_request_handler.cpp
rename to receiver/src/receiver_data_server/request_handler/receiver_data_server_request_handler.cpp
index bc45e229eea4b6f21a9963488f7c2447cc91cf40..82165357d48d7fdb3985b28eed9cdb9ca00d7d1e 100644
--- a/receiver/src/receiver_data_server/receiver_data_server_request_handler.cpp
+++ b/receiver/src/receiver_data_server/request_handler/receiver_data_server_request_handler.cpp
@@ -1,6 +1,6 @@
 #include "receiver_data_server_request_handler.h"
 
-#include "receiver_data_server_error.h"
+#include "../receiver_data_server_error.h"
 
 namespace asapo {
 
diff --git a/receiver/src/receiver_data_server/receiver_data_server_request_handler.h b/receiver/src/receiver_data_server/request_handler/receiver_data_server_request_handler.h
similarity index 87%
rename from receiver/src/receiver_data_server/receiver_data_server_request_handler.h
rename to receiver/src/receiver_data_server/request_handler/receiver_data_server_request_handler.h
index 44abf4ea54f772b50ffac3fff13757b5a9977481..507ff59553944bc077400d826d0ce43cb53bebb1 100644
--- a/receiver/src/receiver_data_server/receiver_data_server_request_handler.h
+++ b/receiver/src/receiver_data_server/request_handler/receiver_data_server_request_handler.h
@@ -2,11 +2,11 @@
 #define ASAPO_RECEIVER_DATA_SERVER_REQUEST_HANDLER_H
 
 #include "request/request_handler.h"
-#include "rds_net_server.h"
-#include "../data_cache.h"
-#include "receiver_data_server_request.h"
-#include "receiver_data_server_logger.h"
-#include "../statistics.h"
+#include "../net_server/rds_net_server.h"
+#include "../../data_cache.h"
+#include "../receiver_data_server_request.h"
+#include "../receiver_data_server_logger.h"
+#include "../../statistics/statistics.h"
 
 namespace asapo {
 
diff --git a/receiver/src/receiver_data_server/receiver_data_server_request_handler_factory.cpp b/receiver/src/receiver_data_server/request_handler/receiver_data_server_request_handler_factory.cpp
similarity index 100%
rename from receiver/src/receiver_data_server/receiver_data_server_request_handler_factory.cpp
rename to receiver/src/receiver_data_server/request_handler/receiver_data_server_request_handler_factory.cpp
diff --git a/receiver/src/receiver_data_server/receiver_data_server_request_handler_factory.h b/receiver/src/receiver_data_server/request_handler/receiver_data_server_request_handler_factory.h
similarity index 86%
rename from receiver/src/receiver_data_server/receiver_data_server_request_handler_factory.h
rename to receiver/src/receiver_data_server/request_handler/receiver_data_server_request_handler_factory.h
index 29b26dbcefafb27f74786d3371a3c6e6a60b7ca1..a4e87817731daa4580b3cc78f175e253fa919f23 100644
--- a/receiver/src/receiver_data_server/receiver_data_server_request_handler_factory.h
+++ b/receiver/src/receiver_data_server/request_handler/receiver_data_server_request_handler_factory.h
@@ -5,9 +5,9 @@
 #include "request/request_handler.h"
 #include "preprocessor/definitions.h"
 
-#include "rds_net_server.h"
-#include "../data_cache.h"
-#include "../statistics.h"
+#include "../net_server/rds_net_server.h"
+#include "../../data_cache.h"
+#include "../../statistics/statistics.h"
 
 namespace asapo {
 
diff --git a/receiver/src/request.cpp b/receiver/src/request.cpp
index 2aee805842afd564c644840a363fb59add2c0039..8b9f507720bd75237bc5e1dcace5cc1397de3ff4 100644
--- a/receiver/src/request.cpp
+++ b/receiver/src/request.cpp
@@ -153,20 +153,20 @@ uint64_t Request::GetMetaDataSize() const {
     return request_header_.meta_size;
 }
 
-void Request::SetOnlinePath(std::string facility) {
-    offline_path_ = std::move(facility);
+void Request::SetOnlinePath(std::string path) {
+    online_path_ = std::move(path);
 }
 
 void Request::SetOfflinePath(std::string path) {
-    online_path_ = std::move(path);
+    offline_path_ = std::move(path);
 }
 
 const std::string& Request::GetOnlinePath() const {
-    return offline_path_;
+    return online_path_;
 }
 
 const std::string& Request::GetOfflinePath() const {
-    return online_path_;
+    return offline_path_;
 }
 
 bool Request::WasAlreadyProcessed() const {
@@ -189,4 +189,4 @@ Error Request::CheckForDuplicates()  {
     return check_duplicate_request_handler_->ProcessRequest(this);
 }
 
-}
\ No newline at end of file
+}
diff --git a/receiver/src/request.h b/receiver/src/request.h
index eab5cae356cb4678d366200c2e33f1c51bc7da3a..75e4d39a8574c25b98a6e57f41b66fba129e1439 100644
--- a/receiver/src/request.h
+++ b/receiver/src/request.h
@@ -6,16 +6,16 @@
 #include "receiver_error.h"
 #include "common/networking.h"
 #include "io/io.h"
-#include "request_handler.h"
-#include "request_handler_file_process.h"
-#include "request_handler_db_write.h"
-#include "request_handler_authorize.h"
-#include "request_handler_db_meta_write.h"
-#include "request_handler_receive_data.h"
-#include "request_handler_receive_metadata.h"
-#include "request_handler_db_check_request.h"
+#include "request_handler/request_handler.h"
+#include "request_handler/request_handler_file_process.h"
+#include "request_handler/request_handler_db_write.h"
+#include "request_handler/request_handler_authorize.h"
+#include "request_handler/request_handler_db_meta_write.h"
+#include "request_handler/request_handler_receive_data.h"
+#include "request_handler/request_handler_receive_metadata.h"
+#include "request_handler/request_handler_db_check_request.h"
 
-#include "receiver_statistics.h"
+#include "statistics/receiver_statistics.h"
 #include "data_cache.h"
 
 #include "preprocessor/definitions.h"
diff --git a/receiver/src/request_factory.cpp b/receiver/src/request_handler/request_factory.cpp
similarity index 99%
rename from receiver/src/request_factory.cpp
rename to receiver/src/request_handler/request_factory.cpp
index a01bc4803156d4d55d9725fad9bc2e1e5e04d104..80885791671c4eb8e404146c8ee604f64f7f20a1 100644
--- a/receiver/src/request_factory.cpp
+++ b/receiver/src/request_handler/request_factory.cpp
@@ -1,6 +1,6 @@
 #include "request_factory.h"
 
-#include "receiver_config.h"
+#include "../receiver_config.h"
 
 namespace asapo {
 
@@ -104,4 +104,4 @@ RequestFactory::RequestFactory(SharedCache cache): cache_{cache} {
 }
 
 
-}
\ No newline at end of file
+}
diff --git a/receiver/src/request_factory.h b/receiver/src/request_handler/request_factory.h
similarity index 93%
rename from receiver/src/request_factory.h
rename to receiver/src/request_handler/request_factory.h
index 364225421de4f9c7478ef4189601aba24843fb5b..6c246e6ada0ea607e2090524343fda57883797f9 100644
--- a/receiver/src/request_factory.h
+++ b/receiver/src/request_handler/request_factory.h
@@ -1,9 +1,9 @@
 #ifndef ASAPO_REQUEST_FACTORY_H
 #define ASAPO_REQUEST_FACTORY_H
 
-#include "request.h"
-#include "write_file_processor.h"
-#include "receive_file_processor.h"
+#include "../request.h"
+#include "../file_processors/write_file_processor.h"
+#include "../file_processors/receive_file_processor.h"
 
 namespace asapo {
 
diff --git a/receiver/src/request_handler.h b/receiver/src/request_handler/request_handler.h
similarity index 83%
rename from receiver/src/request_handler.h
rename to receiver/src/request_handler/request_handler.h
index c01168f8b6b083a87d41b8ebff0fe8b012b778fe..5cf4b210b46f99359af28869551fcac4d7a35ef0 100644
--- a/receiver/src/request_handler.h
+++ b/receiver/src/request_handler/request_handler.h
@@ -1,8 +1,8 @@
 #ifndef ASAPO_RECEIVER_REQUEST_HANDLER_H
 #define ASAPO_RECEIVER_REQUEST_HANDLER_H
 
-#include "receiver_error.h"
-#include "receiver_statistics.h"
+#include "../receiver_error.h"
+#include "../statistics/receiver_statistics.h"
 
 namespace asapo {
 
diff --git a/receiver/src/request_handler_authorize.cpp b/receiver/src/request_handler/request_handler_authorize.cpp
similarity index 98%
rename from receiver/src/request_handler_authorize.cpp
rename to receiver/src/request_handler/request_handler_authorize.cpp
index 8829abb5de4484a3ac7c53c5cabef333b19f078f..685eb59b577bd8e107367609f80f690db5b5a507 100644
--- a/receiver/src/request_handler_authorize.cpp
+++ b/receiver/src/request_handler/request_handler_authorize.cpp
@@ -1,7 +1,7 @@
 #include "request_handler_authorize.h"
-#include "receiver_config.h"
-#include "receiver_logger.h"
-#include "request.h"
+#include "../receiver_config.h"
+#include "../receiver_logger.h"
+#include "../request.h"
 
 #include "json_parser/json_parser.h"
 
@@ -125,4 +125,4 @@ StatisticEntity RequestHandlerAuthorize::GetStatisticEntity() const {
     return StatisticEntity::kNetwork;
 }
 
-}
\ No newline at end of file
+}
diff --git a/receiver/src/request_handler_authorize.h b/receiver/src/request_handler/request_handler_authorize.h
similarity index 100%
rename from receiver/src/request_handler_authorize.h
rename to receiver/src/request_handler/request_handler_authorize.h
diff --git a/receiver/src/request_handler_db.cpp b/receiver/src/request_handler/request_handler_db.cpp
similarity index 96%
rename from receiver/src/request_handler_db.cpp
rename to receiver/src/request_handler/request_handler_db.cpp
index d543b9dc7c5d1b916533e58a467700cbce2e2da9..c26ea6e286145dba691d7b453032a2f4eb588e67 100644
--- a/receiver/src/request_handler_db.cpp
+++ b/receiver/src/request_handler/request_handler_db.cpp
@@ -1,7 +1,7 @@
 #include "request_handler_db.h"
-#include "receiver_config.h"
-#include "receiver_logger.h"
-#include "request.h"
+#include "../receiver_config.h"
+#include "../receiver_logger.h"
+#include "../request.h"
 
 namespace asapo {
 
@@ -74,4 +74,4 @@ Error RequestHandlerDb::ConnectToDbIfNeeded() const {
 }
 
 
-}
\ No newline at end of file
+}
diff --git a/receiver/src/request_handler_db.h b/receiver/src/request_handler/request_handler_db.h
similarity index 100%
rename from receiver/src/request_handler_db.h
rename to receiver/src/request_handler/request_handler_db.h
diff --git a/receiver/src/request_handler_db_check_request.cpp b/receiver/src/request_handler/request_handler_db_check_request.cpp
similarity index 97%
rename from receiver/src/request_handler_db_check_request.cpp
rename to receiver/src/request_handler/request_handler_db_check_request.cpp
index 03d5393a44b0b4ee14919b18af711f15fa651fd1..23d88c10f215498c7d37afbe1eb0decb17d117bb 100644
--- a/receiver/src/request_handler_db_check_request.cpp
+++ b/receiver/src/request_handler/request_handler_db_check_request.cpp
@@ -4,9 +4,9 @@
 #include "database/db_error.h"
 #include "logger/logger.h"
 #include "request_handler_db.h"
-#include "receiver_config.h"
+#include "../receiver_config.h"
 #include "io/io.h"
-#include "request.h"
+#include "../request.h"
 
 namespace asapo {
 
@@ -69,4 +69,4 @@ Error RequestHandlerDbCheckRequest::ProcessRequest(Request* request) const {
 }
 
 
-}
\ No newline at end of file
+}
diff --git a/receiver/src/request_handler_db_check_request.h b/receiver/src/request_handler/request_handler_db_check_request.h
similarity index 100%
rename from receiver/src/request_handler_db_check_request.h
rename to receiver/src/request_handler/request_handler_db_check_request.h
diff --git a/receiver/src/request_handler_db_meta_write.cpp b/receiver/src/request_handler/request_handler_db_meta_write.cpp
similarity index 90%
rename from receiver/src/request_handler_db_meta_write.cpp
rename to receiver/src/request_handler/request_handler_db_meta_write.cpp
index 23d45e0f4da4e92470e58667448dda43adeb5c64..136b63f23428c1ae8344d1f6e51786788612746f 100644
--- a/receiver/src/request_handler_db_meta_write.cpp
+++ b/receiver/src/request_handler/request_handler_db_meta_write.cpp
@@ -1,7 +1,7 @@
 #include "request_handler_db_meta_write.h"
-#include "request.h"
-#include "receiver_config.h"
-#include "receiver_logger.h"
+#include "../request.h"
+#include "../receiver_config.h"
+#include "../receiver_logger.h"
 #include "io/io_factory.h"
 
 
diff --git a/receiver/src/request_handler_db_meta_write.h b/receiver/src/request_handler/request_handler_db_meta_write.h
similarity index 100%
rename from receiver/src/request_handler_db_meta_write.h
rename to receiver/src/request_handler/request_handler_db_meta_write.h
diff --git a/receiver/src/request_handler_db_write.cpp b/receiver/src/request_handler/request_handler_db_write.cpp
similarity index 97%
rename from receiver/src/request_handler_db_write.cpp
rename to receiver/src/request_handler/request_handler_db_write.cpp
index ad0dbf902199ced9911254e16f62c1726b22d537..3b0fddedd1af52eb66e0e4c53bad2a352e004d10 100644
--- a/receiver/src/request_handler_db_write.cpp
+++ b/receiver/src/request_handler/request_handler_db_write.cpp
@@ -1,7 +1,7 @@
 #include "request_handler_db_write.h"
-#include "request.h"
-#include "receiver_config.h"
-#include "receiver_logger.h"
+#include "../request.h"
+#include "../receiver_config.h"
+#include "../receiver_logger.h"
 #include "io/io_factory.h"
 #include "database/db_error.h"
 
diff --git a/receiver/src/request_handler_db_write.h b/receiver/src/request_handler/request_handler_db_write.h
similarity index 100%
rename from receiver/src/request_handler_db_write.h
rename to receiver/src/request_handler/request_handler_db_write.h
diff --git a/receiver/src/request_handler_file_process.cpp b/receiver/src/request_handler/request_handler_file_process.cpp
similarity index 94%
rename from receiver/src/request_handler_file_process.cpp
rename to receiver/src/request_handler/request_handler_file_process.cpp
index e12e42b3df844a3ababe0e8de457e646463e5fc9..63af6bd33f5076b1d8a658a2c988e4c8ea99908b 100644
--- a/receiver/src/request_handler_file_process.cpp
+++ b/receiver/src/request_handler/request_handler_file_process.cpp
@@ -1,8 +1,8 @@
 #include "request_handler_file_process.h"
 #include "io/io_factory.h"
-#include "request.h"
-#include "receiver_logger.h"
-#include "receiver_config.h"
+#include "../request.h"
+#include "../receiver_logger.h"
+#include "../receiver_config.h"
 #include "preprocessor/definitions.h"
 
 namespace asapo {
diff --git a/receiver/src/request_handler_file_process.h b/receiver/src/request_handler/request_handler_file_process.h
similarity index 93%
rename from receiver/src/request_handler_file_process.h
rename to receiver/src/request_handler/request_handler_file_process.h
index d4db2b5f5dcd3a1583d1f0cc931a5cad3152e8d1..846e8cd89e56ca2d6ade9749b9417972790b0839 100644
--- a/receiver/src/request_handler_file_process.h
+++ b/receiver/src/request_handler/request_handler_file_process.h
@@ -3,7 +3,7 @@
 
 #include "request_handler.h"
 #include "logger/logger.h"
-#include "file_processor.h"
+#include "../file_processors/file_processor.h"
 #include "io/io.h"
 
 namespace asapo {
diff --git a/receiver/src/request_handler_receive_data.cpp b/receiver/src/request_handler/request_handler_receive_data.cpp
similarity index 91%
rename from receiver/src/request_handler_receive_data.cpp
rename to receiver/src/request_handler/request_handler_receive_data.cpp
index 26e78d3caba7a59a5333f28f71be07428a4082a3..5f7ed9bf3e76424c6d9800b7dc7dda47e8835093 100644
--- a/receiver/src/request_handler_receive_data.cpp
+++ b/receiver/src/request_handler/request_handler_receive_data.cpp
@@ -1,8 +1,8 @@
 #include "request_handler_receive_data.h"
 #include "io/io_factory.h"
-#include "request.h"
-#include "receiver_logger.h"
-#include "receiver_config.h"
+#include "../request.h"
+#include "../receiver_logger.h"
+#include "../receiver_config.h"
 #include "preprocessor/definitions.h"
 
 namespace asapo {
diff --git a/receiver/src/request_handler_receive_data.h b/receiver/src/request_handler/request_handler_receive_data.h
similarity index 100%
rename from receiver/src/request_handler_receive_data.h
rename to receiver/src/request_handler/request_handler_receive_data.h
diff --git a/receiver/src/request_handler_receive_metadata.cpp b/receiver/src/request_handler/request_handler_receive_metadata.cpp
similarity index 90%
rename from receiver/src/request_handler_receive_metadata.cpp
rename to receiver/src/request_handler/request_handler_receive_metadata.cpp
index 974a906e45ca243075beeb4983e9fde0ceece25f..a846fa11591759730517e2882fddaedbed8503c6 100644
--- a/receiver/src/request_handler_receive_metadata.cpp
+++ b/receiver/src/request_handler/request_handler_receive_metadata.cpp
@@ -1,8 +1,8 @@
 #include "request_handler_receive_metadata.h"
 #include "io/io_factory.h"
-#include "request.h"
-#include "receiver_logger.h"
-#include "receiver_config.h"
+#include "../request.h"
+#include "../receiver_logger.h"
+#include "../receiver_config.h"
 #include "preprocessor/definitions.h"
 
 namespace asapo {
diff --git a/receiver/src/request_handler_receive_metadata.h b/receiver/src/request_handler/request_handler_receive_metadata.h
similarity index 100%
rename from receiver/src/request_handler_receive_metadata.h
rename to receiver/src/request_handler/request_handler_receive_metadata.h
diff --git a/receiver/src/requests_dispatcher.cpp b/receiver/src/request_handler/requests_dispatcher.cpp
similarity index 98%
rename from receiver/src/requests_dispatcher.cpp
rename to receiver/src/request_handler/requests_dispatcher.cpp
index 73efb765221955ee4f774c651333e8952f8ea011..0412e543c383322b8b7990d6f606b2a909ac0af7 100644
--- a/receiver/src/requests_dispatcher.cpp
+++ b/receiver/src/request_handler/requests_dispatcher.cpp
@@ -1,7 +1,7 @@
 #include "requests_dispatcher.h"
-#include "request.h"
+#include "../request.h"
 #include "io/io_factory.h"
-#include "receiver_logger.h"
+#include "../receiver_logger.h"
 #include "database/db_error.h"
 namespace asapo {
 
diff --git a/receiver/src/requests_dispatcher.h b/receiver/src/request_handler/requests_dispatcher.h
similarity index 92%
rename from receiver/src/requests_dispatcher.h
rename to receiver/src/request_handler/requests_dispatcher.h
index 047c1b5efb3bb4a95ca816a216f1d36a2162f83d..3045a7eea2b95998ba07d8bcef05db36abe98389 100644
--- a/receiver/src/requests_dispatcher.h
+++ b/receiver/src/request_handler/requests_dispatcher.h
@@ -3,12 +3,12 @@
 
 #include "preprocessor/definitions.h"
 #include "common/error.h"
-#include "request.h"
+#include "../request.h"
 #include "request_factory.h"
 #include "io/io.h"
-#include "receiver_statistics.h"
+#include "../statistics/receiver_statistics.h"
 #include "logger/logger.h"
-#include "data_cache.h"
+#include "../data_cache.h"
 
 namespace asapo {
 
diff --git a/receiver/src/receiver_statistics.cpp b/receiver/src/statistics/receiver_statistics.cpp
similarity index 100%
rename from receiver/src/receiver_statistics.cpp
rename to receiver/src/statistics/receiver_statistics.cpp
diff --git a/receiver/src/receiver_statistics.h b/receiver/src/statistics/receiver_statistics.h
similarity index 100%
rename from receiver/src/receiver_statistics.h
rename to receiver/src/statistics/receiver_statistics.h
diff --git a/receiver/src/statistics.cpp b/receiver/src/statistics/statistics.cpp
similarity index 100%
rename from receiver/src/statistics.cpp
rename to receiver/src/statistics/statistics.cpp
diff --git a/receiver/src/statistics.h b/receiver/src/statistics/statistics.h
similarity index 100%
rename from receiver/src/statistics.h
rename to receiver/src/statistics/statistics.h
diff --git a/receiver/src/statistics_sender.h b/receiver/src/statistics/statistics_sender.h
similarity index 100%
rename from receiver/src/statistics_sender.h
rename to receiver/src/statistics/statistics_sender.h
diff --git a/receiver/src/statistics_sender_fluentd.cpp b/receiver/src/statistics/statistics_sender_fluentd.cpp
similarity index 100%
rename from receiver/src/statistics_sender_fluentd.cpp
rename to receiver/src/statistics/statistics_sender_fluentd.cpp
diff --git a/receiver/src/statistics_sender_fluentd.h b/receiver/src/statistics/statistics_sender_fluentd.h
similarity index 100%
rename from receiver/src/statistics_sender_fluentd.h
rename to receiver/src/statistics/statistics_sender_fluentd.h
diff --git a/receiver/src/statistics_sender_influx_db.cpp b/receiver/src/statistics/statistics_sender_influx_db.cpp
similarity index 97%
rename from receiver/src/statistics_sender_influx_db.cpp
rename to receiver/src/statistics/statistics_sender_influx_db.cpp
index 4de06b6f272166a0283b8ab245ce205a235009b1..f1bea1305683d97604e1363658427f9d293f8010 100644
--- a/receiver/src/statistics_sender_influx_db.cpp
+++ b/receiver/src/statistics/statistics_sender_influx_db.cpp
@@ -3,8 +3,8 @@
 #include <iostream>
 
 #include "statistics.h"
-#include "receiver_config.h"
-#include "receiver_logger.h"
+#include "../receiver_config.h"
+#include "../receiver_logger.h"
 
 namespace asapo {
 
diff --git a/receiver/src/statistics_sender_influx_db.h b/receiver/src/statistics/statistics_sender_influx_db.h
similarity index 100%
rename from receiver/src/statistics_sender_influx_db.h
rename to receiver/src/statistics/statistics_sender_influx_db.h
diff --git a/receiver/unittests/test_receive_file_processor.cpp b/receiver/unittests/file_processors/test_receive_file_processor.cpp
similarity index 97%
rename from receiver/unittests/test_receive_file_processor.cpp
rename to receiver/unittests/file_processors/test_receive_file_processor.cpp
index 746733107fb6ab0355dd32cd7ce92801ac618ef2..65648c87122ce5d56899796f7b4ac44a058c2490 100644
--- a/receiver/unittests/test_receive_file_processor.cpp
+++ b/receiver/unittests/file_processors/test_receive_file_processor.cpp
@@ -4,12 +4,12 @@
 #include "unittests/MockIO.h"
 #include "unittests/MockLogger.h"
 
-#include "../src/receive_file_processor.h"
+#include "../../src/file_processors/receive_file_processor.h"
 #include "common/networking.h"
 #include "preprocessor/definitions.h"
-#include "mock_receiver_config.h"
+#include "../mock_receiver_config.h"
 
-#include "receiver_mocking.h"
+#include "../receiver_mocking.h"
 
 using ::testing::Test;
 using ::testing::Return;
@@ -146,4 +146,4 @@ TEST_F(ReceiveFileProcessorTests, WritesToLog) {
 
 
 
-}
\ No newline at end of file
+}
diff --git a/receiver/unittests/test_write_file_processor.cpp b/receiver/unittests/file_processors/test_write_file_processor.cpp
similarity index 97%
rename from receiver/unittests/test_write_file_processor.cpp
rename to receiver/unittests/file_processors/test_write_file_processor.cpp
index a6f2158d3a76556f0c5d4279462bdc75534c7135..b438322cd23ddb8d5ae545d68705fbcbf22af702 100644
--- a/receiver/unittests/test_write_file_processor.cpp
+++ b/receiver/unittests/file_processors/test_write_file_processor.cpp
@@ -4,12 +4,12 @@
 #include "unittests/MockIO.h"
 #include "unittests/MockLogger.h"
 
-#include "../src/write_file_processor.h"
+#include "../../src/file_processors/write_file_processor.h"
 #include "common/networking.h"
 #include "preprocessor/definitions.h"
-#include "mock_receiver_config.h"
+#include "../mock_receiver_config.h"
 
-#include "receiver_mocking.h"
+#include "../receiver_mocking.h"
 
 using ::testing::Test;
 using ::testing::Return;
@@ -146,4 +146,4 @@ TEST_F(WriteFileProcessorTests, WritesToLog) {
 
 
 
-}
\ No newline at end of file
+}
diff --git a/receiver/unittests/receiver_data_server/test_tcp_server.cpp b/receiver/unittests/receiver_data_server/net_server/test_rds_tcp_server.cpp
similarity index 88%
rename from receiver/unittests/receiver_data_server/test_tcp_server.cpp
rename to receiver/unittests/receiver_data_server/net_server/test_rds_tcp_server.cpp
index 76c6caf5eee3070caeaaa600c7771490143d8bb4..7b2327616500620e89649c0f3f92814f99c411e4 100644
--- a/receiver/unittests/receiver_data_server/test_tcp_server.cpp
+++ b/receiver/unittests/receiver_data_server/net_server/test_rds_tcp_server.cpp
@@ -5,7 +5,7 @@
 #include "unittests/MockLogger.h"
 #include "unittests/MockIO.h"
 #include "io/io_factory.h"
-#include "../../src/receiver_data_server/tcp_server.h"
+#include "../../../src/receiver_data_server/net_server/rds_tcp_server.h"
 
 using ::testing::Test;
 using ::testing::Gt;
@@ -24,14 +24,14 @@ using ::testing::IsEmpty;
 using ::testing::Mock;
 using ::testing::DoAll;
 
-using asapo::TcpServer;
+using asapo::RdsTcpServer;
 using asapo::MockIO;
 using asapo::Error;
 using asapo::ListSocketDescriptors;
 namespace {
 
-TEST(TCPServer, Constructor) {
-    TcpServer tcp_server("");
+TEST(RdsTCPServer, Constructor) {
+    RdsTcpServer tcp_server("");
     ASSERT_THAT(dynamic_cast<asapo::IO*>(tcp_server.io__.get()), Ne(nullptr));
     ASSERT_THAT(dynamic_cast<const asapo::AbstractLogger*>(tcp_server.log__), Ne(nullptr));
 
@@ -39,9 +39,9 @@ TEST(TCPServer, Constructor) {
 
 std::string expected_address = "somehost:123";
 
-class TCPServerTests : public Test {
+class RdsTCPServerTests : public Test {
   public:
-    TcpServer tcp_server {expected_address};
+    RdsTcpServer tcp_server {expected_address};
     NiceMock<MockIO> mock_io;
     NiceMock<asapo::MockLogger> mock_logger;
     asapo::SocketDescriptor expected_master_socket = 1;
@@ -67,7 +67,7 @@ class TCPServerTests : public Test {
     void ExpectReceiveRequestEof();
 };
 
-void TCPServerTests::ExpectTcpBind(bool ok) {
+void RdsTCPServerTests::ExpectTcpBind(bool ok) {
     EXPECT_CALL(mock_io, CreateAndBindIPTCPSocketListener_t(expected_address, asapo::kMaxPendingConnections, _))
     .WillOnce(DoAll(
                   SetArgPointee<2>(ok ? nullptr : asapo::IOErrorTemplates::kUnknownIOError.Generate().release()),
@@ -75,7 +75,7 @@ void TCPServerTests::ExpectTcpBind(bool ok) {
               ));
 }
 
-void TCPServerTests::WaitSockets(bool ok, ListSocketDescriptors clients) {
+void RdsTCPServerTests::WaitSockets(bool ok, ListSocketDescriptors clients) {
     EXPECT_CALL(mock_io, WaitSocketsActivity_t(expected_master_socket, testing::Pointee(clients), _, _)).WillOnce(DoAll(
                 SetArgPointee<2>(ok ? expected_new_connections : std::vector<std::string> {}),
                 SetArgPointee<1>(expected_client_sockets),
@@ -94,12 +94,12 @@ void TCPServerTests::WaitSockets(bool ok, ListSocketDescriptors clients) {
     }
 }
 
-void TCPServerTests::InitMasterServer() {
+void RdsTCPServerTests::InitMasterServer() {
     ExpectTcpBind(true);
     ASSERT_THAT(tcp_server.Initialize(), Eq(nullptr));
 }
 
-TEST_F(TCPServerTests, Initialize_Error) {
+TEST_F(RdsTCPServerTests, Initialize_Error) {
     ExpectTcpBind(false);
 
     Error err = tcp_server.Initialize();
@@ -107,7 +107,7 @@ TEST_F(TCPServerTests, Initialize_Error) {
     ASSERT_THAT(err, Ne(nullptr));
 }
 
-TEST_F(TCPServerTests, Initialize_ErrorDoubleInitialize) {
+TEST_F(RdsTCPServerTests, Initialize_ErrorDoubleInitialize) {
     Error err;
 
     ExpectTcpBind(true);
@@ -118,7 +118,7 @@ TEST_F(TCPServerTests, Initialize_ErrorDoubleInitialize) {
     ASSERT_THAT(err, Ne(nullptr));
 }
 
-void TCPServerTests::MockReceiveRequest(bool ok ) {
+void RdsTCPServerTests::MockReceiveRequest(bool ok ) {
     for (auto conn : expected_client_sockets) {
         EXPECT_CALL(mock_io, Receive_t(conn, _, _, _))
         .WillOnce(
@@ -132,7 +132,7 @@ void TCPServerTests::MockReceiveRequest(bool ok ) {
     }
 }
 
-void TCPServerTests::ExpectReceiveRequestEof() {
+void RdsTCPServerTests::ExpectReceiveRequestEof() {
     for (auto conn : expected_client_sockets) {
         EXPECT_CALL(mock_io, Receive_t(conn, _, _, _))
         .WillOnce(
@@ -153,7 +153,7 @@ ACTION_P2(A_ReceiveData, op_code, expected_id) {
 }
 
 
-void TCPServerTests::ExpectReceiveOk() {
+void RdsTCPServerTests::ExpectReceiveOk() {
     for (auto conn : expected_client_sockets) {
         EXPECT_CALL(mock_io, Receive_t(conn, _, sizeof(asapo::GenericRequestHeader), _))
         .WillOnce(
@@ -167,7 +167,7 @@ void TCPServerTests::ExpectReceiveOk() {
     }
 }
 
-TEST_F(TCPServerTests, GetNewRequestsWaitsSocketActivitiesError) {
+TEST_F(RdsTCPServerTests, GetNewRequestsWaitsSocketActivitiesError) {
     Error err;
     InitMasterServer();
     WaitSockets(false);
@@ -178,7 +178,7 @@ TEST_F(TCPServerTests, GetNewRequestsWaitsSocketActivitiesError) {
     ASSERT_THAT(requests, IsEmpty());
 }
 
-TEST_F(TCPServerTests, GetNewRequestsWaitsSocketReceiveFailure) {
+TEST_F(RdsTCPServerTests, GetNewRequestsWaitsSocketReceiveFailure) {
     Error err;
     InitMasterServer();
     WaitSockets(true);
@@ -196,7 +196,7 @@ TEST_F(TCPServerTests, GetNewRequestsWaitsSocketReceiveFailure) {
 
 }
 
-TEST_F(TCPServerTests, GetNewRequestsReadEof) {
+TEST_F(RdsTCPServerTests, GetNewRequestsReadEof) {
     Error err;
     InitMasterServer();
     WaitSockets(true);
@@ -215,7 +215,7 @@ TEST_F(TCPServerTests, GetNewRequestsReadEof) {
 
 }
 
-TEST_F(TCPServerTests, GetNewRequestsReadOk) {
+TEST_F(RdsTCPServerTests, GetNewRequestsReadOk) {
     Error err;
     InitMasterServer();
     WaitSockets(true);
@@ -237,7 +237,7 @@ TEST_F(TCPServerTests, GetNewRequestsReadOk) {
 
 }
 
-TEST_F(TCPServerTests, SendResponse) {
+TEST_F(RdsTCPServerTests, SendResponse) {
     asapo::GenericNetworkResponse tmp {};
     asapo::ReceiverDataServerRequest expectedRequest {{}, 30};
 
@@ -255,7 +255,7 @@ TEST_F(TCPServerTests, SendResponse) {
     ASSERT_THAT(err, Ne(nullptr));
 }
 
-TEST_F(TCPServerTests, SendResponseAndSlotData_SendResponseError) {
+TEST_F(RdsTCPServerTests, SendResponseAndSlotData_SendResponseError) {
     asapo::GenericNetworkResponse tmp {};
 
 
@@ -278,7 +278,7 @@ TEST_F(TCPServerTests, SendResponseAndSlotData_SendResponseError) {
     ASSERT_THAT(err, Ne(nullptr));
 }
 
-TEST_F(TCPServerTests, SendResponseAndSlotData_SendDataError) {
+TEST_F(RdsTCPServerTests, SendResponseAndSlotData_SendDataError) {
     asapo::GenericNetworkResponse tmp {};
 
     asapo::ReceiverDataServerRequest expectedRequest {{}, 30};
@@ -304,7 +304,7 @@ TEST_F(TCPServerTests, SendResponseAndSlotData_SendDataError) {
     ASSERT_THAT(err, Ne(nullptr));
 }
 
-TEST_F(TCPServerTests, SendResponseAndSlotData_Ok) {
+TEST_F(RdsTCPServerTests, SendResponseAndSlotData_Ok) {
     asapo::GenericNetworkResponse tmp {};
 
     asapo::ReceiverDataServerRequest expectedRequest {{}, 30};
@@ -324,7 +324,7 @@ TEST_F(TCPServerTests, SendResponseAndSlotData_Ok) {
     ASSERT_THAT(err, Eq(nullptr));
 }
 
-TEST_F(TCPServerTests, HandleAfterError) {
+TEST_F(RdsTCPServerTests, HandleAfterError) {
     EXPECT_CALL(mock_io, CloseSocket_t(expected_client_sockets[0], _));
     tcp_server.HandleAfterError(expected_client_sockets[0]);
 }
diff --git a/receiver/unittests/receiver_data_server/receiver_dataserver_mocking.h b/receiver/unittests/receiver_data_server/receiver_dataserver_mocking.h
index 5db8ab20591ab3b28368aae72e317d326b2154e3..4da53dd44c10eaeb35a9d068e65919af1c061d97 100644
--- a/receiver/unittests/receiver_data_server/receiver_dataserver_mocking.h
+++ b/receiver/unittests/receiver_data_server/receiver_dataserver_mocking.h
@@ -4,7 +4,7 @@
 #include <gtest/gtest.h>
 #include <gmock/gmock.h>
 
-#include "../../src/receiver_data_server/rds_net_server.h"
+#include "../../src/receiver_data_server/net_server/rds_net_server.h"
 #include "request/request_pool.h"
 #include "../../src/receiver_data_server/receiver_data_server_request.h"
 
diff --git a/receiver/unittests/receiver_data_server/test_request_handler.cpp b/receiver/unittests/receiver_data_server/request_handler/test_request_handler.cpp
similarity index 94%
rename from receiver/unittests/receiver_data_server/test_request_handler.cpp
rename to receiver/unittests/receiver_data_server/request_handler/test_request_handler.cpp
index 804999e1b79723968d549e57d2ddc3abafa01c9b..a7b3189536baffb18b9880238e9abcf9be16529b 100644
--- a/receiver/unittests/receiver_data_server/test_request_handler.cpp
+++ b/receiver/unittests/receiver_data_server/request_handler/test_request_handler.cpp
@@ -3,12 +3,12 @@
 
 
 #include "unittests/MockLogger.h"
-#include "../../src/receiver_data_server/receiver_data_server.h"
-#include "../../src/receiver_data_server/receiver_data_server_request_handler.h"
+#include "../../../src/receiver_data_server/receiver_data_server.h"
+#include "../../../src/receiver_data_server/request_handler/receiver_data_server_request_handler.h"
 
-#include "../receiver_mocking.h"
-#include "receiver_dataserver_mocking.h"
-#include "../../src/receiver_data_server/receiver_data_server_error.h"
+#include "../../receiver_mocking.h"
+#include "../receiver_dataserver_mocking.h"
+#include "../../../src/receiver_data_server/receiver_data_server_error.h"
 #include "common/io_error.h"
 
 using ::testing::Test;
diff --git a/receiver/unittests/receiver_data_server/test_request_handler_factory.cpp b/receiver/unittests/receiver_data_server/request_handler/test_request_handler_factory.cpp
similarity index 65%
rename from receiver/unittests/receiver_data_server/test_request_handler_factory.cpp
rename to receiver/unittests/receiver_data_server/request_handler/test_request_handler_factory.cpp
index 44ecc6462c46854fc698e0d54be6cc4f77807c79..8affa32bab1dbdc69773d8ed9ce766b112555f5c 100644
--- a/receiver/unittests/receiver_data_server/test_request_handler_factory.cpp
+++ b/receiver/unittests/receiver_data_server/request_handler/test_request_handler_factory.cpp
@@ -3,11 +3,11 @@
 
 
 #include "unittests/MockLogger.h"
-#include "../../src/receiver_data_server/receiver_data_server.h"
-#include "../../src/receiver_data_server/receiver_data_server_request_handler_factory.h"
-#include "../../src/receiver_data_server/receiver_data_server_request_handler.h"
+#include "../../../src/receiver_data_server/receiver_data_server.h"
+#include "../../../src/receiver_data_server/request_handler/receiver_data_server_request_handler_factory.h"
+#include "../../../src/receiver_data_server/request_handler/receiver_data_server_request_handler.h"
 
-#include "../../src/statistics.h"
+#include "../../../src/statistics/statistics.h"
 
 
 using ::testing::Test;
@@ -31,9 +31,9 @@ using asapo::ReceiverDataServerRequestHandlerFactory;
 namespace {
 
 TEST(ReceiverDataServerRequestHandlerFactory, Constructor) {
-    asapo::ReceiverDataCenterConfig config;
+    asapo::ReceiverDataServerConfig config;
     config.nthreads = 4;
-    ReceiverDataServer data_server{"", asapo::LogLevel::Debug, nullptr, config};
+    ReceiverDataServer data_server{nullptr, asapo::LogLevel::Debug, nullptr, config};
     asapo::Statistics stat;
     ReceiverDataServerRequestHandlerFactory factory((asapo::RdsNetServer*)&data_server, nullptr, &stat);
     auto handler = factory.NewRequestHandler(1, nullptr);
diff --git a/receiver/unittests/receiver_data_server/test_receiver_data_server.cpp b/receiver/unittests/receiver_data_server/test_receiver_data_server.cpp
index 17f798369b240d4bff4a2fa0c39f6b758b71eabb..b0f6c7603bf1f21964316956b9ec6364df169b14 100644
--- a/receiver/unittests/receiver_data_server/test_receiver_data_server.cpp
+++ b/receiver/unittests/receiver_data_server/test_receiver_data_server.cpp
@@ -4,13 +4,13 @@
 
 #include "unittests/MockLogger.h"
 #include "../../src/receiver_data_server/receiver_data_server.h"
-#include "../../src/receiver_data_server/tcp_server.h"
+#include "../../src/receiver_data_server/net_server/rds_tcp_server.h"
 
 #include "receiver_dataserver_mocking.h"
 
 #include "common/io_error.h"
 #include "../../src/receiver_data_server/receiver_data_server_error.h"
-#include "../../src/statistics.h"
+#include "../../src/statistics/statistics.h"
 
 #include "../receiver_mocking.h"
 
@@ -40,10 +40,11 @@ using asapo::ReceiverDataServerRequest;
 namespace {
 
 TEST(ReceiverDataServer, Constructor) {
-    asapo::ReceiverDataCenterConfig config;
+    asapo::ReceiverDataServerConfig config;
     config.nthreads = 4;
-    ReceiverDataServer data_server{"", asapo::LogLevel::Debug, nullptr, config};
-    ASSERT_THAT(dynamic_cast<const asapo::TcpServer*>(data_server.net__.get()), Ne(nullptr));
+    asapo::MockNetServer mock_net;
+    ReceiverDataServer data_server{asapo::RdsNetServerPtr(&mock_net), asapo::LogLevel::Debug, nullptr, config};
+    ASSERT_THAT(data_server.net__.release(), Eq(&mock_net));
     ASSERT_THAT(dynamic_cast<asapo::RequestPool*>(data_server.request_pool__.get()), Ne(nullptr));
     ASSERT_THAT(dynamic_cast<const asapo::AbstractLogger*>(data_server.log__), Ne(nullptr));
     ASSERT_THAT(dynamic_cast<const asapo::Statistics*>(data_server.statistics__.get()), Ne(nullptr));
@@ -51,15 +52,20 @@ TEST(ReceiverDataServer, Constructor) {
 
 class ReceiverDataServerTests : public Test {
   public:
-    asapo::ReceiverDataCenterConfig config;
+    asapo::ReceiverDataServerConfig config;
     std::string expected_address = "somehost:123";
-    ReceiverDataServer data_server{expected_address, asapo::LogLevel::Debug, nullptr, config};
     asapo::MockNetServer mock_net;
     asapo::MockPool mock_pool;
     NiceMock<asapo::MockLogger> mock_logger;
     NiceMock<asapo::MockStatistics> mock_statistics;
+
+    ReceiverDataServer data_server{
+        asapo::RdsNetServerPtr(&mock_net),
+        asapo::LogLevel::Debug,
+        nullptr,
+        config};
+
     void SetUp() override {
-        data_server.net__ = std::unique_ptr<asapo::RdsNetServer> {&mock_net};
         data_server.request_pool__ = std::unique_ptr<asapo::RequestPool> {&mock_pool};
         data_server.log__ = &mock_logger;
         data_server.statistics__ = std::unique_ptr<asapo::Statistics> {&mock_statistics};;
diff --git a/receiver/unittests/receiver_mocking.h b/receiver/unittests/receiver_mocking.h
index c693ae066d192b933bc85f909256b6609dc76493..f2c6dc6ae60dacff77d241f8424f0ef3543f606e 100644
--- a/receiver/unittests/receiver_mocking.h
+++ b/receiver/unittests/receiver_mocking.h
@@ -4,10 +4,10 @@
 #include <gtest/gtest.h>
 #include <gmock/gmock.h>
 
-#include "../src/receiver_statistics.h"
+#include "../src/statistics/receiver_statistics.h"
 #include "../src/request.h"
 #include "../src/data_cache.h"
-#include "../src/file_processor.h"
+#include "../src/file_processors/file_processor.h"
 
 namespace asapo {
 
diff --git a/receiver/unittests/test_request_factory.cpp b/receiver/unittests/request_handler/test_request_factory.cpp
similarity index 93%
rename from receiver/unittests/test_request_factory.cpp
rename to receiver/unittests/request_handler/test_request_factory.cpp
index 223871137f603fe493e9c2f8fdbce111e9355f35..2dab899f9420d202233ec9919581133d6d1b50d4 100644
--- a/receiver/unittests/test_request_factory.cpp
+++ b/receiver/unittests/request_handler/test_request_factory.cpp
@@ -5,21 +5,21 @@
 
 #include "unittests/MockIO.h"
 #include "unittests/MockDatabase.h"
-#include "../src/connection.h"
-#include "../src/receiver_error.h"
-#include "../src/request.h"
-#include "../src/request_factory.h"
-#include "../src/request_handler.h"
-#include "../src/request_handler_file_process.h"
-#include "../src/request_handler_db_write.h"
-#include "../src/request_handler_authorize.h"
-#include "../src/request_handler_receive_data.h"
-#include "../src/request_handler_receive_metadata.h"
+#include "../../src/connection.h"
+#include "../../src/receiver_error.h"
+#include "../../src/request.h"
+#include "../../src/request_handler/request_factory.h"
+#include "../../src/request_handler/request_handler.h"
+#include "../../src/request_handler/request_handler_file_process.h"
+#include "../../src/request_handler/request_handler_db_write.h"
+#include "../../src/request_handler/request_handler_authorize.h"
+#include "../../src/request_handler/request_handler_receive_data.h"
+#include "../../src/request_handler/request_handler_receive_metadata.h"
 
 #include "database/database.h"
 
-#include "receiver_mocking.h"
-#include "mock_receiver_config.h"
+#include "../receiver_mocking.h"
+#include "../mock_receiver_config.h"
 
 
 using ::testing::Test;
diff --git a/receiver/unittests/test_request_handler_authorizer.cpp b/receiver/unittests/request_handler/test_request_handler_authorizer.cpp
similarity index 97%
rename from receiver/unittests/test_request_handler_authorizer.cpp
rename to receiver/unittests/request_handler/test_request_handler_authorizer.cpp
index 5f3caa0be9192165520252a6eaf33a6c3a0c06e8..ce3c0e03b19437ed4be1b71e753e2570c2de46f2 100644
--- a/receiver/unittests/test_request_handler_authorizer.cpp
+++ b/receiver/unittests/request_handler/test_request_handler_authorizer.cpp
@@ -4,17 +4,17 @@
 #include "unittests/MockHttpClient.h"
 #include "unittests/MockLogger.h"
 
-#include "../src/receiver_error.h"
-#include "../src/request.h"
-#include "../src/request_handler.h"
-#include "../src/request_handler_authorize.h"
+#include "../../src/receiver_error.h"
+#include "../../src/request.h"
+#include "../../src/request_handler/request_handler.h"
+#include "../../src/request_handler/request_handler_authorize.h"
 #include "common/networking.h"
-#include "mock_receiver_config.h"
+#include "../mock_receiver_config.h"
 #include "preprocessor/definitions.h"
 
-#include "receiver_mocking.h"
+#include "../receiver_mocking.h"
 
-#include "../src/receiver_config.h"
+#include "../../src/receiver_config.h"
 
 
 using ::testing::Test;
@@ -271,4 +271,4 @@ TEST_F(AuthorizerHandlerTests, DataTransferRequestAuthorizeUsesCachedValue) {
 
 
 
-}
\ No newline at end of file
+}
diff --git a/receiver/unittests/test_request_handler_db.cpp b/receiver/unittests/request_handler/test_request_handler_db.cpp
similarity index 94%
rename from receiver/unittests/test_request_handler_db.cpp
rename to receiver/unittests/request_handler/test_request_handler_db.cpp
index f1091c3c2e2bb1328898f4eca4a3f710b4a18a3c..607639351c0e6b7432a5f5e32c11e717b0dd167c 100644
--- a/receiver/unittests/test_request_handler_db.cpp
+++ b/receiver/unittests/request_handler/test_request_handler_db.cpp
@@ -6,17 +6,17 @@
 #include "unittests/MockLogger.h"
 #include "unittests/MockHttpClient.h"
 
-#include "../src/receiver_error.h"
-#include "../src/request.h"
-#include "../src/request_factory.h"
-#include "../src/request_handler.h"
-#include "../src/request_handler_db.h"
+#include "../../src/receiver_error.h"
+#include "../../src/request.h"
+#include "../../src/request_handler/request_factory.h"
+#include "../../src/request_handler/request_handler.h"
+#include "../../src/request_handler/request_handler_db.h"
 #include "common/networking.h"
-#include "../../common/cpp/src/database/mongodb_client.h"
-#include "mock_receiver_config.h"
+#include "../../../common/cpp/src/database/mongodb_client.h"
+#include "../mock_receiver_config.h"
 #include "common/data_structs.h"
 
-#include "receiver_mocking.h"
+#include "../receiver_mocking.h"
 
 using asapo::MockRequest;
 using asapo::FileInfo;
@@ -222,4 +222,4 @@ TEST_F(DbHandlerTests, ProcessRequestDoesNotCallConnectSecondTime) {
 }
 
 
-}
\ No newline at end of file
+}
diff --git a/receiver/unittests/test_request_handler_db_check_request.cpp b/receiver/unittests/request_handler/test_request_handler_db_check_request.cpp
similarity index 95%
rename from receiver/unittests/test_request_handler_db_check_request.cpp
rename to receiver/unittests/request_handler/test_request_handler_db_check_request.cpp
index 4675c3fdd4bb23ce7df028c2ff9bddd271fb285a..544c4e351bba84cce7d26abf9295d85ba1c36003 100644
--- a/receiver/unittests/test_request_handler_db_check_request.cpp
+++ b/receiver/unittests/request_handler/test_request_handler_db_check_request.cpp
@@ -8,17 +8,17 @@
 #include "unittests/MockDatabase.h"
 #include "unittests/MockLogger.h"
 
-#include "../src/receiver_error.h"
-#include "../src/request.h"
-#include "../src/request_factory.h"
-#include "../src/request_handler.h"
-#include "../src/request_handler_db_check_request.h"
+#include "../../src/receiver_error.h"
+#include "../../src/request.h"
+#include "../../src/request_handler/request_factory.h"
+#include "../../src/request_handler/request_handler.h"
+#include "../../src/request_handler/request_handler_db_check_request.h"
 #include "common/networking.h"
-#include "../../common/cpp/src/database/mongodb_client.h"
-#include "mock_receiver_config.h"
+#include "../../../common/cpp/src/database/mongodb_client.h"
+#include "../mock_receiver_config.h"
 #include "common/data_structs.h"
 
-#include "receiver_mocking.h"
+#include "../receiver_mocking.h"
 
 using asapo::MockRequest;
 using asapo::FileInfo;
diff --git a/receiver/unittests/test_request_handler_db_meta_writer.cpp b/receiver/unittests/request_handler/test_request_handler_db_meta_writer.cpp
similarity index 90%
rename from receiver/unittests/test_request_handler_db_meta_writer.cpp
rename to receiver/unittests/request_handler/test_request_handler_db_meta_writer.cpp
index af3070b793ed57c8c7bab63add5cfa875bccf911..7dc8e94e2777b645801c082e5c4b64f46996060d 100644
--- a/receiver/unittests/test_request_handler_db_meta_writer.cpp
+++ b/receiver/unittests/request_handler/test_request_handler_db_meta_writer.cpp
@@ -5,17 +5,17 @@
 #include "unittests/MockDatabase.h"
 #include "unittests/MockLogger.h"
 
-#include "../src/receiver_error.h"
-#include "../src/request.h"
-#include "../src/request_factory.h"
-#include "../src/request_handler.h"
-#include "../src/request_handler_db_meta_write.h"
-#include "../../common/cpp/src/database/mongodb_client.h"
-
-#include "mock_receiver_config.h"
+#include "../../src/receiver_error.h"
+#include "../../src/request.h"
+#include "../../src/request_handler/request_factory.h"
+#include "../../src/request_handler/request_handler.h"
+#include "../../src/request_handler/request_handler_db_meta_write.h"
+#include "../../../common/cpp/src/database/mongodb_client.h"
+
+#include "../mock_receiver_config.h"
 #include "common/data_structs.h"
 #include "common/networking.h"
-#include "receiver_mocking.h"
+#include "../receiver_mocking.h"
 
 using asapo::MockRequest;
 using asapo::FileInfo;
@@ -122,4 +122,4 @@ TEST_F(DbMetaWriterHandlerTests, CallsUpdate) {
     handler.ProcessRequest(mock_request.get());
 }
 
-}
\ No newline at end of file
+}
diff --git a/receiver/unittests/test_request_handler_db_writer.cpp b/receiver/unittests/request_handler/test_request_handler_db_writer.cpp
similarity index 95%
rename from receiver/unittests/test_request_handler_db_writer.cpp
rename to receiver/unittests/request_handler/test_request_handler_db_writer.cpp
index ec2c75ae355104365ccf372d4363e768ddc3eba8..4be9c89b3940769327d5c24ba9f29bc6048fb840 100644
--- a/receiver/unittests/test_request_handler_db_writer.cpp
+++ b/receiver/unittests/request_handler/test_request_handler_db_writer.cpp
@@ -6,17 +6,17 @@
 #include "unittests/MockDatabase.h"
 #include "unittests/MockLogger.h"
 
-#include "../src/receiver_error.h"
-#include "../src/request.h"
-#include "../src/request_factory.h"
-#include "../src/request_handler.h"
-#include "../src/request_handler_db_write.h"
+#include "../../src/receiver_error.h"
+#include "../../src/request.h"
+#include "../../src/request_handler/request_factory.h"
+#include "../../src/request_handler/request_handler.h"
+#include "../../src/request_handler/request_handler_db_write.h"
 #include "common/networking.h"
-#include "../../common/cpp/src/database/mongodb_client.h"
-#include "mock_receiver_config.h"
+#include "../../../common/cpp/src/database/mongodb_client.h"
+#include "../mock_receiver_config.h"
 #include "common/data_structs.h"
 
-#include "receiver_mocking.h"
+#include "../receiver_mocking.h"
 
 using asapo::MockRequest;
 using asapo::FileInfo;
@@ -281,4 +281,4 @@ TEST_F(DbWriterHandlerTests, DuplicatedRequest_DifferentRecord) {
 }
 
 
-}
\ No newline at end of file
+}
diff --git a/receiver/unittests/test_request_handler_file_process.cpp b/receiver/unittests/request_handler/test_request_handler_file_process.cpp
similarity index 93%
rename from receiver/unittests/test_request_handler_file_process.cpp
rename to receiver/unittests/request_handler/test_request_handler_file_process.cpp
index 121c0bc764d64a2b262997c1811c120731523353..a570c579fa7f8e980f118c97c03c7e3264df1103 100644
--- a/receiver/unittests/test_request_handler_file_process.cpp
+++ b/receiver/unittests/request_handler/test_request_handler_file_process.cpp
@@ -4,15 +4,15 @@
 #include "unittests/MockIO.h"
 #include "unittests/MockLogger.h"
 
-#include "../src/receiver_error.h"
-#include "../src/request.h"
-#include "../src/request_handler.h"
-#include "../src/request_handler_file_process.h"
+#include "../../src/receiver_error.h"
+#include "../../src/request.h"
+#include "../../src/request_handler/request_handler.h"
+#include "../../src/request_handler/request_handler_file_process.h"
 #include "common/networking.h"
-#include "mock_receiver_config.h"
+#include "../mock_receiver_config.h"
 #include "preprocessor/definitions.h"
 
-#include "receiver_mocking.h"
+#include "../receiver_mocking.h"
 
 using ::testing::Test;
 using ::testing::Return;
@@ -140,4 +140,4 @@ TEST_F(FileWriteHandlerTests, FileAlreadyExists_DifferentRecordInDb) {
 
 
 
-}
\ No newline at end of file
+}
diff --git a/receiver/unittests/test_request_handler_receive_data.cpp b/receiver/unittests/request_handler/test_request_handler_receive_data.cpp
similarity index 94%
rename from receiver/unittests/test_request_handler_receive_data.cpp
rename to receiver/unittests/request_handler/test_request_handler_receive_data.cpp
index 9991f5c532b4cf0ec0c9e110e4bb9ee9133173b8..c065a05e5153cbc8c4b4bfe42e1d05660f071e14 100644
--- a/receiver/unittests/test_request_handler_receive_data.cpp
+++ b/receiver/unittests/request_handler/test_request_handler_receive_data.cpp
@@ -1,16 +1,16 @@
 #include <gtest/gtest.h>
 #include <gmock/gmock.h>
 #include <unittests/MockIO.h>
-#include "../src/connection.h"
-#include "../src/receiver_error.h"
-#include "../src/request.h"
-#include "../src/request_handler.h"
-#include "../src/request_handler_receive_data.h"
+#include "../../src/connection.h"
+#include "../../src/receiver_error.h"
+#include "../../src/request.h"
+#include "../../src/request_handler/request_handler.h"
+#include "../../src/request_handler/request_handler_receive_data.h"
 #include "database/database.h"
 #include "unittests/MockLogger.h"
 
-#include "receiver_mocking.h"
-#include "mock_receiver_config.h"
+#include "../receiver_mocking.h"
+#include "../mock_receiver_config.h"
 
 using ::testing::Test;
 using ::testing::Return;
diff --git a/receiver/unittests/test_request_handler_receive_metadata.cpp b/receiver/unittests/request_handler/test_request_handler_receive_metadata.cpp
similarity index 92%
rename from receiver/unittests/test_request_handler_receive_metadata.cpp
rename to receiver/unittests/request_handler/test_request_handler_receive_metadata.cpp
index 029d586c670b5327082e5264f2985a5fe6908120..cc29398eb6edb6b116f5694d448b74603a293aa6 100644
--- a/receiver/unittests/test_request_handler_receive_metadata.cpp
+++ b/receiver/unittests/request_handler/test_request_handler_receive_metadata.cpp
@@ -1,16 +1,16 @@
 #include <gtest/gtest.h>
 #include <gmock/gmock.h>
 #include <unittests/MockIO.h>
-#include "../src/connection.h"
-#include "../src/receiver_error.h"
-#include "../src/request.h"
-#include "../src/request_handler.h"
-#include "../src/request_handler_receive_metadata.h"
+#include "../../src/connection.h"
+#include "../../src/receiver_error.h"
+#include "../../src/request.h"
+#include "../../src/request_handler/request_handler.h"
+#include "../../src/request_handler/request_handler_receive_metadata.h"
 #include "database/database.h"
 #include "unittests/MockLogger.h"
 
-#include "receiver_mocking.h"
-#include "mock_receiver_config.h"
+#include "../receiver_mocking.h"
+#include "../mock_receiver_config.h"
 
 using ::testing::Test;
 using ::testing::Return;
diff --git a/receiver/unittests/test_requests_dispatcher.cpp b/receiver/unittests/request_handler/test_requests_dispatcher.cpp
similarity index 97%
rename from receiver/unittests/test_requests_dispatcher.cpp
rename to receiver/unittests/request_handler/test_requests_dispatcher.cpp
index 8818e5dce99ddae3568ebeca10881cb4af5302f6..05201bc4e88eb9b562fb5e72d0d2a99a91e7ccee 100644
--- a/receiver/unittests/test_requests_dispatcher.cpp
+++ b/receiver/unittests/request_handler/test_requests_dispatcher.cpp
@@ -3,13 +3,13 @@
 
 #include "unittests/MockIO.h"
 #include "unittests/MockLogger.h"
-#include "../src/receiver_error.h"
-#include "../src/request.h"
-#include "../src/receiver_statistics.h"
-#include "receiver_mocking.h"
-#include "mock_receiver_config.h"
+#include "../../src/receiver_error.h"
+#include "../../src/request.h"
+#include "../../src/statistics/receiver_statistics.h"
+#include "../receiver_mocking.h"
+#include "../mock_receiver_config.h"
 
-#include "../src/requests_dispatcher.h"
+#include "../../src/request_handler/requests_dispatcher.h"
 #include "database/db_error.h"
 
 
diff --git a/receiver/unittests/test_receiver_statistics.cpp b/receiver/unittests/statistics/test_receiver_statistics.cpp
similarity index 93%
rename from receiver/unittests/test_receiver_statistics.cpp
rename to receiver/unittests/statistics/test_receiver_statistics.cpp
index d76c591fc95701ae74fbbe053828f01d0adbef3e..de05a2a3f12f4df3946c8422819c035b892cd27f 100644
--- a/receiver/unittests/test_receiver_statistics.cpp
+++ b/receiver/unittests/statistics/test_receiver_statistics.cpp
@@ -2,11 +2,11 @@
 #include <gmock/gmock.h>
 #include <thread>
 
-#include "../src/receiver_statistics.h"
-#include "../src/statistics_sender.h"
-#include "../src/statistics_sender_influx_db.h"
-#include "../src/statistics_sender_fluentd.h"
-#include "receiver_mocking.h"
+#include "../../src/statistics/receiver_statistics.h"
+#include "../../src/statistics/statistics_sender.h"
+#include "../../src/statistics/statistics_sender_influx_db.h"
+#include "../../src/statistics/statistics_sender_fluentd.h"
+#include "../receiver_mocking.h"
 
 using ::testing::Test;
 using ::testing::Gt;
diff --git a/receiver/unittests/test_statistics.cpp b/receiver/unittests/statistics/test_statistics.cpp
similarity index 93%
rename from receiver/unittests/test_statistics.cpp
rename to receiver/unittests/statistics/test_statistics.cpp
index 3c6114047bc61c48eae81e33368eee5c75cf98bd..4f871e4118a19888ce2acb345e7e5edf7860966d 100644
--- a/receiver/unittests/test_statistics.cpp
+++ b/receiver/unittests/statistics/test_statistics.cpp
@@ -2,11 +2,11 @@
 #include <gmock/gmock.h>
 #include <thread>
 
-#include "../src/statistics.h"
-#include "../src/statistics_sender.h"
-#include "../src/statistics_sender_influx_db.h"
-#include "../src/statistics_sender_fluentd.h"
-#include "receiver_mocking.h"
+#include "../../src/statistics/statistics.h"
+#include "../../src/statistics/statistics_sender.h"
+#include "../../src/statistics/statistics_sender_influx_db.h"
+#include "../../src/statistics/statistics_sender_fluentd.h"
+#include "../receiver_mocking.h"
 
 using ::testing::Test;
 using ::testing::Gt;
diff --git a/receiver/unittests/test_statistics_sender_fluentd.cpp b/receiver/unittests/statistics/test_statistics_sender_fluentd.cpp
similarity index 87%
rename from receiver/unittests/test_statistics_sender_fluentd.cpp
rename to receiver/unittests/statistics/test_statistics_sender_fluentd.cpp
index 3060507558cebc47f6737d363c8945c099445c4f..54e9568738fd0ab25fc91e309b2f8064ca5da346 100644
--- a/receiver/unittests/test_statistics_sender_fluentd.cpp
+++ b/receiver/unittests/statistics/test_statistics_sender_fluentd.cpp
@@ -4,15 +4,15 @@
 #include "unittests/MockIO.h"
 #include "unittests/MockLogger.h"
 
-#include "../src/statistics_sender_influx_db.h"
-#include "../src/statistics_sender.h"
-#include "../../common/cpp/src/http_client/curl_http_client.h"
+#include "../../src/statistics/statistics_sender_influx_db.h"
+#include "../../src/statistics/statistics_sender.h"
+#include "../../../common/cpp/src/http_client/curl_http_client.h"
 #include "unittests/MockHttpClient.h"
-#include "../src/receiver_statistics.h"
+#include "../../src/statistics/receiver_statistics.h"
 
-#include "../src/receiver_config.h"
-#include "mock_receiver_config.h"
-#include "../src/statistics_sender_fluentd.h"
+#include "../../src/receiver_config.h"
+#include "../mock_receiver_config.h"
+#include "../../src/statistics/statistics_sender_fluentd.h"
 
 using ::testing::Test;
 using ::testing::Return;
diff --git a/receiver/unittests/test_statistics_sender_influx_db.cpp b/receiver/unittests/statistics/test_statistics_sender_influx_db.cpp
similarity index 92%
rename from receiver/unittests/test_statistics_sender_influx_db.cpp
rename to receiver/unittests/statistics/test_statistics_sender_influx_db.cpp
index d4e293c0ce7641ad25c5644cbc1974d21637ae90..2c33bf6382a6f78ed57777f4da7958196c495b40 100644
--- a/receiver/unittests/test_statistics_sender_influx_db.cpp
+++ b/receiver/unittests/statistics/test_statistics_sender_influx_db.cpp
@@ -4,14 +4,14 @@
 #include "unittests/MockIO.h"
 #include "unittests/MockLogger.h"
 
-#include "../src/statistics_sender_influx_db.h"
-#include "../src/statistics_sender.h"
-#include "../../common/cpp/src/http_client/curl_http_client.h"
+#include "../../src/statistics/statistics_sender_influx_db.h"
+#include "../../src/statistics/statistics_sender.h"
+#include "../../../common/cpp/src/http_client/curl_http_client.h"
 #include "unittests/MockHttpClient.h"
-#include "../src/receiver_statistics.h"
+#include "../../src/statistics/receiver_statistics.h"
 
-#include "../src/receiver_config.h"
-#include "mock_receiver_config.h"
+#include "../../src/receiver_config.h"
+#include "../mock_receiver_config.h"
 
 
 using ::testing::Test;
diff --git a/receiver/unittests/test_connection.cpp b/receiver/unittests/test_connection.cpp
index 844ccc76c889b2328ad90fdebe25de9a2d621400..6882e450f8249b3260219119825fa76f100e4116 100644
--- a/receiver/unittests/test_connection.cpp
+++ b/receiver/unittests/test_connection.cpp
@@ -6,11 +6,11 @@
 #include "../src/connection.h"
 #include "../src/receiver_error.h"
 #include "../src/request.h"
-#include "../src/receiver_statistics.h"
+#include "../src/statistics/receiver_statistics.h"
 #include "receiver_mocking.h"
 #include "../src/receiver_config.h"
 #include "../src/receiver_config_factory.h"
-#include "../src/requests_dispatcher.h"
+#include "../src/request_handler/requests_dispatcher.h"
 
 #include "mock_receiver_config.h"
 
diff --git a/receiver/unittests/test_request.cpp b/receiver/unittests/test_request.cpp
index 5d1650018b972df11f170dfb15dea10a51223517..bbeaf801e277b0691e46b081ee6d78a74cba7e2d 100644
--- a/receiver/unittests/test_request.cpp
+++ b/receiver/unittests/test_request.cpp
@@ -4,9 +4,9 @@
 #include "../src/connection.h"
 #include "../src/receiver_error.h"
 #include "../src/request.h"
-#include "../src/request_handler.h"
-#include "../src/request_handler_file_process.h"
-#include "../src/request_handler_db_write.h"
+#include "../src/request_handler/request_handler.h"
+#include "../src/request_handler/request_handler_file_process.h"
+#include "../src/request_handler/request_handler_db_write.h"
 #include "database/database.h"
 
 #include "receiver_mocking.h"
diff --git a/tests/automatic/producer/beamtime_metadata/beamtime_metadata.cpp b/tests/automatic/producer/beamtime_metadata/beamtime_metadata.cpp
index d3f31d010d0b3f98af8cdc4575eb6a784a2b03a0..4a80557b916315c261946ec9e3147bb887e2986c 100644
--- a/tests/automatic/producer/beamtime_metadata/beamtime_metadata.cpp
+++ b/tests/automatic/producer/beamtime_metadata/beamtime_metadata.cpp
@@ -8,13 +8,13 @@ using std::chrono::system_clock;
 
 
 struct Args {
-    std::string receiver_address;
+    std::string discovery_service_endpoint;
     std::string beamtime_id;
     int mode;
 };
 
 void PrintCommandArguments(const Args& args) {
-    std::cout << "receiver_address: " << args.receiver_address << std::endl
+    std::cout << "discovery_service_endpoint: " << args.discovery_service_endpoint << std::endl
               << "beamtime_id: " << args.beamtime_id << std::endl
               << "mode: " << args.mode << std::endl
               << std::endl;
@@ -31,7 +31,7 @@ void ProcessCommandArguments(int argc, char* argv[], Args* args) {
         exit(EXIT_FAILURE);
     }
     try {
-        args->receiver_address = argv[1];
+        args->discovery_service_endpoint = argv[1];
         args->beamtime_id = argv[2];
         args->mode = std::stoull(argv[3]);
         PrintCommandArguments(*args);
@@ -66,7 +66,7 @@ bool SendMetaData(asapo::Producer* producer) {
 
 std::unique_ptr<asapo::Producer> CreateProducer(const Args& args) {
     asapo::Error err;
-    auto producer = asapo::Producer::Create(args.receiver_address, 1,
+    auto producer = asapo::Producer::Create(args.discovery_service_endpoint, 1,
                                             args.mode == 0 ? asapo::RequestHandlerType::kTcp
                                             : asapo::RequestHandlerType::kFilesystem,
                                             asapo::SourceCredentials{args.beamtime_id, "", "", ""}, 60, &err);