diff --git a/streaming_recording_backend.cpp b/streaming_recording_backend.cpp
index 6b5cac34341ee95691245f6c2d89f1889f4acbeb..491b722a656bbe4378d6e412c342b4abaf94f297 100644
--- a/streaming_recording_backend.cpp
+++ b/streaming_recording_backend.cpp
@@ -132,9 +132,7 @@ void StreamingRecordingBackend::write(const nest::RecordingDevice &device,
   } else if (device.get_type() == nest::RecordingDevice::Type::SPIKE_DETECTOR) {
     auto spike_detector =
         static_cast<nesci::producer::SpikeDetector *>(nesci_device.get());
-    nesci::producer::SpikeDetector::Datum datum{event.get_stamp().get_ms(),
-                                                event.get_sender_gid()};
-    spike_detector->Record(datum);
+    spike_detector->Record(event.get_stamp().get_ms(), event.get_sender_gid());
   } else {
     std::cerr << "Error: no device registered for `" << device.get_name() << '`'
               << std::endl;
@@ -151,12 +149,13 @@ void StreamingRecordingBackend::synchronize() {
 
   for (const auto &device : thread_devices->second) {
     const auto node = device.second->node();
-    // TODO: check if node is empty
-    {
-      std::lock_guard<std::mutex> lock_guard(relay_mutex_);
-      relay_.Send(node, false);
+    if (device.second->GetRecordCount() > 0) {
+      {
+        std::lock_guard<std::mutex> lock_guard(relay_mutex_);
+        relay_.Send(node, false);
+      }
+      device.second->Clear();
     }
-    device.second->Clear();
   }
 }