diff --git a/CMakeLists.txt b/CMakeLists.txt
index 8fba9c3a691810e151bfe10dbe06b20d5abab0ea..2b2936592048706383169fc48d63e8e011e05574 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -33,7 +33,7 @@ option(BUILD_DOCS "Uses doxygen to build the documentaion" OFF)
 option(BUILD_BROKER "Build broker" OFF)
 option(BUILD_PYTHON_DOCS "Uses sphinx to build the Python documentaion" OFF)
 
-option(BUILD_WORKER_TOOLS "Build worker tools" OFF)
+option(BUILD_CONSUMER_TOOLS "Build consumer tools" OFF)
 option(BUILD_EXAMPLES "Build examples" OFF)
 
 set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/CMakeModules/)
@@ -57,19 +57,19 @@ include(testing_cpp)
 
 include(prepare_asapo)
 
-if(BUILD_WORKER_TOOLS)
+if(BUILD_CONSUMER_TOOLS)
     set (BUILD_MONGODB_CLIENTLIB ON)
 endif()
 
 add_subdirectory(common/cpp)
 
-if (BUILD_BROKER)#TODO: Somehow make it clear that this is needed by examples/worker/getnext_broker
+if (BUILD_BROKER)#TODO: Somehow make it clear that this is needed by examples/consumer/getnext_broker
     add_subdirectory(broker)
 endif()
 
 add_subdirectory(producer)
 
-add_subdirectory(worker)
+add_subdirectory(consumer)
 
 add_subdirectory(receiver)
 
diff --git a/asapo_tools/src/asapo_tools/cli/token.go b/asapo_tools/src/asapo_tools/cli/token.go
index 7fdb749d21ebd6c1fae66a1ad629b29b5c00a0a5..9282a48e756263c3c6d987e18891d89979f29230 100644
--- a/asapo_tools/src/asapo_tools/cli/token.go
+++ b/asapo_tools/src/asapo_tools/cli/token.go
@@ -23,7 +23,7 @@ func generateToken(id string,secret string) string {
 }
 
 
