diff --git a/src/Avalonia/Artemis.UI.Shared/Events/DataModelInputDynamicEventArgs.cs b/src/Avalonia/Artemis.UI.Shared/Events/DataModelInputDynamicEventArgs.cs
deleted file mode 100644
index 537b7ec11..000000000
--- a/src/Avalonia/Artemis.UI.Shared/Events/DataModelInputDynamicEventArgs.cs
+++ /dev/null
@@ -1,21 +0,0 @@
-using System;
-using Artemis.Core;
-
-namespace Artemis.UI.Shared.Events
-{
- ///
- /// Provides data about selection events raised by
- ///
- public class DataModelInputDynamicEventArgs : EventArgs
- {
- internal DataModelInputDynamicEventArgs(DataModelPath? dataModelPath)
- {
- DataModelPath = dataModelPath;
- }
-
- ///
- /// Gets the data model path that was selected
- ///
- public DataModelPath? DataModelPath { get; }
- }
-}
\ No newline at end of file
diff --git a/src/Avalonia/Artemis.UI.Shared/Events/DataModelInputStaticEventArgs.cs b/src/Avalonia/Artemis.UI.Shared/Events/DataModelInputStaticEventArgs.cs
deleted file mode 100644
index beba22fae..000000000
--- a/src/Avalonia/Artemis.UI.Shared/Events/DataModelInputStaticEventArgs.cs
+++ /dev/null
@@ -1,20 +0,0 @@
-using System;
-
-namespace Artemis.UI.Shared.Events
-{
- ///
- /// Provides data about submit events raised by
- ///
- public class DataModelInputStaticEventArgs : EventArgs
- {
- internal DataModelInputStaticEventArgs(object? value)
- {
- Value = value;
- }
-
- ///
- /// The value that was submitted
- ///
- public object? Value { get; }
- }
-}
\ No newline at end of file
diff --git a/src/Avalonia/Artemis.UI.Shared/Events/SelectionRectangleEventArgs.cs b/src/Avalonia/Artemis.UI.Shared/Events/SelectionRectangleEventArgs.cs
deleted file mode 100644
index 2402b0858..000000000
--- a/src/Avalonia/Artemis.UI.Shared/Events/SelectionRectangleEventArgs.cs
+++ /dev/null
@@ -1,15 +0,0 @@
-using System;
-using Avalonia;
-
-namespace Artemis.UI.Shared.Events
-{
- public class SelectionRectangleEventArgs : EventArgs
- {
- public SelectionRectangleEventArgs(Rect rect)
- {
- Rect = rect;
- }
-
- public Rect Rect { get; }
- }
-}
\ No newline at end of file
diff --git a/src/Avalonia/Artemis.UI/ArtemisBootstrapper.cs b/src/Avalonia/Artemis.UI/ArtemisBootstrapper.cs
index 8d47b2f6d..a9d2f06d3 100644
--- a/src/Avalonia/Artemis.UI/ArtemisBootstrapper.cs
+++ b/src/Avalonia/Artemis.UI/ArtemisBootstrapper.cs
@@ -1,7 +1,7 @@
using Artemis.Core.Ninject;
using Artemis.UI.Exceptions;
using Artemis.UI.Ninject;
-using Artemis.UI.Screens.Root.ViewModels;
+using Artemis.UI.Screens.Root;
using Artemis.UI.Shared.Ninject;
using Avalonia.Controls.ApplicationLifetimes;
using Ninject;
diff --git a/src/Avalonia/Artemis.UI/MainWindow.axaml.cs b/src/Avalonia/Artemis.UI/MainWindow.axaml.cs
index c49ecd415..ad4cf0110 100644
--- a/src/Avalonia/Artemis.UI/MainWindow.axaml.cs
+++ b/src/Avalonia/Artemis.UI/MainWindow.axaml.cs
@@ -1,4 +1,4 @@
-using Artemis.UI.Screens.Root.ViewModels;
+using Artemis.UI.Screens.Root;
using Avalonia;
using Avalonia.Markup.Xaml;
using Avalonia.ReactiveUI;
diff --git a/src/Avalonia/Artemis.UI/Ninject/Factories/IVMFactory.cs b/src/Avalonia/Artemis.UI/Ninject/Factories/IVMFactory.cs
index b8e08da13..736298c31 100644
--- a/src/Avalonia/Artemis.UI/Ninject/Factories/IVMFactory.cs
+++ b/src/Avalonia/Artemis.UI/Ninject/Factories/IVMFactory.cs
@@ -1,11 +1,11 @@
using System.Collections.ObjectModel;
using Artemis.Core;
-using Artemis.UI.Screens.Device.Tabs.ViewModels;
-using Artemis.UI.Screens.Device.ViewModels;
-using Artemis.UI.Screens.Plugins.ViewModels;
-using Artemis.UI.Screens.Root.ViewModels;
-using Artemis.UI.Screens.Settings.Tabs.ViewModels;
-using Artemis.UI.Screens.SurfaceEditor.ViewModels;
+using Artemis.UI.Screens.Device;
+using Artemis.UI.Screens.Device.Tabs;
+using Artemis.UI.Screens.Plugins;
+using Artemis.UI.Screens.Root.Sidebar;
+using Artemis.UI.Screens.Settings.Tabs;
+using Artemis.UI.Screens.SurfaceEditor;
using ReactiveUI;
namespace Artemis.UI.Ninject.Factories
diff --git a/src/Avalonia/Artemis.UI/Screens/Device/Views/DeviceDetectInputView.axaml b/src/Avalonia/Artemis.UI/Screens/Device/DeviceDetectInputView.axaml
similarity index 94%
rename from src/Avalonia/Artemis.UI/Screens/Device/Views/DeviceDetectInputView.axaml
rename to src/Avalonia/Artemis.UI/Screens/Device/DeviceDetectInputView.axaml
index 760e110ec..310120d5c 100644
--- a/src/Avalonia/Artemis.UI/Screens/Device/Views/DeviceDetectInputView.axaml
+++ b/src/Avalonia/Artemis.UI/Screens/Device/DeviceDetectInputView.axaml
@@ -4,7 +4,7 @@
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:avalonia="clr-namespace:Material.Icons.Avalonia;assembly=Material.Icons.Avalonia"
mc:Ignorable="d" d:DesignWidth="500" d:DesignHeight="1050"
- x:Class="Artemis.UI.Screens.Device.Views.DeviceDetectInputView">
+ x:Class="Artemis.UI.Screens.Device.DeviceDetectInputView">
diff --git a/src/Avalonia/Artemis.UI/Screens/Device/Views/DeviceDetectInputView.axaml.cs b/src/Avalonia/Artemis.UI/Screens/Device/DeviceDetectInputView.axaml.cs
similarity index 80%
rename from src/Avalonia/Artemis.UI/Screens/Device/Views/DeviceDetectInputView.axaml.cs
rename to src/Avalonia/Artemis.UI/Screens/Device/DeviceDetectInputView.axaml.cs
index c36de345a..e82e7a74f 100644
--- a/src/Avalonia/Artemis.UI/Screens/Device/Views/DeviceDetectInputView.axaml.cs
+++ b/src/Avalonia/Artemis.UI/Screens/Device/DeviceDetectInputView.axaml.cs
@@ -1,8 +1,7 @@
-using Artemis.UI.Screens.Device.ViewModels;
using Avalonia.Markup.Xaml;
using Avalonia.ReactiveUI;
-namespace Artemis.UI.Screens.Device.Views
+namespace Artemis.UI.Screens.Device
{
public class DeviceDetectInputView : ReactiveUserControl
{
diff --git a/src/Avalonia/Artemis.UI/Screens/Device/ViewModels/DeviceDetectInputViewModel.cs b/src/Avalonia/Artemis.UI/Screens/Device/DeviceDetectInputViewModel.cs
similarity index 97%
rename from src/Avalonia/Artemis.UI/Screens/Device/ViewModels/DeviceDetectInputViewModel.cs
rename to src/Avalonia/Artemis.UI/Screens/Device/DeviceDetectInputViewModel.cs
index a26178751..e69616629 100644
--- a/src/Avalonia/Artemis.UI/Screens/Device/ViewModels/DeviceDetectInputViewModel.cs
+++ b/src/Avalonia/Artemis.UI/Screens/Device/DeviceDetectInputViewModel.cs
@@ -10,7 +10,7 @@ using Artemis.UI.Shared.Services.Interfaces;
using ReactiveUI;
using RGB.NET.Core;
-namespace Artemis.UI.Screens.Device.ViewModels
+namespace Artemis.UI.Screens.Device
{
public class DeviceDetectInputViewModel : ActivatableViewModelBase
{
diff --git a/src/Avalonia/Artemis.UI/Screens/Device/Views/DevicePropertiesView.axaml b/src/Avalonia/Artemis.UI/Screens/Device/DevicePropertiesView.axaml
similarity index 98%
rename from src/Avalonia/Artemis.UI/Screens/Device/Views/DevicePropertiesView.axaml
rename to src/Avalonia/Artemis.UI/Screens/Device/DevicePropertiesView.axaml
index 5d8fbd58a..3e51dbae6 100644
--- a/src/Avalonia/Artemis.UI/Screens/Device/Views/DevicePropertiesView.axaml
+++ b/src/Avalonia/Artemis.UI/Screens/Device/DevicePropertiesView.axaml
@@ -4,7 +4,7 @@
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:controls="clr-namespace:Artemis.UI.Shared.Controls;assembly=Artemis.UI.Shared"
mc:Ignorable="d" d:DesignWidth="1200" d:DesignHeight="800"
- x:Class="Artemis.UI.Screens.Device.Views.DevicePropertiesView"
+ x:Class="Artemis.UI.Screens.Device.DevicePropertiesView"
Title="Artemis | Device Properties"
Width="1250"
Height="900"
diff --git a/src/Avalonia/Artemis.UI/Screens/Device/Views/DevicePropertiesView.axaml.cs b/src/Avalonia/Artemis.UI/Screens/Device/DevicePropertiesView.axaml.cs
similarity index 83%
rename from src/Avalonia/Artemis.UI/Screens/Device/Views/DevicePropertiesView.axaml.cs
rename to src/Avalonia/Artemis.UI/Screens/Device/DevicePropertiesView.axaml.cs
index 624fc567c..d525d7c7f 100644
--- a/src/Avalonia/Artemis.UI/Screens/Device/Views/DevicePropertiesView.axaml.cs
+++ b/src/Avalonia/Artemis.UI/Screens/Device/DevicePropertiesView.axaml.cs
@@ -1,9 +1,8 @@
-using Artemis.UI.Screens.Device.ViewModels;
using Avalonia;
using Avalonia.Markup.Xaml;
using Avalonia.ReactiveUI;
-namespace Artemis.UI.Screens.Device.Views
+namespace Artemis.UI.Screens.Device
{
public partial class DevicePropertiesView : ReactiveWindow
{
diff --git a/src/Avalonia/Artemis.UI/Screens/Device/ViewModels/DevicePropertiesViewModel.cs b/src/Avalonia/Artemis.UI/Screens/Device/DevicePropertiesViewModel.cs
similarity index 96%
rename from src/Avalonia/Artemis.UI/Screens/Device/ViewModels/DevicePropertiesViewModel.cs
rename to src/Avalonia/Artemis.UI/Screens/Device/DevicePropertiesViewModel.cs
index 4ce089f9b..039d776f3 100644
--- a/src/Avalonia/Artemis.UI/Screens/Device/ViewModels/DevicePropertiesViewModel.cs
+++ b/src/Avalonia/Artemis.UI/Screens/Device/DevicePropertiesViewModel.cs
@@ -5,7 +5,7 @@ using Artemis.UI.Shared;
using RGB.NET.Core;
using ArtemisLed = Artemis.Core.ArtemisLed;
-namespace Artemis.UI.Screens.Device.ViewModels
+namespace Artemis.UI.Screens.Device
{
public class DevicePropertiesViewModel : DialogViewModelBase