diff --git a/.gitignore b/.gitignore
index 8df737a2..3b3780b5 100644
--- a/.gitignore
+++ b/.gitignore
@@ -30,6 +30,9 @@ bld/
[Oo]bj/
[Ll]og/
+# Rider specific
+.idea
+
# Visual Studio 2015/2017 cache/options directory
.vs/
# Uncomment if you have tasks that create the project's static files in wwwroot
diff --git a/.idea/.idea.server-csharp/.idea/.gitignore b/.idea/.idea.server-csharp/.idea/.gitignore
deleted file mode 100644
index be6be836..00000000
--- a/.idea/.idea.server-csharp/.idea/.gitignore
+++ /dev/null
@@ -1,13 +0,0 @@
-# Default ignored files
-/shelf/
-/workspace.xml
-# Rider ignored files
-/.idea.server-csharp.iml
-/modules.xml
-/projectSettingsUpdater.xml
-/contentModel.xml
-# Editor-based HTTP Client requests
-/httpRequests/
-# Datasource local storage ignored files
-/dataSources/
-/dataSources.local.xml
diff --git a/.idea/.idea.server-csharp/.idea/encodings.xml b/.idea/.idea.server-csharp/.idea/encodings.xml
deleted file mode 100644
index df87cf95..00000000
--- a/.idea/.idea.server-csharp/.idea/encodings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
\ No newline at end of file
diff --git a/.idea/.idea.server-csharp/.idea/indexLayout.xml b/.idea/.idea.server-csharp/.idea/indexLayout.xml
deleted file mode 100644
index 7b08163c..00000000
--- a/.idea/.idea.server-csharp/.idea/indexLayout.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/.idea.server-csharp/.idea/vcs.xml b/.idea/.idea.server-csharp/.idea/vcs.xml
deleted file mode 100644
index 35eb1ddf..00000000
--- a/.idea/.idea.server-csharp/.idea/vcs.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/Core/Models/Spt/Callbacks/BotCallbacks.cs b/Core/Models/Spt/Callbacks/BotCallbacks.cs
new file mode 100644
index 00000000..dda5ab92
--- /dev/null
+++ b/Core/Models/Spt/Callbacks/BotCallbacks.cs
@@ -0,0 +1,26 @@
+using Core.Models.Eft.Common.Tables;
+
+namespace Core.Models.Spt.Callbacks;
+
+public class BotCallbacks
+{
+ public string GetBotLimit(string url, EmptyRequestData info, string sessionID)
+ {
+ throw new NotImplementedException();
+ }
+
+ public string GetBotDifficulty(string url, EmptyRequestData info, string sessionID)
+ {
+ throw new NotImplementedException();
+ }
+
+ public GetBodyResponseData> GenerateBots(string url, GenerateBotsRequestData info, string sessionID)
+ {
+ throw new NotImplementedException();
+ }
+
+ public string GetBotCap()
+ {
+ throw new NotImplementedException();
+ }
+}
\ No newline at end of file
diff --git a/Core/Models/Spt/Callbacks/BundleCallbacks.cs b/Core/Models/Spt/Callbacks/BundleCallbacks.cs
new file mode 100644
index 00000000..17b23487
--- /dev/null
+++ b/Core/Models/Spt/Callbacks/BundleCallbacks.cs
@@ -0,0 +1,19 @@
+namespace Core.Models.Spt.Callbacks;
+
+public class BundleCallbacks
+{
+ public object SendBundle(string sessionID, object req, object res, object body)
+ {
+ throw new NotImplementedException();
+ }
+
+ public string GetBundles(string url, object info, string sessionID)
+ {
+ throw new NotImplementedException();
+ }
+
+ public string GetBundle(string url, object info, string sessionID)
+ {
+ throw new NotImplementedException();
+ }
+}
\ No newline at end of file
diff --git a/Core/Models/Spt/Callbacks/CustomizationCallbacks.cs b/Core/Models/Spt/Callbacks/CustomizationCallbacks.cs
new file mode 100644
index 00000000..cb33b642
--- /dev/null
+++ b/Core/Models/Spt/Callbacks/CustomizationCallbacks.cs
@@ -0,0 +1,24 @@
+namespace Core.Models.Spt.Callbacks;
+
+public class CustomizationCallbacks
+{
+ public GetBodyResponseData