diff --git a/command/open_session.cpp b/command/open_session.cpp
index e3453f8..78fb9d0 100644
--- a/command/open_session.cpp
+++ b/command/open_session.cpp
@@ -108,7 +108,7 @@
     session->updateLastTransactionTime();
 
     // Session state is Setup in progress
-    session->state = session::State::SETUP_IN_PROGRESS;
+    session->state(static_cast<uint8_t>(session::State::setupInProgress));
     return outPayload;
 }
 
diff --git a/command/rakp12.cpp b/command/rakp12.cpp
index 172c83e..01355d1 100644
--- a/command/rakp12.cpp
+++ b/command/rakp12.cpp
@@ -26,7 +26,7 @@
 
     // Session ID zero is reserved for Session Setup
     if (endian::from_ipmi(request->managedSystemSessionID) ==
-        session::SESSION_ZERO)
+        session::sessionZero)
     {
         log<level::INFO>("RAKP12: BMC invalid Session ID");
         response->rmcpStatusCode =
@@ -127,12 +127,14 @@
     // established with CALLBACK privilege if requested for callback. All other
     // sessions are initialy set to USER privilege, regardless of the requested
     // maximum privilege.
-    session->curPrivLevel = session::Privilege::CALLBACK;
+    session->currentPrivilege(
+        static_cast<uint8_t>(session::Privilege::CALLBACK));
     if (static_cast<session::Privilege>(request->req_max_privilege_level &
                                         session::reqMaxPrivMask) >
         session::Privilege::CALLBACK)
     {
-        session->curPrivLevel = session::Privilege::USER;
+        session->currentPrivilege(
+            static_cast<uint8_t>(session::Privilege::USER));
     }
     session->reqMaxPrivLevel =
         static_cast<session::Privilege>(request->req_max_privilege_level);
@@ -201,7 +203,8 @@
             static_cast<uint8_t>(RAKP_ReturnCode::INACTIVE_ROLE);
         return outPayload;
     }
-    session->chNum = chNum;
+    session->channelNum(chNum);
+    session->userID(userId);
     // minimum privilege of Channel / User / session::privilege::USER/CALLBACK /
     // has to be used as session current privilege level
     uint8_t minPriv = 0;
@@ -214,9 +217,9 @@
     {
         minPriv = session->sessionUserPrivAccess.privilege;
     }
-    if (session->curPrivLevel > static_cast<session::Privilege>(minPriv))
+    if (session->currentPrivilege() > minPriv)
     {
-        session->curPrivLevel = static_cast<session::Privilege>(minPriv);
+        session->currentPrivilege(static_cast<uint8_t>(minPriv));
     }
     // For username / privilege lookup, fail with UNAUTH_NAME, if requested
     // max privilege does not match user privilege
diff --git a/command/rakp34.cpp b/command/rakp34.cpp
index 370c132..b106b6f 100644
--- a/command/rakp34.cpp
+++ b/command/rakp34.cpp
@@ -85,7 +85,7 @@
 
     // Session ID zero is reserved for Session Setup
     if (endian::from_ipmi(request->managedSystemSessionID) ==
-        session::SESSION_ZERO)
+        session::sessionZero)
     {
         log<level::INFO>("RAKP34: BMC invalid Session ID");
         response->rmcpStatusCode =
@@ -272,7 +272,7 @@
     // Set the Confidentiality Algorithm
     applyCryptAlgo(session->getBMCSessionID());
 
-    session->state = session::State::ACTIVE;
+    session->state(static_cast<uint8_t>(session::State::active));
     return outPayload;
 }
 
diff --git a/command/session_cmds.cpp b/command/session_cmds.cpp
index 8606ce5..52eb02f 100644
--- a/command/session_cmds.cpp
+++ b/command/session_cmds.cpp
@@ -26,7 +26,7 @@
 
     if (reqPrivilegeLevel == 0) // Just return present privilege level
     {
-        response->newPrivLevel = static_cast<uint8_t>(session->curPrivLevel);
+        response->newPrivLevel = session->currentPrivilege();
         return outPayload;
     }
     if (reqPrivilegeLevel > (static_cast<uint8_t>(session->reqMaxPrivLevel) &
@@ -55,8 +55,7 @@
     else
     {
         // update current privilege of the session.
-        session->curPrivLevel =
-            static_cast<session::Privilege>(reqPrivilegeLevel);
+        session->currentPrivilege(static_cast<uint8_t>(reqPrivilegeLevel));
         response->newPrivLevel = reqPrivilegeLevel;
     }
 
@@ -76,7 +75,7 @@
 
     // Session 0 is needed to handle session setup, so session zero is never
     // closed
-    if (bmcSessionID == session::SESSION_ZERO)
+    if (bmcSessionID == session::sessionZero)
     {
         response->completionCode = IPMI_CC_INVALID_SESSIONID;
     }
