diff --git a/include/hxcomm/common/execute_messages.h b/include/hxcomm/common/execute_messages.h
index cba23dfb5e2cac4184080a5e11fd29308766592e..6ae0aea32e2bb9d4dfce6afcd7cf2fa66b145ef7 100644
--- a/include/hxcomm/common/execute_messages.h
+++ b/include/hxcomm/common/execute_messages.h
@@ -41,7 +41,8 @@ struct ExecutorMessages
 	    hate::is_detected_v<ConnectionConcept, connection_type>,
 	    "Connection does not adhere to ConnectionConcept.");
 
-	return_type operator()(connection_type& conn, messages_type const& messages)
+	return_type operator()(
+	    connection_type& conn, messages_type const& messages, bool const keep_responses)
 	{
 		Stream<connection_type> stream(conn);
 		auto const time_begin = conn.get_time_info();
@@ -52,9 +53,14 @@ struct ExecutorMessages
 
 		stream.run_until_halt();
 
-		auto const responses = stream.receive_all();
-		auto const time_difference = conn.get_time_info() - time_begin;
-		return {responses, time_difference};
+		if (keep_responses) {
+			auto const time_difference = conn.get_time_info() - time_begin;
+			return {{}, time_difference};
+		} else {
+			auto const responses = stream.receive_all();
+			auto const time_difference = conn.get_time_info() - time_begin;
+			return {responses, time_difference};
+		}
 	}
 };
 
@@ -74,9 +80,12 @@ struct ExecutorMessages
  */
 template <typename Connection, ConnectionIsPlainGuard<Connection> = 0>
 detail::execute_messages_return_t<Connection> execute_messages(
-    Connection& connection, detail::execute_messages_argument_t<Connection> const& messages)
+    Connection& connection,
+    detail::execute_messages_argument_t<Connection> const& messages,
+    bool const keep_responses = false)
 {
-	auto const [res, time] = detail::ExecutorMessages<Connection>()(connection, messages);
+	auto const [res, time] =
+	    detail::ExecutorMessages<Connection>()(connection, messages, keep_responses);
 	[[maybe_unused]] log4cxx::LoggerPtr log = log4cxx::Logger::getLogger("hxcomm.execute_messages");
 	HXCOMM_LOG_INFO(
 	    log, "Executed messages(" << messages.size() << ") and got responses(" << res.size()
@@ -87,10 +96,14 @@ detail::execute_messages_return_t<Connection> execute_messages(
 
 template <typename Connection, ConnectionIsWrappedGuard<Connection> = 0>
 detail::execute_messages_return_t<Connection> execute_messages(
-    Connection&& connection, detail::execute_messages_argument_t<Connection> const& messages)
+    Connection&& connection,
+    detail::execute_messages_argument_t<Connection> const& messages,
+    bool const keep_responses = false)
 {
 	return hxcomm::visit_connection(
-	    [&messages](auto& conn) -> decltype(auto) { return execute_messages(conn, messages); },
+	    [&messages, keep_responses](auto& conn) -> decltype(auto) {
+		    return execute_messages(conn, messages, keep_responses);
+	    },
 	    std::forward<Connection>(connection));
 }
 
diff --git a/include/hxcomm/common/quiggeldy_connection.tcc b/include/hxcomm/common/quiggeldy_connection.tcc
index 654c1e24e755ad011795cd50f5a55e9fc09addd7..06befaa617ae410094e8f97d179ba6a3df19a3f5 100644
--- a/include/hxcomm/common/quiggeldy_connection.tcc
+++ b/include/hxcomm/common/quiggeldy_connection.tcc
@@ -65,8 +65,12 @@ struct ExecutorMessages<hxcomm::QuiggeldyConnection<ConnectionParameters, RcfCli
 	using response_type = typename connection_type::interface_types::response_type;
 	using request_type = typename connection_type::interface_types::request_type;
 
-	response_type operator()(connection_type& conn, request_type const& messages)
+	response_type operator()(
+	    connection_type& conn, request_type const& messages, bool const keep_responses)
 	{
+		if (keep_responses) {
+			throw std::logic_error("Keeping responses not supported for QuiggeldyConnection.");
+		}
 		StreamRC<connection_type> stream(conn);
 		return stream.submit_blocking(messages);
 	}
diff --git a/include/hxcomm/common/quiggeldy_worker.tcc b/include/hxcomm/common/quiggeldy_worker.tcc
index fba7423ce7f98e66e2f0430b617ffb10f60a529f..0efc48eef7d5ade543e368f3e971f88da7b2739d 100644
--- a/include/hxcomm/common/quiggeldy_worker.tcc
+++ b/include/hxcomm/common/quiggeldy_worker.tcc
@@ -267,7 +267,7 @@ void QuiggeldyWorker<Connection>::perform_reinit(reinit_type& reinit, bool force
 	try {
 		for (auto& entry : reinit) {
 			if (entry.reinit_pending || force) {
-				execute_messages(*m_connection, entry.request);
+				execute_messages(*m_connection, entry.request, true);
 				entry.reinit_pending = false;
 			}
 		}
diff --git a/include/hxcomm/common/reinit_stack_entry_impl.tcc b/include/hxcomm/common/reinit_stack_entry_impl.tcc
index 3dc3f720efd18b6f43dbac9d5d811fac4d03f4d0..7bbb76d757bb69a0b42f055cbca426f272d77f68 100644
--- a/include/hxcomm/common/reinit_stack_entry_impl.tcc
+++ b/include/hxcomm/common/reinit_stack_entry_impl.tcc
@@ -118,7 +118,7 @@ void ReinitStackEntry<QuiggeldyConnection, ConnectionVariant>::handle_unsupporte
 		    m_logger, "Connection does not support upload of reinit program, treating enforced "
 		              "reinit-like regular program to execute.");
 		std::visit(
-		    [&entry](auto& conn) { execute_messages(conn.get(), entry.request); },
+		    [&entry](auto& conn) { execute_messages(conn.get(), entry.request, true); },
 		    m_connection_ref);
 	} else {
 		HXCOMM_LOG_TRACE(
diff --git a/pyhxcomm/tests/sw/test-managed_connection.cpp b/pyhxcomm/tests/sw/test-managed_connection.cpp
index f7b3e911626a7b08dd2e30152564319ba26a8991..b8c688422e1ece9b896eee182039d1b15362673b 100644
--- a/pyhxcomm/tests/sw/test-managed_connection.cpp
+++ b/pyhxcomm/tests/sw/test-managed_connection.cpp
@@ -55,7 +55,7 @@ struct ExecutorMessages<RefCounter>
 	using return_type = execute_messages_return_t<connection_type>;
 	using messages_type = execute_messages_argument_t<connection_type>;
 
-	return_type operator()(RefCounter&, messages_type const&)
+	return_type operator()(RefCounter&, messages_type const&, bool const)
 	{
 		return return_type();
 	}