diff --git a/time-config.cpp b/time-config.cpp
index ff62782..9e70044 100644
--- a/time-config.cpp
+++ b/time-config.cpp
@@ -265,7 +265,7 @@
         std::cout <<"Successfully updated UseNtp=["
                   << useDhcpNtp << "]" << std::endl;
 
-        r = writeData<decltype(useDhcpNtp)>(cv_DhcpNtpFile, useDhcpNtp);
+        r = writeData(cv_DhcpNtpFile, useDhcpNtp);
     }
 
     return 0;
diff --git a/time-config.hpp b/time-config.hpp
index 0f08641..367380c 100644
--- a/time-config.hpp
+++ b/time-config.hpp
@@ -119,7 +119,7 @@
      *                      - Exception
      */
     template <typename T>
-    auto writeData(const char* fileName, const T&& data)
+    auto writeData(const char* fileName, T&& data)
     {
         std::ofstream file(fileName, std::ios::out);
         file << data;
diff --git a/time-manager.cpp b/time-manager.cpp
index bde2e0d..206e4b6 100644
--- a/time-manager.cpp
+++ b/time-manager.cpp
@@ -188,9 +188,7 @@
         if (config.getCurrTimeOwner() == TimeConfig::timeOwners::SPLIT)
         {
             iv_HostOffset = time.getChangedOffset();
-            r = config.writeData<decltype(iv_HostOffset.count())>
-                (cv_HostOffsetFile,
-                 iv_HostOffset.count());
+            r = config.writeData(cv_HostOffsetFile, iv_HostOffset.count());
             if (r < 0)
             {
                 // probably does not make sense to crash on these..
@@ -491,9 +489,8 @@
         tmgr->updateUptimeUsec(uptimeUsec);
 
         // Persist this
-        auto r = tmgr->config.writeData<decltype(tmgr->getHostOffset().count())>
-                 (TimeManager::cv_HostOffsetFile,
-                  tmgr->getHostOffset().count());
+        auto r = tmgr->config.writeData(TimeManager::cv_HostOffsetFile,
+                                        tmgr->getHostOffset().count());
         if (r < 0)
         {
             std::cerr << "Error saving host_offset: "
@@ -510,9 +507,7 @@
 int TimeManager::resetHostOffset()
 {
     iv_HostOffset = std::chrono::microseconds(0);
-    auto r = config.writeData<decltype(iv_HostOffset.count())>
-             (cv_HostOffsetFile,
-              iv_HostOffset.count());
+    auto r = config.writeData(cv_HostOffsetFile, iv_HostOffset.count());
     config.updateSplitModeFlag(false);
     return r;
 }
@@ -865,9 +860,7 @@
     if (config.isSplitModeChanged())
     {
         iv_HostOffset = microseconds(0);
-        auto r = config.writeData<decltype(iv_HostOffset.count())>
-                 (cv_HostOffsetFile,
-                  iv_HostOffset.count());
+        auto r = config.writeData(cv_HostOffsetFile, iv_HostOffset.count());
         if (r < 0)
         {
             std::cerr <<" Error saving offset to file" << std::endl;
