diff --git a/src/main/java/eu/mhsl/craftattack/spawn/appliances/antiSignEdit/AntiSignEdit.java b/src/main/java/eu/mhsl/craftattack/spawn/appliances/antiSignEdit/AntiSignEdit.java
index 4a13e2f..67b69e0 100644
--- a/src/main/java/eu/mhsl/craftattack/spawn/appliances/antiSignEdit/AntiSignEdit.java
+++ b/src/main/java/eu/mhsl/craftattack/spawn/appliances/antiSignEdit/AntiSignEdit.java
@@ -3,7 +3,6 @@ package eu.mhsl.craftattack.spawn.appliances.antiSignEdit;
 import eu.mhsl.craftattack.spawn.appliance.Appliance;
 import eu.mhsl.craftattack.spawn.appliances.settings.Settings;
 import eu.mhsl.craftattack.spawn.appliances.settings.datatypes.SelectSetting;
-import eu.mhsl.craftattack.spawn.appliances.settings.settings.SignEditSetting;
 import net.kyori.adventure.text.Component;
 import net.kyori.adventure.text.format.NamedTextColor;
 import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer;
@@ -15,6 +14,11 @@ import org.jetbrains.annotations.NotNull;
 import java.util.List;
 
 public class AntiSignEdit extends Appliance {
+    @Override
+    public void onEnable() {
+        Settings.instance().declareSetting(SignEditSetting.class);
+    }
+
     public boolean preventSignEdit(Player p, SignSide sign) {
         SelectSetting.Options.Option setting = Settings.instance().getSetting(p, Settings.Key.SignEdit, SelectSetting.Options.Option.class);
         if(setting.is(SignEditSetting.editable)) return false;
diff --git a/src/main/java/eu/mhsl/craftattack/spawn/appliances/settings/settings/SignEditSetting.java b/src/main/java/eu/mhsl/craftattack/spawn/appliances/antiSignEdit/SignEditSetting.java
similarity index 96%
rename from src/main/java/eu/mhsl/craftattack/spawn/appliances/settings/settings/SignEditSetting.java
rename to src/main/java/eu/mhsl/craftattack/spawn/appliances/antiSignEdit/SignEditSetting.java
index d1164ed..699ba0e 100644
--- a/src/main/java/eu/mhsl/craftattack/spawn/appliances/settings/settings/SignEditSetting.java
+++ b/src/main/java/eu/mhsl/craftattack/spawn/appliances/antiSignEdit/SignEditSetting.java
@@ -1,4 +1,4 @@
-package eu.mhsl.craftattack.spawn.appliances.settings.settings;
+package eu.mhsl.craftattack.spawn.appliances.antiSignEdit;
 
 import eu.mhsl.craftattack.spawn.appliances.settings.CategorizedSetting;
 import eu.mhsl.craftattack.spawn.appliances.settings.SettingCategory;
diff --git a/src/main/java/eu/mhsl/craftattack/spawn/appliances/autoShulker/AutoShulker.java b/src/main/java/eu/mhsl/craftattack/spawn/appliances/autoShulker/AutoShulker.java
index db787ad..b8bc57a 100644
--- a/src/main/java/eu/mhsl/craftattack/spawn/appliances/autoShulker/AutoShulker.java
+++ b/src/main/java/eu/mhsl/craftattack/spawn/appliances/autoShulker/AutoShulker.java
@@ -1,6 +1,7 @@
 package eu.mhsl.craftattack.spawn.appliances.autoShulker;
 
 import eu.mhsl.craftattack.spawn.appliance.Appliance;
+import eu.mhsl.craftattack.spawn.appliances.settings.Settings;
 import net.kyori.adventure.text.Component;
 import net.kyori.adventure.text.format.NamedTextColor;
 import org.bukkit.Material;
@@ -16,6 +17,11 @@ import java.util.HashMap;
 import java.util.List;
 
 public class AutoShulker extends Appliance {
+    @Override
+    public void onEnable() {
+        Settings.instance().declareSetting(AutoShulkerSetting.class);
+    }
+
     public boolean tryAutoShulker(Player p, Item item) {
         ItemStack itemStack = item.getItemStack();
         ItemStack offhandStack = p.getInventory().getItemInOffHand();
diff --git a/src/main/java/eu/mhsl/craftattack/spawn/appliances/settings/settings/AutoShulkerSetting.java b/src/main/java/eu/mhsl/craftattack/spawn/appliances/autoShulker/AutoShulkerSetting.java
similarity index 96%
rename from src/main/java/eu/mhsl/craftattack/spawn/appliances/settings/settings/AutoShulkerSetting.java
rename to src/main/java/eu/mhsl/craftattack/spawn/appliances/autoShulker/AutoShulkerSetting.java
index 941adb8..c462516 100644
--- a/src/main/java/eu/mhsl/craftattack/spawn/appliances/settings/settings/AutoShulkerSetting.java
+++ b/src/main/java/eu/mhsl/craftattack/spawn/appliances/autoShulker/AutoShulkerSetting.java
@@ -1,4 +1,4 @@
-package eu.mhsl.craftattack.spawn.appliances.settings.settings;
+package eu.mhsl.craftattack.spawn.appliances.autoShulker;
 
 import eu.mhsl.craftattack.spawn.appliances.settings.CategorizedSetting;
 import eu.mhsl.craftattack.spawn.appliances.settings.SettingCategory;
diff --git a/src/main/java/eu/mhsl/craftattack/spawn/appliances/autoShulker/ItemPickupListener.java b/src/main/java/eu/mhsl/craftattack/spawn/appliances/autoShulker/ItemPickupListener.java
index db74c7c..bd6b8c6 100644
--- a/src/main/java/eu/mhsl/craftattack/spawn/appliances/autoShulker/ItemPickupListener.java
+++ b/src/main/java/eu/mhsl/craftattack/spawn/appliances/autoShulker/ItemPickupListener.java
@@ -3,7 +3,6 @@ package eu.mhsl.craftattack.spawn.appliances.autoShulker;
 import eu.mhsl.craftattack.spawn.appliance.ApplianceListener;
 import eu.mhsl.craftattack.spawn.appliances.settings.Settings;
 import eu.mhsl.craftattack.spawn.appliances.settings.datatypes.SelectSetting;
-import eu.mhsl.craftattack.spawn.appliances.settings.settings.AutoShulkerSetting;
 import org.bukkit.entity.Player;
 import org.bukkit.event.EventHandler;
 import org.bukkit.event.entity.EntityPickupItemEvent;
diff --git a/src/main/java/eu/mhsl/craftattack/spawn/appliances/chatMention/ChatMention.java b/src/main/java/eu/mhsl/craftattack/spawn/appliances/chatMention/ChatMention.java
index cdc8231..e2cb490 100644
--- a/src/main/java/eu/mhsl/craftattack/spawn/appliances/chatMention/ChatMention.java
+++ b/src/main/java/eu/mhsl/craftattack/spawn/appliances/chatMention/ChatMention.java
@@ -3,7 +3,6 @@ package eu.mhsl.craftattack.spawn.appliances.chatMention;
 import eu.mhsl.craftattack.spawn.Main;
 import eu.mhsl.craftattack.spawn.appliance.Appliance;
 import eu.mhsl.craftattack.spawn.appliances.settings.Settings;
-import eu.mhsl.craftattack.spawn.appliances.settings.settings.ChatMentionSetting;
 import net.kyori.adventure.sound.Sound;
 import org.bukkit.Bukkit;
 import org.bukkit.OfflinePlayer;
@@ -56,6 +55,7 @@ public class ChatMention extends Appliance {
 
     @Override
     public void onEnable() {
+        Settings.instance().declareSetting(ChatMentionSetting.class);
         refreshPlayers();
     }
 
diff --git a/src/main/java/eu/mhsl/craftattack/spawn/appliances/chatMention/ChatMentionListener.java b/src/main/java/eu/mhsl/craftattack/spawn/appliances/chatMention/ChatMentionListener.java
index db27a13..d9dff2f 100644
--- a/src/main/java/eu/mhsl/craftattack/spawn/appliances/chatMention/ChatMentionListener.java
+++ b/src/main/java/eu/mhsl/craftattack/spawn/appliances/chatMention/ChatMentionListener.java
@@ -2,7 +2,6 @@ package eu.mhsl.craftattack.spawn.appliances.chatMention;
 
 import eu.mhsl.craftattack.spawn.appliance.ApplianceListener;
 import eu.mhsl.craftattack.spawn.appliances.settings.Settings;
-import eu.mhsl.craftattack.spawn.appliances.settings.settings.ChatMentionSetting;
 import io.papermc.paper.event.player.AsyncChatDecorateEvent;
 import net.kyori.adventure.text.Component;
 import net.kyori.adventure.text.format.NamedTextColor;
diff --git a/src/main/java/eu/mhsl/craftattack/spawn/appliances/settings/settings/ChatMentionSetting.java b/src/main/java/eu/mhsl/craftattack/spawn/appliances/chatMention/ChatMentionSetting.java
similarity index 95%
rename from src/main/java/eu/mhsl/craftattack/spawn/appliances/settings/settings/ChatMentionSetting.java
rename to src/main/java/eu/mhsl/craftattack/spawn/appliances/chatMention/ChatMentionSetting.java
index 21a43b4..a54f6a8 100644
--- a/src/main/java/eu/mhsl/craftattack/spawn/appliances/settings/settings/ChatMentionSetting.java
+++ b/src/main/java/eu/mhsl/craftattack/spawn/appliances/chatMention/ChatMentionSetting.java
@@ -1,4 +1,4 @@
-package eu.mhsl.craftattack.spawn.appliances.settings.settings;
+package eu.mhsl.craftattack.spawn.appliances.chatMention;
 
 import eu.mhsl.craftattack.spawn.appliances.settings.CategorizedSetting;
 import eu.mhsl.craftattack.spawn.appliances.settings.SettingCategory;
diff --git a/src/main/java/eu/mhsl/craftattack/spawn/appliances/chatMessages/ChatMessages.java b/src/main/java/eu/mhsl/craftattack/spawn/appliances/chatMessages/ChatMessages.java
index a0d36d8..337ab32 100644
--- a/src/main/java/eu/mhsl/craftattack/spawn/appliances/chatMessages/ChatMessages.java
+++ b/src/main/java/eu/mhsl/craftattack/spawn/appliances/chatMessages/ChatMessages.java
@@ -1,6 +1,7 @@
 package eu.mhsl.craftattack.spawn.appliances.chatMessages;
 
 import eu.mhsl.craftattack.spawn.appliance.Appliance;
+import eu.mhsl.craftattack.spawn.appliances.settings.Settings;
 import net.kyori.adventure.text.Component;
 import net.kyori.adventure.text.event.ClickEvent;
 import net.kyori.adventure.text.event.HoverEvent;
@@ -12,6 +13,11 @@ import org.jetbrains.annotations.NotNull;
 import java.util.List;
 
 public class ChatMessages extends Appliance {
+    @Override
+    public void onEnable() {
+        Settings.instance().declareSetting(ShowJoinAndLeaveMessagesSetting.class);
+    }
+
     public Component getReportablePlayerName(Player player) {
         return Component
             .text("")
diff --git a/src/main/java/eu/mhsl/craftattack/spawn/appliances/settings/settings/ShowJoinAndLeaveMessagesSetting.java b/src/main/java/eu/mhsl/craftattack/spawn/appliances/chatMessages/ShowJoinAndLeaveMessagesSetting.java
similarity index 94%
rename from src/main/java/eu/mhsl/craftattack/spawn/appliances/settings/settings/ShowJoinAndLeaveMessagesSetting.java
rename to src/main/java/eu/mhsl/craftattack/spawn/appliances/chatMessages/ShowJoinAndLeaveMessagesSetting.java
index d37c063..f729a97 100644
--- a/src/main/java/eu/mhsl/craftattack/spawn/appliances/settings/settings/ShowJoinAndLeaveMessagesSetting.java
+++ b/src/main/java/eu/mhsl/craftattack/spawn/appliances/chatMessages/ShowJoinAndLeaveMessagesSetting.java
@@ -1,4 +1,4 @@
-package eu.mhsl.craftattack.spawn.appliances.settings.settings;
+package eu.mhsl.craftattack.spawn.appliances.chatMessages;
 
 import eu.mhsl.craftattack.spawn.appliances.settings.CategorizedSetting;
 import eu.mhsl.craftattack.spawn.appliances.settings.SettingCategory;
diff --git a/src/main/java/eu/mhsl/craftattack/spawn/appliances/doubeDoor/DoubleDoor.java b/src/main/java/eu/mhsl/craftattack/spawn/appliances/doubeDoor/DoubleDoor.java
index b554185..66fd59c 100644
--- a/src/main/java/eu/mhsl/craftattack/spawn/appliances/doubeDoor/DoubleDoor.java
+++ b/src/main/java/eu/mhsl/craftattack/spawn/appliances/doubeDoor/DoubleDoor.java
@@ -1,6 +1,7 @@
 package eu.mhsl.craftattack.spawn.appliances.doubeDoor;
 
 import eu.mhsl.craftattack.spawn.appliance.Appliance;
+import eu.mhsl.craftattack.spawn.appliances.settings.Settings;
 import org.bukkit.block.Block;
 import org.bukkit.block.BlockFace;
 import org.bukkit.block.data.BlockData;
@@ -11,6 +12,11 @@ import org.jetbrains.annotations.NotNull;
 import java.util.List;
 
 public class DoubleDoor extends Appliance {
+    @Override
+    public void onEnable() {
+        Settings.instance().declareSetting(DoubleDoorSetting.class);
+    }
+
     public void openNextDoor(Block block) {
         BlockData clickedData = block.getBlockData();
         if (!(clickedData instanceof Door clickedDoor)) return;
diff --git a/src/main/java/eu/mhsl/craftattack/spawn/appliances/settings/settings/DoubleDoorSetting.java b/src/main/java/eu/mhsl/craftattack/spawn/appliances/doubeDoor/DoubleDoorSetting.java
similarity index 93%
rename from src/main/java/eu/mhsl/craftattack/spawn/appliances/settings/settings/DoubleDoorSetting.java
rename to src/main/java/eu/mhsl/craftattack/spawn/appliances/doubeDoor/DoubleDoorSetting.java
index 2678373..7c96b7c 100644
--- a/src/main/java/eu/mhsl/craftattack/spawn/appliances/settings/settings/DoubleDoorSetting.java
+++ b/src/main/java/eu/mhsl/craftattack/spawn/appliances/doubeDoor/DoubleDoorSetting.java
@@ -1,4 +1,4 @@
-package eu.mhsl.craftattack.spawn.appliances.settings.settings;
+package eu.mhsl.craftattack.spawn.appliances.doubeDoor;
 
 import eu.mhsl.craftattack.spawn.appliances.settings.CategorizedSetting;
 import eu.mhsl.craftattack.spawn.appliances.settings.SettingCategory;
diff --git a/src/main/java/eu/mhsl/craftattack/spawn/appliances/hotbarRefill/HotbarRefill.java b/src/main/java/eu/mhsl/craftattack/spawn/appliances/hotbarRefill/HotbarRefill.java
index 7c53dc6..0603576 100644
--- a/src/main/java/eu/mhsl/craftattack/spawn/appliances/hotbarRefill/HotbarRefill.java
+++ b/src/main/java/eu/mhsl/craftattack/spawn/appliances/hotbarRefill/HotbarRefill.java
@@ -2,6 +2,7 @@ package eu.mhsl.craftattack.spawn.appliances.hotbarRefill;
 
 import eu.mhsl.craftattack.spawn.Main;
 import eu.mhsl.craftattack.spawn.appliance.Appliance;
+import eu.mhsl.craftattack.spawn.appliances.settings.Settings;
 import net.kyori.adventure.text.Component;
 import net.kyori.adventure.text.format.NamedTextColor;
 import org.bukkit.Bukkit;
@@ -16,6 +17,11 @@ import java.util.List;
 import java.util.NoSuchElementException;
 
 public class HotbarRefill extends Appliance {
+    @Override
+    public void onEnable() {
+        Settings.instance().declareSetting(HotbarRefillSetting.class);
+    }
+
     public void handleHotbarChange(Player player, ItemStack item) {
         if(player.getGameMode().equals(GameMode.CREATIVE)) return;
         if(item.getAmount() != 1) return;
@@ -47,6 +53,6 @@ public class HotbarRefill extends Appliance {
 
     @Override
     protected @NotNull List<Listener> listeners() {
-        return List.of(new ItemRefillListener());
+        return List.of(new HotbarRefillListener());
     }
 }
diff --git a/src/main/java/eu/mhsl/craftattack/spawn/appliances/hotbarRefill/ItemRefillListener.java b/src/main/java/eu/mhsl/craftattack/spawn/appliances/hotbarRefill/HotbarRefillListener.java
similarity index 82%
rename from src/main/java/eu/mhsl/craftattack/spawn/appliances/hotbarRefill/ItemRefillListener.java
rename to src/main/java/eu/mhsl/craftattack/spawn/appliances/hotbarRefill/HotbarRefillListener.java
index d001598..2ff2635 100644
--- a/src/main/java/eu/mhsl/craftattack/spawn/appliances/hotbarRefill/ItemRefillListener.java
+++ b/src/main/java/eu/mhsl/craftattack/spawn/appliances/hotbarRefill/HotbarRefillListener.java
@@ -2,7 +2,6 @@ package eu.mhsl.craftattack.spawn.appliances.hotbarRefill;
 
 import eu.mhsl.craftattack.spawn.appliance.ApplianceListener;
 import eu.mhsl.craftattack.spawn.appliances.settings.Settings;
-import eu.mhsl.craftattack.spawn.appliances.settings.settings.HotbarReplaceSetting;
 import org.bukkit.entity.Player;
 import org.bukkit.event.EventHandler;
 import org.bukkit.event.block.BlockPlaceEvent;
@@ -10,12 +9,12 @@ import org.bukkit.event.player.PlayerItemBreakEvent;
 import org.bukkit.event.player.PlayerItemConsumeEvent;
 import org.bukkit.inventory.ItemStack;
 
-public class ItemRefillListener extends ApplianceListener<HotbarRefill> {
-    private HotbarReplaceSetting.HotbarReplaceConfig getPlayerSetting(Player player) {
+public class HotbarRefillListener extends ApplianceListener<HotbarRefill> {
+    private HotbarRefillSetting.HotbarReplaceConfig getPlayerSetting(Player player) {
         return Settings.instance().getSetting(
             player,
             Settings.Key.HotbarReplacer,
-            HotbarReplaceSetting.HotbarReplaceConfig.class
+            HotbarRefillSetting.HotbarReplaceConfig.class
         );
     }
 
diff --git a/src/main/java/eu/mhsl/craftattack/spawn/appliances/settings/settings/HotbarReplaceSetting.java b/src/main/java/eu/mhsl/craftattack/spawn/appliances/hotbarRefill/HotbarRefillSetting.java
similarity index 84%
rename from src/main/java/eu/mhsl/craftattack/spawn/appliances/settings/settings/HotbarReplaceSetting.java
rename to src/main/java/eu/mhsl/craftattack/spawn/appliances/hotbarRefill/HotbarRefillSetting.java
index e00a5d5..25397f0 100644
--- a/src/main/java/eu/mhsl/craftattack/spawn/appliances/settings/settings/HotbarReplaceSetting.java
+++ b/src/main/java/eu/mhsl/craftattack/spawn/appliances/hotbarRefill/HotbarRefillSetting.java
@@ -1,4 +1,4 @@
-package eu.mhsl.craftattack.spawn.appliances.settings.settings;
+package eu.mhsl.craftattack.spawn.appliances.hotbarRefill;
 
 import eu.mhsl.craftattack.spawn.appliances.settings.CategorizedSetting;
 import eu.mhsl.craftattack.spawn.appliances.settings.SettingCategory;
@@ -6,7 +6,7 @@ import eu.mhsl.craftattack.spawn.appliances.settings.Settings;
 import eu.mhsl.craftattack.spawn.appliances.settings.datatypes.MultiBoolSetting;
 import org.bukkit.Material;
 
-public class HotbarReplaceSetting extends MultiBoolSetting<HotbarReplaceSetting.HotbarReplaceConfig> implements CategorizedSetting {
+public class HotbarRefillSetting extends MultiBoolSetting<HotbarRefillSetting.HotbarReplaceConfig> implements CategorizedSetting {
     @Override
     public SettingCategory category() {
         return SettingCategory.Gameplay;
@@ -18,7 +18,7 @@ public class HotbarReplaceSetting extends MultiBoolSetting<HotbarReplaceSetting.
         @DisplayName("Essen") boolean onConsumable
     ) {}
 
-    public HotbarReplaceSetting() {
+    public HotbarRefillSetting() {
         super(Settings.Key.HotbarReplacer);
     }
 
diff --git a/src/main/java/eu/mhsl/craftattack/spawn/appliances/knockDoor/KnockDoor.java b/src/main/java/eu/mhsl/craftattack/spawn/appliances/knockDoor/KnockDoor.java
index 93f3cd2..5769d2c 100644
--- a/src/main/java/eu/mhsl/craftattack/spawn/appliances/knockDoor/KnockDoor.java
+++ b/src/main/java/eu/mhsl/craftattack/spawn/appliances/knockDoor/KnockDoor.java
@@ -4,7 +4,6 @@ import eu.mhsl.craftattack.spawn.Main;
 import eu.mhsl.craftattack.spawn.appliance.Appliance;
 import eu.mhsl.craftattack.spawn.appliances.settings.Settings;
 import eu.mhsl.craftattack.spawn.appliances.settings.datatypes.SelectSetting;
-import eu.mhsl.craftattack.spawn.appliances.settings.settings.KnockDoorSetting;
 import org.bukkit.*;
 import org.bukkit.block.Block;
 import org.bukkit.entity.Player;
@@ -16,6 +15,11 @@ import org.jetbrains.annotations.NotNull;
 import java.util.List;
 
 public class KnockDoor extends Appliance {
+    @Override
+    public void onEnable() {
+        Settings.instance().declareSetting(KnockDoorSetting.class);
+    }
+
     public void knockAtDoor(Player knockingPlayer, Block knockedBlock) {
         SelectSetting.Options.Option setting = Settings.instance().getSetting(knockingPlayer, Settings.Key.KnockDoors, SelectSetting.Options.Option.class);
         if(setting.is(KnockDoorSetting.disabled)) return;
diff --git a/src/main/java/eu/mhsl/craftattack/spawn/appliances/settings/settings/KnockDoorSetting.java b/src/main/java/eu/mhsl/craftattack/spawn/appliances/knockDoor/KnockDoorSetting.java
similarity index 96%
rename from src/main/java/eu/mhsl/craftattack/spawn/appliances/settings/settings/KnockDoorSetting.java
rename to src/main/java/eu/mhsl/craftattack/spawn/appliances/knockDoor/KnockDoorSetting.java
index c87b123..09ae99b 100644
--- a/src/main/java/eu/mhsl/craftattack/spawn/appliances/settings/settings/KnockDoorSetting.java
+++ b/src/main/java/eu/mhsl/craftattack/spawn/appliances/knockDoor/KnockDoorSetting.java
@@ -1,4 +1,4 @@
-package eu.mhsl.craftattack.spawn.appliances.settings.settings;
+package eu.mhsl.craftattack.spawn.appliances.knockDoor;
 
 import eu.mhsl.craftattack.spawn.appliances.settings.CategorizedSetting;
 import eu.mhsl.craftattack.spawn.appliances.settings.SettingCategory;
diff --git a/src/main/java/eu/mhsl/craftattack/spawn/appliances/packSelect/PackSelect.java b/src/main/java/eu/mhsl/craftattack/spawn/appliances/packSelect/PackSelect.java
index 90bbfcc..d494f37 100644
--- a/src/main/java/eu/mhsl/craftattack/spawn/appliances/packSelect/PackSelect.java
+++ b/src/main/java/eu/mhsl/craftattack/spawn/appliances/packSelect/PackSelect.java
@@ -6,6 +6,7 @@ import eu.mhsl.craftattack.spawn.appliance.ApplianceCommand;
 import eu.mhsl.craftattack.spawn.appliances.packSelect.listeners.ClosePackInventoryListener;
 import eu.mhsl.craftattack.spawn.appliances.packSelect.listeners.ClickPackInventoryListener;
 import eu.mhsl.craftattack.spawn.appliances.packSelect.listeners.SetPacksOnJoinListener;
+import eu.mhsl.craftattack.spawn.appliances.settings.Settings;
 import net.kyori.adventure.resource.ResourcePackInfo;
 import net.kyori.adventure.resource.ResourcePackRequest;
 import net.kyori.adventure.text.Component;
@@ -34,6 +35,8 @@ public class PackSelect extends Appliance {
 
     @Override
     public void onEnable() {
+        Settings.instance().declareSetting(PackSelectSetting.class);
+
         List<Map<?, ?>> packs = localConfig().getMapList("packs");
         Bukkit.getScheduler().runTaskAsynchronously(
             Main.instance(),
diff --git a/src/main/java/eu/mhsl/craftattack/spawn/appliances/settings/settings/PackSelectSetting.java b/src/main/java/eu/mhsl/craftattack/spawn/appliances/packSelect/PackSelectSetting.java
similarity index 89%
rename from src/main/java/eu/mhsl/craftattack/spawn/appliances/settings/settings/PackSelectSetting.java
rename to src/main/java/eu/mhsl/craftattack/spawn/appliances/packSelect/PackSelectSetting.java
index cb11af8..0872c17 100644
--- a/src/main/java/eu/mhsl/craftattack/spawn/appliances/settings/settings/PackSelectSetting.java
+++ b/src/main/java/eu/mhsl/craftattack/spawn/appliances/packSelect/PackSelectSetting.java
@@ -1,7 +1,6 @@
-package eu.mhsl.craftattack.spawn.appliances.settings.settings;
+package eu.mhsl.craftattack.spawn.appliances.packSelect;
 
 import eu.mhsl.craftattack.spawn.Main;
-import eu.mhsl.craftattack.spawn.appliances.packSelect.PackSelect;
 import eu.mhsl.craftattack.spawn.appliances.settings.CategorizedSetting;
 import eu.mhsl.craftattack.spawn.appliances.settings.SettingCategory;
 import eu.mhsl.craftattack.spawn.appliances.settings.datatypes.ActionSetting;
diff --git a/src/main/java/eu/mhsl/craftattack/spawn/appliances/portableCrafting/PortableCrafting.java b/src/main/java/eu/mhsl/craftattack/spawn/appliances/portableCrafting/PortableCrafting.java
index c51e7fd..0cc0b1b 100644
--- a/src/main/java/eu/mhsl/craftattack/spawn/appliances/portableCrafting/PortableCrafting.java
+++ b/src/main/java/eu/mhsl/craftattack/spawn/appliances/portableCrafting/PortableCrafting.java
@@ -9,6 +9,11 @@ import org.jetbrains.annotations.NotNull;
 import java.util.List;
 
 public class PortableCrafting extends Appliance {
+    @Override
+    public void onEnable() {
+        Settings.instance().declareSetting(PortableCraftingSetting.class);
+    }
+
     public void openFor(Player player) {
         if(!Settings.instance().getSetting(player, Settings.Key.EnablePortableCrafting, Boolean.class)) return;
         player.openWorkbench(null, true);
diff --git a/src/main/java/eu/mhsl/craftattack/spawn/appliances/settings/settings/PortableCraftingSetting.java b/src/main/java/eu/mhsl/craftattack/spawn/appliances/portableCrafting/PortableCraftingSetting.java
similarity index 94%
rename from src/main/java/eu/mhsl/craftattack/spawn/appliances/settings/settings/PortableCraftingSetting.java
rename to src/main/java/eu/mhsl/craftattack/spawn/appliances/portableCrafting/PortableCraftingSetting.java
index 04a24b3..026f7b5 100644
--- a/src/main/java/eu/mhsl/craftattack/spawn/appliances/settings/settings/PortableCraftingSetting.java
+++ b/src/main/java/eu/mhsl/craftattack/spawn/appliances/portableCrafting/PortableCraftingSetting.java
@@ -1,4 +1,4 @@
-package eu.mhsl.craftattack.spawn.appliances.settings.settings;
+package eu.mhsl.craftattack.spawn.appliances.portableCrafting;
 
 import eu.mhsl.craftattack.spawn.appliances.settings.CategorizedSetting;
 import eu.mhsl.craftattack.spawn.appliances.settings.SettingCategory;
diff --git a/src/main/java/eu/mhsl/craftattack/spawn/appliances/settings/Settings.java b/src/main/java/eu/mhsl/craftattack/spawn/appliances/settings/Settings.java
index 0d8ec50..f1ba0d7 100644
--- a/src/main/java/eu/mhsl/craftattack/spawn/appliances/settings/Settings.java
+++ b/src/main/java/eu/mhsl/craftattack/spawn/appliances/settings/Settings.java
@@ -5,7 +5,6 @@ import eu.mhsl.craftattack.spawn.appliance.ApplianceCommand;
 import eu.mhsl.craftattack.spawn.appliances.settings.datatypes.Setting;
 import eu.mhsl.craftattack.spawn.appliances.settings.listeners.OpenSettingsShortcutListener;
 import eu.mhsl.craftattack.spawn.appliances.settings.listeners.SettingsInventoryListener;
-import eu.mhsl.craftattack.spawn.appliances.settings.settings.*;
 import net.kyori.adventure.text.Component;
 import org.bukkit.Bukkit;
 import org.bukkit.entity.Player;
@@ -13,13 +12,14 @@ import org.bukkit.event.Listener;
 import org.bukkit.inventory.Inventory;
 import org.jetbrains.annotations.NotNull;
 
-import java.util.Arrays;
-import java.util.List;
-import java.util.WeakHashMap;
+import java.lang.reflect.InvocationTargetException;
+import java.util.*;
 import java.util.concurrent.atomic.AtomicInteger;
+import java.util.stream.Collectors;
 
 public class Settings extends Appliance {
     private static Settings settingsInstance;
+    private final Set<Class<? extends Setting<?>>> declaredSettings = new HashSet<>();
 
     public enum Key {
         TechnicalTab,
@@ -36,10 +36,18 @@ public class Settings extends Appliance {
 
     public static Settings instance() {
         if(settingsInstance != null) return settingsInstance;
-        queryAppliance(Settings.class);
-        Settings instance = queryAppliance(Settings.class);
-        Settings.settingsInstance = instance;
-        return instance;
+        Settings.settingsInstance = queryAppliance(Settings.class);
+        return settingsInstance;
+    }
+
+    public void declareSetting(Class<? extends Setting<?>> setting) {
+        this.declaredSettings.add(setting);
+        this.settingsCache.clear();
+    }
+
+    @Override
+    public void onEnable() {
+        Settings.instance().declareSetting(SettingsShortcutSetting.class);
     }
 
     public record OpenSettingsInventory(Inventory inventory, List<Setting<?>> settings) {
@@ -51,28 +59,31 @@ public class Settings extends Appliance {
     private List<Setting<?>> getSettings(Player player) {
         if(settingsCache.containsKey(player)) return settingsCache.get(player);
 
-        List<Setting<?>> settings = List.of(
-            new PortableCraftingSetting(),
-            new AutoShulkerSetting(),
-            new SignEditSetting(),
-            new HotbarReplaceSetting(),
-            new ChatMentionSetting(),
-            new ShowJoinAndLeaveMessagesSetting(),
-            new TechnicalTablistSetting(),
-            new SettingsShortcutSetting(),
-            new DoubleDoorSetting(),
-            new KnockDoorSetting(),
-            new PackSelectSetting()
-        );
+        List<Setting<?>> settings = this.declaredSettings.stream()
+            .map(clazz -> {
+                try {
+                    return clazz.getDeclaredConstructor();
+                } catch (NoSuchMethodException e) {
+                    throw new RuntimeException(String.format("Setting '%s' does not have an accessible constructor", clazz.getName()), e);
+                }
+            })
+            .map(constructor -> {
+                try {
+                    return constructor.newInstance();
+                } catch (InstantiationException | IllegalAccessException | InvocationTargetException e) {
+                    throw new RuntimeException(String.format("Failed to create instance of setting '%s'", constructor.getDeclaringClass().getName()), e);
+                }
+            })
+            .peek(setting -> setting.initializeFromPlayer(player))
+            .collect(Collectors.toList());
 
-        settings.forEach(setting -> setting.initializeFromPlayer(player));
         this.settingsCache.put(player, settings);
         return settings;
     }
 
     public <T> T getSetting(Player player, Key key, Class<T> clazz) {
         Setting<?> setting = getSettings(player).stream()
-            .filter(s -> s.getKey().equals(key))
+            .filter(s -> Objects.equals(s.getKey(), key))
             .findFirst()
             .orElseThrow();
 
diff --git a/src/main/java/eu/mhsl/craftattack/spawn/appliances/settings/settings/SettingsShortcutSetting.java b/src/main/java/eu/mhsl/craftattack/spawn/appliances/settings/SettingsShortcutSetting.java
similarity index 76%
rename from src/main/java/eu/mhsl/craftattack/spawn/appliances/settings/settings/SettingsShortcutSetting.java
rename to src/main/java/eu/mhsl/craftattack/spawn/appliances/settings/SettingsShortcutSetting.java
index bd1cf72..b43bbcb 100644
--- a/src/main/java/eu/mhsl/craftattack/spawn/appliances/settings/settings/SettingsShortcutSetting.java
+++ b/src/main/java/eu/mhsl/craftattack/spawn/appliances/settings/SettingsShortcutSetting.java
@@ -1,8 +1,5 @@
-package eu.mhsl.craftattack.spawn.appliances.settings.settings;
+package eu.mhsl.craftattack.spawn.appliances.settings;
 
-import eu.mhsl.craftattack.spawn.appliances.settings.CategorizedSetting;
-import eu.mhsl.craftattack.spawn.appliances.settings.SettingCategory;
-import eu.mhsl.craftattack.spawn.appliances.settings.Settings;
 import eu.mhsl.craftattack.spawn.appliances.settings.datatypes.BoolSetting;
 import org.bukkit.Material;
 
diff --git a/src/main/java/eu/mhsl/craftattack/spawn/appliances/tablist/Tablist.java b/src/main/java/eu/mhsl/craftattack/spawn/appliances/tablist/Tablist.java
index 1abb9c0..c6fee66 100644
--- a/src/main/java/eu/mhsl/craftattack/spawn/appliances/tablist/Tablist.java
+++ b/src/main/java/eu/mhsl/craftattack/spawn/appliances/tablist/Tablist.java
@@ -33,6 +33,8 @@ public class Tablist extends Appliance {
 
     @Override
     public void onEnable() {
+        Settings.instance().declareSetting(TechnicalTablistSetting.class);
+
         int tabRefreshRate = 3;
         this.networkMonitor = new NetworkMonitor(localConfig().getString("interface"), Duration.ofSeconds(1));
         this.systemMonitor = ManagementFactory.getOperatingSystemMXBean();
diff --git a/src/main/java/eu/mhsl/craftattack/spawn/appliances/settings/settings/TechnicalTablistSetting.java b/src/main/java/eu/mhsl/craftattack/spawn/appliances/tablist/TechnicalTablistSetting.java
similarity index 94%
rename from src/main/java/eu/mhsl/craftattack/spawn/appliances/settings/settings/TechnicalTablistSetting.java
rename to src/main/java/eu/mhsl/craftattack/spawn/appliances/tablist/TechnicalTablistSetting.java
index 482913a..854f27d 100644
--- a/src/main/java/eu/mhsl/craftattack/spawn/appliances/settings/settings/TechnicalTablistSetting.java
+++ b/src/main/java/eu/mhsl/craftattack/spawn/appliances/tablist/TechnicalTablistSetting.java
@@ -1,4 +1,4 @@
-package eu.mhsl.craftattack.spawn.appliances.settings.settings;
+package eu.mhsl.craftattack.spawn.appliances.tablist;
 
 import eu.mhsl.craftattack.spawn.appliances.settings.CategorizedSetting;
 import eu.mhsl.craftattack.spawn.appliances.settings.SettingCategory;