diff --git a/command/open_session.cpp b/command/open_session.cpp
index b41eefa..b48b7e9 100644
--- a/command/open_session.cpp
+++ b/command/open_session.cpp
@@ -50,16 +50,15 @@
     {
         // Start an IPMI session
         session =
-            (std::get<session::Manager&>(singletonPool)
-                 .startSession(
-                     endian::from_ipmi<>(request->remoteConsoleSessionID),
-                     static_cast<session::Privilege>(request->maxPrivLevel),
-                     static_cast<cipher::rakp_auth::Algorithms>(
-                         request->authAlgo),
-                     static_cast<cipher::integrity::Algorithms>(
-                         request->intAlgo),
-                     static_cast<cipher::crypt::Algorithms>(request->confAlgo)))
-                .lock();
+            std::get<session::Manager&>(singletonPool)
+                .startSession(
+                    endian::from_ipmi<>(request->remoteConsoleSessionID),
+                    static_cast<session::Privilege>(request->maxPrivLevel),
+                    static_cast<cipher::rakp_auth::Algorithms>(
+                        request->authAlgo),
+                    static_cast<cipher::integrity::Algorithms>(
+                        request->intAlgo),
+                    static_cast<cipher::crypt::Algorithms>(request->confAlgo));
     }
     catch (std::exception& e)
     {
diff --git a/command/payload_cmds.cpp b/command/payload_cmds.cpp
index 8030b92..2e8ac6f 100644
--- a/command/payload_cmds.cpp
+++ b/command/payload_cmds.cpp
@@ -47,9 +47,8 @@
         return outPayload;
     }
 
-    auto session = (std::get<session::Manager&>(singletonPool)
-                        .getSession(handler.sessionID))
-                       .lock();
+    auto session = std::get<session::Manager&>(singletonPool)
+                       .getSession(handler.sessionID);
 
     if (!request->encryption && session->isCryptAlgoEnabled())
     {
diff --git a/command/rakp12.cpp b/command/rakp12.cpp
index b0aad87..b4842b2 100644
--- a/command/rakp12.cpp
+++ b/command/rakp12.cpp
@@ -35,10 +35,9 @@
     std::shared_ptr<session::Session> session;
     try
     {
-        session = (std::get<session::Manager&>(singletonPool)
-                       .getSession(
-                           endian::from_ipmi(request->managedSystemSessionID)))
-                      .lock();
+        session =
+            std::get<session::Manager&>(singletonPool)
+                .getSession(endian::from_ipmi(request->managedSystemSessionID));
     }
     catch (std::exception& e)
     {
diff --git a/command/rakp34.cpp b/command/rakp34.cpp
index 76236d5..84c90fc 100644
--- a/command/rakp34.cpp
+++ b/command/rakp34.cpp
@@ -16,8 +16,7 @@
 void applyIntegrityAlgo(const uint32_t bmcSessionID)
 {
     auto session =
-        (std::get<session::Manager&>(singletonPool).getSession(bmcSessionID))
-            .lock();
+        std::get<session::Manager&>(singletonPool).getSession(bmcSessionID);
 
     auto authAlgo = session->getAuthAlgo();
 
@@ -45,8 +44,7 @@
 void applyCryptAlgo(const uint32_t bmcSessionID)
 {
     auto session =
-        (std::get<session::Manager&>(singletonPool).getSession(bmcSessionID))
-            .lock();
+        std::get<session::Manager&>(singletonPool).getSession(bmcSessionID);
 
     auto authAlgo = session->getAuthAlgo();
 
@@ -96,10 +94,9 @@
     std::shared_ptr<session::Session> session;
     try
     {
-        session = (std::get<session::Manager&>(singletonPool)
-                       .getSession(
-                           endian::from_ipmi(request->managedSystemSessionID)))
-                      .lock();
+        session =
+            std::get<session::Manager&>(singletonPool)
+                .getSession(endian::from_ipmi(request->managedSystemSessionID));
     }
     catch (std::exception& e)
     {
diff --git a/command/session_cmds.cpp b/command/session_cmds.cpp
index fb2d074..d363c1e 100644
--- a/command/session_cmds.cpp
+++ b/command/session_cmds.cpp
@@ -23,9 +23,8 @@
     response->completionCode = IPMI_CC_OK;
     uint8_t reqPrivilegeLevel = request->reqPrivLevel;
 
-    auto session = (std::get<session::Manager&>(singletonPool)
-                        .getSession(handler.sessionID))
-                       .lock();
+    auto session = std::get<session::Manager&>(singletonPool)
+                       .getSession(handler.sessionID);
 
     if (reqPrivilegeLevel == 0) // Just return present privilege level
     {
diff --git a/command/sol_cmds.cpp b/command/sol_cmds.cpp
index fb6f19e..a8fa410 100644
--- a/command/sol_cmds.cpp
+++ b/command/sol_cmds.cpp
@@ -57,8 +57,7 @@
     request->minorVersion = MINOR_VERSION;
 
     auto session =
-        (std::get<session::Manager&>(singletonPool).getSession(sessionID))
-            .lock();
+        std::get<session::Manager&>(singletonPool).getSession(sessionID);
 
     message::Handler msgHandler(session->channelPtr, sessionID);
 
