diff --git a/.gitmodules b/.gitmodules
index 0d12baa..994ecc0 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,3 +1,3 @@
[submodule "SimpleLogger"]
path = SimpleLogger
- url = https://systems.reslate.xyz/git/ydeng/SimpleLogger.git
+ url = https://sys.reslate.net/lambda/git/ydeng/SimpleLogger.git
diff --git a/tests/GameServiceWarden.Core.Tests/Collection/FakeDisposable.cs b/GameServiceWarden.Tests/GameServiceWarden.Core.Tests/Collection/FakeDisposable.cs
similarity index 100%
rename from tests/GameServiceWarden.Core.Tests/Collection/FakeDisposable.cs
rename to GameServiceWarden.Tests/GameServiceWarden.Core.Tests/Collection/FakeDisposable.cs
diff --git a/tests/GameServiceWarden.Core.Tests/Collection/LRUCacheTest.cs b/GameServiceWarden.Tests/GameServiceWarden.Core.Tests/Collection/LRUCacheTest.cs
similarity index 100%
rename from tests/GameServiceWarden.Core.Tests/Collection/LRUCacheTest.cs
rename to GameServiceWarden.Tests/GameServiceWarden.Core.Tests/Collection/LRUCacheTest.cs
diff --git a/tests/GameServiceWarden.Core.Tests/GameServiceWarden.Core.Tests.csproj b/GameServiceWarden.Tests/GameServiceWarden.Core.Tests/GameServiceWarden.Core.Tests.csproj
similarity index 64%
rename from tests/GameServiceWarden.Core.Tests/GameServiceWarden.Core.Tests.csproj
rename to GameServiceWarden.Tests/GameServiceWarden.Core.Tests/GameServiceWarden.Core.Tests.csproj
index 38b5505..98e96de 100644
--- a/tests/GameServiceWarden.Core.Tests/GameServiceWarden.Core.Tests.csproj
+++ b/GameServiceWarden.Tests/GameServiceWarden.Core.Tests/GameServiceWarden.Core.Tests.csproj
@@ -1,7 +1,7 @@
- netcoreapp3.1
+ net7.0
false
@@ -14,8 +14,8 @@
-
-
+
+
diff --git a/tests/GameServiceWarden.Core.Tests/Modules/FakePersistence.cs b/GameServiceWarden.Tests/GameServiceWarden.Core.Tests/Modules/FakePersistence.cs
similarity index 100%
rename from tests/GameServiceWarden.Core.Tests/Modules/FakePersistence.cs
rename to GameServiceWarden.Tests/GameServiceWarden.Core.Tests/Modules/FakePersistence.cs
diff --git a/tests/GameServiceWarden.Core.Tests/Modules/FakeService.cs b/GameServiceWarden.Tests/GameServiceWarden.Core.Tests/Modules/FakeService.cs
similarity index 100%
rename from tests/GameServiceWarden.Core.Tests/Modules/FakeService.cs
rename to GameServiceWarden.Tests/GameServiceWarden.Core.Tests/Modules/FakeService.cs
diff --git a/tests/GameServiceWarden.Core.Tests/Modules/FakeServiceConfigurable.cs b/GameServiceWarden.Tests/GameServiceWarden.Core.Tests/Modules/FakeServiceConfigurable.cs
similarity index 100%
rename from tests/GameServiceWarden.Core.Tests/Modules/FakeServiceConfigurable.cs
rename to GameServiceWarden.Tests/GameServiceWarden.Core.Tests/Modules/FakeServiceConfigurable.cs
diff --git a/tests/GameServiceWarden.Core.Tests/Modules/FakeServiceManagerMonitor.cs b/GameServiceWarden.Tests/GameServiceWarden.Core.Tests/Modules/FakeServiceManagerMonitor.cs
similarity index 100%
rename from tests/GameServiceWarden.Core.Tests/Modules/FakeServiceManagerMonitor.cs
rename to GameServiceWarden.Tests/GameServiceWarden.Core.Tests/Modules/FakeServiceManagerMonitor.cs
diff --git a/tests/GameServiceWarden.Core.Tests/Modules/FakeServiceModule.cs b/GameServiceWarden.Tests/GameServiceWarden.Core.Tests/Modules/FakeServiceModule.cs
similarity index 100%
rename from tests/GameServiceWarden.Core.Tests/Modules/FakeServiceModule.cs
rename to GameServiceWarden.Tests/GameServiceWarden.Core.Tests/Modules/FakeServiceModule.cs
diff --git a/tests/GameServiceWarden.Core.Tests/Modules/ServiceDescriptorTest.cs b/GameServiceWarden.Tests/GameServiceWarden.Core.Tests/Modules/ServiceDescriptorTest.cs
similarity index 100%
rename from tests/GameServiceWarden.Core.Tests/Modules/ServiceDescriptorTest.cs
rename to GameServiceWarden.Tests/GameServiceWarden.Core.Tests/Modules/ServiceDescriptorTest.cs
diff --git a/tests/GameServiceWarden.Core.Tests/Modules/ServiceManagerTest.cs b/GameServiceWarden.Tests/GameServiceWarden.Core.Tests/Modules/ServiceManagerTest.cs
similarity index 100%
rename from tests/GameServiceWarden.Core.Tests/Modules/ServiceManagerTest.cs
rename to GameServiceWarden.Tests/GameServiceWarden.Core.Tests/Modules/ServiceManagerTest.cs
diff --git a/tests/GameServiceWarden.Core.Tests/Persistence/ServiceDescriptorPersistenceTest.cs b/GameServiceWarden.Tests/GameServiceWarden.Core.Tests/Persistence/ServiceDescriptorPersistenceTest.cs
similarity index 100%
rename from tests/GameServiceWarden.Core.Tests/Persistence/ServiceDescriptorPersistenceTest.cs
rename to GameServiceWarden.Tests/GameServiceWarden.Core.Tests/Persistence/ServiceDescriptorPersistenceTest.cs
diff --git a/tests/GameServiceWarden.Core.Tests/UI/IPCMediatorTest.cs b/GameServiceWarden.Tests/GameServiceWarden.Core.Tests/UI/IPCMediatorTest.cs
similarity index 100%
rename from tests/GameServiceWarden.Core.Tests/UI/IPCMediatorTest.cs
rename to GameServiceWarden.Tests/GameServiceWarden.Core.Tests/UI/IPCMediatorTest.cs
diff --git a/tests/GameServiceWarden.Core.Tests/XUnitLogger.cs b/GameServiceWarden.Tests/GameServiceWarden.Core.Tests/XUnitLogger.cs
similarity index 100%
rename from tests/GameServiceWarden.Core.Tests/XUnitLogger.cs
rename to GameServiceWarden.Tests/GameServiceWarden.Core.Tests/XUnitLogger.cs
diff --git a/GameServiceWarden.Tests/GameServiceWarden.Tests.sln b/GameServiceWarden.Tests/GameServiceWarden.Tests.sln
new file mode 100644
index 0000000..5a1c88f
--- /dev/null
+++ b/GameServiceWarden.Tests/GameServiceWarden.Tests.sln
@@ -0,0 +1,22 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 17
+VisualStudioVersion = 17.0.31903.59
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GameServiceWarden.Core.Tests", "GameServiceWarden.Core.Tests\GameServiceWarden.Core.Tests.csproj", "{59D37458-41F3-478C-BDE6-CF33EC667701}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {59D37458-41F3-478C-BDE6-CF33EC667701}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {59D37458-41F3-478C-BDE6-CF33EC667701}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {59D37458-41F3-478C-BDE6-CF33EC667701}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {59D37458-41F3-478C-BDE6-CF33EC667701}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+EndGlobal
diff --git a/src/GameServiceWarden.Core/Collection/LRUCache.cs b/GameServiceWarden/GameServiceWarden.Core/Collection/LRUCache.cs
similarity index 100%
rename from src/GameServiceWarden.Core/Collection/LRUCache.cs
rename to GameServiceWarden/GameServiceWarden.Core/Collection/LRUCache.cs
diff --git a/src/GameServiceWarden.Core/GameServiceWarden.Core.csproj b/GameServiceWarden/GameServiceWarden.Core/GameServiceWarden.Core.csproj
similarity index 89%
rename from src/GameServiceWarden.Core/GameServiceWarden.Core.csproj
rename to GameServiceWarden/GameServiceWarden.Core/GameServiceWarden.Core.csproj
index 2ffcddc..189d928 100644
--- a/src/GameServiceWarden.Core/GameServiceWarden.Core.csproj
+++ b/GameServiceWarden/GameServiceWarden.Core/GameServiceWarden.Core.csproj
@@ -8,7 +8,7 @@
Exe
- netcoreapp3.1
+ net7.0
diff --git a/src/GameServiceWarden.Core/Module/Exceptions/ModuleLoadException.cs b/GameServiceWarden/GameServiceWarden.Core/Module/Exceptions/ModuleLoadException.cs
similarity index 100%
rename from src/GameServiceWarden.Core/Module/Exceptions/ModuleLoadException.cs
rename to GameServiceWarden/GameServiceWarden.Core/Module/Exceptions/ModuleLoadException.cs
diff --git a/src/GameServiceWarden.Core/Module/Exceptions/ServiceInitializationException.cs b/GameServiceWarden/GameServiceWarden.Core/Module/Exceptions/ServiceInitializationException.cs
similarity index 100%
rename from src/GameServiceWarden.Core/Module/Exceptions/ServiceInitializationException.cs
rename to GameServiceWarden/GameServiceWarden.Core/Module/Exceptions/ServiceInitializationException.cs
diff --git a/src/GameServiceWarden.Core/Module/IServiceExecuter.cs b/GameServiceWarden/GameServiceWarden.Core/Module/IServiceExecuter.cs
similarity index 100%
rename from src/GameServiceWarden.Core/Module/IServiceExecuter.cs
rename to GameServiceWarden/GameServiceWarden.Core/Module/IServiceExecuter.cs
diff --git a/src/GameServiceWarden.Core/Module/IServiceManagerMonitor.cs b/GameServiceWarden/GameServiceWarden.Core/Module/IServiceManagerMonitor.cs
similarity index 100%
rename from src/GameServiceWarden.Core/Module/IServiceManagerMonitor.cs
rename to GameServiceWarden/GameServiceWarden.Core/Module/IServiceManagerMonitor.cs
diff --git a/src/GameServiceWarden.Core/Module/ModuleLoadContext.cs b/GameServiceWarden/GameServiceWarden.Core/Module/ModuleLoadContext.cs
similarity index 100%
rename from src/GameServiceWarden.Core/Module/ModuleLoadContext.cs
rename to GameServiceWarden/GameServiceWarden.Core/Module/ModuleLoadContext.cs
diff --git a/src/GameServiceWarden.Core/Module/ModuleLoader.cs b/GameServiceWarden/GameServiceWarden.Core/Module/ModuleLoader.cs
similarity index 100%
rename from src/GameServiceWarden.Core/Module/ModuleLoader.cs
rename to GameServiceWarden/GameServiceWarden.Core/Module/ModuleLoader.cs
diff --git a/src/GameServiceWarden.Core/Module/ServiceDescriptor.cs b/GameServiceWarden/GameServiceWarden.Core/Module/ServiceDescriptor.cs
similarity index 100%
rename from src/GameServiceWarden.Core/Module/ServiceDescriptor.cs
rename to GameServiceWarden/GameServiceWarden.Core/Module/ServiceDescriptor.cs
diff --git a/src/GameServiceWarden.Core/Module/ServiceManager.cs b/GameServiceWarden/GameServiceWarden.Core/Module/ServiceManager.cs
similarity index 100%
rename from src/GameServiceWarden.Core/Module/ServiceManager.cs
rename to GameServiceWarden/GameServiceWarden.Core/Module/ServiceManager.cs
diff --git a/src/GameServiceWarden.Core/Persistence/IPersistent.cs b/GameServiceWarden/GameServiceWarden.Core/Persistence/IPersistent.cs
similarity index 100%
rename from src/GameServiceWarden.Core/Persistence/IPersistent.cs
rename to GameServiceWarden/GameServiceWarden.Core/Persistence/IPersistent.cs
diff --git a/src/GameServiceWarden.Core/Persistence/IReadOnlyPersistent.cs b/GameServiceWarden/GameServiceWarden.Core/Persistence/IReadOnlyPersistent.cs
similarity index 100%
rename from src/GameServiceWarden.Core/Persistence/IReadOnlyPersistent.cs
rename to GameServiceWarden/GameServiceWarden.Core/Persistence/IReadOnlyPersistent.cs
diff --git a/src/GameServiceWarden.Core/Persistence/ServiceDescriptorPersistence.cs b/GameServiceWarden/GameServiceWarden.Core/Persistence/ServiceDescriptorPersistence.cs
similarity index 100%
rename from src/GameServiceWarden.Core/Persistence/ServiceDescriptorPersistence.cs
rename to GameServiceWarden/GameServiceWarden.Core/Persistence/ServiceDescriptorPersistence.cs
diff --git a/src/GameServiceWarden.Core/Persistence/ServiceModules.cs b/GameServiceWarden/GameServiceWarden.Core/Persistence/ServiceModules.cs
similarity index 100%
rename from src/GameServiceWarden.Core/Persistence/ServiceModules.cs
rename to GameServiceWarden/GameServiceWarden.Core/Persistence/ServiceModules.cs
diff --git a/src/GameServiceWarden.Core/Program.cs b/GameServiceWarden/GameServiceWarden.Core/Program.cs
similarity index 100%
rename from src/GameServiceWarden.Core/Program.cs
rename to GameServiceWarden/GameServiceWarden.Core/Program.cs
diff --git a/src/GameServiceWarden.Core/UI/IPCController.cs b/GameServiceWarden/GameServiceWarden.Core/UI/IPCController.cs
similarity index 100%
rename from src/GameServiceWarden.Core/UI/IPCController.cs
rename to GameServiceWarden/GameServiceWarden.Core/UI/IPCController.cs
diff --git a/src/GameServiceWarden.Core/UI/IPCMediator.cs b/GameServiceWarden/GameServiceWarden.Core/UI/IPCMediator.cs
similarity index 100%
rename from src/GameServiceWarden.Core/UI/IPCMediator.cs
rename to GameServiceWarden/GameServiceWarden.Core/UI/IPCMediator.cs
diff --git a/src/GameServiceWarden.Core/UI/IPCPresenter.cs b/GameServiceWarden/GameServiceWarden.Core/UI/IPCPresenter.cs
similarity index 100%
rename from src/GameServiceWarden.Core/UI/IPCPresenter.cs
rename to GameServiceWarden/GameServiceWarden.Core/UI/IPCPresenter.cs
diff --git a/src/GameServiceWarden.Core/UMLSketch.drawio b/GameServiceWarden/GameServiceWarden.Core/UMLSketch.drawio
similarity index 100%
rename from src/GameServiceWarden.Core/UMLSketch.drawio
rename to GameServiceWarden/GameServiceWarden.Core/UMLSketch.drawio
diff --git a/src/GameServiceWarden.InteractionAPI/Communicable/CommunicableType.cs b/GameServiceWarden/GameServiceWarden.InteractionAPI/Communicable/CommunicableType.cs
similarity index 100%
rename from src/GameServiceWarden.InteractionAPI/Communicable/CommunicableType.cs
rename to GameServiceWarden/GameServiceWarden.InteractionAPI/Communicable/CommunicableType.cs
diff --git a/src/GameServiceWarden.InteractionAPI/Communicable/Requests/ConnectRequest.cs b/GameServiceWarden/GameServiceWarden.InteractionAPI/Communicable/Requests/ConnectRequest.cs
similarity index 100%
rename from src/GameServiceWarden.InteractionAPI/Communicable/Requests/ConnectRequest.cs
rename to GameServiceWarden/GameServiceWarden.InteractionAPI/Communicable/Requests/ConnectRequest.cs
diff --git a/src/GameServiceWarden.InteractionAPI/Communicable/Requests/DeltaRequest.cs b/GameServiceWarden/GameServiceWarden.InteractionAPI/Communicable/Requests/DeltaRequest.cs
similarity index 100%
rename from src/GameServiceWarden.InteractionAPI/Communicable/Requests/DeltaRequest.cs
rename to GameServiceWarden/GameServiceWarden.InteractionAPI/Communicable/Requests/DeltaRequest.cs
diff --git a/src/GameServiceWarden.InteractionAPI/Communicable/Requests/DisconnectRequest.cs b/GameServiceWarden/GameServiceWarden.InteractionAPI/Communicable/Requests/DisconnectRequest.cs
similarity index 100%
rename from src/GameServiceWarden.InteractionAPI/Communicable/Requests/DisconnectRequest.cs
rename to GameServiceWarden/GameServiceWarden.InteractionAPI/Communicable/Requests/DisconnectRequest.cs
diff --git a/src/GameServiceWarden.InteractionAPI/Communicable/Requests/RequestHeader.cs b/GameServiceWarden/GameServiceWarden.InteractionAPI/Communicable/Requests/RequestHeader.cs
similarity index 100%
rename from src/GameServiceWarden.InteractionAPI/Communicable/Requests/RequestHeader.cs
rename to GameServiceWarden/GameServiceWarden.InteractionAPI/Communicable/Requests/RequestHeader.cs
diff --git a/src/GameServiceWarden.InteractionAPI/Communicable/Responses/ConnectResponse.cs b/GameServiceWarden/GameServiceWarden.InteractionAPI/Communicable/Responses/ConnectResponse.cs
similarity index 100%
rename from src/GameServiceWarden.InteractionAPI/Communicable/Responses/ConnectResponse.cs
rename to GameServiceWarden/GameServiceWarden.InteractionAPI/Communicable/Responses/ConnectResponse.cs
diff --git a/src/GameServiceWarden.InteractionAPI/Communicable/Responses/DeltaResponse.cs b/GameServiceWarden/GameServiceWarden.InteractionAPI/Communicable/Responses/DeltaResponse.cs
similarity index 100%
rename from src/GameServiceWarden.InteractionAPI/Communicable/Responses/DeltaResponse.cs
rename to GameServiceWarden/GameServiceWarden.InteractionAPI/Communicable/Responses/DeltaResponse.cs
diff --git a/src/GameServiceWarden.InteractionAPI/Communicable/Responses/DisconnectResponse.cs b/GameServiceWarden/GameServiceWarden.InteractionAPI/Communicable/Responses/DisconnectResponse.cs
similarity index 100%
rename from src/GameServiceWarden.InteractionAPI/Communicable/Responses/DisconnectResponse.cs
rename to GameServiceWarden/GameServiceWarden.InteractionAPI/Communicable/Responses/DisconnectResponse.cs
diff --git a/src/GameServiceWarden.InteractionAPI/Communicable/Responses/ResponseHeader.cs b/GameServiceWarden/GameServiceWarden.InteractionAPI/Communicable/Responses/ResponseHeader.cs
similarity index 100%
rename from src/GameServiceWarden.InteractionAPI/Communicable/Responses/ResponseHeader.cs
rename to GameServiceWarden/GameServiceWarden.InteractionAPI/Communicable/Responses/ResponseHeader.cs
diff --git a/src/GameServiceWarden.InteractionAPI/Communicable/Responses/UnexpectedRequestResponse.cs b/GameServiceWarden/GameServiceWarden.InteractionAPI/Communicable/Responses/UnexpectedRequestResponse.cs
similarity index 100%
rename from src/GameServiceWarden.InteractionAPI/Communicable/Responses/UnexpectedRequestResponse.cs
rename to GameServiceWarden/GameServiceWarden.InteractionAPI/Communicable/Responses/UnexpectedRequestResponse.cs
diff --git a/src/GameServiceWarden.InteractionAPI/Communicable/Responses/ViewResponse.cs b/GameServiceWarden/GameServiceWarden.InteractionAPI/Communicable/Responses/ViewResponse.cs
similarity index 100%
rename from src/GameServiceWarden.InteractionAPI/Communicable/Responses/ViewResponse.cs
rename to GameServiceWarden/GameServiceWarden.InteractionAPI/Communicable/Responses/ViewResponse.cs
diff --git a/src/GameServiceWarden.InteractionAPI/GameServiceWarden.InteractionAPI.csproj b/GameServiceWarden/GameServiceWarden.InteractionAPI/GameServiceWarden.InteractionAPI.csproj
similarity index 60%
rename from src/GameServiceWarden.InteractionAPI/GameServiceWarden.InteractionAPI.csproj
rename to GameServiceWarden/GameServiceWarden.InteractionAPI/GameServiceWarden.InteractionAPI.csproj
index 9f5c4f4..8268829 100644
--- a/src/GameServiceWarden.InteractionAPI/GameServiceWarden.InteractionAPI.csproj
+++ b/GameServiceWarden/GameServiceWarden.InteractionAPI/GameServiceWarden.InteractionAPI.csproj
@@ -1,7 +1,7 @@
- netstandard2.0
+ net7.0
diff --git a/src/GameServiceWarden.InteractionAPI/Module/ServiceManagerAction.cs b/GameServiceWarden/GameServiceWarden.InteractionAPI/Module/ServiceManagerAction.cs
similarity index 100%
rename from src/GameServiceWarden.InteractionAPI/Module/ServiceManagerAction.cs
rename to GameServiceWarden/GameServiceWarden.InteractionAPI/Module/ServiceManagerAction.cs
diff --git a/src/GameServiceWarden.InteractionAPI/Module/ServiceManagerDelta.cs b/GameServiceWarden/GameServiceWarden.InteractionAPI/Module/ServiceManagerDelta.cs
similarity index 100%
rename from src/GameServiceWarden.InteractionAPI/Module/ServiceManagerDelta.cs
rename to GameServiceWarden/GameServiceWarden.InteractionAPI/Module/ServiceManagerDelta.cs
diff --git a/src/GameServiceWarden.InteractionAPI/Module/ServiceManagerTotal.cs b/GameServiceWarden/GameServiceWarden.InteractionAPI/Module/ServiceManagerTotal.cs
similarity index 100%
rename from src/GameServiceWarden.InteractionAPI/Module/ServiceManagerTotal.cs
rename to GameServiceWarden/GameServiceWarden.InteractionAPI/Module/ServiceManagerTotal.cs
diff --git a/src/GameServiceWarden.ModuleFramework/GameServiceWarden.ModuleFramework.csproj b/GameServiceWarden/GameServiceWarden.ModuleFramework/GameServiceWarden.ModuleFramework.csproj
similarity index 60%
rename from src/GameServiceWarden.ModuleFramework/GameServiceWarden.ModuleFramework.csproj
rename to GameServiceWarden/GameServiceWarden.ModuleFramework/GameServiceWarden.ModuleFramework.csproj
index 9f5c4f4..8268829 100644
--- a/src/GameServiceWarden.ModuleFramework/GameServiceWarden.ModuleFramework.csproj
+++ b/GameServiceWarden/GameServiceWarden.ModuleFramework/GameServiceWarden.ModuleFramework.csproj
@@ -1,7 +1,7 @@
- netstandard2.0
+ net7.0
diff --git a/src/GameServiceWarden.ModuleFramework/IService.cs b/GameServiceWarden/GameServiceWarden.ModuleFramework/IService.cs
similarity index 100%
rename from src/GameServiceWarden.ModuleFramework/IService.cs
rename to GameServiceWarden/GameServiceWarden.ModuleFramework/IService.cs
diff --git a/src/GameServiceWarden.ModuleFramework/IServiceConfigurable.cs b/GameServiceWarden/GameServiceWarden.ModuleFramework/IServiceConfigurable.cs
similarity index 100%
rename from src/GameServiceWarden.ModuleFramework/IServiceConfigurable.cs
rename to GameServiceWarden/GameServiceWarden.ModuleFramework/IServiceConfigurable.cs
diff --git a/src/GameServiceWarden.ModuleFramework/IServiceModule.cs b/GameServiceWarden/GameServiceWarden.ModuleFramework/IServiceModule.cs
similarity index 100%
rename from src/GameServiceWarden.ModuleFramework/IServiceModule.cs
rename to GameServiceWarden/GameServiceWarden.ModuleFramework/IServiceModule.cs
diff --git a/src/GameServiceWarden.ModuleFramework/ServiceRunState.cs b/GameServiceWarden/GameServiceWarden.ModuleFramework/ServiceRunState.cs
similarity index 100%
rename from src/GameServiceWarden.ModuleFramework/ServiceRunState.cs
rename to GameServiceWarden/GameServiceWarden.ModuleFramework/ServiceRunState.cs
diff --git a/GameServiceWarden/GameServiceWarden.sln b/GameServiceWarden/GameServiceWarden.sln
new file mode 100644
index 0000000..424da83
--- /dev/null
+++ b/GameServiceWarden/GameServiceWarden.sln
@@ -0,0 +1,34 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 17
+VisualStudioVersion = 17.0.31903.59
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GameServiceWarden.Core", "GameServiceWarden.Core\GameServiceWarden.Core.csproj", "{72FE4FFA-8730-4043-BCE9-794E816542CA}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GameServiceWarden.InteractionAPI", "GameServiceWarden.InteractionAPI\GameServiceWarden.InteractionAPI.csproj", "{A254A364-8089-4799-8F45-02E683D59F75}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GameServiceWarden.ModuleFramework", "GameServiceWarden.ModuleFramework\GameServiceWarden.ModuleFramework.csproj", "{23F7A773-D146-4522-8200-BDD60E39B79F}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {72FE4FFA-8730-4043-BCE9-794E816542CA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {72FE4FFA-8730-4043-BCE9-794E816542CA}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {72FE4FFA-8730-4043-BCE9-794E816542CA}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {72FE4FFA-8730-4043-BCE9-794E816542CA}.Release|Any CPU.Build.0 = Release|Any CPU
+ {A254A364-8089-4799-8F45-02E683D59F75}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {A254A364-8089-4799-8F45-02E683D59F75}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {A254A364-8089-4799-8F45-02E683D59F75}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {A254A364-8089-4799-8F45-02E683D59F75}.Release|Any CPU.Build.0 = Release|Any CPU
+ {23F7A773-D146-4522-8200-BDD60E39B79F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {23F7A773-D146-4522-8200-BDD60E39B79F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {23F7A773-D146-4522-8200-BDD60E39B79F}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {23F7A773-D146-4522-8200-BDD60E39B79F}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+EndGlobal
diff --git a/Jenkinsfile b/Jenkinsfile
new file mode 100644
index 0000000..ddaa9ea
--- /dev/null
+++ b/Jenkinsfile
@@ -0,0 +1,16 @@
+pipeline {
+ agent any
+ stages {
+ stage ("Install") {
+ sh "mamba env update --file environment.yml"
+ sh "echo 'mamba activate props' >> ~/.bashrc"
+ sh "dotnet restore GameServiceWarden"
+ sh "dotnet restore GameServiceWarden.Tests"
+ }
+ stage ("Test") {
+ sh "sh 'dotnet test --logger xunit --no-restore GameServiceWarden.Tests"
+ xunit([xUnitDotNet(excludesPattern: '', pattern: 'GameServiceWarden.Tests/*.Tests/TestResults/*.xml', stopProcessingIfError: true)])
+ }
+ }
+}
+
diff --git a/build.sh b/build.sh
old mode 100644
new mode 100755
diff --git a/test.sh b/test.sh
old mode 100644
new mode 100755