diff --git a/.dockerignore b/.dockerignore
new file mode 100644
index 0000000..cd967fc
--- /dev/null
+++ b/.dockerignore
@@ -0,0 +1,25 @@
+**/.dockerignore
+**/.env
+**/.git
+**/.gitignore
+**/.project
+**/.settings
+**/.toolstarget
+**/.vs
+**/.vscode
+**/.idea
+**/*.*proj.user
+**/*.dbmdl
+**/*.jfm
+**/azds.yaml
+**/bin
+**/charts
+**/docker-compose*
+**/Dockerfile*
+**/node_modules
+**/npm-debug.log
+**/obj
+**/secrets.dev.yaml
+**/values.dev.yaml
+LICENSE
+README.md
\ No newline at end of file
diff --git a/Continuity.sln b/Continuity.sln
index ddcf71a..0ceae62 100644
--- a/Continuity.sln
+++ b/Continuity.sln
@@ -1,10 +1,6 @@
Microsoft Visual Studio Solution File, Format Version 12.00
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Server", "Server\Server.csproj", "{DDE63D00-4CC2-4397-B409-410D9F272F0F}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Server.Tests", "Server.Tests\Server.Tests.csproj", "{5D09881E-E059-46F5-9064-66F192258C0C}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Server.Packets", "Server.Packets\Server.Packets.csproj", "{C0769799-62D3-4AEE-9335-9011D97C1DE2}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Server", "Server\Server.csproj", "{7EDA8B31-3E03-4CA3-87D1-CFEB05C277D6}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -12,17 +8,9 @@ Global
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {DDE63D00-4CC2-4397-B409-410D9F272F0F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {DDE63D00-4CC2-4397-B409-410D9F272F0F}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {DDE63D00-4CC2-4397-B409-410D9F272F0F}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {DDE63D00-4CC2-4397-B409-410D9F272F0F}.Release|Any CPU.Build.0 = Release|Any CPU
- {5D09881E-E059-46F5-9064-66F192258C0C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {5D09881E-E059-46F5-9064-66F192258C0C}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {5D09881E-E059-46F5-9064-66F192258C0C}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {5D09881E-E059-46F5-9064-66F192258C0C}.Release|Any CPU.Build.0 = Release|Any CPU
- {C0769799-62D3-4AEE-9335-9011D97C1DE2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {C0769799-62D3-4AEE-9335-9011D97C1DE2}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {C0769799-62D3-4AEE-9335-9011D97C1DE2}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {C0769799-62D3-4AEE-9335-9011D97C1DE2}.Release|Any CPU.Build.0 = Release|Any CPU
+ {7EDA8B31-3E03-4CA3-87D1-CFEB05C277D6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {7EDA8B31-3E03-4CA3-87D1-CFEB05C277D6}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {7EDA8B31-3E03-4CA3-87D1-CFEB05C277D6}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {7EDA8B31-3E03-4CA3-87D1-CFEB05C277D6}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
EndGlobal
diff --git a/Continuity.sln.DotSettings b/Continuity.sln.DotSettings
new file mode 100644
index 0000000..bc40c83
--- /dev/null
+++ b/Continuity.sln.DotSettings
@@ -0,0 +1,2 @@
+
+ True
\ No newline at end of file
diff --git a/Server.Packets/IPacket.cs b/Server.Packets/IPacket.cs
deleted file mode 100644
index e424a16..0000000
--- a/Server.Packets/IPacket.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-namespace Server.Packets;
-
-public interface IPacket
-{
- Span Serialize();
- void Deserialize(Span bytes);
-}
\ No newline at end of file
diff --git a/Server.Packets/PacketForwardingService.cs b/Server.Packets/PacketForwardingService.cs
deleted file mode 100644
index 2049ba7..0000000
--- a/Server.Packets/PacketForwardingService.cs
+++ /dev/null
@@ -1,40 +0,0 @@
-using System.Collections.Immutable;
-using System.Reflection;
-
-namespace Server.Packets;
-
-public class PacketForwardingService
-{
- private ImmutableDictionary _packets = null!;
-
- public PacketForwardingService()
- {
- InitializePackets(typeof(IPacket).Assembly);
- }
-
- private void InitializePackets(Assembly assembly)
- {
- // Get all types that implement IPacket and have a PacketIdAttribute
- _packets = assembly.GetTypes()
- .Select(x => (attr: x.GetCustomAttribute(), ctor: x.GetConstructor(Type.EmptyTypes)))
- .Where(x => x.GetType().IsAssignableTo(typeof(IPacket)) && x.GetType().IsClass)
- .Where(x => x.attr != null && x.ctor != null)
- .ToImmutableDictionary(x => x.attr!.PacketId, x => x.ctor)!;
- }
-
- public IPacket Dispatch(Span bytes)
- {
- // Get constructor according to packet id
- IPacket packet = _packets[GetPacketId(bytes)].Invoke(Array.Empty