-// GenerateToken generates token for workers
+// GenerateToken generates token for consumers
 func (cmd *command) CommandToken() error {
 
 	message_string := "Generate token"
diff --git a/common/cpp/include/common/error.h b/common/cpp/include/common/error.h
index 1f9c11709ccbf93bd356f1a101703c5c6b8b20c2..dd0d58d816a7b8ebb4a0ab18cc62f8edaf39757c 100644
--- a/common/cpp/include/common/error.h
+++ b/common/cpp/include/common/error.h
@@ -15,7 +15,7 @@ enum class ErrorType {
     kDBError,
     kReceiverError,
     kProducerError,
-    kWorkerError,
+    kConsumerError,
     kMemoryAllocationError,
     kEndOfFile,
 };
diff --git a/config/bamboo/bamboo.java b/config/bamboo/bamboo.java
index 15b2429c6d6eff80c1b087108019bb97c7a42212..9ab570278b6c442dad7677871821705dd6f7b310 100644
--- a/config/bamboo/bamboo.java
+++ b/config/bamboo/bamboo.java
@@ -79,9 +79,9 @@ public class PlanSpec {
                                     .copyPattern("**/*")
                                     .location("build/coverage-asapo-producer"),
                                 new Artifact()
-                                    .name("Coverage-Worker")
+                                    .name("Coverage-Consumer")
                                     .copyPattern("**/*")
-                                    .location("build/coverage-hidra2-worker"),
+                                    .location("build/coverage-hidra2-consumer"),
                                 new Artifact()
                                     .name("Coverage-Broker")
                                     .copyPattern("coverage.html")
@@ -113,7 +113,7 @@ public class PlanSpec {
                                 new CommandTask()
                                     .description("build")
                                     .executable("bash")
-                                    .argument("-c \"/opt/asapo/cmake-3.7.2/bin/cmake -DLIBCURL_DIR=/opt/asapo/libcurl -DCMAKE_BUILD_TYPE=Debug -DBUILD_TESTS=ON -DBUILD_DOCS=ON -DBUILD_INTEGRATION_TESTS=ON -DBUILD_EXAMPLES=ON -DBUILD_WORKER_TOOLS=ON -DBUILD_BROKER=ON .. && make\"")
+                                    .argument("-c \"/opt/asapo/cmake-3.7.2/bin/cmake -DLIBCURL_DIR=/opt/asapo/libcurl -DCMAKE_BUILD_TYPE=Debug -DBUILD_TESTS=ON -DBUILD_DOCS=ON -DBUILD_INTEGRATION_TESTS=ON -DBUILD_EXAMPLES=ON -DBUILD_CONSUMER_TOOLS=ON -DBUILD_BROKER=ON .. && make\"")
                                     .environmentVariables("PATH=$PATH:/usr/local/go/bin GOPATH=/opt/asapo/go GOROOT=/usr/local/go")
                                     .workingSubdirectory("build"),
                                 new CommandTask()
@@ -172,7 +172,7 @@ public class PlanSpec {
                                 new ScriptTask()
                                     .description("build with CMake")
                                     .interpreter(ScriptTaskProperties.Interpreter.BINSH_OR_CMDEXE)
-                                    .inlineBody("SET GOPATH=\"c:\\GoPath\"\n\"c:\\Program Files\\CMake\\bin\\cmake\" -DLIBCURL_DIR=c:/Curl -Dgtest_SOURCE_DIR=c:/googletest -DCMAKE_BUILD_TYPE=Debug -DBUILD_TESTS=ON -DBUILD_DOCS=ON -DBUILD_INTEGRATION_TESTS=ON -DBUILD_EXAMPLES=ON -DBUILD_WORKER_TOOLS=ON -DBUILD_BROKER=ON -Dlibmongoc-static-1.0_DIR=\"c:\\mongo-c-driver\\lib\\cmake\\libmongoc-static-1.0\" -Dlibbson-static-1.0_DIR=\"c:\\mongo-c-driver\\lib\\cmake\\libbson-static-1.0\" ..\n\"c:\\Program Files\\CMake\\bin\\cmake\" --build .")
+                                    .inlineBody("SET GOPATH=\"c:\\GoPath\"\n\"c:\\Program Files\\CMake\\bin\\cmake\" -DLIBCURL_DIR=c:/Curl -Dgtest_SOURCE_DIR=c:/googletest -DCMAKE_BUILD_TYPE=Debug -DBUILD_TESTS=ON -DBUILD_DOCS=ON -DBUILD_INTEGRATION_TESTS=ON -DBUILD_EXAMPLES=ON -DBUILD_CONSUMER_TOOLS=ON -DBUILD_BROKER=ON -Dlibmongoc-static-1.0_DIR=\"c:\\mongo-c-driver\\lib\\cmake\\libmongoc-static-1.0\" -Dlibbson-static-1.0_DIR=\"c:\\mongo-c-driver\\lib\\cmake\\libbson-static-1.0\" ..\n\"c:\\Program Files\\CMake\\bin\\cmake\" --build .")
                                     .workingSubdirectory("build"),
                                 new ScriptTask()
                                     .description("Run tests")
@@ -209,7 +209,7 @@ public class PlanSpec {
                                 new ScriptTask()
                                     .description("build with CMake")
                                     .interpreter(ScriptTaskProperties.Interpreter.BINSH_OR_CMDEXE)
-                                    .inlineBody("SET GOPATH=\"c:\\GoPath\"\n\"c:\\Program Files\\CMake\\bin\\cmake\" -DLIBCURL_DIR=c:/Curl -Dgtest_SOURCE_DIR=c:/googletest -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTS=OFF -DBUILD_DOCS=OFF -DBUILD_INTEGRATION_TESTS=OFF -DBUILD_EXAMPLES=ON -DBUILD_WORKER_TOOLS=ON -DBUILD_BROKER=ON -Dlibmongoc-static-1.0_DIR=\"c:\\mongo-c-driver\\lib\\cmake\\libmongoc-static-1.0\" -Dlibbson-static-1.0_DIR=\"c:\\mongo-c-driver\\lib\\cmake\\libbson-static-1.0\" ..\n\"c:\\Program Files\\CMake\\bin\\cmake\" --build .")
+                                    .inlineBody("SET GOPATH=\"c:\\GoPath\"\n\"c:\\Program Files\\CMake\\bin\\cmake\" -DLIBCURL_DIR=c:/Curl -Dgtest_SOURCE_DIR=c:/googletest -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTS=OFF -DBUILD_DOCS=OFF -DBUILD_INTEGRATION_TESTS=OFF -DBUILD_EXAMPLES=ON -DBUILD_CONSUMER_TOOLS=ON -DBUILD_BROKER=ON -Dlibmongoc-static-1.0_DIR=\"c:\\mongo-c-driver\\lib\\cmake\\libmongoc-static-1.0\" -Dlibbson-static-1.0_DIR=\"c:\\mongo-c-driver\\lib\\cmake\\libbson-static-1.0\" ..\n\"c:\\Program Files\\CMake\\bin\\cmake\" --build .")
                                     .workingSubdirectory("build"),
                                 new ScriptTask()
                                     .description("Run tests")
@@ -261,9 +261,9 @@ public class PlanSpec {
                                     .location("build_release/producer/event_monitor_producer")
                                     .shared(true),
                                 new Artifact()
-                                    .name("Worker Linux")
+                                    .name("Consumer Linux")
                                     .copyPattern("getnext_broker")
-                                    .location("build_release/examples/worker/getnext_broker")
+                                    .location("build_release/examples/consumer/getnext_broker")
                                     .shared(true))
                             .tasks(new VcsCheckoutTask()
                                     .checkoutItems(new CheckoutItem().defaultRepository())
@@ -275,7 +275,7 @@ public class PlanSpec {
                                 new CommandTask()
                                     .description("build")
                                     .executable("bash")
-                                    .argument("-c \"/opt/asapo/cmake-3.7.2/bin/cmake -DLIBCURL_DIR=/opt/asapo/libcurl -DCMAKE_BUILD_TYPE=Release  -DBUILD_EXAMPLES=ON -DBUILD_WORKER_TOOLS=ON -DBUILD_BROKER=ON .. && make\"")
+                                    .argument("-c \"/opt/asapo/cmake-3.7.2/bin/cmake -DLIBCURL_DIR=/opt/asapo/libcurl -DCMAKE_BUILD_TYPE=Release  -DBUILD_EXAMPLES=ON -DBUILD_CONSUMER_TOOLS=ON -DBUILD_BROKER=ON .. && make\"")
                                     .environmentVariables("PATH=$PATH:/usr/local/go/bin GOPATH=/opt/asapo/go GOROOT=/usr/local/go")
                                     .workingSubdirectory("build_release"),
                                 new CommandTask()
@@ -340,7 +340,7 @@ public class PlanSpec {
                                     .artifacts(new DownloadItem()
                                             .artifact("Dummy Producer Linux"),
                                         new DownloadItem()
-                                            .artifact("Worker Linux"),
+                                            .artifact("Consumer Linux"),
                                         new DownloadItem()
                                             .artifact("File Monitor Producer Windows"),
                                         new DownloadItem()
diff --git a/config/grafana/ASAP__O.json b/config/grafana/ASAP__O.json
index 8311cfdbc7471b7a48e8d075aecfa59b98486279..775b63e8e300e777d4b42848eb7abc501ed2d5e2 100644
--- a/config/grafana/ASAP__O.json
+++ b/config/grafana/ASAP__O.json
@@ -634,7 +634,7 @@
           "tags": []
         },
         {
-          "alias": "Worker",
+          "alias": "Consumer",
           "groupBy": [
             {
               "params": [
@@ -668,7 +668,7 @@
       "thresholds": [],
       "timeFrom": null,
       "timeShift": null,
-      "title": "Receiver/Worker Rates",
+      "title": "Receiver/Consumer Rates",
       "tooltip": {
         "shared": true,
         "sort": 0,
diff --git a/worker/CMakeLists.txt b/consumer/CMakeLists.txt
similarity index 82%
rename from worker/CMakeLists.txt
rename to consumer/CMakeLists.txt
index 93fb3845bddf214cc5872dde5f22167d763a0e80..9f330fbbd8aa45b36f2ddcdc2fd83a6eafbdb13b 100644
--- a/worker/CMakeLists.txt
+++ b/consumer/CMakeLists.txt
@@ -2,7 +2,7 @@ add_subdirectory(api/cpp)
 add_subdirectory(api/python)
 
 
-if(BUILD_WORKER_TOOLS)
+if(BUILD_CONSUMER_TOOLS)
     set (BUILD_MONGODB ON)
     add_subdirectory(tools)
 endif()
diff --git a/worker/api/cpp/CMakeLists.txt b/consumer/api/cpp/CMakeLists.txt
similarity index 93%
rename from worker/api/cpp/CMakeLists.txt
rename to consumer/api/cpp/CMakeLists.txt
index 8cc2e83f5c93e899bfdc60853e87aa6e44dc3a27..0a0564fbc76958091e6e5a4cf484b8d6a0a7ef32 100644
--- a/worker/api/cpp/CMakeLists.txt
+++ b/consumer/api/cpp/CMakeLists.txt
@@ -1,4 +1,4 @@
-set(TARGET_NAME asapo-worker)
+set(TARGET_NAME asapo-consumer)
 
 set(SOURCE_FILES
         src/data_broker.cpp
@@ -26,7 +26,7 @@ target_link_libraries(${TARGET_NAME} ${CURL_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT}
 ################################
 # Testing
 ################################
-set(TEST_SOURCE_FILES unittests/test_worker_api.cpp
+set(TEST_SOURCE_FILES unittests/test_consumer_api.cpp
                       unittests/test_server_broker.cpp
                       unittests/test_tcp_client.cpp
             unittests/test_tcp_connection_pool.cpp
diff --git a/consumer/api/cpp/include/asapo_consumer.h b/consumer/api/cpp/include/asapo_consumer.h
new file mode 100644
index 0000000000000000000000000000000000000000..10b8616d409a6d871d6b71e852c827ffab20930a
--- /dev/null
+++ b/consumer/api/cpp/include/asapo_consumer.h
@@ -0,0 +1,8 @@
+#ifndef ASAPO_ASAPO_CONSUMER_H
+#define ASAPO_ASAPO_CONSUMER_H
+
+#include "consumer/data_broker.h"
+#include "consumer/consumer_error.h"
+#include "common/version.h"
+
+#endif //ASAPO_ASAPO_CONSUMER_H
diff --git a/consumer/api/cpp/include/consumer/consumer_error.h b/consumer/api/cpp/include/consumer/consumer_error.h
new file mode 100644
index 0000000000000000000000000000000000000000..f751b0622d535496d227a48b0ef07f70f93e8db9
--- /dev/null
+++ b/consumer/api/cpp/include/consumer/consumer_error.h
@@ -0,0 +1,60 @@
+#ifndef ASAPO_CONSUMER_ERROR_H
+#define ASAPO_CONSUMER_ERROR_H
+
+#include "common/error.h"
+#include "common/io_error.h"
+
+namespace asapo {
+
+enum class ConsumerErrorType {
+    kNoData,
+    kEndOfStream,
+    kBrokerServersNotFound,
+    kBrokerServerError,
+    kIOError,
+    kWrongInput
+};
+
+using ConsumerErrorTemplate = ServiceErrorTemplate<ConsumerErrorType, ErrorType::kConsumerError>;
+
+
+class ConsumerErrorData : public CustomErrorData {
+  public:
+    uint64_t id;
+    uint64_t id_max;
+};
+
+
+namespace ConsumerErrorTemplates {
+
+auto const kIOError = ConsumerErrorTemplate{
+    "i/o error", ConsumerErrorType::kIOError
+};
+
+auto const kEndOfStream = ConsumerErrorTemplate{
+    "no data - end of stream", ConsumerErrorType::kEndOfStream
+};
+
+auto const kNoData = ConsumerErrorTemplate{
+    "no data", ConsumerErrorType::kNoData
+};
+
+auto const kWrongInput = ConsumerErrorTemplate{
+    "wrong input", ConsumerErrorType::kWrongInput
+};
+
+auto const kBrokerServerError = ConsumerErrorTemplate{
+    "error from broker server", ConsumerErrorType::kBrokerServerError
+};
+
+auto const kBrokerServersNotFound = ConsumerErrorTemplate{
+    "cannot find brokers", ConsumerErrorType::kBrokerServersNotFound
+};
+
+
+
+}
+}
+
+#endif //ASAPO_CONSUMER_ERROR_H
+
diff --git a/worker/api/cpp/include/worker/data_broker.h b/consumer/api/cpp/include/consumer/data_broker.h
similarity index 100%
rename from worker/api/cpp/include/worker/data_broker.h
rename to consumer/api/cpp/include/consumer/data_broker.h
diff --git a/worker/api/cpp/src/data_broker.cpp b/consumer/api/cpp/src/data_broker.cpp
similarity index 96%
rename from worker/api/cpp/src/data_broker.cpp
rename to consumer/api/cpp/src/data_broker.cpp
index d4c17874ee3ebe7664953ceaceeb8b885b2cd50e..48abcb63e5dc0ed2d694b33ab5291f162fae5aed 100644
--- a/worker/api/cpp/src/data_broker.cpp
+++ b/consumer/api/cpp/src/data_broker.cpp
@@ -1,4 +1,4 @@
-#include "worker/data_broker.h"
+#include "consumer/data_broker.h"
 #include "server_data_broker.h"
 
 
diff --git a/worker/api/cpp/src/net_client.h b/consumer/api/cpp/src/net_client.h
similarity index 100%
rename from worker/api/cpp/src/net_client.h
rename to consumer/api/cpp/src/net_client.h
diff --git a/worker/api/cpp/src/server_data_broker.cpp b/consumer/api/cpp/src/server_data_broker.cpp
similarity index 85%
rename from worker/api/cpp/src/server_data_broker.cpp
rename to consumer/api/cpp/src/server_data_broker.cpp
index 8278e90408602c79c2c0050a62efc77a4e8fc89d..7fe7ce71fe4d7ec48cfaf5502cd9c14c2fab013b 100644
--- a/worker/api/cpp/src/server_data_broker.cpp
+++ b/consumer/api/cpp/src/server_data_broker.cpp
@@ -7,7 +7,7 @@
 #include "http_client/http_error.h"
 #include "tcp_client.h"
 
-#include "asapo_worker.h"
+#include "asapo_consumer.h"
 
 using std::chrono::system_clock;
 
@@ -27,21 +27,21 @@ Error ErrorFromNoDataResponse(const std::string& response) {
         uint64_t id, id_max;
         auto parse_error = GetIDsFromJson(response, &id, &id_max);
         if (parse_error) {
-            return WorkerErrorTemplates::kBrokerServerError.Generate("malformed response - " + response);
+            return ConsumerErrorTemplates::kBrokerServerError.Generate("malformed response - " + response);
         }
         Error err;
         if (id >= id_max ) {
-            err = WorkerErrorTemplates::kEndOfStream.Generate();
+            err = ConsumerErrorTemplates::kEndOfStream.Generate();
         } else {
-            err = WorkerErrorTemplates::kNoData.Generate();
+            err = ConsumerErrorTemplates::kNoData.Generate();
         }
-        WorkerErrorData* error_data = new WorkerErrorData;
+        ConsumerErrorData* error_data = new ConsumerErrorData;
         error_data->id = id;
         error_data->id_max = id_max;
         err->SetCustomData(std::unique_ptr<CustomErrorData> {error_data});
         return err;
     }
-    return WorkerErrorTemplates::kNoData.Generate();
+    return ConsumerErrorTemplates::kNoData.Generate();
 }
 
 Error ErrorFromServerResponce(const std::string& response, const HttpCode& code) {
@@ -49,17 +49,17 @@ Error ErrorFromServerResponce(const std::string& response, const HttpCode& code)
     case HttpCode::OK:
         return nullptr;
     case HttpCode::BadRequest:
-        return WorkerErrorTemplates::kWrongInput.Generate(response);
+        return ConsumerErrorTemplates::kWrongInput.Generate(response);
     case HttpCode::Unauthorized:
-        return WorkerErrorTemplates::kWrongInput.Generate(response);
+        return ConsumerErrorTemplates::kWrongInput.Generate(response);
     case HttpCode::InternalServerError:
-        return WorkerErrorTemplates::kBrokerServerError.Generate(response);
+        return ConsumerErrorTemplates::kBrokerServerError.Generate(response);
     case HttpCode::NotFound:
-        return WorkerErrorTemplates::kBrokerServersNotFound.Generate(response);
+        return ConsumerErrorTemplates::kBrokerServersNotFound.Generate(response);
     case HttpCode::Conflict:
         return ErrorFromNoDataResponse(response);
     default:
-        return WorkerErrorTemplates::kBrokerServerError.Generate(response);
+        return ConsumerErrorTemplates::kBrokerServerError.Generate(response);
     }
 }
 
@@ -96,7 +96,7 @@ Error ServerDataBroker::ProcessRequest(std::string* response, const RequestInfo&
     }
     if (err != nullptr) {
         current_broker_uri_ = "";
-        return WorkerErrorTemplates::kBrokerServerError.Generate("error processing request: " + err->Explain());
+        return ConsumerErrorTemplates::kBrokerServerError.Generate("error processing request: " + err->Explain());
     }
     return ErrorFromServerResponce(*response, code);
 }
@@ -114,7 +114,7 @@ Error ServerDataBroker::GetBrokerUri() {
     err = ProcessRequest(&current_broker_uri_, ri);
     if (err != nullptr || current_broker_uri_.empty()) {
         current_broker_uri_ = "";
-        return WorkerErrorTemplates::kBrokerServersNotFound.Generate(" on " + server_uri_
+        return ConsumerErrorTemplates::kBrokerServersNotFound.Generate(" on " + server_uri_
                 + (err != nullptr ? ": " + err->Explain()
                    : ""));
     }
@@ -122,10 +122,10 @@ Error ServerDataBroker::GetBrokerUri() {
 }
 
 void ServerDataBroker::ProcessServerError(Error* err, const std::string& response, std::string* op) {
-    if (*err == WorkerErrorTemplates::kNoData) {
-        auto error_data = static_cast<const WorkerErrorData*>((*err)->GetCustomData());
+    if (*err == ConsumerErrorTemplates::kNoData) {
+        auto error_data = static_cast<const ConsumerErrorData*>((*err)->GetCustomData());
         if (error_data == nullptr) {
-            *err = WorkerErrorTemplates::kBrokerServerError.Generate("malformed response - " + response);
+            *err = ConsumerErrorTemplates::kBrokerServerError.Generate("malformed response - " + response);
             return;
         }
         *op = std::to_string(error_data->id);
@@ -156,7 +156,7 @@ Error ServerDataBroker::GetRecordFromServer(std::string* response, std::string g
 
         ProcessServerError(&err, *response, &request_suffix);
 
-        if (err == WorkerErrorTemplates::kBrokerServerError && request_suffix == "next") {
+        if (err == ConsumerErrorTemplates::kBrokerServerError && request_suffix == "next") {
             return err;
         }
 
@@ -192,7 +192,7 @@ Error ServerDataBroker::GetImageFromServer(GetImageServerOperation op, uint64_t
                                            FileInfo* info,
                                            FileData* data) {
     if (info == nullptr) {
-        return WorkerErrorTemplates::kWrongInput.Generate();
+        return ConsumerErrorTemplates::kWrongInput.Generate();
     }
 
     Error err;
@@ -207,7 +207,7 @@ Error ServerDataBroker::GetImageFromServer(GetImageServerOperation op, uint64_t
     }
 
     if (!info->SetFromJson(response)) {
-        return WorkerErrorTemplates::kBrokerServerError.Generate(std::string("malformed response:") + response);
+        return ConsumerErrorTemplates::kBrokerServerError.Generate(std::string("malformed response:") + response);
     }
 
     return GetDataIfNeeded(info, data);
@@ -215,7 +215,7 @@ Error ServerDataBroker::GetImageFromServer(GetImageServerOperation op, uint64_t
 
 Error ServerDataBroker::RetrieveData(FileInfo* info, FileData* data) {
     if (data == nullptr || info == nullptr) {
-        return WorkerErrorTemplates::kWrongInput.Generate("pointers are empty");
+        return ConsumerErrorTemplates::kWrongInput.Generate("pointers are empty");
     }
 
     if (DataCanBeInBuffer(info)) {
@@ -229,7 +229,7 @@ Error ServerDataBroker::RetrieveData(FileInfo* info, FileData* data) {
     Error error;
     *data = io__->GetDataFromFile(info->FullName(source_path_), &info->size, &error);
     if (error) {
-        return WorkerErrorTemplates::kIOError.Generate(error->Explain());
+        return ConsumerErrorTemplates::kIOError.Generate(error->Explain());
     }
 
     return nullptr;
@@ -271,7 +271,7 @@ std::string ServerDataBroker::BrokerRequestWithTimeout(RequestInfo request, Erro
         if (*err == nullptr) {
             request.host = current_broker_uri_;
             *err = ProcessRequest(&response, request);
-            if (*err == nullptr || (*err) == WorkerErrorTemplates::kWrongInput) {
+            if (*err == nullptr || (*err) == ConsumerErrorTemplates::kWrongInput) {
                 return response;
             }
         }
@@ -347,7 +347,7 @@ DataSet ServerDataBroker::DecodeDatasetFromResponse(std::string response, Error*
     (parse_err = parser.GetArrayRawStrings("images", &vec_fi_endcoded)) ||
     (parse_err = parser.GetUInt64("_id", &id));
     if (parse_err) {
-        *err = WorkerErrorTemplates::kBrokerServerError.Generate("malformed response:" + parse_err->Explain());
+        *err = ConsumerErrorTemplates::kBrokerServerError.Generate("malformed response:" + parse_err->Explain());
         return {0, FileInfos{}};
     }
 
@@ -355,7 +355,7 @@ DataSet ServerDataBroker::DecodeDatasetFromResponse(std::string response, Error*
     for (auto fi_encoded : vec_fi_endcoded) {
         FileInfo fi;
         if (!fi.SetFromJson(fi_encoded)) {
-            *err = WorkerErrorTemplates::kBrokerServerError.Generate("malformed response:" + fi_encoded);
+            *err = ConsumerErrorTemplates::kBrokerServerError.Generate("malformed response:" + fi_encoded);
             return {0, FileInfos{}};
         }
         res.emplace_back(fi);
diff --git a/worker/api/cpp/src/server_data_broker.h b/consumer/api/cpp/src/server_data_broker.h
similarity index 98%
rename from worker/api/cpp/src/server_data_broker.h
rename to consumer/api/cpp/src/server_data_broker.h
index a8a397ae95e424900a911494e9fe7b9427000112..287a398a9d623b9d076d0d0eb7b4d2581c0210c8 100644
--- a/worker/api/cpp/src/server_data_broker.h
+++ b/consumer/api/cpp/src/server_data_broker.h
@@ -1,7 +1,7 @@
 #ifndef ASAPO_SERVER_DATA_BROKER_H
 #define ASAPO_SERVER_DATA_BROKER_H
 
-#include "worker/data_broker.h"
+#include "consumer/data_broker.h"
 #include "io/io.h"
 #include "http_client/http_client.h"
 #include "net_client.h"
diff --git a/worker/api/cpp/src/tcp_client.cpp b/consumer/api/cpp/src/tcp_client.cpp
similarity index 100%
rename from worker/api/cpp/src/tcp_client.cpp
rename to consumer/api/cpp/src/tcp_client.cpp
diff --git a/worker/api/cpp/src/tcp_client.h b/consumer/api/cpp/src/tcp_client.h
similarity index 100%
rename from worker/api/cpp/src/tcp_client.h
rename to consumer/api/cpp/src/tcp_client.h
diff --git a/worker/api/cpp/src/tcp_connection_pool.cpp b/consumer/api/cpp/src/tcp_connection_pool.cpp
similarity index 100%
rename from worker/api/cpp/src/tcp_connection_pool.cpp
rename to consumer/api/cpp/src/tcp_connection_pool.cpp
diff --git a/worker/api/cpp/src/tcp_connection_pool.h b/consumer/api/cpp/src/tcp_connection_pool.h
similarity index 100%
rename from worker/api/cpp/src/tcp_connection_pool.h
rename to consumer/api/cpp/src/tcp_connection_pool.h
diff --git a/worker/api/cpp/unittests/mocking.h b/consumer/api/cpp/unittests/mocking.h
similarity index 92%
rename from worker/api/cpp/unittests/mocking.h
rename to consumer/api/cpp/unittests/mocking.h
index 83ba19658be91427342a66bb7eb53760e105cdc2..be0623021ed4c08aca9f4a128232420f0198e9e5 100644
--- a/worker/api/cpp/unittests/mocking.h
+++ b/consumer/api/cpp/unittests/mocking.h
@@ -1,5 +1,5 @@
-#ifndef ASAPO_WORKER_MOCKING_H
-#define ASAPO_WORKER_MOCKING_H
+#ifndef ASAPO_CONSUMER_MOCKING_H
+#define ASAPO_CONSUMER_MOCKING_H
 
 #include <gtest/gtest.h>
 #include <gmock/gmock.h>
@@ -47,4 +47,4 @@ class MockTCPConnectionPool : public asapo::TcpConnectionPool {
 
 
 
-#endif //ASAPO_WORKER_MOCKING_H
+#endif //ASAPO_CONSUMER_MOCKING_H
diff --git a/worker/api/cpp/unittests/test_worker_api.cpp b/consumer/api/cpp/unittests/test_consumer_api.cpp
similarity index 95%
rename from worker/api/cpp/unittests/test_worker_api.cpp
rename to consumer/api/cpp/unittests/test_consumer_api.cpp
index 22da79aca0c2f985b04fa3eb17e038434d30204d..9b3037f7baf7669c9f635b1d19b9af8dfedb2a5a 100644
--- a/worker/api/cpp/unittests/test_worker_api.cpp
+++ b/consumer/api/cpp/unittests/test_consumer_api.cpp
@@ -1,6 +1,6 @@
 #include <gmock/gmock.h>
 
-#include "worker/data_broker.h"
+#include "consumer/data_broker.h"
 #include "../src/server_data_broker.h"
 #include "common/error.h"
 
diff --git a/worker/api/cpp/unittests/test_server_broker.cpp b/consumer/api/cpp/unittests/test_server_broker.cpp
similarity index 96%
rename from worker/api/cpp/unittests/test_server_broker.cpp
rename to consumer/api/cpp/unittests/test_server_broker.cpp
index 5f73587b586d6bda38e62243199f8757a2c2d397..487546662f3966ccf3d1fc55e7caa8974bc78a92 100644
--- a/worker/api/cpp/unittests/test_server_broker.cpp
+++ b/consumer/api/cpp/unittests/test_server_broker.cpp
@@ -1,8 +1,8 @@
 #include <gmock/gmock.h>
 #include "gtest/gtest.h"
 
-#include "worker/data_broker.h"
-#include "worker/worker_error.h"
+#include "consumer/data_broker.h"
+#include "consumer/consumer_error.h"
 #include "io/io.h"
 #include "../../../../common/cpp/src/system_io/system_io.h"
 #include "../src/server_data_broker.h"
@@ -127,7 +127,7 @@ class ServerDataBrokerTests : public Test {
 
 TEST_F(ServerDataBrokerTests, GetImageReturnsErrorOnWrongInput) {
     auto err = data_broker->GetNext(nullptr, "", nullptr);
-    ASSERT_THAT(err, Eq(asapo::WorkerErrorTemplates::kWrongInput));
+    ASSERT_THAT(err, Eq(asapo::ConsumerErrorTemplates::kWrongInput));
 }
 
 TEST_F(ServerDataBrokerTests, DefaultStreamIsDetector) {
@@ -192,9 +192,9 @@ TEST_F(ServerDataBrokerTests, GetImageReturnsEndOfStreamFromHttpClient) {
 
     auto err = data_broker->GetNext(&info, expected_group_id, nullptr);
 
-    auto err_data = static_cast<const asapo::WorkerErrorData*>(err->GetCustomData());
+    auto err_data = static_cast<const asapo::ConsumerErrorData*>(err->GetCustomData());
 
-    ASSERT_THAT(err, Eq(asapo::WorkerErrorTemplates::kEndOfStream));
+    ASSERT_THAT(err, Eq(asapo::ConsumerErrorTemplates::kEndOfStream));
     ASSERT_THAT(err_data->id, Eq(1));
     ASSERT_THAT(err_data->id_max, Eq(1));
 }
@@ -208,11 +208,11 @@ TEST_F(ServerDataBrokerTests, GetImageReturnsNoDataFromHttpClient) {
                 Return("{\"op\":\"get_record_by_id\",\"id\":1,\"id_max\":2}")));
 
     auto err = data_broker->GetNext(&info, expected_group_id, nullptr);
-    auto err_data = static_cast<const asapo::WorkerErrorData*>(err->GetCustomData());
+    auto err_data = static_cast<const asapo::ConsumerErrorData*>(err->GetCustomData());
 
     ASSERT_THAT(err_data->id, Eq(1));
     ASSERT_THAT(err_data->id_max, Eq(2));
-    ASSERT_THAT(err, Eq(asapo::WorkerErrorTemplates::kNoData));
+    ASSERT_THAT(err, Eq(asapo::ConsumerErrorTemplates::kNoData));
 }
 
 TEST_F(ServerDataBrokerTests, GetImageReturnsNotAuthorized) {
@@ -225,7 +225,7 @@ TEST_F(ServerDataBrokerTests, GetImageReturnsNotAuthorized) {
 
     auto err = data_broker->GetNext(&info, expected_group_id, nullptr);
 
-    ASSERT_THAT(err, Eq(asapo::WorkerErrorTemplates::kWrongInput));
+    ASSERT_THAT(err, Eq(asapo::ConsumerErrorTemplates::kWrongInput));
 }
 
 TEST_F(ServerDataBrokerTests, GetImageReturnsWrongResponseFromHttpClient) {
@@ -239,7 +239,7 @@ TEST_F(ServerDataBrokerTests, GetImageReturnsWrongResponseFromHttpClient) {
 
     auto err = data_broker->GetNext(&info, expected_group_id, nullptr);
 
-    ASSERT_THAT(err, Eq(asapo::WorkerErrorTemplates::kBrokerServerError));
+    ASSERT_THAT(err, Eq(asapo::ConsumerErrorTemplates::kBrokerServerError));
     ASSERT_THAT(err->Explain(), HasSubstr("malformed"));
 }
 
@@ -306,7 +306,7 @@ TEST_F(ServerDataBrokerTests, GetImageReturnsEofStreamFromHttpClientUntilTimeout
     data_broker->SetTimeout(300);
     auto err = data_broker->GetNext(&info, expected_group_id, nullptr);
 
-    ASSERT_THAT(err, Eq(asapo::WorkerErrorTemplates::kEndOfStream));
+    ASSERT_THAT(err, Eq(asapo::ConsumerErrorTemplates::kEndOfStream));
 }
 
 TEST_F(ServerDataBrokerTests, GetNextImageReturnsImmediatelyOnServerError) {
@@ -320,7 +320,7 @@ TEST_F(ServerDataBrokerTests, GetNextImageReturnsImmediatelyOnServerError) {
     data_broker->SetTimeout(300);
     auto err = data_broker->GetNext(&info, expected_group_id, nullptr);
 
-    ASSERT_THAT(err, Eq(asapo::WorkerErrorTemplates::kBrokerServerError));
+    ASSERT_THAT(err, Eq(asapo::ConsumerErrorTemplates::kBrokerServerError));
     ASSERT_THAT(err->Explain(), HasSubstr("sss"));
 
 }
@@ -349,7 +349,7 @@ TEST_F(ServerDataBrokerTests, GetImageReturnsParseError) {
 
     auto err = data_broker->GetNext(&info, expected_group_id, nullptr);
 
-    ASSERT_THAT(err, Eq(asapo::WorkerErrorTemplates::kBrokerServerError));
+    ASSERT_THAT(err, Eq(asapo::ConsumerErrorTemplates::kBrokerServerError));
 }
 
 TEST_F(ServerDataBrokerTests, GetImageReturnsIfNoDataNeeded) {
@@ -422,7 +422,7 @@ TEST_F(ServerDataBrokerTests, GenerateNewGroupIdReturnsErrorCreateGroup) {
     data_broker->SetTimeout(100);
     asapo::Error err;
     auto groupid = data_broker->GenerateNewGroupId(&err);
-    ASSERT_THAT(err, Eq(asapo::WorkerErrorTemplates::kWrongInput));
+    ASSERT_THAT(err, Eq(asapo::ConsumerErrorTemplates::kWrongInput));
     ASSERT_THAT(groupid, Eq(""));
 }
 
@@ -555,7 +555,7 @@ TEST_F(ServerDataBrokerTests, GetByIdTimeouts) {
 
     auto err = data_broker->GetById(expected_dataset_id, &info, expected_group_id, nullptr);
 
-    ASSERT_THAT(err, Eq(asapo::WorkerErrorTemplates::kNoData));
+    ASSERT_THAT(err, Eq(asapo::ConsumerErrorTemplates::kNoData));
 }
 
 TEST_F(ServerDataBrokerTests, GetByIdReturnsEndOfStream) {
@@ -572,7 +572,7 @@ TEST_F(ServerDataBrokerTests, GetByIdReturnsEndOfStream) {
 
     auto err = data_broker->GetById(expected_dataset_id, &info, expected_group_id, nullptr);
 
-    ASSERT_THAT(err, Eq(asapo::WorkerErrorTemplates::kEndOfStream));
+    ASSERT_THAT(err, Eq(asapo::ConsumerErrorTemplates::kEndOfStream));
 }
 
 TEST_F(ServerDataBrokerTests, GetByIdReturnsEndOfStreamWhenIdTooLarge) {
@@ -589,7 +589,7 @@ TEST_F(ServerDataBrokerTests, GetByIdReturnsEndOfStreamWhenIdTooLarge) {
 
     auto err = data_broker->GetById(expected_dataset_id, &info, expected_group_id, nullptr);
 
-    ASSERT_THAT(err, Eq(asapo::WorkerErrorTemplates::kEndOfStream));
+    ASSERT_THAT(err, Eq(asapo::ConsumerErrorTemplates::kEndOfStream));
 }
 
 
@@ -627,7 +627,7 @@ TEST_F(ServerDataBrokerTests, QueryImagesReturnError) {
     asapo::Error err;
     auto images = data_broker->QueryImages(expected_query_string, &err);
 
-    ASSERT_THAT(err, Eq(asapo::WorkerErrorTemplates::kWrongInput));
+    ASSERT_THAT(err, Eq(asapo::ConsumerErrorTemplates::kWrongInput));
     ASSERT_THAT(err->Explain(), HasSubstr("query"));
     ASSERT_THAT(images.size(), Eq(0));
 }
@@ -778,7 +778,7 @@ TEST_F(ServerDataBrokerTests, GetDataSetReturnsParseError) {
     asapo::Error err;
     auto dataset = data_broker->GetNextDataset(expected_group_id, &err);
 
-    ASSERT_THAT(err, Eq(asapo::WorkerErrorTemplates::kBrokerServerError));
+    ASSERT_THAT(err, Eq(asapo::ConsumerErrorTemplates::kBrokerServerError));
     ASSERT_THAT(dataset.content.size(), Eq(0));
     ASSERT_THAT(dataset.id, Eq(0));
 
diff --git a/worker/api/cpp/unittests/test_tcp_client.cpp b/consumer/api/cpp/unittests/test_tcp_client.cpp
similarity index 100%
rename from worker/api/cpp/unittests/test_tcp_client.cpp
rename to consumer/api/cpp/unittests/test_tcp_client.cpp
diff --git a/worker/api/cpp/unittests/test_tcp_connection_pool.cpp b/consumer/api/cpp/unittests/test_tcp_connection_pool.cpp
similarity index 100%
rename from worker/api/cpp/unittests/test_tcp_connection_pool.cpp
rename to consumer/api/cpp/unittests/test_tcp_connection_pool.cpp
diff --git a/worker/api/python/CMakeLists.txt b/consumer/api/python/CMakeLists.txt
similarity index 100%
rename from worker/api/python/CMakeLists.txt
rename to consumer/api/python/CMakeLists.txt
diff --git a/worker/api/python/CMakeLists_Linux.cmake b/consumer/api/python/CMakeLists_Linux.cmake
similarity index 77%
rename from worker/api/python/CMakeLists_Linux.cmake
rename to consumer/api/python/CMakeLists_Linux.cmake
index bbc1eaade3d161a7f31ee6c3c779de53e098f386..511ac676aafbdaeee66ac92398eab2a92ecba33b 100644
--- a/worker/api/python/CMakeLists_Linux.cmake
+++ b/consumer/api/python/CMakeLists_Linux.cmake
@@ -9,9 +9,9 @@ else()
     set (EXTRA_LINK_ARGS "[]")
 ENDIF()
 
-get_property(ASAPO_WORKER_LIB TARGET asapo-worker PROPERTY LOCATION)
+get_property(ASAPO_CONSUMER_LIB TARGET asapo-consumer PROPERTY LOCATION)
 
-set (ASAPO_WORKER_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../cpp/include)
+set (ASAPO_CONSUMER_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../cpp/include)
 
 configure_files(${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR} @ONLY)
 
@@ -21,7 +21,7 @@ ADD_CUSTOM_TARGET(python-lib2 ALL
 ADD_CUSTOM_TARGET(python-lib3 ALL
         COMMAND python3 setup.py build_ext --inplace --force)
 
-ADD_DEPENDENCIES(python-lib2 asapo-worker)
-ADD_DEPENDENCIES(python-lib3 asapo-worker)
+ADD_DEPENDENCIES(python-lib2 asapo-consumer)
+ADD_DEPENDENCIES(python-lib3 asapo-consumer)
 
 add_subdirectory(source_dist_linux)
diff --git a/worker/api/python/CMakeLists_Windows.cmake b/consumer/api/python/CMakeLists_Windows.cmake
similarity index 79%
rename from worker/api/python/CMakeLists_Windows.cmake
rename to consumer/api/python/CMakeLists_Windows.cmake
index c02b010ec5ffa1d268bbb49f91b485344bef04e4..c37ee4180b2f7b61816e70ef10cca0d35722b9ae 100644
--- a/worker/api/python/CMakeLists_Windows.cmake
+++ b/consumer/api/python/CMakeLists_Windows.cmake
@@ -7,15 +7,15 @@ message ("   Python includes:" ${Python3_INCLUDE_DIRS})
 message ("   Numpy:" ${PYTHON_NUMPY_INCLUDE_DIR})
 
 
-add_custom_command(OUTPUT asapo_worker.cpp
+add_custom_command(OUTPUT asapo_consumer.cpp
         COMMAND ${Python3_EXECUTABLE} cythonize.py
-        DEPENDS asapo-worker)
+        DEPENDS asapo-consumer)
 
 
-set(TARGET_NAME asapo_worker)
+set(TARGET_NAME asapo_consumer)
 
 set(SOURCE_FILES
-        asapo_worker.cpp)
+        asapo_consumer.cpp)
 
 add_library(${TARGET_NAME} SHARED ${SOURCE_FILES})
 set_target_properties(${TARGET_NAME} PROPERTIES SUFFIX ".pyd")
@@ -23,7 +23,7 @@ set_target_properties(${TARGET_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY
         ${CMAKE_CURRENT_BINARY_DIR}$<$<CONFIG:Debug>:>
         )
 
-target_link_libraries(${TARGET_NAME}  asapo-worker ${Python3_LIBRARIES})
+target_link_libraries(${TARGET_NAME}  asapo-consumer ${Python3_LIBRARIES})
 target_include_directories(${TARGET_NAME} PUBLIC include  ${Python3_INCLUDE_DIRS} ${PYTHON_NUMPY_INCLUDE_DIR})
 
 
diff --git a/worker/api/python/asapo_worker.pxd b/consumer/api/python/asapo_consumer.pxd
similarity index 66%
rename from worker/api/python/asapo_worker.pxd
rename to consumer/api/python/asapo_consumer.pxd
index 71279d9dc0e293dcaab36d6877353302681304fe..811d1099f1b0eb46b158c2a9fe2792630c83237a 100644
--- a/worker/api/python/asapo_worker.pxd
+++ b/consumer/api/python/asapo_consumer.pxd
@@ -9,9 +9,12 @@ ctypedef unsigned long uint64_t
 
 ctypedef unique_ptr[ErrorInterface] Error
 
-cdef extern from "asapo_worker.h" namespace "asapo":
+cdef extern from "asapo_consumer.h" namespace "asapo":
+  cppclass CustomErrorData:
+    pass
   cppclass ErrorInterface:
     string Explain()
+    const CustomErrorData* GetCustomData()
   cppclass ErrorTemplateInterface:
     pass
   cdef bool operator==(Error lhs, ErrorTemplateInterface rhs)
@@ -20,12 +23,12 @@ cdef extern from "asapo_worker.h" namespace "asapo":
 cdef extern from "asapo_wrappers.h" namespace "asapo":
   cdef string GetErrorString(Error* err)
 
-cdef extern from "asapo_worker.h" namespace "asapo":
+cdef extern from "asapo_consumer.h" namespace "asapo":
   cppclass FileData:
     unique_ptr[uint8_t[]] release()
     pass
 
-cdef extern from "asapo_worker.h" namespace "asapo":
+cdef extern from "asapo_consumer.h" namespace "asapo":
   cppclass FileInfo:
     string Json()
     bool SetFromJson(string json_str)
@@ -40,7 +43,7 @@ cdef extern from "asapo_worker.h" namespace "asapo":
     string stream
     string user_token
 
-cdef extern from "asapo_worker.h" namespace "asapo" nogil:
+cdef extern from "asapo_consumer.h" namespace "asapo" nogil:
     cdef cppclass DataBroker:
         DataBroker() except +
         void SetTimeout(uint64_t timeout_ms)
@@ -59,16 +62,20 @@ cdef extern from "asapo_worker.h" namespace "asapo" nogil:
         Error RetrieveData(FileInfo* info, FileData* data)
 
 
-cdef extern from "asapo_worker.h" namespace "asapo" nogil:
+cdef extern from "asapo_consumer.h" namespace "asapo" nogil:
     cdef cppclass DataBrokerFactory:
         DataBrokerFactory() except +
         unique_ptr[DataBroker] CreateServerBroker(string server_name,string source_path,SourceCredentials source,Error* error)
 
 
-cdef extern from "asapo_worker.h" namespace "asapo":
-  ErrorTemplateInterface kNoData "asapo::WorkerErrorTemplates::kNoData"
-  ErrorTemplateInterface kEndOfStream "asapo::WorkerErrorTemplates::kEndOfStream"
-  ErrorTemplateInterface kBrokerServersNotFound "asapo::WorkerErrorTemplates::kBrokerServersNotFound"
-  ErrorTemplateInterface kBrokerServerError "asapo::WorkerErrorTemplates::kBrokerServerError"
-  ErrorTemplateInterface kIOError "asapo::WorkerErrorTemplates::kIOError"
-  ErrorTemplateInterface kWrongInput "asapo::WorkerErrorTemplates::kWrongInput"
+cdef extern from "asapo_consumer.h" namespace "asapo":
+  ErrorTemplateInterface kNoData "asapo::ConsumerErrorTemplates::kNoData"
+  ErrorTemplateInterface kEndOfStream "asapo::ConsumerErrorTemplates::kEndOfStream"
+  ErrorTemplateInterface kBrokerServersNotFound "asapo::ConsumerErrorTemplates::kBrokerServersNotFound"
+  ErrorTemplateInterface kBrokerServerError "asapo::ConsumerErrorTemplates::kBrokerServerError"
+  ErrorTemplateInterface kIOError "asapo::ConsumerErrorTemplates::kIOError"
+  ErrorTemplateInterface kWrongInput "asapo::ConsumerErrorTemplates::kWrongInput"
+  cdef cppclass ConsumerErrorData:
+    uint64_t id
+    uint64_t id_max
+
diff --git a/worker/api/python/asapo_worker.pyx.in b/consumer/api/python/asapo_consumer.pyx.in
similarity index 90%
rename from worker/api/python/asapo_worker.pyx.in
rename to consumer/api/python/asapo_consumer.pyx.in
index 4b74813053534d685260223edbcade589212b874..fd7d3047e61011eef2497c2276f77c3fd4f2d2e6 100644
--- a/worker/api/python/asapo_worker.pyx.in
+++ b/consumer/api/python/asapo_consumer.pyx.in
@@ -1,6 +1,6 @@
 #distutils: language=c++
 
-cimport asapo_worker
+cimport asapo_consumer
 import numpy as np
 cimport numpy as np
 import json
@@ -35,16 +35,31 @@ class AsapoWrongInputError(AsapoConsumerError):
   pass
 
 class AsapoEndOfStreamError(AsapoConsumerError):
-  pass
+  def __init__(self,message,id_max=None):
+    AsapoConsumerError.__init__(self,message)
+    self.id_max = id_max
 
 class AsapoNoDataError(AsapoConsumerError):
-  pass
+  def __init__(self,message,id=None,id_max=None):
+    AsapoConsumerError.__init__(self,message)
+    self.id_max = id_max
+    self.id = id
+
 
 cdef throw_exception(Error& err):
+    cdef ConsumerErrorData* data
     if err == kEndOfStream:
-            raise AsapoEndOfStreamError(err.get().Explain())
+            data=<ConsumerErrorData*>err.get().GetCustomData()
+            if data != NULL:
+                raise AsapoEndOfStreamError(err.get().Explain(),data.id_max)
+            else:
+                raise AsapoEndOfStreamError(err.get().Explain())
     elif err == kNoData:
-            raise AsapoNoDataError(err.get().Explain())
+            data=<ConsumerErrorData*>err.get().GetCustomData()
+            if data != NULL:
+                raise AsapoNoDataError(err.get().Explain(),data.id,data.id_max)
+            else:
+                raise AsapoNoDataError(err.get().Explain())
     elif err == kWrongInput:
             raise AsapoWrongInputError(err.get().Explain())
     else:
diff --git a/worker/api/python/asapo_wrappers.h b/consumer/api/python/asapo_wrappers.h
similarity index 100%
rename from worker/api/python/asapo_wrappers.h
rename to consumer/api/python/asapo_wrappers.h
diff --git a/worker/api/python/binary_dist_windows/CMakeLists.txt b/consumer/api/python/binary_dist_windows/CMakeLists.txt
similarity index 61%
rename from worker/api/python/binary_dist_windows/CMakeLists.txt
rename to consumer/api/python/binary_dist_windows/CMakeLists.txt
index ac46814f2f72398700d58ad9f3758dfe857fbb00..726eaa6dde696f79472e6f97e57d6c0d8ee3cbe1 100644
--- a/worker/api/python/binary_dist_windows/CMakeLists.txt
+++ b/consumer/api/python/binary_dist_windows/CMakeLists.txt
@@ -6,11 +6,11 @@ ADD_CUSTOM_TARGET(windows-bdist ALL
 
 
 ADD_CUSTOM_TARGET(copy_python_bdist ALL
-        COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/asapo_worker
-        COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:asapo_worker> ${CMAKE_CURRENT_BINARY_DIR}/asapo_worker/
+        COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/asapo_consumer
+        COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:asapo_consumer> ${CMAKE_CURRENT_BINARY_DIR}/asapo_consumer/
         )
 
 
-ADD_DEPENDENCIES(copy_python_bdist asapo_worker)
+ADD_DEPENDENCIES(copy_python_bdist asapo_consumer)
 
 ADD_DEPENDENCIES(windows-bdist copy_python_bdist)
diff --git a/worker/api/python/binary_dist_windows/setup.py.in b/consumer/api/python/binary_dist_windows/setup.py.in
similarity index 60%
rename from worker/api/python/binary_dist_windows/setup.py.in
rename to consumer/api/python/binary_dist_windows/setup.py.in
index cc896317e695130123fc6862fe575147698422fe..d2f1e438360b71ff5ef7f694ce5b589a10c99151 100644
--- a/worker/api/python/binary_dist_windows/setup.py.in
+++ b/consumer/api/python/binary_dist_windows/setup.py.in
@@ -1,12 +1,12 @@
 import setuptools
 
 setuptools.setup(
-      name ="asapo_worker",
+      name ="asapo_consumer",
       version = "@ASAPO_VERSION_PYTHON@",
       install_requires=['numpy'],
       include_package_data=True,
-      packages=['asapo_worker'],
+      packages=['asapo_consumer'],
       package_data={
-        'asapo_worker': ['asapo_worker.pyd'],
+        'asapo_consumer': ['asapo_consumer.pyd'],
       },
 )
diff --git a/worker/api/python/cythonize.py b/consumer/api/python/cythonize.py
similarity index 51%
rename from worker/api/python/cythonize.py
rename to consumer/api/python/cythonize.py
index f0c0ae871b4d742ec7f4324d96100e722bb52198..d98836b8632a2658b71b48db4b00429acdc16a40 100644
--- a/worker/api/python/cythonize.py
+++ b/consumer/api/python/cythonize.py
@@ -1,3 +1,3 @@
 from Cython.Build import cythonize
 
-cythonize(["asapo_worker.pyx"])
+cythonize(["asapo_consumer.pyx"])
diff --git a/worker/api/python/setup.py.in b/consumer/api/python/setup.py.in
similarity index 74%
rename from worker/api/python/setup.py.in
rename to consumer/api/python/setup.py.in
index b2815861f2983e18f31171082368afaf5bb51383..b70319b080b519e0a2dd2a4eafc78764ca3be067 100644
--- a/worker/api/python/setup.py.in
+++ b/consumer/api/python/setup.py.in
@@ -5,10 +5,10 @@ from Cython.Build import cythonize
 
 import numpy
 
-module = Extension("asapo_worker", ["asapo_worker.pyx"],
-                       extra_objects=['@ASAPO_WORKER_LIB@',
+module = Extension("asapo_consumer", ["asapo_consumer.pyx"],
+                       extra_objects=['@ASAPO_CONSUMER_LIB@',
                                       '@CURL_LIBRARIES@'],
-                       include_dirs=["@ASAPO_CXX_COMMON_INCLUDE_DIR@","@ASAPO_WORKER_INCLUDE_DIR@",numpy.get_include()],
+                       include_dirs=["@ASAPO_CXX_COMMON_INCLUDE_DIR@","@ASAPO_CONSUMER_INCLUDE_DIR@",numpy.get_include()],
                        extra_compile_args=@EXTRA_COMPILE_ARGS@,
                        extra_link_args=@EXTRA_LINK_ARGS@,
                        language="c++",
diff --git a/worker/api/python/source_dist_linux/CMakeLists.txt b/consumer/api/python/source_dist_linux/CMakeLists.txt
similarity index 76%
rename from worker/api/python/source_dist_linux/CMakeLists.txt
rename to consumer/api/python/source_dist_linux/CMakeLists.txt
index 48fe09828008db7dde6c425146f05ff5e1aa6c2f..526146c65aaca82983e6b48cc16f5f1427a9b46a 100644
--- a/worker/api/python/source_dist_linux/CMakeLists.txt
+++ b/consumer/api/python/source_dist_linux/CMakeLists.txt
@@ -6,17 +6,17 @@ ADD_CUSTOM_TARGET(python-dist ALL
         COMMAND python setup.py sdist
         )
 
-#get_property(ASAPO_WORKER_LIB TARGET asapo-worker PROPERTY LOCATION)
+#get_property(ASAPO_CONSUMER_LIB TARGET asapo-consumer PROPERTY LOCATION)
 
 ADD_CUSTOM_TARGET(copy_python_dist ALL
         COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/../asapo_wrappers.h ${CMAKE_CURRENT_BINARY_DIR}/.
-        COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/../asapo_worker.cpp ${CMAKE_CURRENT_BINARY_DIR}/.
-        COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_SOURCE_DIR}/worker/api/cpp/include ${CMAKE_CURRENT_BINARY_DIR}/include
+        COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/../asapo_consumer.cpp ${CMAKE_CURRENT_BINARY_DIR}/.
+        COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_SOURCE_DIR}/consumer/api/cpp/include ${CMAKE_CURRENT_BINARY_DIR}/include
         COMMAND ${CMAKE_COMMAND} -E copy_directory ${ASAPO_CXX_COMMON_INCLUDE_DIR}/common ${CMAKE_CURRENT_BINARY_DIR}/include/common
         COMMAND ${CMAKE_COMMAND} -E remove ${CMAKE_CURRENT_BINARY_DIR}/include/common/version.h.in
         COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/lib
         COMMAND ${CMAKE_COMMAND} -E copy ${CURL_LIBRARIES} ${CMAKE_CURRENT_BINARY_DIR}/lib
-        COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:asapo-worker> ${CMAKE_CURRENT_BINARY_DIR}/lib
+        COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:asapo-consumer> ${CMAKE_CURRENT_BINARY_DIR}/lib
 
         )
 
diff --git a/worker/api/python/source_dist_linux/MANIFEST.in b/consumer/api/python/source_dist_linux/MANIFEST.in
similarity index 100%
rename from worker/api/python/source_dist_linux/MANIFEST.in
rename to consumer/api/python/source_dist_linux/MANIFEST.in
diff --git a/worker/api/python/source_dist_linux/setup.py.in b/consumer/api/python/source_dist_linux/setup.py.in
similarity index 78%
rename from worker/api/python/source_dist_linux/setup.py.in
rename to consumer/api/python/source_dist_linux/setup.py.in
index d4df8d1c82987c0e14dff5091f3755eec6aa8fd4..43c0c9eb44ba6dd1732d83efab96b9f7829cae64 100644
--- a/worker/api/python/source_dist_linux/setup.py.in
+++ b/consumer/api/python/source_dist_linux/setup.py.in
@@ -3,8 +3,8 @@ from distutils.core import Extension
 import numpy
 
 ext_modules = [
-    Extension("asapo_worker", ["asapo_worker.cpp"],
-              extra_objects=['lib/libasapo-worker.a'],
+    Extension("asapo_consumer", ["asapo_consumer.cpp"],
+              extra_objects=['lib/libasapo-consumer.a'],
 					   libraries = ['curl'],
                        include_dirs=["include/common","include",numpy.get_include()],
                        extra_compile_args=@EXTRA_COMPILE_ARGS@,
@@ -13,7 +13,7 @@ ext_modules = [
 ]
 
 setup(
-      name ="asapo_worker",
+      name ="asapo_consumer",
       ext_modules = ext_modules,
       version = "@ASAPO_VERSION_PYTHON@",
       setup_requires=["numpy"],
diff --git a/worker/tools/CMakeLists.txt b/consumer/tools/CMakeLists.txt
similarity index 100%
rename from worker/tools/CMakeLists.txt
rename to consumer/tools/CMakeLists.txt
diff --git a/worker/tools/folder_to_db/CMakeLists.txt b/consumer/tools/folder_to_db/CMakeLists.txt
similarity index 100%
rename from worker/tools/folder_to_db/CMakeLists.txt
rename to consumer/tools/folder_to_db/CMakeLists.txt
diff --git a/worker/tools/folder_to_db/src/folder_db_importer.cpp b/consumer/tools/folder_to_db/src/folder_db_importer.cpp
similarity index 100%
rename from worker/tools/folder_to_db/src/folder_db_importer.cpp
rename to consumer/tools/folder_to_db/src/folder_db_importer.cpp
diff --git a/worker/tools/folder_to_db/src/folder_db_importer.h b/consumer/tools/folder_to_db/src/folder_db_importer.h
similarity index 100%
rename from worker/tools/folder_to_db/src/folder_db_importer.h
rename to consumer/tools/folder_to_db/src/folder_db_importer.h
diff --git a/worker/tools/folder_to_db/src/main.cpp b/consumer/tools/folder_to_db/src/main.cpp
similarity index 100%
rename from worker/tools/folder_to_db/src/main.cpp
rename to consumer/tools/folder_to_db/src/main.cpp
diff --git a/worker/tools/folder_to_db/unittests/test_folder_to_db.cpp b/consumer/tools/folder_to_db/unittests/test_folder_to_db.cpp
similarity index 100%
rename from worker/tools/folder_to_db/unittests/test_folder_to_db.cpp
rename to consumer/tools/folder_to_db/unittests/test_folder_to_db.cpp
diff --git a/deploy/docker/build_env/Ubuntu16.04/build.sh b/deploy/docker/build_env/Ubuntu16.04/build.sh
index edebc5038a65d919b7dbb10f9db3973c97d12c8f..40318cb213fe0c5090b888e67c2e8a6db996f000 100755
--- a/deploy/docker/build_env/Ubuntu16.04/build.sh
+++ b/deploy/docker/build_env/Ubuntu16.04/build.sh
@@ -2,7 +2,7 @@
 
 cd /asapo/build
 cmake -DCMAKE_BUILD_TYPE="Release" -DLIBCURL_DIR=/curl -DBUILD_PYTHON_DOCS=ON ..
-cd worker && make
+cd consumer && make
 cd ../producer && make
 cd ../sphinx && make
 
diff --git a/doxygen.ini b/doxygen.ini
index 10658938915284fdca9482b028fc5cd7af86d400..a4689cde6bad318094c346b35669311b50858d05 100644
--- a/doxygen.ini
+++ b/doxygen.ini
@@ -774,7 +774,7 @@ WARN_LOGFILE           =
 INPUT                  = common \
                          lib \
                          producer \
-                         worker \
+                         consumer \
                          receiver
 
 # This tag can be used to specify the character encoding of the source files
diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt
index beb4a38d87dce9beea4b529653a1452df56b52c0..20deaabb0ece834782b16cf32b11dd9c3f0ca783 100644
--- a/examples/CMakeLists.txt
+++ b/examples/CMakeLists.txt
@@ -1,4 +1,4 @@
-add_subdirectory(worker)
+add_subdirectory(consumer)
 add_subdirectory(pipeline)
 add_subdirectory(producer)
 
diff --git a/examples/worker/CMakeLists.txt b/examples/consumer/CMakeLists.txt
similarity index 100%
rename from examples/worker/CMakeLists.txt
rename to examples/consumer/CMakeLists.txt
diff --git a/examples/worker/getnext_broker/CMakeLists.txt b/examples/consumer/getnext_broker/CMakeLists.txt
similarity index 91%
rename from examples/worker/getnext_broker/CMakeLists.txt
rename to examples/consumer/getnext_broker/CMakeLists.txt
index 19796f976678b2127e7bdcbeb15b2e9c900739ec..aeda6a8ce710d51b8d5c303be88d671b6bf9c9d0 100644
--- a/examples/worker/getnext_broker/CMakeLists.txt
+++ b/examples/consumer/getnext_broker/CMakeLists.txt
@@ -2,7 +2,7 @@ set(TARGET_NAME getnext_broker)
 set(SOURCE_FILES getnext_broker.cpp)
 
 add_executable(${TARGET_NAME} ${SOURCE_FILES})
-target_link_libraries(${TARGET_NAME} asapo-worker)
+target_link_libraries(${TARGET_NAME} asapo-consumer)
 
 #use expression generator to get rid of VS adding Debug/Release folders
 set_target_properties(${TARGET_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY
@@ -17,7 +17,7 @@ prepare_asapo()
 configure_file(${CMAKE_SOURCE_DIR}/tests/automatic/settings/broker_settings.json settings.json COPYONLY)
 add_script_test("${TARGET_NAME}" "${CMAKE_CURRENT_BINARY_DIR}/${TARGET_NAME}")
 
-set (dir examples/worker/${TARGET_NAME})
+set (dir examples/consumer/${TARGET_NAME})
 install(TARGETS ${TARGET_NAME} DESTINATION "${dir}")
 install(FILES ${SOURCE_FILES} DESTINATION "${dir}")
 
diff --git a/examples/worker/getnext_broker/CMakeLists_separate.in b/examples/consumer/getnext_broker/CMakeLists_separate.in
similarity index 89%
rename from examples/worker/getnext_broker/CMakeLists_separate.in
rename to examples/consumer/getnext_broker/CMakeLists_separate.in
index 5bcf1c56fc63ba39f0968b4d6f2e4e67279927b6..b4202e55288dbebbbc0435a615677a37ac1c36e7 100644
--- a/examples/worker/getnext_broker/CMakeLists_separate.in
+++ b/examples/consumer/getnext_broker/CMakeLists_separate.in
@@ -31,4 +31,4 @@ link_directories(@CMAKE_INSTALL_PREFIX@/lib)
 
 add_executable(${TARGET_NAME} ${SOURCE_FILES})
 target_include_directories(${TARGET_NAME} PUBLIC @CMAKE_INSTALL_PREFIX@/include ${CURL_INCLUDE_DIRS})
-target_link_libraries(${TARGET_NAME} asapo-worker ${CURL_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT})
+target_link_libraries(${TARGET_NAME} asapo-consumer ${CURL_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT})
diff --git a/examples/worker/getnext_broker/Makefile.in b/examples/consumer/getnext_broker/Makefile.in
similarity index 83%
rename from examples/worker/getnext_broker/Makefile.in
rename to examples/consumer/getnext_broker/Makefile.in
index ae61c2ed41f2448088fbda0b24b71bd6ba5e7bd6..845611464d7267b11a64603da1a76a188455d297 100644
--- a/examples/worker/getnext_broker/Makefile.in
+++ b/examples/consumer/getnext_broker/Makefile.in
@@ -3,7 +3,7 @@ PROGRAM=@TARGET_NAME@
 CXX=g++
 CXXFLAGS=-std=c++11
 LDFLAGS=-pthread  -static-libgcc -static-libstdc++
-LIBS=-L @CMAKE_INSTALL_PREFIX@/lib -lasapo-worker -L ${LIBCURL_DIR}/lib -lcurl
+LIBS=-L @CMAKE_INSTALL_PREFIX@/lib -lasapo-consumer -L ${LIBCURL_DIR}/lib -lcurl
 INCLUDE=-I @CMAKE_INSTALL_PREFIX@/include -I ${LIBCURL_DIR}/include
 RM=rm -f
 
diff --git a/examples/worker/getnext_broker/check_linux.sh b/examples/consumer/getnext_broker/check_linux.sh
similarity index 100%
rename from examples/worker/getnext_broker/check_linux.sh
rename to examples/consumer/getnext_broker/check_linux.sh
diff --git a/examples/worker/getnext_broker/check_windows.bat b/examples/consumer/getnext_broker/check_windows.bat
similarity index 100%
rename from examples/worker/getnext_broker/check_windows.bat
rename to examples/consumer/getnext_broker/check_windows.bat
diff --git a/examples/worker/getnext_broker/getnext_broker.cpp b/examples/consumer/getnext_broker/getnext_broker.cpp
similarity index 97%
rename from examples/worker/getnext_broker/getnext_broker.cpp
rename to examples/consumer/getnext_broker/getnext_broker.cpp
index b4bb551a8aa549b2e73cf1a77d971a2d920b2fa1..5e11c3aab9106ab8331c4b46d7ac698110e43ed8 100644
--- a/examples/worker/getnext_broker/getnext_broker.cpp
+++ b/examples/consumer/getnext_broker/getnext_broker.cpp
@@ -11,7 +11,7 @@
 #include <sstream>
 
 
-#include "asapo_worker.h"
+#include "asapo_consumer.h"
 
 using std::chrono::system_clock;
 using asapo::Error;
@@ -40,7 +40,7 @@ void WaitThreads(std::vector<std::thread>* threads) {
 int ProcessError(const Error& err) {
     if (err == nullptr) return 0;
     std::cout << err->Explain() << std::endl;
-    return err == asapo::WorkerErrorTemplates::kEndOfStream ? 0 : 1;
+    return err == asapo::ConsumerErrorTemplates::kEndOfStream ? 0 : 1;
 }
 
 std::vector<std::thread> StartThreads(const Args& params,
@@ -98,7 +98,7 @@ std::vector<std::thread> StartThreads(const Args& params,
 
             if (err) {
                 (*errors)[i] += ProcessError(err);
-                if (err != asapo::WorkerErrorTemplates::kNoData ) {
+                if (err != asapo::ConsumerErrorTemplates::kNoData ) {
                     break;
                 }
             }
diff --git a/examples/worker/getnext_broker_python/CMakeLists.txt b/examples/consumer/getnext_broker_python/CMakeLists.txt
similarity index 75%
rename from examples/worker/getnext_broker_python/CMakeLists.txt
rename to examples/consumer/getnext_broker_python/CMakeLists.txt
index 3964a2a0eb38860566fd739df4e3b00eec3dfa12..2e13a9d90ec9b5b6d278fd3d257a2542a38fd0f8 100644
--- a/examples/worker/getnext_broker_python/CMakeLists.txt
+++ b/examples/consumer/getnext_broker_python/CMakeLists.txt
@@ -6,12 +6,12 @@ prepare_asapo()
 if (UNIX)
     get_target_property(PYTHON_LIBS python-lib2 BINARY_DIR)
 else()
-    get_target_property(PYTHON_LIBS asapo_worker BINARY_DIR)
+    get_target_property(PYTHON_LIBS asapo_consumer BINARY_DIR)
 endif()
 
 add_script_test("${TARGET_NAME}" ${PYTHON_LIBS} nomem)
 
 configure_file(getnext.py getnext.py COPYONLY)
 
-set (dir examples/worker/${TARGET_NAME})
+set (dir examples/consumer/${TARGET_NAME})
 install(FILES ${CMAKE_CURRENT_BINARY_DIR}/getnext.py DESTINATION "${dir}")
diff --git a/examples/worker/getnext_broker_python/check_linux.sh b/examples/consumer/getnext_broker_python/check_linux.sh
similarity index 100%
rename from examples/worker/getnext_broker_python/check_linux.sh
rename to examples/consumer/getnext_broker_python/check_linux.sh
diff --git a/examples/worker/getnext_broker_python/check_windows.bat b/examples/consumer/getnext_broker_python/check_windows.bat
similarity index 100%
rename from examples/worker/getnext_broker_python/check_windows.bat
rename to examples/consumer/getnext_broker_python/check_windows.bat
diff --git a/examples/worker/getnext_broker_python/getnext.py b/examples/consumer/getnext_broker_python/getnext.py
similarity index 80%
rename from examples/worker/getnext_broker_python/getnext.py
rename to examples/consumer/getnext_broker_python/getnext.py
index c9e271cd2a8b8442197d513d43006a98f0c2ce0a..a17fe4f85ea0a3e6eafa0c5988c1de7b4b3fa107 100644
--- a/examples/worker/getnext_broker_python/getnext.py
+++ b/examples/consumer/getnext_broker_python/getnext.py
@@ -1,12 +1,12 @@
 from __future__ import print_function
 
-import asapo_worker
+import asapo_consumer
 import json
 import sys
 
 source, path, beamtime, token, group_id = sys.argv[1:]
 
-broker = asapo_worker.create_server_broker(source,path, beamtime,"",token,1000)
+broker = asapo_consumer.create_server_broker(source,path, beamtime,"",token,1000)
 
 
 if group_id == "new":
@@ -22,5 +22,5 @@ print ('meta: ', json.dumps(meta, indent=4, sort_keys=True))
 try:
     beamtime_meta = broker.get_beamtime_meta()
     print ('beamtime meta: ', json.dumps(beamtime_meta, indent=4, sort_keys=True))
-except asapo_worker.AsapoError as err:
+except asapo_consumer.AsapoError as err:
     print ('error getting beamtime meta: ', err)
diff --git a/examples/pipeline/in_to_out/CMakeLists.txt b/examples/pipeline/in_to_out/CMakeLists.txt
index d8579506c2829c7de64668d58d2f4ed90b8bbf78..efe0d0f8a6f0e87758fef1c4fa683fa469068fa0 100644
--- a/examples/pipeline/in_to_out/CMakeLists.txt
+++ b/examples/pipeline/in_to_out/CMakeLists.txt
@@ -2,7 +2,7 @@ set(TARGET_NAME pipeline_inout)
 set(SOURCE_FILES in_to_out.cpp)
 
 add_executable(${TARGET_NAME} ${SOURCE_FILES})
-target_link_libraries(${TARGET_NAME} asapo-worker asapo-producer)
+target_link_libraries(${TARGET_NAME} asapo-consumer asapo-producer)
 
 #use expression generator to get rid of VS adding Debug/Release folders
 set_target_properties(${TARGET_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY
diff --git a/examples/pipeline/in_to_out/CMakeLists_separate.in b/examples/pipeline/in_to_out/CMakeLists_separate.in
index 5bcf1c56fc63ba39f0968b4d6f2e4e67279927b6..b4202e55288dbebbbc0435a615677a37ac1c36e7 100644
--- a/examples/pipeline/in_to_out/CMakeLists_separate.in
+++ b/examples/pipeline/in_to_out/CMakeLists_separate.in
@@ -31,4 +31,4 @@ link_directories(@CMAKE_INSTALL_PREFIX@/lib)
 
 add_executable(${TARGET_NAME} ${SOURCE_FILES})
 target_include_directories(${TARGET_NAME} PUBLIC @CMAKE_INSTALL_PREFIX@/include ${CURL_INCLUDE_DIRS})
-target_link_libraries(${TARGET_NAME} asapo-worker ${CURL_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT})
+target_link_libraries(${TARGET_NAME} asapo-consumer ${CURL_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT})
diff --git a/examples/pipeline/in_to_out/Makefile.in b/examples/pipeline/in_to_out/Makefile.in
index ae61c2ed41f2448088fbda0b24b71bd6ba5e7bd6..845611464d7267b11a64603da1a76a188455d297 100644
--- a/examples/pipeline/in_to_out/Makefile.in
+++ b/examples/pipeline/in_to_out/Makefile.in
@@ -3,7 +3,7 @@ PROGRAM=@TARGET_NAME@
 CXX=g++
 CXXFLAGS=-std=c++11
 LDFLAGS=-pthread  -static-libgcc -static-libstdc++
-LIBS=-L @CMAKE_INSTALL_PREFIX@/lib -lasapo-worker -L ${LIBCURL_DIR}/lib -lcurl
+LIBS=-L @CMAKE_INSTALL_PREFIX@/lib -lasapo-consumer -L ${LIBCURL_DIR}/lib -lcurl
 INCLUDE=-I @CMAKE_INSTALL_PREFIX@/include -I ${LIBCURL_DIR}/include
 RM=rm -f
 
diff --git a/examples/pipeline/in_to_out/in_to_out.cpp b/examples/pipeline/in_to_out/in_to_out.cpp
index 02b9f221a57ccae63d69690b6c2ed8e14816e90b..ac2ee3e5c4e899e37b7493d150afce9379b4e9d5 100644
--- a/examples/pipeline/in_to_out/in_to_out.cpp
+++ b/examples/pipeline/in_to_out/in_to_out.cpp
@@ -10,7 +10,7 @@
 #include <string>
 #include <sstream>
 
-#include "asapo_worker.h"
+#include "asapo_consumer.h"
 #include "asapo_producer.h"
 
 using std::chrono::system_clock;
@@ -59,7 +59,7 @@ void WaitConsumerThreadsFinished(std::vector<std::thread>* threads) {
 int ProcessError(const Error& err) {
     if (err == nullptr) return 0;
     std::cout << err->Explain() << std::endl;
-    return err == asapo::WorkerErrorTemplates::kEndOfStream ? 0 : 1;
+    return err == asapo::ConsumerErrorTemplates::kEndOfStream ? 0 : 1;
 }
 
 BrokerPtr CreateBrokerAndGroup(const Args& args, Error* err) {
@@ -149,7 +149,7 @@ std::vector<std::thread> StartConsumerThreads(const Args& args, const ProducerPt
             auto err = ProcessNextEvent(args, broker, producer);
             if (err) {
                 (*errors)[i] += ProcessError(err);
-                if (err == asapo::WorkerErrorTemplates::kEndOfStream) {
+                if (err == asapo::ConsumerErrorTemplates::kEndOfStream) {
                     break;
                 }
             }
diff --git a/examples/pipeline/in_to_out_python/CMakeLists.txt b/examples/pipeline/in_to_out_python/CMakeLists.txt
index 2aecf0dfabbc62f1e29cf62a4e7e966dd8a73e62..c52a878b077c79429ef7a56da9ebcd2ac3e16536 100644
--- a/examples/pipeline/in_to_out_python/CMakeLists.txt
+++ b/examples/pipeline/in_to_out_python/CMakeLists.txt
@@ -3,14 +3,14 @@ set(TARGET_NAME pipeline_inout_python)
 prepare_asapo()
 
 if (UNIX)
-    get_target_property(PYTHON_LIBS_WORKER python-lib2 BINARY_DIR)
+    get_target_property(PYTHON_LIBS_CONSUMER python-lib2 BINARY_DIR)
     get_target_property(PYTHON_LIBS_PRODUCER python-lib2-producer BINARY_DIR)
 else()
-    get_target_property(PYTHON_LIBS_WORKER asapo_worker BINARY_DIR)
+    get_target_property(PYTHON_LIBS_CONSUMER asapo_consumer BINARY_DIR)
     get_target_property(PYTHON_LIBS_PRODUCER asapo_producer BINARY_DIR)
 endif()
 
 file(TO_NATIVE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/in_to_out.py TEST_SCRIPT )
 
-add_script_test("${TARGET_NAME}" "python ${PYTHON_LIBS_WORKER} ${PYTHON_LIBS_PRODUCER} ${TEST_SCRIPT} " nomem)
+add_script_test("${TARGET_NAME}" "python ${PYTHON_LIBS_CONSUMER} ${PYTHON_LIBS_PRODUCER} ${TEST_SCRIPT} " nomem)
 
diff --git a/examples/pipeline/in_to_out_python/in_to_out.py b/examples/pipeline/in_to_out_python/in_to_out.py
index 072e04b35450f548bd0fedc76a9a0c4843287a84..fafa72392de18976de2463a397b2804934ccab69 100644
--- a/examples/pipeline/in_to_out_python/in_to_out.py
+++ b/examples/pipeline/in_to_out_python/in_to_out.py
@@ -1,6 +1,6 @@
 from __future__ import print_function
 
-import asapo_worker
+import asapo_consumer
 import asapo_producer
 import json
 import sys
@@ -41,7 +41,7 @@ timeout_s=int(timeout_s)
 nthreads=int(nthreads)
 transfer_data=int(transfer_data)>0
 
-broker = asapo_worker.create_server_broker(source,path, beamtime,stream_in,token,timeout_s*1000)
+broker = asapo_consumer.create_server_broker(source,path, beamtime,stream_in,token,timeout_s*1000)
 
 producer, err = asapo_producer.create_producer(source,beamtime, stream_out, token, nthreads)
 assert_err(err)
@@ -63,7 +63,7 @@ while True:
         err = producer.send_data(meta['_id'],meta['name']+"_"+stream_out ,data,
                              ingest_mode = ingest_mode, callback = callback)
         assert_err(err)
-    except  asapo_worker.AsapoEndOfStreamError:
+    except  asapo_consumer.AsapoEndOfStreamError:
         break
 
 
diff --git a/receiver/src/receiver_data_server/tcp_server.cpp b/receiver/src/receiver_data_server/tcp_server.cpp
index 5e45ac6698963b6775357ba85e49090336a33595..4a924745f9cab11081790b2b52b2fcb6b6e88776 100644
--- a/receiver/src/receiver_data_server/tcp_server.cpp
+++ b/receiver/src/receiver_data_server/tcp_server.cpp
@@ -95,7 +95,7 @@ Error TcpServer::SendData(uint64_t source_id, void* buf, uint64_t size) const no
     Error err;
     io__->Send(source_id, buf, size, &err);
     if (err) {
-        log__->Error("cannot send to worker" + err->Explain());
+        log__->Error("cannot send to consumer" + err->Explain());
     }
     return err;
 }
diff --git a/sphinx/source/conf.py b/sphinx/source/conf.py
index 7bcf43111ca77b773438b90d1857a8826c1660dc..c7cb69f0c94a93647596a605daa90c3e086fabc3 100644
--- a/sphinx/source/conf.py
+++ b/sphinx/source/conf.py
@@ -19,7 +19,7 @@
 import os
 import sys
 
-sys.path.insert(0, os.path.abspath('../../../worker/api/python'))
+sys.path.insert(0, os.path.abspath('../../../consumer/api/python'))
 sys.path.insert(0, os.path.abspath('../../../producer/api/python'))
 
 
diff --git a/sphinx/source/consumer.rst b/sphinx/source/consumer.rst
index 4bda1c1a0f323091a120ed025b110a4790c7d53b..451c070feb1f6b1c357c06f0027493226ceab1c1 100644
--- a/sphinx/source/consumer.rst
+++ b/sphinx/source/consumer.rst
@@ -3,7 +3,7 @@ Consumer
 ##################
 
 
-.. automodule:: asapo_worker
+.. automodule:: asapo_consumer
    :members:
    :undoc-members:
    :show-inheritance:
diff --git a/tests/automatic/CMakeLists.txt b/tests/automatic/CMakeLists.txt
index ea37ce600f63e9b4fe92fa165313b08a91f9aa11..2f73aa174c687d7ea3102923a9af08b706ad8d85 100644
--- a/tests/automatic/CMakeLists.txt
+++ b/tests/automatic/CMakeLists.txt
@@ -17,7 +17,7 @@ endif()
 
 add_subdirectory(authorizer)
 
-add_subdirectory(worker)
+add_subdirectory(consumer)
 
 add_subdirectory(curl_http_client)
 
diff --git a/tests/automatic/bug_fixes/CMakeLists.txt b/tests/automatic/bug_fixes/CMakeLists.txt
index 6f881e0f1aa18143112861f8e4cc2fb4c454a167..720ea565917838813a4631cf1db4e19cc8f8cc20 100644
--- a/tests/automatic/bug_fixes/CMakeLists.txt
+++ b/tests/automatic/bug_fixes/CMakeLists.txt
@@ -1,6 +1,6 @@
 if (UNIX)
     add_subdirectory(receiver_cpu_usage)
-    add_subdirectory(worker_python_memleak)
+    add_subdirectory(consumer_python_memleak)
 endif()
 
 add_subdirectory(producer_send_after_restart)
\ No newline at end of file
diff --git a/tests/automatic/bug_fixes/worker_python_memleak/CMakeLists.txt b/tests/automatic/bug_fixes/consumer_python_memleak/CMakeLists.txt
similarity index 66%
rename from tests/automatic/bug_fixes/worker_python_memleak/CMakeLists.txt
rename to tests/automatic/bug_fixes/consumer_python_memleak/CMakeLists.txt
index 333fea40e98f9f54801a3d58aa64d8a624e56f87..b139ef5ebdc798d675f3e90f6da10c1b8e2b764f 100644
--- a/tests/automatic/bug_fixes/worker_python_memleak/CMakeLists.txt
+++ b/tests/automatic/bug_fixes/consumer_python_memleak/CMakeLists.txt
@@ -1,4 +1,4 @@
-set(TARGET_NAME worker_python_memleak)
+set(TARGET_NAME consumer_python_memleak)
 
 
 prepare_asapo()
@@ -6,7 +6,7 @@ prepare_asapo()
 if (UNIX)
     get_target_property(PYTHON_LIBS python-lib2 BINARY_DIR)
 else()
-    get_target_property(PYTHON_LIBS asapo_worker BINARY_DIR)
+    get_target_property(PYTHON_LIBS asapo_consumer BINARY_DIR)
 endif()
 
 add_script_test("${TARGET_NAME}" ${PYTHON_LIBS} nomem)
diff --git a/tests/automatic/bug_fixes/worker_python_memleak/check_linux.sh b/tests/automatic/bug_fixes/consumer_python_memleak/check_linux.sh
similarity index 96%
rename from tests/automatic/bug_fixes/worker_python_memleak/check_linux.sh
rename to tests/automatic/bug_fixes/consumer_python_memleak/check_linux.sh
index 747870cd4917556882b172584cb80cf3189a5637..75a7320e5e5d06fa9177c8614f77cbce7964007c 100644
--- a/tests/automatic/bug_fixes/worker_python_memleak/check_linux.sh
+++ b/tests/automatic/bug_fixes/consumer_python_memleak/check_linux.sh
@@ -32,7 +32,7 @@ dd if=/dev/zero of=$fname bs=$size count=1
 
 export PYTHONPATH=$1:${PYTHONPATH}
 
-export PYTHONPATH=/home/yakubov/projects/asapo/cmake-build-debug/worker/api/python:${PYTHONPATH}
+export PYTHONPATH=/home/yakubov/projects/asapo/cmake-build-debug/consumer/api/python:${PYTHONPATH}
 
 
 python memleak.py $endpoint $path $beamtime_id $token &> out &
diff --git a/tests/automatic/bug_fixes/worker_python_memleak/jira_issue.txt b/tests/automatic/bug_fixes/consumer_python_memleak/jira_issue.txt
similarity index 100%
rename from tests/automatic/bug_fixes/worker_python_memleak/jira_issue.txt
rename to tests/automatic/bug_fixes/consumer_python_memleak/jira_issue.txt
diff --git a/tests/automatic/bug_fixes/worker_python_memleak/memleak.py b/tests/automatic/bug_fixes/consumer_python_memleak/memleak.py
similarity index 86%
rename from tests/automatic/bug_fixes/worker_python_memleak/memleak.py
rename to tests/automatic/bug_fixes/consumer_python_memleak/memleak.py
index 59f6b6c9b9c186eb36eefc023d3735283bd98ff8..0ff83df0d938ce8dec651b8a979dd0a78c2643af 100644
--- a/tests/automatic/bug_fixes/worker_python_memleak/memleak.py
+++ b/tests/automatic/bug_fixes/consumer_python_memleak/memleak.py
@@ -1,10 +1,10 @@
-import asapo_worker
+import asapo_consumer
 import time
 import sys
 
 source, path, beamtime, token = sys.argv[1:]
 
-broker = asapo_worker.create_server_broker(
+broker = asapo_consumer.create_server_broker(
     source, path, beamtime, "stream", token, 1000)
 
 group_id  = broker.generate_group_id()
diff --git a/tests/automatic/bug_fixes/producer_send_after_restart/check_windows.bat b/tests/automatic/bug_fixes/producer_send_after_restart/check_windows.bat
index b9bcfd2b526fe57c088edef6ba9d5f0b7004b4e1..5c85570c9514e1011622585f61ffec64ca941111 100644
--- a/tests/automatic/bug_fixes/producer_send_after_restart/check_windows.bat
+++ b/tests/automatic/bug_fixes/producer_send_after_restart/check_windows.bat
@@ -50,7 +50,7 @@ echo hello > c:\tmp\asapo\test_in\test1\file3
 ping 1.0.0.0 -n 10 -w 100 > nul
 
 
-REM worker
+REM consumer
 "%2" %proxy_address% %receiver_folder% %beamtime_id% 2 %token% 3000 1 | findstr /c:"Processed 3 file(s)"  || goto :error
 
 
diff --git a/tests/automatic/worker/CMakeLists.txt b/tests/automatic/consumer/CMakeLists.txt
similarity index 67%
rename from tests/automatic/worker/CMakeLists.txt
rename to tests/automatic/consumer/CMakeLists.txt
index 974f7d72a9828d61a2ebcdb61b5baeee62d52fcb..1d4de1fa0d3a9b724ca3f2ff095b50b371f01052 100644
--- a/tests/automatic/worker/CMakeLists.txt
+++ b/tests/automatic/consumer/CMakeLists.txt
@@ -1,13 +1,13 @@
 CMAKE_MINIMUM_REQUIRED(VERSION 3.7) # needed for fixtures
 
 add_subdirectory(next_multithread_broker)
-add_subdirectory(worker_api)
+add_subdirectory(consumer_api)
 
 if (UNIX OR CMAKE_BUILD_TYPE STREQUAL "Release")
-    add_subdirectory(worker_api_python)
+    add_subdirectory(consumer_api_python)
 endif()
 
-if(BUILD_WORKER_TOOLS)
+if(BUILD_CONSUMER_TOOLS)
     add_subdirectory(folder_to_db)
 endif()
 
diff --git a/tests/automatic/worker/worker_api/CMakeLists.txt b/tests/automatic/consumer/consumer_api/CMakeLists.txt
similarity index 70%
rename from tests/automatic/worker/worker_api/CMakeLists.txt
rename to tests/automatic/consumer/consumer_api/CMakeLists.txt
index ddef8469695638d686ba469c7317b31ebd92cff9..f31804954685641b614a0ac0c8f38d53f2a984ca 100644
--- a/tests/automatic/worker/worker_api/CMakeLists.txt
+++ b/tests/automatic/consumer/consumer_api/CMakeLists.txt
@@ -1,12 +1,12 @@
-set(TARGET_NAME worker_api)
-set(SOURCE_FILES worker_api.cpp)
+set(TARGET_NAME consumer_api)
+set(SOURCE_FILES consumer_api.cpp)
 
 
 ################################
 # Executable and link
 ################################
 add_executable(${TARGET_NAME} ${SOURCE_FILES})
-target_link_libraries(${TARGET_NAME} test_common asapo-worker)
+target_link_libraries(${TARGET_NAME} test_common asapo-consumer)
 
 ################################
 # Testing
diff --git a/tests/automatic/worker/worker_api/check_linux.sh b/tests/automatic/consumer/consumer_api/check_linux.sh
similarity index 100%
rename from tests/automatic/worker/worker_api/check_linux.sh
rename to tests/automatic/consumer/consumer_api/check_linux.sh
diff --git a/tests/automatic/worker/worker_api/check_windows.bat b/tests/automatic/consumer/consumer_api/check_windows.bat
similarity index 100%
rename from tests/automatic/worker/worker_api/check_windows.bat
rename to tests/automatic/consumer/consumer_api/check_windows.bat
diff --git a/tests/automatic/worker/worker_api/worker_api.cpp b/tests/automatic/consumer/consumer_api/consumer_api.cpp
similarity index 95%
rename from tests/automatic/worker/worker_api/worker_api.cpp
rename to tests/automatic/consumer/consumer_api/consumer_api.cpp
index 35d5650753a969c1ad69d2120f073221f9faf183..5ce5b98e141182318ef73174d061179a43772e80 100644
--- a/tests/automatic/worker/worker_api/worker_api.cpp
+++ b/tests/automatic/consumer/consumer_api/consumer_api.cpp
@@ -2,7 +2,8 @@
 #include <vector>
 #include <thread>
 #include <algorithm>
-#include "worker/data_broker.h"
+#include <asapo_consumer.h>
+#include "consumer/data_broker.h"
 #include "testing.h"
 
 using asapo::M_AssertEq;
@@ -54,7 +55,10 @@ void TestSingle(const std::unique_ptr<asapo::DataBroker>& broker, const std::str
     M_AssertTrue(fi.metadata == "{\"test\":10}", "GetLast metadata");
 
     err = broker->GetNext(&fi, group_id, nullptr);
-    M_AssertTrue(err != nullptr, "GetNext2 error");
+    M_AssertTrue(err == asapo::ConsumerErrorTemplates::kEndOfStream, "GetNext2 error");
+    auto error_data = static_cast<const asapo::ConsumerErrorData*>(err->GetCustomData());
+    M_AssertTrue(error_data->id_max == 10, "GetNext2 id max");
+
 
     err = broker->SetLastReadMarker(2, group_id);
     M_AssertTrue(err == nullptr, "SetLastReadMarker no error");
diff --git a/tests/automatic/worker/worker_api_python/CMakeLists.txt b/tests/automatic/consumer/consumer_api_python/CMakeLists.txt
similarity index 50%
rename from tests/automatic/worker/worker_api_python/CMakeLists.txt
rename to tests/automatic/consumer/consumer_api_python/CMakeLists.txt
index 7e6342c6f157ec21ef186c1d0a8b15873d978e0e..02e91a3f390528430184f56f349813025b4a09d6 100644
--- a/tests/automatic/worker/worker_api_python/CMakeLists.txt
+++ b/tests/automatic/consumer/consumer_api_python/CMakeLists.txt
@@ -1,4 +1,4 @@
-set(TARGET_NAME worker_api_python)
+set(TARGET_NAME consumer_api_python)
 
 
 prepare_asapo()
@@ -6,9 +6,9 @@ prepare_asapo()
 if (UNIX)
     get_target_property(PYTHON_LIBS python-lib2 BINARY_DIR)
 else()
-    get_target_property(PYTHON_LIBS asapo_worker BINARY_DIR)
+    get_target_property(PYTHON_LIBS asapo_consumer BINARY_DIR)
 endif()
 
 add_script_test("${TARGET_NAME}" ${PYTHON_LIBS} nomem)
-configure_file(worker_api.py worker_api.py COPYONLY)
+configure_file(consumer_api.py consumer_api.py COPYONLY)
 
diff --git a/tests/automatic/worker/worker_api_python/check_linux.sh b/tests/automatic/consumer/consumer_api_python/check_linux.sh
similarity index 85%
rename from tests/automatic/worker/worker_api_python/check_linux.sh
rename to tests/automatic/consumer/consumer_api_python/check_linux.sh
index c8a409864fa55f7b1e23eaea6fc400a31f60fe37..2851220aaefacaf8378080f8fd2b055ccc5c2f58 100644
--- a/tests/automatic/worker/worker_api_python/check_linux.sh
+++ b/tests/automatic/consumer/consumer_api_python/check_linux.sh
@@ -37,7 +37,7 @@ sleep 1
 
 export PYTHONPATH=$1:${PYTHONPATH}
 
-python worker_api.py 127.0.0.1:8400 $source_path $beamtime_id $token_test_run single
+python consumer_api.py 127.0.0.1:8400 $source_path $beamtime_id $token_test_run single
 
 
 #check datasets
@@ -57,4 +57,4 @@ do
 done
 
 
-python worker_api.py 127.0.0.1:8400 $source_path $beamtime_id $token_test_run datasets
+python consumer_api.py 127.0.0.1:8400 $source_path $beamtime_id $token_test_run datasets
diff --git a/tests/automatic/worker/worker_api_python/check_windows.bat b/tests/automatic/consumer/consumer_api_python/check_windows.bat
similarity index 85%
rename from tests/automatic/worker/worker_api_python/check_windows.bat
rename to tests/automatic/consumer/consumer_api_python/check_windows.bat
index fdb572831ee2fda48eec8eb38eae30d1aa7bacc5..8e41ab16c826198968f4603748f9ae3dda69aa09 100644
--- a/tests/automatic/worker/worker_api_python/check_windows.bat
+++ b/tests/automatic/consumer/consumer_api_python/check_windows.bat
@@ -21,13 +21,13 @@ echo hello1 > 1
 echo hello1 > 1_1
 
 
-python worker_api.py 127.0.0.1:8400 %source_path% %beamtime_id%  %token_test_run%  single || goto :error
+python consumer_api.py 127.0.0.1:8400 %source_path% %beamtime_id%  %token_test_run%  single || goto :error
 
 echo db.dropDatabase() | %mongo_exe% %database_name%
 
 for /l %%x in (1, 1, 10) do echo db.data.insert({"_id":%%x,"size":3,"images":[{"_id":1, "size":6,"name":"%%x_1","lastchange":1,"source":"none","buf_id":0,"meta":{"test":10}},{"_id":2, "size":6,"name":"%%x_2","lastchange":1,"source":"none","buf_id":0,"meta":{"test":10}},{"_id":3, "size":6,"name":"%%x_3","lastchange":1,"source":"none","buf_id":0,"meta":{"test":10}}]}) | %mongo_exe% %database_name%  || goto :error
 
-python worker_api.py 127.0.0.1:8400 %source_path% %beamtime_id%  %token_test_run% datasets || goto :error
+python consumer_api.py 127.0.0.1:8400 %source_path% %beamtime_id%  %token_test_run% datasets || goto :error
 
 
 goto :clean
diff --git a/tests/automatic/worker/worker_api_python/worker_api.py b/tests/automatic/consumer/consumer_api_python/consumer_api.py
similarity index 95%
rename from tests/automatic/worker/worker_api_python/worker_api.py
rename to tests/automatic/consumer/consumer_api_python/consumer_api.py
index 78966927662487a849683ee101eb67df8d58fbc9..dcbf21bd35406ee694796e9baed776f76c125abb 100644
--- a/tests/automatic/worker/worker_api_python/worker_api.py
+++ b/tests/automatic/consumer/consumer_api_python/consumer_api.py
@@ -1,6 +1,6 @@
 from __future__ import print_function
 
-import asapo_worker
+import asapo_consumer
 import json
 import sys
 
@@ -123,7 +123,8 @@ def check_dataset(broker,group_id_new):
 
     try:
         id, metas = broker.get_next_dataset(group_id_new)
-    except:
+    except asapo_consumer.AsapoEndOfStreamError as err:
+        assert_eq(err.id_max,10,"get_next_dataset3 id_max")
         pass
     else:
         exit_on_noerr("get_next_dataset3 err")
@@ -141,7 +142,7 @@ def check_dataset(broker,group_id_new):
 
 source, path, beamtime, token, mode = sys.argv[1:]
 
-broker = asapo_worker.create_server_broker(source,path, beamtime,"",token,1000)
+broker = asapo_consumer.create_server_broker(source,path, beamtime,"",token,1000)
 
 group_id_new = broker.generate_group_id()
 
diff --git a/tests/automatic/worker/folder_to_db/CMakeLists.txt b/tests/automatic/consumer/folder_to_db/CMakeLists.txt
similarity index 100%
rename from tests/automatic/worker/folder_to_db/CMakeLists.txt
rename to tests/automatic/consumer/folder_to_db/CMakeLists.txt
diff --git a/tests/automatic/worker/folder_to_db/check_linux.sh b/tests/automatic/consumer/folder_to_db/check_linux.sh
similarity index 100%
rename from tests/automatic/worker/folder_to_db/check_linux.sh
rename to tests/automatic/consumer/folder_to_db/check_linux.sh
diff --git a/tests/automatic/worker/folder_to_db/check_windows.bat b/tests/automatic/consumer/folder_to_db/check_windows.bat
similarity index 100%
rename from tests/automatic/worker/folder_to_db/check_windows.bat
rename to tests/automatic/consumer/folder_to_db/check_windows.bat
diff --git a/tests/automatic/worker/next_multithread_broker/CMakeLists.txt b/tests/automatic/consumer/next_multithread_broker/CMakeLists.txt
similarity index 85%
rename from tests/automatic/worker/next_multithread_broker/CMakeLists.txt
rename to tests/automatic/consumer/next_multithread_broker/CMakeLists.txt
index 69750c8f47ce37a2e8e7b4a5adccd022a6373328..6e0ef20c094b35d6b80e5cb4c422b29386bfe577 100644
--- a/tests/automatic/worker/next_multithread_broker/CMakeLists.txt
+++ b/tests/automatic/consumer/next_multithread_broker/CMakeLists.txt
@@ -6,7 +6,7 @@ set(SOURCE_FILES next_multithread_broker.cpp)
 # Executable and link
 ################################
 add_executable(${TARGET_NAME} ${SOURCE_FILES})
-target_link_libraries(${TARGET_NAME} test_common asapo-worker)
+target_link_libraries(${TARGET_NAME} test_common asapo-consumer)
 
 ################################
 # Testing
diff --git a/tests/automatic/worker/next_multithread_broker/check_linux.sh b/tests/automatic/consumer/next_multithread_broker/check_linux.sh
similarity index 100%
rename from tests/automatic/worker/next_multithread_broker/check_linux.sh
rename to tests/automatic/consumer/next_multithread_broker/check_linux.sh
diff --git a/tests/automatic/worker/next_multithread_broker/check_windows.bat b/tests/automatic/consumer/next_multithread_broker/check_windows.bat
similarity index 100%
rename from tests/automatic/worker/next_multithread_broker/check_windows.bat
rename to tests/automatic/consumer/next_multithread_broker/check_windows.bat
diff --git a/tests/automatic/worker/next_multithread_broker/next_multithread_broker.cpp b/tests/automatic/consumer/next_multithread_broker/next_multithread_broker.cpp
similarity index 98%
rename from tests/automatic/worker/next_multithread_broker/next_multithread_broker.cpp
rename to tests/automatic/consumer/next_multithread_broker/next_multithread_broker.cpp
index 54291d7fc64c59b09bdfe13e5b6c9121684663b0..021507b53b8519ee2f354038b1d0a3fd2b00ca26 100644
--- a/tests/automatic/worker/next_multithread_broker/next_multithread_broker.cpp
+++ b/tests/automatic/consumer/next_multithread_broker/next_multithread_broker.cpp
@@ -2,7 +2,7 @@
 #include <vector>
 #include <thread>
 #include <algorithm>
-#include "worker/data_broker.h"
+#include "consumer/data_broker.h"
 #include "testing.h"
 
 using asapo::M_AssertEq;
diff --git a/tests/automatic/curl_http_client/curl_http_client_command/CMakeLists.txt b/tests/automatic/curl_http_client/curl_http_client_command/CMakeLists.txt
index c52597f1ba80ad0367cdef0a9df3bf7b31f8abcd..94651979681b9fb6c0f2d4a577d5c307d6fd5fca 100644
--- a/tests/automatic/curl_http_client/curl_http_client_command/CMakeLists.txt
+++ b/tests/automatic/curl_http_client/curl_http_client_command/CMakeLists.txt
@@ -6,7 +6,7 @@ set(SOURCE_FILES curl_httpclient_command.cpp)
 # Executable and link
 ################################
 add_executable(${TARGET_NAME} ${SOURCE_FILES})
-target_link_libraries(${TARGET_NAME} test_common asapo-worker)
+target_link_libraries(${TARGET_NAME} test_common asapo-consumer)
 
 #set_target_properties(${TARGET_NAME} PROPERTIES LINKER_LANGUAGE CXX)
 #if (CMAKE_COMPILER_IS_GNUCXX)
diff --git a/tests/automatic/curl_http_client/curl_http_client_command/curl_httpclient_command.cpp b/tests/automatic/curl_http_client/curl_http_client_command/curl_httpclient_command.cpp
index e77a9024d6d66ed1fe8c6567e82d7b2e59abbc3c..8fb1df7623077f4f0644fd0135bde61f85184906 100644
--- a/tests/automatic/curl_http_client/curl_http_client_command/curl_httpclient_command.cpp
+++ b/tests/automatic/curl_http_client/curl_http_client_command/curl_httpclient_command.cpp
@@ -1,8 +1,8 @@
 #include <iostream>
 #include <vector>
-#include "worker/data_broker.h"
+#include "consumer/data_broker.h"
 #include "testing.h"
-#include "../../../worker/api/cpp/src/server_data_broker.h"
+#include "../../../consumer/api/cpp/src/server_data_broker.h"
 
 using asapo::M_AssertEq;
 using asapo::M_AssertContains;
diff --git a/tests/automatic/full_chain/simple_chain/check_windows.bat b/tests/automatic/full_chain/simple_chain/check_windows.bat
index 4e1959e26946825bfe83a72e468adcba39c1018a..06292ee28b6f3f5afd8a387802837d11e49192b3 100644
--- a/tests/automatic/full_chain/simple_chain/check_windows.bat
+++ b/tests/automatic/full_chain/simple_chain/check_windows.bat
@@ -25,7 +25,7 @@ mkdir %receiver_folder%
 start /B "" "%1" %proxy_address% %beamtime_id% 100 1000 4 0 100
 ping 1.0.0.0 -n 1 -w 100 > nul
 
-REM worker
+REM consumer
 "%2" %proxy_address% %receiver_folder% %beamtime_id% 2 %token% 5000  1 > out.txt
 type out.txt
 findstr /i /l /c:"Processed 1000 file(s)"  out.txt || goto :error
diff --git a/tests/automatic/full_chain/simple_chain_dataset/check_windows.bat b/tests/automatic/full_chain/simple_chain_dataset/check_windows.bat
index 5df75776f5c10e3f84e4299faac4e238af162750..0d49c33bc160562575b619e2669e630fda1aefba 100644
--- a/tests/automatic/full_chain/simple_chain_dataset/check_windows.bat
+++ b/tests/automatic/full_chain/simple_chain_dataset/check_windows.bat
@@ -25,7 +25,7 @@ mkdir %receiver_folder%
 start /B "" "%1" %proxy_address% %beamtime_id% 100 100 4 0 100 5
 ping 1.0.0.0 -n 1 -w 100 > nul
 
-REM worker
+REM consumer
 "%2" %proxy_address% %receiver_folder% %beamtime_id% 2 %token% 5000 1 1 > out.txt
 type out.txt
 findstr /i /l /c:"Processed 100 dataset(s)"  out.txt || goto :error
diff --git a/tests/automatic/full_chain/simple_chain_filegen/check_windows.bat b/tests/automatic/full_chain/simple_chain_filegen/check_windows.bat
index 26c82bfe9eb3dd09c4ab264bc97b68e91fe7e7f4..370b73d063067c5d509f5c33ed847c99366ca44e 100644
--- a/tests/automatic/full_chain/simple_chain_filegen/check_windows.bat
+++ b/tests/automatic/full_chain/simple_chain_filegen/check_windows.bat
@@ -39,7 +39,7 @@ echo hello > c:\tmp\asapo\test_in\test2\file2
 ping 1.0.0.0 -n 10 -w 100 > nul
 
 
-REM worker
+REM consumer
 "%2" %proxy_address% %receiver_folder% %beamtime_id% 2 %token% 1000  1 > out.txt
 type out.txt
 findstr /i /l /c:"Processed 3 file(s)"  out.txt || goto :error
diff --git a/tests/automatic/full_chain/simple_chain_filegen_batches/check_windows.bat b/tests/automatic/full_chain/simple_chain_filegen_batches/check_windows.bat
index 110f3fd0b5c3998f0a3802de8a5c79049d6b15e9..0c61e42c6deba79dba564c82283d73ae450d79d6 100644
--- a/tests/automatic/full_chain/simple_chain_filegen_batches/check_windows.bat
+++ b/tests/automatic/full_chain/simple_chain_filegen_batches/check_windows.bat
@@ -39,7 +39,7 @@ echo hello > c:\tmp\asapo\test_in\test2\file2
 ping 1.0.0.0 -n 10 -w 100 > nul
 
 
-REM worker
+REM consumer
 "%2" %proxy_address% %receiver_folder% %beamtime_id% 2 %token% 1000 1 1 > out.txt
 type out.txt
 findstr /i /l /c:"Processed 1 dataset(s)"  out.txt || goto :error
diff --git a/tests/automatic/full_chain/simple_chain_filegen_multisource/check_windows.bat b/tests/automatic/full_chain/simple_chain_filegen_multisource/check_windows.bat
index 8afceea409cc0f4141b6a1c2c22faeff58ac63c5..10a8fdc571dc2dc8649a7bb171ed8741a38357f4 100644
--- a/tests/automatic/full_chain/simple_chain_filegen_multisource/check_windows.bat
+++ b/tests/automatic/full_chain/simple_chain_filegen_multisource/check_windows.bat
@@ -45,7 +45,7 @@ echo hello > c:\tmp\asapo\test_in\test2\file2
 ping 1.0.0.0 -n 10 -w 100 > nul
 
 
-REM worker
+REM consumer
 "%2" %proxy_address% %receiver_folder% %beamtime_id% 2 %token% 1000 1 1 > out.txt
 type out.txt
 findstr /i /l /c:"Processed 2 dataset(s)"  out.txt || goto :error
diff --git a/tests/automatic/full_chain/simple_chain_filegen_readdata_cache/check_windows.bat b/tests/automatic/full_chain/simple_chain_filegen_readdata_cache/check_windows.bat
index c72e4822c04055731432675c11b9b424513e750a..f83190aa8ec10646c0166c6aa4dd5894d50e5259 100644
--- a/tests/automatic/full_chain/simple_chain_filegen_readdata_cache/check_windows.bat
+++ b/tests/automatic/full_chain/simple_chain_filegen_readdata_cache/check_windows.bat
@@ -39,7 +39,7 @@ echo hello3 > c:\tmp\asapo\test_in\test2\file2
 ping 1.0.0.0 -n 10 -w 100 > nul
 
 
-REM worker
+REM consumer
 "%2" %proxy_address%  %receiver_folder% %beamtime_id% 2 %token% 1000 0 > out.txt
 type out.txt
 findstr /i /l /c:"Processed 3 file(s)" out.txt || goto :error
diff --git a/tests/automatic/full_chain/simple_chain_filegen_readdata_file/check_windows.bat b/tests/automatic/full_chain/simple_chain_filegen_readdata_file/check_windows.bat
index 34affc93cfd7026fb2866cbe75bc4dbed19cbfe6..b26d2359f225daf36464d3c8ed0f4396b3893c6a 100644
--- a/tests/automatic/full_chain/simple_chain_filegen_readdata_file/check_windows.bat
+++ b/tests/automatic/full_chain/simple_chain_filegen_readdata_file/check_windows.bat
@@ -39,7 +39,7 @@ echo hello3 > c:\tmp\asapo\test_in\test2\file2
 ping 1.0.0.0 -n 10 -w 100 > nul
 
 
-REM worker
+REM consumer
 "%2" %proxy_address% %receiver_folder% %beamtime_id% 2 %token% 1000 0 > out.txt
 type out.txt
 findstr /i /l /c:"Processed 3 file(s)" out.txt || goto :error
diff --git a/tests/automatic/full_chain/simple_chain_metadata/check_windows.bat b/tests/automatic/full_chain/simple_chain_metadata/check_windows.bat
index 3601898833ca4505a90f6248c803da60ce704db4..e6256f932f03fefb4399e259934220c74298b09f 100644
--- a/tests/automatic/full_chain/simple_chain_metadata/check_windows.bat
+++ b/tests/automatic/full_chain/simple_chain_metadata/check_windows.bat
@@ -24,7 +24,7 @@ REM producer
 mkdir %receiver_folder%
 "%1" %proxy_address% %beamtime_id% 100 0 1 0 100
 
-REM worker
+REM consumer
 "%2" %proxy_address% %receiver_folder% %beamtime_id% 2 %token% 0  1 > out.txt
 type out.txt
 findstr /i /l /c:"dummy_meta"  out.txt || goto :error
diff --git a/tests/automatic/full_chain/simple_chain_usermeta_python/CMakeLists.txt b/tests/automatic/full_chain/simple_chain_usermeta_python/CMakeLists.txt
index e11f1a5e978ed7649333954ca20860c58bc825f0..abb01d4f6cce9ed9c9e31682177cc82a720c5257 100644
--- a/tests/automatic/full_chain/simple_chain_usermeta_python/CMakeLists.txt
+++ b/tests/automatic/full_chain/simple_chain_usermeta_python/CMakeLists.txt
@@ -8,7 +8,7 @@ prepare_asapo()
 if (UNIX)
     get_target_property(PYTHON_LIBS python-lib2 BINARY_DIR)
 else()
-    get_target_property(PYTHON_LIBS asapo_worker BINARY_DIR)
+    get_target_property(PYTHON_LIBS asapo_consumer BINARY_DIR)
 endif()
 
 
diff --git a/tests/automatic/full_chain/simple_chain_usermeta_python/check_windows.bat b/tests/automatic/full_chain/simple_chain_usermeta_python/check_windows.bat
index a913528261b2df19797207e9f2d492d98db93f7e..c136540637c036254f993b0b8769afe801672bcf 100644
--- a/tests/automatic/full_chain/simple_chain_usermeta_python/check_windows.bat
+++ b/tests/automatic/full_chain/simple_chain_usermeta_python/check_windows.bat
@@ -24,7 +24,7 @@ REM producer
 mkdir %receiver_folder%
 "%1" %proxy_address% %beamtime_id% 100 100 4 0 100
 
-REM worker
+REM consumer
 set PYTHONPATH=%4
 
 python3 %3/get_user_meta.py %proxy_address%  %receiver_folder% %beamtime_id%  %token% new > out
diff --git a/tests/automatic/full_chain/simple_chain_usermeta_python/get_user_meta.py b/tests/automatic/full_chain/simple_chain_usermeta_python/get_user_meta.py
index 52d557fba5746f534c1f432c247267f83da45349..af8730388987c3e4d6357da00c332c82a33e2b50 100644
--- a/tests/automatic/full_chain/simple_chain_usermeta_python/get_user_meta.py
+++ b/tests/automatic/full_chain/simple_chain_usermeta_python/get_user_meta.py
@@ -1,12 +1,12 @@
 from __future__ import print_function
 
-import asapo_worker
+import asapo_consumer
 import json
 import sys
 
 source, path, beamtime, token, group_id = sys.argv[1:]
 
-broker = asapo_worker.create_server_broker(source,path, beamtime,"",token,1000)
+broker = asapo_consumer.create_server_broker(source,path, beamtime,"",token,1000)
 
 images = broker.query_images("meta.user_meta regexp 'test*' order by _id")
 
diff --git a/tests/automatic/full_chain/two_beamlines/check_linux.sh b/tests/automatic/full_chain/two_beamlines/check_linux.sh
index 2bc02dff355baa00183e0808938f2dd4185b0bf0..6fb9fd9181cefd28a9c1a9cd3397a3f06e58dc8f 100644
--- a/tests/automatic/full_chain/two_beamlines/check_linux.sh
+++ b/tests/automatic/full_chain/two_beamlines/check_linux.sh
@@ -53,6 +53,6 @@ $1 localhost:8400 ${beamtime_id1} 100 1000 4 0 100 &
 $1 localhost:8400 ${beamtime_id2} 100 900 4 0 100 &
 #producerid=`echo $!`
 
-#workers
+#consumers
 $2 ${proxy_address} ${receiver_folder1} ${beamtime_id1} 2 $token1 10000 0  | tee /dev/stderr | grep "Processed 1000 file(s)"
 $2 ${proxy_address} ${receiver_folder2} ${beamtime_id2} 2 $token2 10000 0 | tee /dev/stderr | grep "Processed 900 file(s)"
diff --git a/tests/automatic/full_chain/two_beamlines/check_windows.bat b/tests/automatic/full_chain/two_beamlines/check_windows.bat
index 26799acadf9dc0e458aad7669d2c9bf493282737..e70e50f841e89e11b5c04b2266522f4266968c60 100644
--- a/tests/automatic/full_chain/two_beamlines/check_windows.bat
+++ b/tests/automatic/full_chain/two_beamlines/check_windows.bat
@@ -35,7 +35,7 @@ start /B "" "%1" %proxy_address% %beamtime_id1% 100 1000 4 0 100
 start /B "" "%1" %proxy_address% %beamtime_id2% 100 900 4 0 100
 ping 1.0.0.0 -n 1 -w 100 > nul
 
-REM worker
+REM consumer
 "%2" %proxy_address% %receiver_folder1% %beamtime_id1% 2 %token1% 10000  0 > out1.txt
 type out1.txt
 findstr /i /l /c:"Processed 1000 file(s)"  out1.txt || goto :error
diff --git a/tests/automatic/full_chain/two_streams/check_linux.sh b/tests/automatic/full_chain/two_streams/check_linux.sh
index 060821551fde1c99de68a595d8eb62b3442c90ec..a1a6153efd0cfd027b4aaa5f2eb4369f5bd9e54d 100644
--- a/tests/automatic/full_chain/two_streams/check_linux.sh
+++ b/tests/automatic/full_chain/two_streams/check_linux.sh
@@ -46,6 +46,6 @@ $1 localhost:8400 ${beamtime_id}%${stream1} 100 1000 4 0 100 &
 $1 localhost:8400 ${beamtime_id}%${stream2} 100 900 4 0 100 &
 
 
-#workers
+#consumers
 $2 ${proxy_address} ${receiver_folder} ${beamtime_id}%${stream1} 2 $token 10000 0  | tee /dev/stderr | grep "Processed 1000 file(s)"
 $2 ${proxy_address} ${receiver_folder} ${beamtime_id}%${stream2} 2 $token 10000 0 | tee /dev/stderr | grep "Processed 900 file(s)"
diff --git a/tests/automatic/full_chain/two_streams/check_windows.bat b/tests/automatic/full_chain/two_streams/check_windows.bat
index 9ab2ceffa343be1308f80e7b3a3d02c53e85b424..3bc90da7c238d441e0099d55dc063151e3ae51d9 100644
--- a/tests/automatic/full_chain/two_streams/check_windows.bat
+++ b/tests/automatic/full_chain/two_streams/check_windows.bat
@@ -30,7 +30,7 @@ start /B "" "%1" %proxy_address% %beamtime_id%%%%stream1% 100 1000 4 0 100
 start /B "" "%1" %proxy_address% %beamtime_id%%%%stream2% 100 900 4 0 100
 ping 1.0.0.0 -n 1 -w 100 > nul
 
-REM worker
+REM consumer
 "%2" %proxy_address% %receiver_folder% %beamtime_id%%%%stream1% 2 %token% 10000  0 > out1.txt
 type out1.txt
 findstr /i /l /c:"Processed 1000 file(s)"  out1.txt || goto :error
diff --git a/tests/automatic/high_avail/receiver_mongo_restart/check_linux.sh b/tests/automatic/high_avail/receiver_mongo_restart/check_linux.sh
index f8f9a763921735a77136281a3021d4b8e0b91b46..93204f1016010d698793b8afc7323a1b761142ab 100644
--- a/tests/automatic/high_avail/receiver_mongo_restart/check_linux.sh
+++ b/tests/automatic/high_avail/receiver_mongo_restart/check_linux.sh
@@ -51,7 +51,7 @@ start_mongo
 wait_mongo
 
 
-# create db before worker starts reading it. todo: git rid of it
+# create db before consumer starts reading it. todo: git rid of it
 echo "db.${beamtime_id}_detector.insert({dummy:1})" | mongo --port 27016 ${beamtime_id}_detector
 
 sed -i 's/27017/27016/g' discovery.json.tpl
diff --git a/tests/automatic/high_avail/services_restart/check_linux.sh b/tests/automatic/high_avail/services_restart/check_linux.sh
index c68d798463f82ea41c5c86a90061a6d203db8330..f295356e92aa5ef4e07ff04ffcadc251b8b628e0 100644
--- a/tests/automatic/high_avail/services_restart/check_linux.sh
+++ b/tests/automatic/high_avail/services_restart/check_linux.sh
@@ -42,7 +42,7 @@ $1 localhost:8400 ${beamtime_id} 100 $5 4 0 100 &
 #producerid=`echo $!`
 
 
-#worker
+#consumer
 $2 ${proxy_address} dummy_path ${beamtime_id} 2 $token 30000 1 &> output.txt &
 
 sleep 1
diff --git a/tests/automatic/json_parser/parse_config_file/CMakeLists.txt b/tests/automatic/json_parser/parse_config_file/CMakeLists.txt
index 10872462b4280234addbc9d7c48367b0d4b4d0f1..371e3517e54c3ee15b21f7de27be7205a0a67809 100644
--- a/tests/automatic/json_parser/parse_config_file/CMakeLists.txt
+++ b/tests/automatic/json_parser/parse_config_file/CMakeLists.txt
@@ -6,7 +6,7 @@ set(SOURCE_FILES parse_config_file.cpp)
 # Executable and link
 ################################
 add_executable(${TARGET_NAME} ${SOURCE_FILES})
-target_link_libraries(${TARGET_NAME} test_common asapo-worker)
+target_link_libraries(${TARGET_NAME} test_common asapo-consumer)
 target_include_directories(${TARGET_NAME} PUBLIC ${ASAPO_CXX_COMMON_INCLUDE_DIR})
 
 ################################
diff --git a/tests/automatic/producer_receiver/transfer_datasets/check_linux.sh b/tests/automatic/producer_receiver/transfer_datasets/check_linux.sh
index 0d3c46ef044b59b1be9409b80d9e95480b11ee08..8e7bde41349fe78330d12c13c72d5021d536962b 100644
--- a/tests/automatic/producer_receiver/transfer_datasets/check_linux.sh
+++ b/tests/automatic/producer_receiver/transfer_datasets/check_linux.sh
@@ -24,7 +24,7 @@ Cleanup() {
 echo "db.dropDatabase()" | mongo ${beamtime_id}_detector
 
 
-# create db before worker starts reading it. todo: git rid of it
+# create db before consumer starts reading it. todo: git rid of it
 echo "db.${beamtime_id}_detector.insert({dummy:1})" | mongo ${beamtime_id}_detector
 
 nomad run authorizer.nmd
diff --git a/tests/automatic/producer_receiver/transfer_single_file/check_linux.sh b/tests/automatic/producer_receiver/transfer_single_file/check_linux.sh
index 2b44d752171c64de9df817f8015fd3fce0171f21..4f14e3c3a3d7842480a7d0a263512f381aefa6ae 100644
--- a/tests/automatic/producer_receiver/transfer_single_file/check_linux.sh
+++ b/tests/automatic/producer_receiver/transfer_single_file/check_linux.sh
@@ -21,7 +21,7 @@ Cleanup() {
     influx -execute "drop database ${database_name}"
 }
 
-# create db before worker starts reading it. todo: git rid of it
+# create db before consumer starts reading it. todo: git rid of it
 echo "db.${beamtime_id}_detector.insert({dummy:1})" | mongo ${beamtime_id}_detector
 
 nomad run authorizer.nmd
diff --git a/tests/manual/performance_broker/test.sh b/tests/manual/performance_broker/test.sh
index d1685e15ec3e78b8a0265ecb03096520d87c04e5..1091938f10fcb0e655306e4cbe1a5e36450a81b2 100755
--- a/tests/manual/performance_broker/test.sh
+++ b/tests/manual/performance_broker/test.sh
@@ -2,7 +2,7 @@
 
 # starts broker, mongodb on $service_node
 # reads fileset into database
-# calls getnext_broker example from $worker_node
+# calls getnext_broker example from $consumer_node
 
 nthreads=1
 # a directory with many files in it
@@ -15,10 +15,10 @@ service_node=max-wgs
 monitor_node=zitpcx27016
 monitor_port=8086
 
-worker_node=max-display
-#worker_node=max-wgs
+consumer_node=max-display
+#consumer_node=max-wgs
 
-worker_dir=~/broker_test
+consumer_dir=~/broker_test
 service_dir=~/broker_test
 
 
@@ -33,7 +33,7 @@ ssh ${service_node} docker run -d -p 27017:27017 --name mongo mongo
 #ssh ${service_node} docker run -d -p 8086 -p 8086 --name influxdb influxdb
 
 ssh ${service_node} mkdir -p ${service_dir}
-ssh ${worker_node} mkdir -p ${worker_dir}
+ssh ${consumer_node} mkdir -p ${consumer_dir}
 
 
 scp ../../../cmake-build-release/discovery/asapo-discovery ${service_node}:${service_dir}
@@ -53,13 +53,13 @@ rm settings_tmp.json
 scp ../../../cmake-build-release/broker/asapo-broker ${service_node}:${service_dir}
 ssh ${service_node} "bash -c 'cd ${service_dir}; nohup ./asapo-broker -config settings.json &> ${service_dir}/broker.log &'"
 sleep 0.3
-scp ../../../cmake-build-release/worker/tools/folder_to_db/folder2db ${worker_node}:${worker_dir}
-ssh ${worker_node} ${worker_dir}/folder2db -n ${nthreads} ${dir} ${run_name} ${service_node}
+scp ../../../cmake-build-release/consumer/tools/folder_to_db/folder2db ${consumer_node}:${consumer_dir}
+ssh ${consumer_node} ${consumer_dir}/folder2db -n ${nthreads} ${dir} ${run_name} ${service_node}
 
 sleep 3
 
-scp ../../../cmake-build-release/examples/worker/getnext_broker/getnext_broker ${worker_node}:${worker_dir}
-ssh ${worker_node} ${worker_dir}/getnext_broker ${service_node}:8400 ${run_name} ${nthreads} $token
+scp ../../../cmake-build-release/examples/consumer/getnext_broker/getnext_broker ${consumer_node}:${consumer_dir}
+ssh ${consumer_node} ${consumer_dir}/getnext_broker ${service_node}:8400 ${run_name} ${nthreads} $token
 
 
 
diff --git a/tests/manual/performance_broker_receiver/CMakeLists.txt b/tests/manual/performance_broker_receiver/CMakeLists.txt
index 40714bf99702539d450e5245c8d3bae8a9f6e2cd..aee1d949e531283ba228feb2206593f37738e04d 100644
--- a/tests/manual/performance_broker_receiver/CMakeLists.txt
+++ b/tests/manual/performance_broker_receiver/CMakeLists.txt
@@ -3,7 +3,7 @@ set(SOURCE_FILES getlast_broker.cpp)
 
 
 add_executable(${TARGET_NAME} ${SOURCE_FILES})
-target_link_libraries(${TARGET_NAME} asapo-worker)
+target_link_libraries(${TARGET_NAME} asapo-consumer)
 
 #use expression generator to get rid of VS adding Debug/Release folders
 set_target_properties(${TARGET_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY
diff --git a/tests/manual/performance_broker_receiver/getlast_broker.cpp b/tests/manual/performance_broker_receiver/getlast_broker.cpp
index 89c73cee4a5b7592d16defc2bd5c8e91bcaf7a08..8aaa9d9aa122ecf7faa9ba521ed63a1229328a27 100644
--- a/tests/manual/performance_broker_receiver/getlast_broker.cpp
+++ b/tests/manual/performance_broker_receiver/getlast_broker.cpp
@@ -8,7 +8,7 @@
 #include <numeric>
 #include <mutex>
 
-#include "asapo_worker.h"
+#include "asapo_consumer.h"
 
 using std::chrono::system_clock;
 using asapo::Error;
@@ -36,7 +36,7 @@ void WaitThreads(std::vector<std::thread>* threads) {
 int ProcessError(const Error& err) {
     if (err == nullptr) return 0;
     std::cout << err->Explain() << std::endl;
-    return err == asapo::WorkerErrorTemplates::kEndOfStream ? 0 : 1;
+    return err == asapo::ConsumerErrorTemplates::kEndOfStream ? 0 : 1;
 }
 
 std::vector<std::thread> StartThreads(const Args& params,
@@ -87,7 +87,7 @@ std::vector<std::thread> StartThreads(const Args& params,
             }
             if (err) {
                 (*errors)[i] += ProcessError(err);
-                if (err == asapo::WorkerErrorTemplates::kEndOfStream) {
+                if (err == asapo::ConsumerErrorTemplates::kEndOfStream) {
                     break;
                 }
             }
diff --git a/tests/manual/performance_full_chain_simple/test.sh b/tests/manual/performance_full_chain_simple/test.sh
index 52add6c8d0234fa2b7fda0b72c5c99fac3a99960..733b99f2c7eb8cad90f14484817fe5f243d9dffe 100755
--- a/tests/manual/performance_full_chain_simple/test.sh
+++ b/tests/manual/performance_full_chain_simple/test.sh
@@ -107,13 +107,13 @@ rm settings_tmp.json
 scp ../../../cmake-build-release/broker/asapo-broker ${broker_node}:${broker_dir}
 
 
-#worker_setup
-worker_node=max-display002
-worker_dir=~/fullchain_tests
+#consumer_setup
+consumer_node=max-display002
+consumer_dir=~/fullchain_tests
 nthreads=16
-scp ../../../cmake-build-release/examples/worker/getnext_broker/getnext_broker ${worker_node}:${worker_dir}
-scp ../../../cmake-build-release/asapo_tools/asapo ${worker_node}:${worker_dir}
-scp ../../../tests/automatic/settings/auth_secret.key ${worker_node}:${worker_dir}/auth_secret.key
+scp ../../../cmake-build-release/examples/consumer/getnext_broker/getnext_broker ${consumer_node}:${consumer_dir}
+scp ../../../cmake-build-release/asapo_tools/asapo ${consumer_node}:${consumer_dir}
+scp ../../../tests/automatic/settings/auth_secret.key ${consumer_node}:${consumer_dir}/auth_secret.key
 
 #monitoring_start
 #ssh ${monitor_node} docker run -d -p 8086 -p 8086 --name influxdb influxdb
@@ -144,8 +144,8 @@ ssh ${producer_node} "bash -c 'cd ${producer_dir}; nohup ./dummy-data-producer $
 sleep 1
 
 #prepare token
-ssh ${worker_node} "bash -c '${worker_dir}/asapo token -secret ${worker_dir}/auth_secret.key ${beamtime_id} >${worker_dir}/token'"
-#worker_start
-ssh ${worker_node} "bash -c '${worker_dir}/getnext_broker ${receiver_node}:8400 ${beamtime_id} ${nthreads} \`cat ${worker_dir}/token\`'"
+ssh ${consumer_node} "bash -c '${consumer_dir}/asapo token -secret ${consumer_dir}/auth_secret.key ${beamtime_id} >${consumer_dir}/token'"
+#consumer_start
+ssh ${consumer_node} "bash -c '${consumer_dir}/getnext_broker ${receiver_node}:8400 ${beamtime_id} ${nthreads} \`cat ${consumer_dir}/token\`'"
 
 
diff --git a/tests/manual/performance_producer_receiver/test.sh b/tests/manual/performance_producer_receiver/test.sh
index 251f9d18a14bc1e304f1052f045ccadd4904782a..aefb44b8f17776dccdbfe1acbfd8a63764620ffe 100755
--- a/tests/manual/performance_producer_receiver/test.sh
+++ b/tests/manual/performance_producer_receiver/test.sh
@@ -15,7 +15,7 @@ ssh ${service_node} docker rm -f -v mongo
 
 
 # starts receiver on $service_node
-# runs producer with various file sizes from $worker_node and measures performance
+# runs producer with various file sizes from $consumer_node and measures performance
 
 # a working directory
 service_node=max-wgs
@@ -29,10 +29,10 @@ beamline=test
 monitor_node=zitpcx27016
 monitor_port=8086
 
-worker_node=max-display
-#worker_node=max-wgs
+consumer_node=max-display
+#consumer_node=max-wgs
 
-worker_dir=~/producer_tests
+consumer_dir=~/producer_tests
 service_dir=/gpfs/petra3/scratch/yakubov/receiver_tests
 
 ssh ${monitor_node} influx -execute \"create database db_test\"
@@ -41,7 +41,7 @@ ssh ${monitor_node} influx -execute \"create database db_test\"
 
 ssh ${service_node} mkdir -p ${service_dir}
 ssh ${service_node} mkdir -p ${service_dir}/files/${beamtime_id}
-ssh ${worker_node} mkdir -p ${worker_dir}
+ssh ${consumer_node} mkdir -p ${consumer_dir}
 
 scp ../../../cmake-build-release/receiver/receiver ${service_node}:${service_dir}
 scp ../../../cmake-build-release/discovery/asapo-discovery ${service_node}:${service_dir}
@@ -49,7 +49,7 @@ scp ../../../cmake-build-release/discovery/asapo-discovery ${service_node}:${ser
 scp ../../../cmake-build-release/authorizer/asapo-authorizer ${service_node}:${service_dir}
 scp authorizer.json ${service_node}:${service_dir}/authorizer.json
 
-scp ../../../cmake-build-release/examples/producer/dummy-data-producer/dummy-data-producer ${worker_node}:${worker_dir}
+scp ../../../cmake-build-release/examples/producer/dummy-data-producer/dummy-data-producer ${consumer_node}:${consumer_dir}
 
 function do_work {
 cat receiver.json |
@@ -93,7 +93,7 @@ for size  in 100 1000 10000
 do
 ssh ${service_node} docker run -d -p 27017:27017 --name mongo mongo
 echo ===================================================================
-ssh ${worker_node} ${worker_dir}/dummy-data-producer ${service_ip}:8400 ${beamtime_id} ${size} 10000 8 0 100
+ssh ${consumer_node} ${consumer_dir}/dummy-data-producer ${service_ip}:8400 ${beamtime_id} ${size} 10000 8 0 100
 if [ "$1" == "true" ]
 then
     ssh ${service_node} rm -f ${service_dir}/files/${beamline}/${beamtime_id}/*
diff --git a/tests/manual/python_tests/ASAPO-csb.ipynb b/tests/manual/python_tests/ASAPO-csb.ipynb
index a34d13b9aead06b45535c38054e0c3914a2878d4..962c72374b7a247460b6b02084686d7498026729 100644
--- a/tests/manual/python_tests/ASAPO-csb.ipynb
+++ b/tests/manual/python_tests/ASAPO-csb.ipynb
@@ -15,7 +15,7 @@
    "metadata": {},
    "outputs": [],
    "source": [
-    "import asapo_worker\n",
+    "import asapo_consumer\n",
     "import h5py\n",
     "import numpy as np\n",
     "import matplotlib.pyplot as plt\n",
@@ -24,7 +24,7 @@
     "import time\n",
     "from IPython import display\n",
     "\n",
-    "broker, err = asapo_worker.create_server_broker(\"psana002:8400\", \"/tmp\", \"asapo_test2\",\"\",\"yzgAcLmijSLWIm8dBiGNCbc0i42u5HSm-zR6FRqo__Y=\", 1000000)\n"
+    "broker, err = asapo_consumer.create_server_broker(\"psana002:8400\", \"/tmp\", \"asapo_test2\",\"\",\"yzgAcLmijSLWIm8dBiGNCbc0i42u5HSm-zR6FRqo__Y=\", 1000000)\n"
    ]
   },
   {
diff --git a/tests/manual/python_tests/plot_images_online.py b/tests/manual/python_tests/plot_images_online.py
index 70fd845956ff7f40f51d0df637d199e5c584e481..829200981948f473083b41ce4bca327306cefa30 100644
--- a/tests/manual/python_tests/plot_images_online.py
+++ b/tests/manual/python_tests/plot_images_online.py
@@ -1,4 +1,4 @@
-import asapo_worker
+import asapo_consumer
 import h5py
 import numpy as np
 import matplotlib.pyplot as plt
@@ -9,7 +9,7 @@ import matplotlib.pyplot as plt
 #dset = f.create_dataset("mydataset", data = d1)
 #f.close()
 
-broker, err = asapo_worker.create_server_broker("psana002:8400", "/tmp", "asapo_test2","","yzgAcLmijSLWIm8dBiGNCbc0i42u5HSm-zR6FRqo__Y=", 1000000)
+broker, err = asapo_consumer.create_server_broker("psana002:8400", "/tmp", "asapo_test2","","yzgAcLmijSLWIm8dBiGNCbc0i42u5HSm-zR6FRqo__Y=", 1000000)
 
 last_id = 0
 while True:
diff --git a/tests/manual/python_tests/test_p.py b/tests/manual/python_tests/test_p.py
index 9000bcd7beebcd1f66d41d2a29f84edd39bb01cb..337cac212e868892737fcd60258076b9e890361b 100644
--- a/tests/manual/python_tests/test_p.py
+++ b/tests/manual/python_tests/test_p.py
@@ -1,6 +1,6 @@
 from __future__ import print_function
 
-import asapo_worker
+import asapo_consumer
 import sys
 import json
 import time
@@ -10,7 +10,7 @@ path = "/asapo_shared/asapo/data"
 beamtime = "asapo_test"
 token = "KmUDdacgBzaOD3NIJvN1NmKGqWKtx0DK-NyPjdpeWkc="
 
-broker, err = asapo_worker.create_server_broker(
+broker, err = asapo_consumer.create_server_broker(
     source, path, beamtime, token, 1000)
 
 group_id, err = broker.generate_group_id()
diff --git a/tests/manual/tests_via_nomad/asapo-test_dummy_producer.nomad.in b/tests/manual/tests_via_nomad/asapo-test_dummy_producer.nomad.in
index 89a8aad5d7c249fa11f7be7b1ced59851dde19f8..e5d995789aa800cb501f2814468c0ed5ff046a30 100644
--- a/tests/manual/tests_via_nomad/asapo-test_dummy_producer.nomad.in
+++ b/tests/manual/tests_via_nomad/asapo-test_dummy_producer.nomad.in
@@ -92,7 +92,7 @@ job "asapo-test" {
   }
   #linux
 
-  group "worker-linux1" {
+  group "consumer-linux1" {
 
     constraint {
       attribute = "${attr.kernel.name}"
@@ -107,12 +107,12 @@ job "asapo-test" {
 
     count = 1
 
-    task "worker-linux" {
+    task "consumer-linux" {
       driver = "raw_exec"
 
     template {
      data = <<EOH
-        WORKER_READ_META_ONLY = "{{ keyOrDefault "worker_read_meta_only" "1" }}"
+        CONSUMER_READ_META_ONLY = "{{ keyOrDefault "consumer_read_meta_only" "1" }}"
         EOH
      destination = "secrets/file.env"
      env         = true
@@ -127,7 +127,7 @@ job "asapo-test" {
           "16",
           "oTsKsj8i6WcW_gVzeIFvZCtSfMErjDELJEyAI23n7Ik=",
           "30000",
-          "${WORKER_READ_META_ONLY}"]
+          "${CONSUMER_READ_META_ONLY}"]
       }
 
       resources {
@@ -146,10 +146,10 @@ job "asapo-test" {
     }
 
   }
-  # worker-linux1
+  # consumer-linux1
 
 
-  group "worker-linux2" {
+  group "consumer-linux2" {
 
     constraint {
       attribute = "${attr.kernel.name}"
@@ -164,12 +164,12 @@ job "asapo-test" {
 
     count = 1
 
-    task "worker-linux" {
+    task "consumer-linux" {
       driver = "raw_exec"
 
     template {
      data = <<EOH
-        WORKER_READ_META_ONLY = "{{ keyOrDefault "worker_read_meta_only" "1" }}"
+        CONSUMER_READ_META_ONLY = "{{ keyOrDefault "consumer_read_meta_only" "1" }}"
         EOH
      destination = "secrets/file.env"
      env         = true
@@ -184,7 +184,7 @@ job "asapo-test" {
           "16",
           "yzgAcLmijSLWIm8dBiGNCbc0i42u5HSm-zR6FRqo__Y=",
           "30000",
-          "${WORKER_READ_META_ONLY}"]
+          "${CONSUMER_READ_META_ONLY}"]
       }
       resources {
         cpu = 5000
@@ -205,4 +205,4 @@ job "asapo-test" {
   }
 
 }
-# worker-linux2
+# consumer-linux2
diff --git a/tests/manual/tests_via_nomad/asapo-test_dummy_producer_only.nomad.in b/tests/manual/tests_via_nomad/asapo-test_dummy_producer_only.nomad.in
index 0effcca2a01a2244364f6eaf6b0550c5b43f5e0c..57c027964539cbb49a392d1f10056fb299d77b20 100644
--- a/tests/manual/tests_via_nomad/asapo-test_dummy_producer_only.nomad.in
+++ b/tests/manual/tests_via_nomad/asapo-test_dummy_producer_only.nomad.in
@@ -93,7 +93,7 @@ job "asapo-test" {
   }
   #linux
 
-  group "worker-linux1" {
+  group "consumer-linux1" {
 
     constraint {
       attribute = "${attr.kernel.name}"
@@ -109,12 +109,12 @@ job "asapo-test" {
     count = 0
 
 
-    task "worker-linux" {
+    task "consumer-linux" {
       driver = "raw_exec"
 
     template {
      data = <<EOH
-        WORKER_READ_META_ONLY = "{{ keyOrDefault "worker_read_meta_only" "1" }}"
+        CONSUMER_READ_META_ONLY = "{{ keyOrDefault "consumer_read_meta_only" "1" }}"
         EOH
      destination = "secrets/file.env"
      env         = true
@@ -129,7 +129,7 @@ job "asapo-test" {
           "16",
           "oTsKsj8i6WcW_gVzeIFvZCtSfMErjDELJEyAI23n7Ik=",
           "30000",
-          "${WORKER_READ_META_ONLY}"]
+          "${CONSUMER_READ_META_ONLY}"]
       }
 
       resources {
@@ -148,10 +148,10 @@ job "asapo-test" {
     }
 
   }
-  # worker-linux1
+  # consumer-linux1
 
 
-  group "worker-linux2" {
+  group "consumer-linux2" {
 
     constraint {
       attribute = "${attr.kernel.name}"
@@ -167,12 +167,12 @@ job "asapo-test" {
 
 	count = 0
 
-    task "worker-linux" {
+    task "consumer-linux" {
       driver = "raw_exec"
 
     template {
      data = <<EOH
-        WORKER_READ_META_ONLY = "{{ keyOrDefault "worker_read_meta_only" "1" }}"
+        CONSUMER_READ_META_ONLY = "{{ keyOrDefault "consumer_read_meta_only" "1" }}"
         EOH
      destination = "secrets/file.env"
      env         = true
@@ -187,7 +187,7 @@ job "asapo-test" {
           "16",
           "yzgAcLmijSLWIm8dBiGNCbc0i42u5HSm-zR6FRqo__Y=",
           "30000",
-          "${WORKER_READ_META_ONLY}"]
+          "${CONSUMER_READ_META_ONLY}"]
       }
       resources {
         cpu = 5000
@@ -208,4 +208,4 @@ job "asapo-test" {
   }
 
 }
-# worker-linux2
+# consumer-linux2
diff --git a/tests/manual/tests_via_nomad/asapo-test_filegen_worker.nomad.in b/tests/manual/tests_via_nomad/asapo-test_filegen_consumer.nomad.in
similarity index 89%
rename from tests/manual/tests_via_nomad/asapo-test_filegen_worker.nomad.in
rename to tests/manual/tests_via_nomad/asapo-test_filegen_consumer.nomad.in
index 3fdb7cec5b10e85d176378be474ca91ce07be889..6aab82d0c2380fd5034e9411e8dcecf294cd61e7 100644
--- a/tests/manual/tests_via_nomad/asapo-test_filegen_worker.nomad.in
+++ b/tests/manual/tests_via_nomad/asapo-test_filegen_consumer.nomad.in
@@ -74,7 +74,7 @@ job "asapo-test" {
   }
 
 
-  group "worker-linux1" {
+  group "consumer-linux1" {
 
     restart {
       attempts = 0
@@ -94,11 +94,11 @@ job "asapo-test" {
 
     count = 1
 
-    task "worker-linux" {
+    task "consumer-linux" {
       driver = "raw_exec"
     template {
      data = <<EOH
-        WORKER_READ_META_ONLY = "{{ keyOrDefault "worker_read_meta_only" "1" }}"
+        CONSUMER_READ_META_ONLY = "{{ keyOrDefault "consumer_read_meta_only" "1" }}"
         EOH
      destination = "secrets/file.env"
      env         = true
@@ -113,7 +113,7 @@ job "asapo-test" {
           "16",
           "oTsKsj8i6WcW_gVzeIFvZCtSfMErjDELJEyAI23n7Ik=",
           "30000",
-          "${WORKER_READ_META_ONLY}"]
+          "${CONSUMER_READ_META_ONLY}"]
       }
 
 #      resources {
@@ -132,10 +132,10 @@ job "asapo-test" {
     }
 
   }
-  # worker-linux1
+  # consumer-linux1
 
 
-  group "worker-linux2" {
+  group "consumer-linux2" {
 
     restart {
       attempts = 0
@@ -155,11 +155,11 @@ job "asapo-test" {
 
     count = 1
 
-    task "worker-linux" {
+    task "consumer-linux" {
       driver = "raw_exec"
     template {
      data = <<EOH
-        WORKER_READ_META_ONLY = "{{ keyOrDefault "worker_read_meta_only" "1" }}"
+        CONSUMER_READ_META_ONLY = "{{ keyOrDefault "consumer_read_meta_only" "1" }}"
         EOH
      destination = "secrets/file.env"
      env         = true
@@ -174,7 +174,7 @@ job "asapo-test" {
           "16",
           "yzgAcLmijSLWIm8dBiGNCbc0i42u5HSm-zR6FRqo__Y=",
           "30000",
-          "${WORKER_READ_META_ONLY}"]
+          "${CONSUMER_READ_META_ONLY}"]
       }
 #      resources {
 #        cpu = 5000
@@ -192,6 +192,6 @@ job "asapo-test" {
     }
 
   }
-  # worker-linux2
+  # consumer-linux2
 
 }
diff --git a/tests/manual/tests_via_nomad/asapo-test_filegen_worker_1M.nomad.in b/tests/manual/tests_via_nomad/asapo-test_filegen_consumer_1M.nomad.in
similarity index 89%
rename from tests/manual/tests_via_nomad/asapo-test_filegen_worker_1M.nomad.in
rename to tests/manual/tests_via_nomad/asapo-test_filegen_consumer_1M.nomad.in
index 1365fd87c9c47e3ce2910ff226fba5b99fc72624..82e24cdf6d2ef7d6fcd3ed36f714be10f17ee476 100644
--- a/tests/manual/tests_via_nomad/asapo-test_filegen_worker_1M.nomad.in
+++ b/tests/manual/tests_via_nomad/asapo-test_filegen_consumer_1M.nomad.in
@@ -74,7 +74,7 @@ job "asapo-test" {
   }
 
 
-  group "worker-linux1" {
+  group "consumer-linux1" {
 
     restart {
       attempts = 0
@@ -94,11 +94,11 @@ job "asapo-test" {
 
     count = 1
 
-    task "worker-linux" {
+    task "consumer-linux" {
       driver = "raw_exec"
     template {
      data = <<EOH
-        WORKER_READ_META_ONLY = "{{ keyOrDefault "worker_read_meta_only" "1" }}"
+        CONSUMER_READ_META_ONLY = "{{ keyOrDefault "consumer_read_meta_only" "1" }}"
         EOH
      destination = "secrets/file.env"
      env         = true
@@ -113,7 +113,7 @@ job "asapo-test" {
           "16",
           "oTsKsj8i6WcW_gVzeIFvZCtSfMErjDELJEyAI23n7Ik=",
           "30000",
-          "${WORKER_READ_META_ONLY}"]
+          "${CONSUMER_READ_META_ONLY}"]
       }
 
 #      resources {
@@ -132,10 +132,10 @@ job "asapo-test" {
     }
 
   }
-  # worker-linux1
+  # consumer-linux1
 
 
-  group "worker-linux2" {
+  group "consumer-linux2" {
 
     restart {
       attempts = 0
@@ -155,11 +155,11 @@ job "asapo-test" {
 
     count = 1
 
-    task "worker-linux" {
+    task "consumer-linux" {
       driver = "raw_exec"
     template {
      data = <<EOH
-        WORKER_READ_META_ONLY = "{{ keyOrDefault "worker_read_meta_only" "1" }}"
+        CONSUMER_READ_META_ONLY = "{{ keyOrDefault "consumer_read_meta_only" "1" }}"
         EOH
      destination = "secrets/file.env"
      env         = true
@@ -174,7 +174,7 @@ job "asapo-test" {
           "16",
           "yzgAcLmijSLWIm8dBiGNCbc0i42u5HSm-zR6FRqo__Y=",
           "30000",
-          "${WORKER_READ_META_ONLY}"]
+          "${CONSUMER_READ_META_ONLY}"]
       }
 #      resources {
 #        cpu = 5000
@@ -192,6 +192,6 @@ job "asapo-test" {
     }
 
   }
-  # worker-linux2
+  # consumer-linux2
 
 }
diff --git a/tests/manual/tests_via_nomad/asapo-test_filegen_worker_1M_batch.nomad.in b/tests/manual/tests_via_nomad/asapo-test_filegen_consumer_1M_batch.nomad.in
similarity index 89%
rename from tests/manual/tests_via_nomad/asapo-test_filegen_worker_1M_batch.nomad.in
rename to tests/manual/tests_via_nomad/asapo-test_filegen_consumer_1M_batch.nomad.in
index 2ce7d38242e70bd5ce9ba73f651ca04edbe339ce..4a92a5b1c5bd48d21a7dc9973c00346d92befb42 100644
--- a/tests/manual/tests_via_nomad/asapo-test_filegen_worker_1M_batch.nomad.in
+++ b/tests/manual/tests_via_nomad/asapo-test_filegen_consumer_1M_batch.nomad.in
@@ -74,7 +74,7 @@ job "asapo-test" {
   }
 
 
-  group "worker-linux1" {
+  group "consumer-linux1" {
 
     restart {
       attempts = 0
@@ -94,11 +94,11 @@ job "asapo-test" {
 
     count = 1
 
-    task "worker-linux" {
+    task "consumer-linux" {
       driver = "raw_exec"
     template {
      data = <<EOH
-        WORKER_READ_META_ONLY = "{{ keyOrDefault "worker_read_meta_only" "1" }}"
+        CONSUMER_READ_META_ONLY = "{{ keyOrDefault "consumer_read_meta_only" "1" }}"
         EOH
      destination = "secrets/file.env"
      env         = true
@@ -113,7 +113,7 @@ job "asapo-test" {
           "16",
           "oTsKsj8i6WcW_gVzeIFvZCtSfMErjDELJEyAI23n7Ik=",
           "30000",
-          "${WORKER_READ_META_ONLY}",
+          "${CONSUMER_READ_META_ONLY}",
           "1"]
       }
 
@@ -133,10 +133,10 @@ job "asapo-test" {
     }
 
   }
-  # worker-linux1
+  # consumer-linux1
 
 
-  group "worker-linux2" {
+  group "consumer-linux2" {
 
     restart {
       attempts = 0
@@ -156,11 +156,11 @@ job "asapo-test" {
 
     count = 1
 
-    task "worker-linux" {
+    task "consumer-linux" {
       driver = "raw_exec"
     template {
      data = <<EOH
-        WORKER_READ_META_ONLY = "{{ keyOrDefault "worker_read_meta_only" "1" }}"
+        CONSUMER_READ_META_ONLY = "{{ keyOrDefault "consumer_read_meta_only" "1" }}"
         EOH
      destination = "secrets/file.env"
      env         = true
@@ -175,7 +175,7 @@ job "asapo-test" {
           "16",
           "yzgAcLmijSLWIm8dBiGNCbc0i42u5HSm-zR6FRqo__Y=",
           "30000",
-          "${WORKER_READ_META_ONLY}",
+          "${CONSUMER_READ_META_ONLY}",
           "1"]
       }
 #      resources {
@@ -194,6 +194,6 @@ job "asapo-test" {
     }
 
   }
-  # worker-linux2
+  # consumer-linux2
 
 }
diff --git a/tests/manual/tests_via_nomad/asapo-test_filegen_worker_1M_multisource.nomad.in b/tests/manual/tests_via_nomad/asapo-test_filegen_consumer_1M_multisource.nomad.in
similarity index 92%
rename from tests/manual/tests_via_nomad/asapo-test_filegen_worker_1M_multisource.nomad.in
rename to tests/manual/tests_via_nomad/asapo-test_filegen_consumer_1M_multisource.nomad.in
index 26623e83bf7473b7e0292ef3b68b8c5d2f716e38..2707b362534e15f222008d107568ab711fc21304 100644
--- a/tests/manual/tests_via_nomad/asapo-test_filegen_worker_1M_multisource.nomad.in
+++ b/tests/manual/tests_via_nomad/asapo-test_filegen_consumer_1M_multisource.nomad.in
@@ -74,7 +74,7 @@ job "asapo-test" {
   }
 
 
-  group "worker" {
+  group "consumer" {
 
     restart {
       attempts = 0
@@ -94,11 +94,11 @@ job "asapo-test" {
 
     count = 1
 
-    task "worker-linux" {
+    task "consumer-linux" {
       driver = "raw_exec"
     template {
      data = <<EOH
-        WORKER_READ_META_ONLY = "{{ keyOrDefault "worker_read_meta_only" "1" }}"
+        CONSUMER_READ_META_ONLY = "{{ keyOrDefault "consumer_read_meta_only" "1" }}"
         EOH
      destination = "secrets/file.env"
      env         = true
@@ -113,7 +113,7 @@ job "asapo-test" {
           "16",
           "KmUDdacgBzaOD3NIJvN1NmKGqWKtx0DK-NyPjdpeWkc=",
           "30000",
-          "${WORKER_READ_META_ONLY}",
+          "${CONSUMER_READ_META_ONLY}",
           "1"]
       }
 
@@ -133,6 +133,6 @@ job "asapo-test" {
     }
 
   }
-  # worker
+  # consumer
 
 }
diff --git a/tests/manual/tests_via_nomad/asapo-test_filegen_worker_batch.nomad.in b/tests/manual/tests_via_nomad/asapo-test_filegen_consumer_batch.nomad.in
similarity index 89%
rename from tests/manual/tests_via_nomad/asapo-test_filegen_worker_batch.nomad.in
rename to tests/manual/tests_via_nomad/asapo-test_filegen_consumer_batch.nomad.in
index 1298b228b1cfe5713c7c68f73f782cb76ec277b0..4303b56d2637b5da4a3a5e61c3a49afc4c095596 100644
--- a/tests/manual/tests_via_nomad/asapo-test_filegen_worker_batch.nomad.in
+++ b/tests/manual/tests_via_nomad/asapo-test_filegen_consumer_batch.nomad.in
@@ -74,7 +74,7 @@ job "asapo-test" {
   }
 
 
-  group "worker-linux1" {
+  group "consumer-linux1" {
 
     restart {
       attempts = 0
@@ -94,11 +94,11 @@ job "asapo-test" {
 
     count = 1
 
-    task "worker-linux" {
+    task "consumer-linux" {
       driver = "raw_exec"
     template {
      data = <<EOH
-        WORKER_READ_META_ONLY = "{{ keyOrDefault "worker_read_meta_only" "1" }}"
+        CONSUMER_READ_META_ONLY = "{{ keyOrDefault "consumer_read_meta_only" "1" }}"
         EOH
      destination = "secrets/file.env"
      env         = true
@@ -113,7 +113,7 @@ job "asapo-test" {
           "16",
           "oTsKsj8i6WcW_gVzeIFvZCtSfMErjDELJEyAI23n7Ik=",
           "30000",
-          "${WORKER_READ_META_ONLY}",
+          "${CONSUMER_READ_META_ONLY}",
           "1"]
       }
 
@@ -133,10 +133,10 @@ job "asapo-test" {
     }
 
   }
-  # worker-linux1
+  # consumer-linux1
 
 
-  group "worker-linux2" {
+  group "consumer-linux2" {
 
     restart {
       attempts = 0
@@ -156,11 +156,11 @@ job "asapo-test" {
 
     count = 1
 
-    task "worker-linux" {
+    task "consumer-linux" {
       driver = "raw_exec"
     template {
      data = <<EOH
-        WORKER_READ_META_ONLY = "{{ keyOrDefault "worker_read_meta_only" "1" }}"
+        CONSUMER_READ_META_ONLY = "{{ keyOrDefault "consumer_read_meta_only" "1" }}"
         EOH
      destination = "secrets/file.env"
      env         = true
@@ -175,7 +175,7 @@ job "asapo-test" {
           "16",
           "yzgAcLmijSLWIm8dBiGNCbc0i42u5HSm-zR6FRqo__Y=",
           "30000",
-          "${WORKER_READ_META_ONLY}",
+          "${CONSUMER_READ_META_ONLY}",
           "1"]
       }
 #      resources {
@@ -194,6 +194,6 @@ job "asapo-test" {
     }
 
   }
-  # worker-linux2
+  # consumer-linux2
 
 }
diff --git a/tests/manual/tests_via_nomad/run_test_fullchain.sh b/tests/manual/tests_via_nomad/run_test_fullchain.sh
index 9f842d002cbd45639a67c4501126051741e0fb81..3c9149fe211805d4dd029d4921df4f20aaa4c936 100755
--- a/tests/manual/tests_via_nomad/run_test_fullchain.sh
+++ b/tests/manual/tests_via_nomad/run_test_fullchain.sh
@@ -8,5 +8,5 @@ sleep 1
 nomad stop asapo-test
 . ./clean_after_tests.sh
 
-nomad run asapo-test_filegen_worker.nomad
+nomad run asapo-test_filegen_consumer.nomad
 
diff --git a/tests/manual/tests_via_nomad/run_test_fullchain_batch.sh b/tests/manual/tests_via_nomad/run_test_fullchain_batch.sh
index 459aa9f665b846bd9b2d9aa079786081650bd552..af34de80967216d94af898bebbbfcd9f7c59f537 100755
--- a/tests/manual/tests_via_nomad/run_test_fullchain_batch.sh
+++ b/tests/manual/tests_via_nomad/run_test_fullchain_batch.sh
@@ -8,5 +8,5 @@ sleep 1
 nomad stop asapo-test
 . ./clean_after_tests.sh
 
-nomad run asapo-test_filegen_worker_batch.nomad
+nomad run asapo-test_filegen_consumer_batch.nomad
 
diff --git a/tests/manual/tests_via_nomad/run_test_fullchain_multisource.sh b/tests/manual/tests_via_nomad/run_test_fullchain_multisource.sh
index 8a5a8687cc32dba70cd68321b2371168b70bbfe4..406ac91cca6f32c8a2acf0ca2733690dec3cf7a4 100755
--- a/tests/manual/tests_via_nomad/run_test_fullchain_multisource.sh
+++ b/tests/manual/tests_via_nomad/run_test_fullchain_multisource.sh
@@ -8,5 +8,5 @@ sleep 1
 nomad stop asapo-test
 . ./clean_after_tests.sh
 
-nomad run asapo-test_filegen_worker_1M_multisource.nomad
+nomad run asapo-test_filegen_consumer_1M_multisource.nomad
 
diff --git a/worker/api/cpp/include/asapo_worker.h b/worker/api/cpp/include/asapo_worker.h
deleted file mode 100644
index 586ebc769b94af42882c80ceda5fa36882e020b9..0000000000000000000000000000000000000000
--- a/worker/api/cpp/include/asapo_worker.h
+++ /dev/null
@@ -1,8 +0,0 @@
-#ifndef ASAPO_ASAPO_WORKER_H
-#define ASAPO_ASAPO_WORKER_H
-
-#include "worker/data_broker.h"
-#include "worker/worker_error.h"
-#include "common/version.h"
-
-#endif //ASAPO_ASAPO_WORKER_H
diff --git a/worker/api/cpp/include/worker/worker_error.h b/worker/api/cpp/include/worker/worker_error.h
deleted file mode 100644
index 257f2b72cf4e7114fb5967ec93e1c79b2efe79d1..0000000000000000000000000000000000000000
--- a/worker/api/cpp/include/worker/worker_error.h
+++ /dev/null
@@ -1,60 +0,0 @@
-#ifndef ASAPO_WORKER_ERROR_H
-#define ASAPO_WORKER_ERROR_H
-
-#include "common/error.h"
-#include "common/io_error.h"
-
-namespace asapo {
-
-enum class WorkerErrorType {
-    kNoData,
-    kEndOfStream,
-    kBrokerServersNotFound,
-    kBrokerServerError,
-    kIOError,
-    kWrongInput
-};
-
-using WorkerErrorTemplate = ServiceErrorTemplate<WorkerErrorType, ErrorType::kWorkerError>;
-
-
-class WorkerErrorData : public CustomErrorData {
-  public:
-    uint64_t id;
-    uint64_t id_max;
-};
-
-
-namespace WorkerErrorTemplates {
-
-auto const kIOError = WorkerErrorTemplate{
-    "i/o error", WorkerErrorType::kIOError
-};
-
-auto const kEndOfStream = WorkerErrorTemplate{
-    "no data - end of stream", WorkerErrorType::kEndOfStream
-};
-
-auto const kNoData = WorkerErrorTemplate{
-    "no data", WorkerErrorType::kNoData
-};
-
-auto const kWrongInput = WorkerErrorTemplate{
-    "wrong input", WorkerErrorType::kWrongInput
-};
-
-auto const kBrokerServerError = WorkerErrorTemplate{
-    "error from broker server", WorkerErrorType::kBrokerServerError
-};
-
-auto const kBrokerServersNotFound = WorkerErrorTemplate{
-    "cannot find brokers", WorkerErrorType::kBrokerServersNotFound
-};
-
-
-
-}
-}
-
-#endif //ASAPO_WORKER_ERROR_H
-