diff --git a/src/mainapp.cpp b/src/mainapp.cpp
index 56061d0..63ae7e2 100644
--- a/src/mainapp.cpp
+++ b/src/mainapp.cpp
@@ -209,7 +209,7 @@
         fallback.always = fallbackAlways;
 
         printFallback(fallback);
-        maybeFallback = std::move(fallback);
+        maybeFallback = fallback;
     }
 
     try
@@ -221,7 +221,7 @@
         auto bus = sdbusplus::bus::new_default();
 
         // Add systemd object manager.
-        sdbusplus::server::manager::manager(bus, path.c_str());
+        sdbusplus::server::manager::manager watchdogManager(bus, path.c_str());
 
         // Attach the bus to sd_event to service user requests
         bus.attach_event(event.get(), SD_EVENT_PRIORITY_NORMAL);
diff --git a/src/watchdog.hpp b/src/watchdog.hpp
index 736e71f..31cde63 100644
--- a/src/watchdog.hpp
+++ b/src/watchdog.hpp
@@ -71,7 +71,7 @@
              uint64_t defaultInterval = 0) :
         WatchdogInherits(bus, objPath),
         bus(bus), actionTargetMap(std::move(actionTargetMap)),
-        fallback(std::move(fallback)), minInterval(minInterval),
+        fallback(fallback), minInterval(minInterval),
         timer(event, std::bind(&Watchdog::timeOutHandler, this)),
         objPath(objPath)
     {
@@ -148,7 +148,7 @@
      *  @return: interval that was set
      *
      */
-    uint64_t interval(uint64_t value);
+    uint64_t interval(uint64_t value) override;
 
     /** @brief Tells if the referenced timer is expired or not */
     inline auto timerExpired() const
diff --git a/test/watchdog.cpp b/test/watchdog.cpp
index 7f0a2aa..3f0e06d 100644
--- a/test/watchdog.cpp
+++ b/test/watchdog.cpp
@@ -279,8 +279,7 @@
     fallback.always = false;
     wdog.reset();
     wdog = std::make_unique<Watchdog>(bus, TEST_PATH, event,
-                                      Watchdog::ActionTargetMap(),
-                                      std::move(fallback));
+                                      Watchdog::ActionTargetMap(), fallback);
     EXPECT_EQ(primaryInterval, milliseconds(wdog->interval(primaryIntervalMs)));
     EXPECT_FALSE(wdog->enabled());
     EXPECT_EQ(0, wdog->timeRemaining());
@@ -362,8 +361,7 @@
     fallback.always = false;
     wdog.reset();
     wdog = std::make_unique<Watchdog>(bus, TEST_PATH, event,
-                                      Watchdog::ActionTargetMap(),
-                                      std::move(fallback));
+                                      Watchdog::ActionTargetMap(), fallback);
     EXPECT_EQ(primaryInterval, milliseconds(wdog->interval(primaryIntervalMs)));
     EXPECT_FALSE(wdog->enabled());
     EXPECT_EQ(0, wdog->timeRemaining());
@@ -416,8 +414,7 @@
     fallback.always = false;
     wdog.reset();
     wdog = std::make_unique<Watchdog>(bus, TEST_PATH, event,
-                                      Watchdog::ActionTargetMap(),
-                                      std::move(fallback));
+                                      Watchdog::ActionTargetMap(), fallback);
     EXPECT_EQ(primaryInterval, milliseconds(wdog->interval(primaryIntervalMs)));
     EXPECT_FALSE(wdog->enabled());
     EXPECT_EQ(0, wdog->timeRemaining());
