diff --git a/ATxCommon/Serializables/ServiceStatus.cs b/ATxCommon/Serializables/ServiceStatus.cs
index 5df0e42f97ef1261d58aa3a6c1f953cb8eff457b..216ae1c5b18ffbab6fcb4f9f27192bf5cb3ebe14 100644
--- a/ATxCommon/Serializables/ServiceStatus.cs
+++ b/ATxCommon/Serializables/ServiceStatus.cs
@@ -75,6 +75,14 @@ namespace ATxCommon.Serializables
             Log.Trace("Finished serializing [{0}].", _storageFile);
         }
 
+        /// <summary>
+        /// Wrapper to serialize XML if time since last is above threshold (default = 1 min).
+        /// </summary>
+        public void SerializeHeartbeat(int timeout=60) {
+            if (TimeUtils.SecondsSince(_lastStatusUpdate) >= timeout)
+                Serialize();
+        }
+
         public static ServiceStatus Deserialize(string file, ServiceConfig config) {
             Log.Trace("Trying to deserialize status XML file [{0}].", file);
             ServiceStatus status;
diff --git a/ATxService/AutoTx.cs b/ATxService/AutoTx.cs
index 622b409e3c48aca0fa7233efcfcffd04b0232d0e..edca7f88715667a7c50a56706736495986ce8481 100644
--- a/ATxService/AutoTx.cs
+++ b/ATxService/AutoTx.cs
@@ -598,10 +598,7 @@ namespace ATxService
             // mandatory tasks, run on every call:
             SendLowSpaceMail(SystemChecks.CheckFreeDiskSpace(_config.SpaceMonitoring));
             UpdateServiceState();
-
-            // update the status heartbeat at least once a minute:
-            if (TimeUtils.SecondsSince(_status.LastStatusUpdate) >= 60)
-                _status.Serialize();
+            _status.SerializeHeartbeat();
 
             if (TimeUtils.SecondsSince(_lastUserDirCheck) >= 120)
                 CreateIncomingDirectories();