diff --git a/http/http_client.hpp b/http/http_client.hpp
index cc30cab..5c7b13f 100644
--- a/http/http_client.hpp
+++ b/http/http_client.hpp
@@ -306,7 +306,7 @@
                         const std::string& destUri) :
         conn(ioc),
         timer(ioc), subId(id), host(destIP), port(destPort), uri(destUri),
-        retryCount(0), maxRetryAttempts(5),
+        retryCount(0), maxRetryAttempts(5), retryIntervalSecs(0),
         retryPolicyAction("TerminateAfterRetries"), runningTimer(false)
     {
         boost::asio::ip::tcp::resolver resolver(ioc);
diff --git a/http/http_response.hpp b/http/http_response.hpp
index b521b20..7b8b5d9 100644
--- a/http/http_response.hpp
+++ b/http/http_response.hpp
@@ -37,17 +37,6 @@
     Response() : stringResponse(response_type{})
     {}
 
-    Response(Response&& r)
-    {
-        BMCWEB_LOG_DEBUG << "Moving response containers";
-        *this = std::move(r);
-    }
-
-    ~Response()
-    {
-        BMCWEB_LOG_DEBUG << this << " Destroying response";
-    }
-
     Response& operator=(const Response& r) = delete;
 
     Response& operator=(Response&& r) noexcept
diff --git a/http/routing.hpp b/http/routing.hpp
index 9c6a15b..d547348 100644
--- a/http/routing.hpp
+++ b/http/routing.hpp
@@ -30,7 +30,7 @@
 class BaseRule
 {
   public:
-    BaseRule(std::string thisRule) : rule(std::move(thisRule))
+    BaseRule(const std::string& thisRule) : rule(thisRule)
     {}
 
     virtual ~BaseRule() = default;
@@ -313,7 +313,7 @@
     using self_t = WebSocketRule;
 
   public:
-    WebSocketRule(std::string ruleIn) : BaseRule(std::move(ruleIn))
+    WebSocketRule(const std::string& ruleIn) : BaseRule(ruleIn)
     {}
 
     void validate() override
@@ -402,10 +402,10 @@
         return *p;
     }
 
-    self_t& name(const std::string& name) noexcept
+    self_t& name(const std::string_view name) noexcept
     {
         self_t* self = static_cast<self_t*>(this);
-        self->nameStr = std::move(name);
+        self->nameStr = name;
         return *self;
     }
 
@@ -448,7 +448,7 @@
 class DynamicRule : public BaseRule, public RuleParameterTraits<DynamicRule>
 {
   public:
-    DynamicRule(std::string ruleIn) : BaseRule(std::move(ruleIn))
+    DynamicRule(const std::string& ruleIn) : BaseRule(ruleIn)
     {}
 
     void validate() override
@@ -521,7 +521,7 @@
   public:
     using self_t = TaggedRule<Args...>;
 
-    TaggedRule(const std::string& ruleIn) : BaseRule(std::move(ruleIn))
+    TaggedRule(const std::string& ruleIn) : BaseRule(ruleIn)
     {}
 
     void validate() override
@@ -612,9 +612,9 @@
     }
 
     template <typename Func>
-    void operator()(const std::string& name, Func&& f)
+    void operator()(const std::string_view name, Func&& f)
     {
-        nameStr = std::move(name);
+        nameStr = name;
         (*this).template operator()<Func>(std::forward(f));
     }
 
