diff --git a/comm_module.cpp b/comm_module.cpp
new file mode 100644
index 0000000..d780e21
--- /dev/null
+++ b/comm_module.cpp
@@ -0,0 +1,77 @@
+#include "comm_module.hpp"
+
+#include <algorithm>
+#include <cstring>
+#include <iomanip>
+#include <iostream>
+
+#include "command/channel_auth.hpp"
+#include "command/open_session.hpp"
+#include "command/rakp12.hpp"
+#include "command/rakp34.hpp"
+#include "command/session_cmds.hpp"
+#include "command_table.hpp"
+#include "main.hpp"
+#include "session.hpp"
+
+namespace command
+{
+
+void sessionSetupCommands()
+{
+    static const command::CmdDetails commands[] =
+    {
+        // Open Session Request/Response
+        {
+            {
+                (static_cast<uint32_t>
+                (message::PayloadType::OPEN_SESSION_REQUEST) << 16)
+            },
+            &openSession, session::Privilege::HIGHEST_MATCHING,  true
+        },
+        // RAKP1 & RAKP2 Message
+        {
+            {(static_cast<uint32_t>(message::PayloadType::RAKP1) << 16)},
+            &RAKP12, session::Privilege::HIGHEST_MATCHING, true
+        },
+        // RAKP3 & RAKP4 Message
+        {
+            {(static_cast<uint32_t>(message::PayloadType::RAKP3) << 16)},
+            &RAKP34, session::Privilege::HIGHEST_MATCHING, true
+        },
+        // Get Channel Authentication Capabilities Command
+        {
+            {
+                (static_cast<uint32_t>(message::PayloadType::IPMI) << 16) |
+                static_cast<uint16_t>(command::NetFns::APP) | 0x38
+            },
+            &GetChannelCapabilities,
+            session::Privilege::HIGHEST_MATCHING, true
+        },
+        // Set Session Privilege Command
+        {
+            {
+                (static_cast<uint32_t>(message::PayloadType::IPMI) << 16) |
+                static_cast<uint16_t>(command::NetFns::APP) | 0x3B
+            },
+            &setSessionPrivilegeLevel, session::Privilege::USER, false
+        },
+        // Close Session Command
+        {
+            {
+                (static_cast<uint32_t>(message::PayloadType::IPMI) << 16) |
+                static_cast<uint16_t>(command::NetFns::APP) | 0x3C
+            },
+            &closeSession, session::Privilege::CALLBACK, false
+        },
+    };
+
+    for (auto& iter : commands)
+    {
+        std::get<command::Table&>(singletonPool).registerCommand(
+            iter.command, std::make_unique<command::NetIpmidEntry>
+            (iter.command, iter.functor, iter.privilege, iter.sessionless));
+    }
+}
+
+} // namespace command
