diff --git a/include/caosdb/entity.h b/include/caosdb/entity.h
index 147b4ab554648357600557829e431f37a2884c85..fea060d726d67c0cf6f21d42f6b8f3ead0622671 100644
--- a/include/caosdb/entity.h
+++ b/include/caosdb/entity.h
@@ -327,6 +327,7 @@ public:
   // friend class Parent;
   // friend class Property;
 
+private:
   inline Messages() : RepeatedPtrFieldWrapper(){};
 };
 
diff --git a/include/ccaosdb.h b/include/ccaosdb.h
index a60189522dfa4f5493fa201f63c3eb3df0d992d7..4b923279da730b9ce46c159e65606c33ded5e2c7 100644
--- a/include/ccaosdb.h
+++ b/include/ccaosdb.h
@@ -299,6 +299,23 @@ typedef struct caosdb_transaction_result_set {
 
 int caosdb_transaction_transaction_get_result_set(caosdb_transaction_transaction *transaction,
                                                   caosdb_transaction_result_set *out);
+/**
+ * Release the result set from the transaction.
+ *
+ * The transactions is spoiled after this action and should be used anymore.
+ *
+ * Note: The result_set has to be deleted via caosdb_transaction_delete_result_set.
+ *
+ * EXPERT USE ONLY.  Only use it when you know what you are doing.
+ */
+int caosdb_transaction_transaction_release_result_set(caosdb_transaction_transaction *transaction,
+                                                      caosdb_transaction_result_set *out);
+/**
+ * Destructor for caosdb_transaction_result_set.
+ *
+ * EXPERT USE ONLY.  Only use it when you know what you are doing.
+ */
+int caosdb_transaction_delete_result_set(caosdb_transaction_result_set *result_set);
 
 int caosdb_transaction_transaction_get_count_result(caosdb_transaction_transaction *transaction,
                                                     long *out);