diff --git a/CMakeLists.txt b/CMakeLists.txt
index 5db236e9bc5199ae01b46d703dff7435bac9539c..c2980ba5cbb958dbb73a7a0b44480090668f04e2 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -38,6 +38,7 @@ set(CMAKE_C_EXTENSIONS OFF)
 set(CMAKE_C_STANDARD_REQUIRED ON)
 set(CMAKE_CXX_EXTENSIONS OFF)
 set(CMAKE_CXX_STANDARD_REQUIRED ON)
+set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
 
 set(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake" ${CMAKE_MODULE_PATH})
 
diff --git a/README_SETUP.md b/README_SETUP.md
index ea0284e2dd0458eee5aa7c9e165a3e6767e57d55..147745c32ad3d1460609e91942e4b7400b243560 100644
--- a/README_SETUP.md
+++ b/README_SETUP.md
@@ -116,6 +116,7 @@ Please adhere to [Google's C++ naming conventions](https://google.github.io/styl
 You can use a json file for the configuration of the client. See
 `test/test_data/test_caosdb_client.json` for an example. You may use
 `caosdb-client-configuration-schema.json` to validate your schema.
+Typically, you will need to provide the path to your SSL certificate.
 
 The client will load the configuration file from the first existing
 file in the following locations (precedence from highest to lowest):
diff --git a/include/CMakeLists.txt b/include/CMakeLists.txt
index d480ec17b4ad33498ca1a845ebc0fb1a622cb04a..18d9334acdac17d3b583efabb4e2eeb116cbb5a9 100644
--- a/include/CMakeLists.txt
+++ b/include/CMakeLists.txt
@@ -42,6 +42,8 @@ set(libcaosdb_INCL
     ${CMAKE_CURRENT_SOURCE_DIR}/caosdb/utility.h
     ${CMAKE_CURRENT_SOURCE_DIR}/caosdb/value.h
     ${CMAKE_CURRENT_SOURCE_DIR}/caosdb/file_transmission/register_file_upload_handler.h
+	# TODO this  file is still missing
+	# ${CMAKE_CURRENT_SOURCE_DIR}/caosdb/file_transmission/register_file_download_handler.h
     ${CMAKE_CURRENT_SOURCE_DIR}/caosdb/file_transmission/upload_request_handler.h
     ${CMAKE_CURRENT_SOURCE_DIR}/caosdb/file_transmission/download_request_handler.h
     ${CMAKE_CURRENT_SOURCE_DIR}/caosdb/file_transmission/file_writer.h
diff --git a/include/caosdb/entity.h b/include/caosdb/entity.h
index bc8529e3525c963051a5fc7a2148fd9f29eec719..5e1b87fa1721abd0a9fe4ec40cf51797c99bf735 100644
--- a/include/caosdb/entity.h
+++ b/include/caosdb/entity.h
@@ -65,6 +65,7 @@ using ProtoImportance = caosdb::entity::v1alpha1::Importance;
 using caosdb::StatusCode;
 using caosdb::entity::v1alpha1::EntityResponse;
 using caosdb::entity::v1alpha1::FileTransmissionId;
+using ::google::protobuf::RepeatedPtrField;
 using google::protobuf::RepeatedPtrField;
 
 static const std::string logger_name = "caosdb::entity";
diff --git a/include/caosdb/file_transmission/download_request_handler.h b/include/caosdb/file_transmission/download_request_handler.h
index c6ee1c36b67c637c8faad901f590a4eee318b7b5..cb2108aa3c9c091316e557c1d732297d84171db9 100644
--- a/include/caosdb/file_transmission/download_request_handler.h
+++ b/include/caosdb/file_transmission/download_request_handler.h
@@ -68,6 +68,9 @@ using caosdb::entity::v1alpha1::FileTransmissionService;
 using caosdb::transaction::HandlerInterface;
 using caosdb::transaction::HandlerTag;
 
+/*
+ * Handler for the download request of a single file
+ */
 class DownloadRequestHandler final : public HandlerInterface {
 public:
   DownloadRequestHandler(HandlerTag tag, FileTransmissionService::Stub *stub,
diff --git a/include/caosdb/handler_interface.h b/include/caosdb/handler_interface.h
index 4ba563a300175478c8140e9b88c991e2f5321245..f5d77f86c35fe60edbd088afd235ed7ba633c69c 100644
--- a/include/caosdb/handler_interface.h
+++ b/include/caosdb/handler_interface.h
@@ -56,7 +56,14 @@
 namespace caosdb::transaction {
 
 const static std::string logger_name = "caosdb::transaction";
-
+/*
+ * Baseclass for UnaryRpcHandler, DownloadRequestHandler and
+ * UploadRequestHandler
+ *
+ * It handles a request: Its status is contained in the transaction_status
+ * member variable and the functions Start, OnNext and Cancel need to be
+ * overwritten by child classes.
+ */
 class HandlerInterface {
 public:
   HandlerInterface() : transaction_status(TransactionStatus::READY()) {}
@@ -65,6 +72,12 @@ public:
 
   virtual void Start() = 0;
 
+  /*
+   * ok indicates whether the current request is in a good state or not. If
+   * ok is false, the request will be ended.
+   *
+   * returns false if the handler is done
+   */
   virtual bool OnNext(bool ok) = 0;
 
   virtual void Cancel() = 0;
diff --git a/include/caosdb/transaction.h b/include/caosdb/transaction.h
index c6155ae311da8d8c5b603d9b5ed37c359773db0d..75943f77e64a7e4a7ee51e15a6178e02b885f9bd 100644
--- a/include/caosdb/transaction.h
+++ b/include/caosdb/transaction.h
@@ -433,6 +433,8 @@ public:
 protected:
   /**
    * Await and process the current handler's results.
+   *
+   * This implies consecutive calls to the handler's OnNext function.
    */
   auto ProcessCalls() -> TransactionStatus;
 
diff --git a/src/caosdb/file_transmission/file_reader.cpp b/src/caosdb/file_transmission/file_reader.cpp
index 2df58c9accbde99c9bc908ed7f80ceef7685b573..f118eca01c6d17975684a15de56eb7c693fdc117 100644
--- a/src/caosdb/file_transmission/file_reader.cpp
+++ b/src/caosdb/file_transmission/file_reader.cpp
@@ -77,7 +77,8 @@ std::size_t FileReader::read(std::string &buffer) {
   if (!stream_.eof()) {
     auto bufferSize = buffer.size();
     if (bufferSize > 0) {
-      if (!stream_.read(&buffer[0], bufferSize)) {
+      // TODO(henrik): fix nolint
+      if (!stream_.read(&buffer[0], bufferSize)) { // NOLINT
         throw FileIOError("Can't read file: " + filename_.string());
       }
 
diff --git a/src/caosdb/file_transmission/file_writer.cpp b/src/caosdb/file_transmission/file_writer.cpp
index 73b604d4255b213d015e010ea987fdb6a9918f6c..90c816fa8c6d3d43ecad3e4e0dbf575d7016d15e 100644
--- a/src/caosdb/file_transmission/file_writer.cpp
+++ b/src/caosdb/file_transmission/file_writer.cpp
@@ -68,7 +68,8 @@ void FileWriter::openFile() {
 void FileWriter::write(const std::string &buffer) {
   auto bufferSize = buffer.size();
   if (bufferSize > 0) {
-    if (!stream_.write(buffer.data(), bufferSize)) {
+    // TODO(henrik): fix nolint
+    if (!stream_.write(buffer.data(), bufferSize)) { // NOLINT
       throw FileIOError("Can't write file: " + filename_.string());
     }
   }