diff --git a/Modules/include/PeriodicTrigger.h b/Modules/include/PeriodicTrigger.h
index 631c3faca62584f0fb8493d53117bbffb4e98de1..84f6dca8e3d4508198a88b4c9037ecd896ec8e9c 100644
--- a/Modules/include/PeriodicTrigger.h
+++ b/Modules/include/PeriodicTrigger.h
@@ -16,26 +16,35 @@ namespace ChimeraTK {
       /** Constructor. In addition to the usual arguments of an ApplicationModule, the default timeout value is specified.
        *  This value is used as a timeout if the timeout value is set to 0. The timeout value is in milliseconds. */
       PeriodicTrigger(EntityOwner *owner, const std::string &name, const std::string &description,
-             const uint32_t defaultTimeout=1000, bool eliminateHierarchy=false, const std::unordered_set<std::string> &tags={})
+             const uint32_t defaultPeriod=1000, bool eliminateHierarchy=false, const std::unordered_set<std::string> &tags={})
       : ApplicationModule(owner, name, description, eliminateHierarchy, tags),
-        defaultTimeout_(defaultTimeout)
+        defaultPeriod_(defaultPeriod)
       {}
 
-      ScalarPollInput<uint32_t> timeout{this, "timeout", "ms", "Timeout in milliseconds. The trigger is sent once per the specified duration."};
+      ScalarPollInput<uint32_t> period{this, "period", "ms", "period in milliseconds. The trigger is sent once per the specified duration."};
       ScalarOutput<uint64_t> tick{this, "tick", "", "Timer tick. Counts the trigger number starting from 0."};
 
+      void sendTrigger() {
+        ++tick;
+        tick.write();
+      }
+
       void mainLoop() {
+        if (auto application = dynamic_cast<Application *>(getOwner())) {
+          if (application->isTestableModeEnabled()) {
+            return;
+          }
+        }
         tick = 0;
-        
         std::chrono::time_point<std::chrono::steady_clock> t = std::chrono::steady_clock::now();
 
         while(true) {
-          timeout.read();
-          if(timeout == 0){
+          period.read();
+          if(period == 0){
             // set receiving end of timeout. Will only be overwritten if there is new data.
-            timeout = defaultTimeout_;
+            period = defaultPeriod_;
           }
-          t += std::chrono::milliseconds(static_cast<uint32_t>(timeout));
+          t += std::chrono::milliseconds(static_cast<uint32_t>(period));
           boost::this_thread::interruption_point();
           std::this_thread::sleep_until(t);
 
@@ -46,7 +55,7 @@ namespace ChimeraTK {
 
     private:
 
-      uint32_t defaultTimeout_;
+      uint32_t defaultPeriod_;
 
   };
 }