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);
 
diff --git a/message_handler.cpp b/message_handler.cpp
index 62855a9..c5d5d4e 100644
--- a/message_handler.cpp
+++ b/message_handler.cpp
@@ -35,9 +35,8 @@
     std::unique_ptr<Message> message;
     std::tie(message, sessionHeader) = parser::unflatten(packet);
 
-    auto session = (std::get<session::Manager&>(singletonPool)
-                        .getSession(message->bmcSessionID))
-                       .lock();
+    auto session = std::get<session::Manager&>(singletonPool)
+                       .getSession(message->bmcSessionID);
 
     sessionID = message->bmcSessionID;
     message->rcSessionID = session->getRCSessionID();
@@ -166,8 +165,7 @@
 void Handler::send(Message& outMessage)
 {
     auto session =
-        (std::get<session::Manager&>(singletonPool).getSession(sessionID))
-            .lock();
+        std::get<session::Manager&>(singletonPool).getSession(sessionID);
 
     // Flatten the packet
     auto packet = parser::flatten(outMessage, sessionHeader, *session);
@@ -183,8 +181,7 @@
 void Handler::setChannelInSession() const
 {
     auto session =
-        (std::get<session::Manager&>(singletonPool).getSession(sessionID))
-            .lock();
+        std::get<session::Manager&>(singletonPool).getSession(sessionID);
 
     session->channelPtr = channel;
 }
@@ -194,8 +191,7 @@
     Message outMessage;
 
     auto session =
-        (std::get<session::Manager&>(singletonPool).getSession(sessionID))
-            .lock();
+        std::get<session::Manager&>(singletonPool).getSession(sessionID);
 
     outMessage.payloadType = PayloadType::SOL;
     outMessage.payload = input;
@@ -213,8 +209,7 @@
     Message outMessage;
 
     auto session =
-        (std::get<session::Manager&>(singletonPool).getSession(sessionID))
-            .lock();
+        std::get<session::Manager&>(singletonPool).getSession(sessionID);
 
     outMessage.payloadType = PayloadType::IPMI;
     outMessage.isPacketEncrypted = session->isCryptAlgoEnabled();
diff --git a/message_parsers.cpp b/message_parsers.cpp
index 695b5b7..7497747 100644
--- a/message_parsers.cpp
+++ b/message_parsers.cpp
@@ -280,9 +280,8 @@
         return false;
     }
 
-    auto session = (std::get<session::Manager&>(singletonPool)
-                        .getSession(message.bmcSessionID))
-                       .lock();
+    auto session = std::get<session::Manager&>(singletonPool)
+                       .getSession(message.bmcSessionID);
 
     auto integrityAlgo = session->getIntegrityAlgo();
 
@@ -322,9 +321,8 @@
     trailer->padLength = paddingLen;
     trailer->nextHeader = parser::RMCP_MESSAGE_CLASS_IPMI;
 
-    auto session = (std::get<session::Manager&>(singletonPool)
-                        .getSession(message.bmcSessionID))
-                       .lock();
+    auto session = std::get<session::Manager&>(singletonPool)
+                       .getSession(message.bmcSessionID);
 
     auto integrityData =
         session->getIntegrityAlgo()->generateIntegrityData(packet);
@@ -335,9 +333,8 @@
 std::vector<uint8_t> decryptPayload(const std::vector<uint8_t>& packet,
                                     const Message& message, size_t payloadLen)
 {
-    auto session = (std::get<session::Manager&>(singletonPool)
-                        .getSession(message.bmcSessionID))
-                       .lock();
+    auto session = std::get<session::Manager&>(singletonPool)
+                       .getSession(message.bmcSessionID);
 
     return session->getCryptAlgo()->decryptPayload(
         packet, sizeof(SessionHeader_t), payloadLen);
@@ -345,9 +342,8 @@
 
 std::vector<uint8_t> encryptPayload(Message& message)
 {
-    auto session = (std::get<session::Manager&>(singletonPool)
-                        .getSession(message.bmcSessionID))
-                       .lock();
+    auto session = std::get<session::Manager&>(singletonPool)
+                       .getSession(message.bmcSessionID);
 
     return session->getCryptAlgo()->encryptPayload(message.payload);
 }
diff --git a/sessions_manager.cpp b/sessions_manager.cpp
index 10c2764..bf7ff34 100644
--- a/sessions_manager.cpp
+++ b/sessions_manager.cpp
@@ -24,7 +24,7 @@
     std::srand(std::time(0));
 }
 
-std::weak_ptr<Session>
+std::shared_ptr<Session>
     Manager::startSession(SessionID remoteConsoleSessID, Privilege priv,
                           cipher::rakp_auth::Algorithms authAlgo,
                           cipher::integrity::Algorithms intAlgo,
@@ -120,8 +120,8 @@
     }
 }
 
-std::weak_ptr<Session> Manager::getSession(SessionID sessionID,
-                                           RetrieveOption option)
+std::shared_ptr<Session> Manager::getSession(SessionID sessionID,
+                                             RetrieveOption option)
 {
     switch (option)
     {
diff --git a/sessions_manager.hpp b/sessions_manager.hpp
index cf28238..251ca96 100644
--- a/sessions_manager.hpp
+++ b/sessions_manager.hpp
@@ -53,11 +53,11 @@
      * @return session handle on success and nullptr on failure
      *
      */
-    std::weak_ptr<Session> startSession(SessionID remoteConsoleSessID,
-                                        Privilege priv,
-                                        cipher::rakp_auth::Algorithms authAlgo,
-                                        cipher::integrity::Algorithms intAlgo,
-                                        cipher::crypt::Algorithms cryptAlgo);
+    std::shared_ptr<Session>
+        startSession(SessionID remoteConsoleSessID, Privilege priv,
+                     cipher::rakp_auth::Algorithms authAlgo,
+                     cipher::integrity::Algorithms intAlgo,
+                     cipher::crypt::Algorithms cryptAlgo);
 
     /**
      * @brief Stop IPMI Session
@@ -79,7 +79,7 @@
      * @return session handle on success and nullptr on failure
      *
      */
-    std::weak_ptr<Session>
+    std::shared_ptr<Session>
         getSession(SessionID sessionID,
                    RetrieveOption option = RetrieveOption::BMC_SESSION_ID);
 
diff --git a/sol/sol_context.cpp b/sol/sol_context.cpp
index 7329ed2..fffb66f 100644
--- a/sol/sol_context.cpp
+++ b/sol/sol_context.cpp
@@ -205,8 +205,7 @@
 void Context::sendPayload(const std::vector<uint8_t>& out) const
 {
     auto session =
-        (std::get<session::Manager&>(singletonPool).getSession(sessionID))
-            .lock();
+        std::get<session::Manager&>(singletonPool).getSession(sessionID);
 
     message::Handler msgHandler(session->channelPtr, sessionID);
 
