diff --git a/eternalcore-api/src/main/java/com/eternalcode/core/feature/warp/Warp.java b/eternalcore-api/src/main/java/com/eternalcode/core/feature/warp/Warp.java
index 1f4922d42..c1cc16f45 100644
--- a/eternalcore-api/src/main/java/com/eternalcode/core/feature/warp/Warp.java
+++ b/eternalcore-api/src/main/java/com/eternalcode/core/feature/warp/Warp.java
@@ -12,6 +12,4 @@ public interface Warp {
 
     List<String> getPermissions();
 
-    void setPermissions(List<String> permissions);
-
 }
diff --git a/eternalcore-api/src/main/java/com/eternalcode/core/feature/warp/WarpService.java b/eternalcore-api/src/main/java/com/eternalcode/core/feature/warp/WarpService.java
index 45ee1d8f7..b5e73bed0 100644
--- a/eternalcore-api/src/main/java/com/eternalcode/core/feature/warp/WarpService.java
+++ b/eternalcore-api/src/main/java/com/eternalcode/core/feature/warp/WarpService.java
@@ -7,21 +7,21 @@
 
 public interface WarpService {
 
-    Warp createWarp(String name, Location location);
+    Warp create(String name, Location location);
 
-    void removeWarp(String warp);
+    void delete(String warp);
 
     void addPermissions(String warp, String... permissions);
 
     void removePermission(String warp, String permission);
 
-    boolean warpExists(String name);
+    boolean exists(String name);
 
-    boolean doesWarpPermissionExist(String warp, String permission);
+    boolean hasPermission(String warp, String permission);
 
     Optional<Warp> findWarp(String name);
 
-    Collection<String> getNamesOfWarps();
+    Collection<String> getAllNames();
 
-    boolean hasWarps();
+    boolean isEmpty();
 }
diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/configuration/implementation/WarpsConfiguration.java b/eternalcore-core/src/main/java/com/eternalcode/core/configuration/implementation/WarpsConfiguration.java
deleted file mode 100644
index d9fca3da7..000000000
--- a/eternalcore-core/src/main/java/com/eternalcode/core/configuration/implementation/WarpsConfiguration.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package com.eternalcode.core.configuration.implementation;
-
-import com.eternalcode.core.configuration.ReloadableConfig;
-import com.eternalcode.core.feature.warp.WarpConfigEntry;
-import com.eternalcode.core.injector.annotations.component.ConfigurationFile;
-import net.dzikoysk.cdn.entity.Description;
-import net.dzikoysk.cdn.source.Resource;
-import net.dzikoysk.cdn.source.Source;
-
-import java.io.File;
-import java.util.HashMap;
-import java.util.Map;
-
-@ConfigurationFile
-public class WarpsConfiguration implements ReloadableConfig {
-
-    @Description({"# Warps configuration", "# These are warp locations, for your own safety, please don't touch it."})
-    public Map<String, WarpConfigEntry> warps = new HashMap<>();
-
-    @Override
-    public Resource resource(File folder) {
-        return Source.of(folder, "warps.yml");
-    }
-
-}
diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/warp/WarpConfigRepository.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/warp/WarpConfigRepository.java
deleted file mode 100644
index 510198152..000000000
--- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/warp/WarpConfigRepository.java
+++ /dev/null
@@ -1,126 +0,0 @@
-package com.eternalcode.core.feature.warp;
-
-import com.eternalcode.commons.bukkit.position.PositionAdapter;
-import com.eternalcode.core.configuration.ConfigurationManager;
-import com.eternalcode.core.configuration.implementation.LocationsConfiguration;
-import com.eternalcode.core.configuration.implementation.WarpsConfiguration;
-import com.eternalcode.core.injector.annotations.Inject;
-import com.eternalcode.core.injector.annotations.component.Service;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
-import java.util.concurrent.CompletableFuture;
-import java.util.function.Consumer;
-import java.util.stream.Collectors;
-
-@Service
-class WarpConfigRepository implements WarpRepository {
-
-    private final LocationsConfiguration locationsConfiguration;
-    private final WarpsConfiguration warpsConfiguration;
-    private final ConfigurationManager configurationManager;
-
-    @Inject
-    WarpConfigRepository(
-        ConfigurationManager configurationManager,
-        LocationsConfiguration locationsConfiguration,
-        WarpsConfiguration warpsConfiguration
-    ) {
-        this.locationsConfiguration = locationsConfiguration;
-        this.configurationManager = configurationManager;
-        this.warpsConfiguration = warpsConfiguration;
-
-        this.migrateWarps();
-    }
-
-    @Override
-    public void addWarp(Warp warp) {
-        WarpConfigEntry warpConfigEntry = new WarpConfigEntry(PositionAdapter.convert(warp.getLocation()), warp.getPermissions());
-        this.edit(warps -> warps.put(
-            warp.getName(),
-            warpConfigEntry
-        ));
-    }
-
-    @Override
-    public void removeWarp(String warp) {
-        this.edit(warps -> warps.remove(warp));
-    }
-
-    @Override
-    public void addPermissions(String warp, String... permissions) {
-        this.edit(warps -> {
-            WarpConfigEntry warpConfigEntry = warps.get(warp);
-            if (warpConfigEntry == null) {
-                return;
-            }
-
-            List<String> newPermissions = new ArrayList<>(warpConfigEntry.permissions);
-            newPermissions.addAll(List.of(permissions));
-
-            warpConfigEntry.permissions = newPermissions;
-        });
-    }
-
-    @Override
-    public void removePermission(String warp, String permission) {
-        this.edit(warps -> {
-            WarpConfigEntry warpConfigEntry = warps.get(warp);
-
-            if (warpConfigEntry == null) {
-                return;
-            }
-
-            List<String> newPermissions = new ArrayList<>(warpConfigEntry.permissions);
-            newPermissions.remove(permission);
-
-            warpConfigEntry.permissions = newPermissions;
-        });
-    }
-
-    private void edit(Consumer<Map<String, WarpConfigEntry>> editor) {
-        Map<String, WarpConfigEntry> warps = new HashMap<>(this.warpsConfiguration.warps);
-        editor.accept(warps);
-
-        warps.forEach((key, value) -> System.out.println(key + ": " + value));
-        this.warpsConfiguration.warps.putAll(warps);
-        this.configurationManager.save(this.warpsConfiguration);
-    }
-
-    @Override
-    public CompletableFuture<Optional<Warp>> getWarp(String name) {
-        return CompletableFuture.completedFuture(Optional.of(this.warpsConfiguration.warps.get(name))
-            .map(warpConfigEntry -> new WarpImpl(name, warpConfigEntry.position, warpConfigEntry.permissions)));
-    }
-
-    @Override
-    public CompletableFuture<List<Warp>> getWarps() {
-        return CompletableFuture.completedFuture(this.warpsConfiguration.warps.entrySet().stream()
-            .map(warpConfigEntry -> {
-                WarpConfigEntry warpContextual = warpConfigEntry.getValue();
-                return new WarpImpl(warpConfigEntry.getKey(), warpContextual.position, warpContextual.permissions);
-            })
-            .collect(Collectors.toList()));
-    }
-
-    private void migrateWarps() {
-        if (this.locationsConfiguration.warps.isEmpty()) {
-            return;
-        }
-
-        this.edit(warps -> warps.putAll(this.locationsConfiguration.warps
-            .entrySet()
-            .stream()
-            .collect(Collectors.toMap(Map.Entry::getKey, entry ->
-                new WarpConfigEntry(entry.getValue(), new ArrayList<>()))
-            )
-        ));
-
-        this.locationsConfiguration.warps.clear();
-        this.configurationManager.save(this.locationsConfiguration);
-        this.configurationManager.save(this.warpsConfiguration);
-    }
-}
diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/warp/WarpImpl.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/warp/WarpImpl.java
index 46acae415..a948e6100 100644
--- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/warp/WarpImpl.java
+++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/warp/WarpImpl.java
@@ -2,21 +2,23 @@
 
 import com.eternalcode.commons.bukkit.position.Position;
 import com.eternalcode.commons.bukkit.position.PositionAdapter;
+import java.util.ArrayList;
 import org.bukkit.Location;
 
 import java.util.Collections;
 import java.util.List;
 
-class WarpImpl implements Warp {
+@SuppressWarnings("LombokSetterMayBeUsed")
+public class WarpImpl implements Warp {
 
     private final String name;
     private final Position position;
     private List<String> permissions;
 
-    WarpImpl(String name, Position position, List<String> permissions) {
+    public WarpImpl(String name, Position position, List<String> permissions) {
         this.name = name;
         this.position = position;
-        this.permissions = permissions;
+        this.permissions = new ArrayList<>(permissions);
     }
 
     @Override
diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/warp/WarpInventory.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/warp/WarpInventory.java
index f2e9df6eb..184caa653 100644
--- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/warp/WarpInventory.java
+++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/warp/WarpInventory.java
@@ -198,7 +198,7 @@ public void openInventory(Player player, Language language) {
     }
 
     public void addWarp(Warp warp) {
-        if (!this.warpManager.warpExists(warp.getName())) {
+        if (!this.warpManager.exists(warp.getName())) {
             return;
         }
 
@@ -243,7 +243,7 @@ public void addWarp(Warp warp) {
 
     public boolean removeWarp(String warpName) {
 
-        if (!this.warpManager.warpExists(warpName)) {
+        if (!this.warpManager.exists(warpName)) {
             return false;
         }
 
diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/warp/WarpPermissionController.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/warp/WarpPermissionController.java
index b01da97dd..8f39392eb 100644
--- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/warp/WarpPermissionController.java
+++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/warp/WarpPermissionController.java
@@ -22,12 +22,12 @@
 public class WarpPermissionController implements Listener {
 
     private final NoticeService noticeService;
-    private final PluginConfiguration pluginConfiguration;
+    private final PluginConfiguration config;
 
     @Inject
-    public WarpPermissionController(NoticeService noticeService, PluginConfiguration pluginConfiguration) {
+    public WarpPermissionController(NoticeService noticeService, PluginConfiguration config) {
         this.noticeService = noticeService;
-        this.pluginConfiguration = pluginConfiguration;
+        this.config = config;
     }
 
     @EventHandler
@@ -55,6 +55,7 @@ private void checkWarpPermission(PreWarpTeleportEvent event, Warp warp, Player p
         this.noticeService.create()
             .player(uniqueId)
             .placeholder("{WARP}", warp.getName())
+            .placeholder("{PERMISSIONS}", String.join(this.config.format.separator, permissions))
             .notice(translation -> translation.warp().noPermission())
             .send();
     }
diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/warp/WarpRepository.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/warp/WarpRepository.java
deleted file mode 100644
index b6914269e..000000000
--- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/warp/WarpRepository.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package com.eternalcode.core.feature.warp;
-
-import java.util.List;
-import java.util.Optional;
-import java.util.concurrent.CompletableFuture;
-
-interface WarpRepository {
-
-    void addWarp(Warp warp);
-
-    void removeWarp(String warp);
-
-    void addPermissions(String warp, String... permissions);
-
-    void removePermission(String warp, String permission);
-
-    CompletableFuture<Optional<Warp>> getWarp(String name);
-
-    CompletableFuture<List<Warp>> getWarps();
-}
diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/warp/WarpServiceImpl.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/warp/WarpServiceImpl.java
index 71f9eeb26..90b3a8931 100644
--- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/warp/WarpServiceImpl.java
+++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/warp/WarpServiceImpl.java
@@ -2,17 +2,18 @@
 
 import com.eternalcode.annotations.scan.feature.FeatureDocs;
 import com.eternalcode.commons.bukkit.position.PositionAdapter;
+import com.eternalcode.core.feature.warp.data.WarpDataRepository;
 import com.eternalcode.core.injector.annotations.Inject;
 import com.eternalcode.core.injector.annotations.component.Service;
-import org.bukkit.Location;
-
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
-import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Optional;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.function.Consumer;
+import org.bukkit.Location;
 
 @FeatureDocs(
     name = "Warp System",
@@ -21,33 +22,33 @@
 @Service
 class WarpServiceImpl implements WarpService {
 
-    private final Map<String, Warp> warpMap = new HashMap<>();
-    private final WarpRepository warpRepository;
+    private final Map<String, Warp> warps = new ConcurrentHashMap<>();
+    private final WarpDataRepository warpRepository;
 
     @Inject
-    private WarpServiceImpl(WarpRepository warpRepository) {
+    private WarpServiceImpl(WarpDataRepository warpRepository) {
         this.warpRepository = warpRepository;
 
         warpRepository.getWarps().thenAcceptAsync(warps -> {
             for (Warp warp : warps) {
-                this.warpMap.put(warp.getName(), warp);
+                this.warps.put(warp.getName(), warp);
             }
         });
     }
 
     @Override
-    public Warp createWarp(String name, Location location) {
+    public Warp create(String name, Location location) {
         Warp warp = new WarpImpl(name, PositionAdapter.convert(location), new ArrayList<>());
 
-        this.warpMap.put(name, warp);
+        this.warps.put(name, warp);
         this.warpRepository.addWarp(warp);
 
         return warp;
     }
 
     @Override
-    public void removeWarp(String warp) {
-        Warp remove = this.warpMap.remove(warp);
+    public void delete(String warp) {
+        Warp remove = this.warps.remove(warp);
 
         if (remove == null) {
             return;
@@ -58,42 +59,62 @@ public void removeWarp(String warp) {
 
     @Override
     public void addPermissions(String warpName, String... permissions) {
-        Warp warp = this.warpMap.get(warpName);
+        Warp warp = this.warps.get(warpName);
 
         if (warp == null) {
             return;
         }
 
+        if (permissions == null) {
+            return;
+        }
+
         List<String> updatedPermissions = new ArrayList<>(warp.getPermissions());
         updatedPermissions.addAll(List.of(permissions));
 
-        warp.setPermissions(updatedPermissions);
+        this.modifyPermissions(warpName, perms -> perms.addAll(List.of(permissions)));
         this.warpRepository.addPermissions(warpName, permissions);
     }
 
     @Override
     public void removePermission(String warpName, String permission) {
-        Warp warp = this.warpMap.get(warpName);
+        Warp warp = this.warps.get(warpName);
+
+        if (warp == null) {
+            return;
+        }
+
+        this.modifyPermissions(warpName, perms -> perms.remove(permission));
+        this.warpRepository.removePermission(warpName, permission);
+    }
+
+    private void modifyPermissions(String warpName, Consumer<List<String>> modifier) {
+        Warp warp = this.warps.get(warpName);
 
         if (warp == null) {
             return;
         }
 
         List<String> updatedPermissions = new ArrayList<>(warp.getPermissions());
-        updatedPermissions.remove(permission);
+        modifier.accept(updatedPermissions);
 
-        warp.setPermissions(updatedPermissions);
-        this.warpRepository.removePermission(warpName, permission);
+        Warp updatedWarp = new WarpImpl(
+            warp.getName(),
+            PositionAdapter.convert(warp.getLocation()),
+            updatedPermissions
+        );
+
+        this.warps.put(warpName, updatedWarp);
     }
 
     @Override
-    public boolean warpExists(String name) {
-        return this.warpMap.containsKey(name);
+    public boolean exists(String name) {
+        return this.warps.containsKey(name);
     }
 
     @Override
-    public boolean doestWarpPermissionExist(String warpName, String permission) {
-        Warp warp = this.warpMap.get(warpName);
+    public boolean hasPermission(String warpName, String permission) {
+        Warp warp = this.warps.get(warpName);
 
         if (warp == null) {
             return false;
@@ -104,16 +125,16 @@ public boolean doestWarpPermissionExist(String warpName, String permission) {
 
     @Override
     public Optional<Warp> findWarp(String name) {
-        return Optional.ofNullable(this.warpMap.get(name));
+        return Optional.ofNullable(this.warps.get(name));
     }
 
     @Override
-    public Collection<String> getNamesOfWarps() {
-        return Collections.unmodifiableCollection(this.warpMap.keySet());
+    public Collection<String> getAllNames() {
+        return Collections.unmodifiableCollection(this.warps.keySet());
     }
 
     @Override
-    public boolean hasWarps() {
-        return !this.warpMap.isEmpty();
+    public boolean isEmpty() {
+        return !this.warps.isEmpty();
     }
 }
diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/warp/command/DelWarpCommand.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/warp/command/DelWarpCommand.java
index c76774b25..816d68aa9 100644
--- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/warp/command/DelWarpCommand.java
+++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/warp/command/DelWarpCommand.java
@@ -37,7 +37,7 @@ void remove(@Context Player player, @Arg Warp warp) {
     }
 
     private void removeWarp(Player player, String name) {
-        if (!this.warpService.warpExists(name)) {
+        if (!this.warpService.exists(name)) {
             this.noticeService.create()
                 .player(player.getUniqueId())
                 .notice(translation -> translation.warp().notExist())
@@ -47,7 +47,7 @@ private void removeWarp(Player player, String name) {
             return;
         }
 
-        this.warpService.removeWarp(name);
+        this.warpService.delete(name);
         this.warpInventory.removeWarp(name);
 
         this.noticeService.create()
diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/warp/command/SetWarpCommand.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/warp/command/SetWarpCommand.java
index 288f14b34..a11db47a4 100644
--- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/warp/command/SetWarpCommand.java
+++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/warp/command/SetWarpCommand.java
@@ -44,7 +44,7 @@ void add(@Context Player player, @Arg String warpName) {
     }
 
     private void createWarp(Player player, String warp, UUID uniqueId) {
-        if (this.warpService.warpExists(warp)) {
+        if (this.warpService.exists(warp)) {
             this.noticeService.create()
                 .player(uniqueId)
                 .notice(translation -> translation.warp().warpAlreadyExists())
@@ -54,7 +54,7 @@ private void createWarp(Player player, String warp, UUID uniqueId) {
             return;
         }
 
-        Warp createdWarp = this.warpService.createWarp(warp, player.getLocation());
+        Warp createdWarp = this.warpService.create(warp, player.getLocation());
 
         this.noticeService.create()
             .player(uniqueId)
@@ -63,7 +63,7 @@ private void createWarp(Player player, String warp, UUID uniqueId) {
             .send();
 
         if (this.config.warp.autoAddNewWarps) {
-            if (this.warpService.getNamesOfWarps().size() <= MAX_WARPS_IN_GUI) {
+            if (this.warpService.getAllNames().size() <= MAX_WARPS_IN_GUI) {
                 this.warpInventory.addWarp(createdWarp);
 
                 this.noticeService.create()
diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/warp/command/WarpArgument.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/warp/command/WarpArgument.java
index 5b5b6946b..40526f207 100644
--- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/warp/command/WarpArgument.java
+++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/warp/command/WarpArgument.java
@@ -58,7 +58,7 @@ public SuggestionResult suggest(
         Argument<Warp> argument,
         SuggestionContext context
     ) {
-        return this.warpService.getNamesOfWarps().stream()
+        return this.warpService.getAllNames().stream()
             .collect(SuggestionResult.collector());
     }
 }
diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/warp/command/WarpCommand.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/warp/command/WarpCommand.java
index ec5f12370..bf5c480c5 100644
--- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/warp/command/WarpCommand.java
+++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/warp/command/WarpCommand.java
@@ -48,13 +48,13 @@ void warp(@Context Player player, @Context User user) {
             this.noticeService.create()
                 .player(player.getUniqueId())
                 .notice(translation -> translation.warp().available())
-                .placeholder("{WARPS}", String.join(", ", this.warpService.getNamesOfWarps()))
+                .placeholder("{WARPS}", String.join(", ", this.warpService.getAllNames()))
                 .send();
 
             return;
         }
 
-        if (!this.warpService.hasWarps()) {
+        if (!this.warpService.isEmpty()) {
             this.noticeService.create()
                 .player(player.getUniqueId())
                 .notice(translation -> translation.warp().noWarps())
diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/warp/command/AddWarpPermissionCommand.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/warp/command/permission/WarpAddPermissionCommand.java
similarity index 88%
rename from eternalcore-core/src/main/java/com/eternalcode/core/feature/warp/command/AddWarpPermissionCommand.java
rename to eternalcore-core/src/main/java/com/eternalcode/core/feature/warp/command/permission/WarpAddPermissionCommand.java
index ecbe78185..69057d289 100644
--- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/warp/command/AddWarpPermissionCommand.java
+++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/warp/command/permission/WarpAddPermissionCommand.java
@@ -1,4 +1,4 @@
-package com.eternalcode.core.feature.warp.command;
+package com.eternalcode.core.feature.warp.command.permission;
 
 import com.eternalcode.core.feature.warp.Warp;
 import com.eternalcode.core.feature.warp.WarpService;
@@ -13,15 +13,15 @@
 
 import java.util.UUID;
 
-@Command(name = "addwarp-permissions")
+@Command(name = "warp-permission add")
 @Permission("eternalcore.warp.changepermissions")
-public class AddWarpPermissionCommand {
+public class WarpAddPermissionCommand {
 
     private final WarpService warpService;
     private final NoticeService noticeService;
 
     @Inject
-    public AddWarpPermissionCommand(WarpService warpService, NoticeService noticeService) {
+    public WarpAddPermissionCommand(WarpService warpService, NoticeService noticeService) {
         this.warpService = warpService;
         this.noticeService = noticeService;
     }
diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/warp/command/RemoveWarpPermissionCommand.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/warp/command/permission/WarpRemovePermissionCommand.java
similarity index 68%
rename from eternalcore-core/src/main/java/com/eternalcode/core/feature/warp/command/RemoveWarpPermissionCommand.java
rename to eternalcore-core/src/main/java/com/eternalcode/core/feature/warp/command/permission/WarpRemovePermissionCommand.java
index c71bddb5a..852c87be7 100644
--- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/warp/command/RemoveWarpPermissionCommand.java
+++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/warp/command/permission/WarpRemovePermissionCommand.java
@@ -1,7 +1,8 @@
-package com.eternalcode.core.feature.warp.command;
+package com.eternalcode.core.feature.warp.command.permission;
 
 import com.eternalcode.core.feature.warp.Warp;
 import com.eternalcode.core.feature.warp.WarpService;
+import com.eternalcode.core.feature.warp.command.permission.argument.WarpPermissionMultipleResolverEntry;
 import com.eternalcode.core.injector.annotations.Inject;
 import com.eternalcode.core.notice.NoticeService;
 import dev.rollczi.litecommands.annotations.argument.Arg;
@@ -11,29 +12,32 @@
 import dev.rollczi.litecommands.annotations.permission.Permission;
 import org.bukkit.entity.Player;
 
-import java.util.UUID;
-
-@Command(name = "removewarp-permission")
+@Command(name = "warp-permission remove")
 @Permission("eternalcore.warp.changepermissions")
-public class RemoveWarpPermissionCommand {
+public class WarpRemovePermissionCommand {
 
     private final WarpService warpService;
     private final NoticeService noticeService;
 
     @Inject
-    public RemoveWarpPermissionCommand(WarpService warpService, NoticeService noticeService) {
+    public WarpRemovePermissionCommand(WarpService warpService, NoticeService noticeService) {
         this.warpService = warpService;
         this.noticeService = noticeService;
     }
 
     @Execute
-    void removePermission(@Context Player player, @Arg Warp warp, @Arg String permission) {
-        UUID uniqueId = player.getUniqueId();
+    void removePermission(
+        @Context Player player,
+        @Arg WarpPermissionMultipleResolverEntry entry
+    ) {
+        Warp warp = entry.warp();
+        String permission = entry.permission();
 
         if (!warp.getPermissions().contains(permission)) {
             this.noticeService.create()
-                .player(uniqueId)
+                .placeholder("{WARP}", warp.getName())
                 .placeholder("{PERMISSION}", permission)
+                .player(player.getUniqueId())
                 .notice(translation -> translation.warp().permissionDoesNotExist())
                 .send();
             return;
@@ -42,11 +46,10 @@ void removePermission(@Context Player player, @Arg Warp warp, @Arg String permis
         this.warpService.removePermission(warp.getName(), permission);
 
         this.noticeService.create()
-            .player(uniqueId)
             .placeholder("{WARP}", warp.getName())
             .placeholder("{PERMISSION}", permission)
+            .player(player.getUniqueId())
             .notice(translation -> translation.warp().removePermission())
             .send();
     }
-
 }
diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/warp/command/permission/argument/WarpPermissionMultiArgumentResolver.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/warp/command/permission/argument/WarpPermissionMultiArgumentResolver.java
new file mode 100644
index 000000000..f2eab3979
--- /dev/null
+++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/warp/command/permission/argument/WarpPermissionMultiArgumentResolver.java
@@ -0,0 +1,138 @@
+package com.eternalcode.core.feature.warp.command.permission.argument;
+
+import com.eternalcode.core.configuration.implementation.PluginConfiguration;
+import com.eternalcode.core.feature.warp.Warp;
+import com.eternalcode.core.feature.warp.WarpService;
+import com.eternalcode.core.injector.annotations.Inject;
+import com.eternalcode.core.injector.annotations.lite.LiteArgument;
+import com.eternalcode.core.notice.NoticeService;
+import com.eternalcode.core.viewer.Viewer;
+import com.eternalcode.core.viewer.ViewerService;
+import dev.rollczi.litecommands.argument.Argument;
+import dev.rollczi.litecommands.argument.parser.ParseResult;
+import dev.rollczi.litecommands.argument.resolver.MultipleArgumentResolver;
+import dev.rollczi.litecommands.input.raw.RawInput;
+import dev.rollczi.litecommands.invocation.Invocation;
+import dev.rollczi.litecommands.range.Range;
+import dev.rollczi.litecommands.suggestion.Suggestion;
+import dev.rollczi.litecommands.suggestion.SuggestionContext;
+import dev.rollczi.litecommands.suggestion.SuggestionResult;
+import java.util.Collection;
+import java.util.Optional;
+import org.bukkit.command.CommandSender;
+
+@LiteArgument(type = WarpPermissionMultipleResolverEntry.class)
+public class WarpPermissionMultiArgumentResolver
+    implements MultipleArgumentResolver<CommandSender, WarpPermissionMultipleResolverEntry> {
+
+    private static final String WARP_PLACEHOLDER_PREFIX = "{WARP}";
+    private static final String PERMISSION_PLACEHOLDER_PREFIX = "{PERMISSION}";
+
+    private final PluginConfiguration config;
+    private final WarpService warpService;
+    private final NoticeService noticeService;
+    private final ViewerService viewerService;
+
+    @Inject
+    public WarpPermissionMultiArgumentResolver(
+        PluginConfiguration config,
+        WarpService warpService,
+        NoticeService noticeService,
+        ViewerService viewerService
+    ) {
+        this.config = config;
+        this.warpService = warpService;
+        this.noticeService = noticeService;
+        this.viewerService = viewerService;
+    }
+
+    @Override
+    public ParseResult<WarpPermissionMultipleResolverEntry> parse(
+        Invocation<CommandSender> invocation,
+        Argument<WarpPermissionMultipleResolverEntry> argument,
+        RawInput rawInput
+    ) {
+        Viewer viewer = this.viewerService.any(invocation.sender());
+
+        if (!rawInput.hasNext()) {
+            return ParseResult.failure(this.noticeService.create()
+                .notice(translation -> translation.warp().missingWarpName())
+                .viewer(viewer)
+            );
+        }
+
+        String warpName = rawInput.next();
+        Optional<Warp> warp = this.warpService.findWarp(warpName);
+
+        if (warp.isEmpty()) {
+            return ParseResult.failure(
+                this.noticeService.create()
+                    .notice(translation -> translation.warp().notExist())
+                    .placeholder(WARP_PLACEHOLDER_PREFIX, warpName)
+                    .viewer(viewer)
+            );
+        }
+
+        if (!rawInput.hasNext()) {
+            Collection<String> permissions = warp.get().getPermissions();
+
+            if (permissions.isEmpty()) {
+                return ParseResult.failure(this.noticeService.create()
+                    .notice(translation -> translation.warp().noPermissionAssigned())
+                    .placeholder(WARP_PLACEHOLDER_PREFIX, warpName)
+                    .viewer(viewer)
+                );
+            }
+
+            return ParseResult.failure(this.noticeService.create()
+                .notice(translation -> translation.warp().listPermission())
+                .placeholder(WARP_PLACEHOLDER_PREFIX, warpName)
+                .placeholder(PERMISSION_PLACEHOLDER_PREFIX, String.join(this.config.format.separator, permissions))
+                .viewer(viewer)
+            );
+        }
+
+        String permission = rawInput.next();
+
+        return ParseResult.success(new WarpPermissionMultipleResolverEntry(warp.get(), permission));
+    }
+
+    @Override
+    public Range getRange(Argument<WarpPermissionMultipleResolverEntry> argument) {
+        return Range.of(2);
+    }
+
+    @Override
+    public SuggestionResult suggest(
+        Invocation<CommandSender> invocation,
+        Argument<WarpPermissionMultipleResolverEntry> argument,
+        SuggestionContext context
+    ) {
+        Suggestion current = context.getCurrent();
+        int index = current.lengthMultilevel();
+
+        if (index == 1) {
+            return SuggestionResult.of(this.warpService.getAllNames());
+        }
+
+        if (index == 2) {
+            String warpName = current.multilevelList().get(0);
+            Optional<Warp> warpOptional = this.warpService.findWarp(warpName);
+
+            if (warpOptional.isEmpty()) {
+                return SuggestionResult.empty();
+            }
+
+            Warp warp = warpOptional.get();
+            Collection<String> permissions = warp.getPermissions();
+
+            if (permissions.isEmpty()) {
+                return SuggestionResult.empty();
+            }
+
+            return SuggestionResult.of(permissions).appendLeft(warpName);
+        }
+
+        return SuggestionResult.empty();
+    }
+}
diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/warp/command/permission/argument/WarpPermissionMultipleResolverEntry.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/warp/command/permission/argument/WarpPermissionMultipleResolverEntry.java
new file mode 100644
index 000000000..a0e3beb6d
--- /dev/null
+++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/warp/command/permission/argument/WarpPermissionMultipleResolverEntry.java
@@ -0,0 +1,6 @@
+package com.eternalcode.core.feature.warp.command.permission.argument;
+
+import com.eternalcode.core.feature.warp.Warp;
+
+public record WarpPermissionMultipleResolverEntry(Warp warp, String permission) {
+}
diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/warp/data/WarpDataConfig.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/warp/data/WarpDataConfig.java
new file mode 100644
index 000000000..5e13c12c0
--- /dev/null
+++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/warp/data/WarpDataConfig.java
@@ -0,0 +1,26 @@
+package com.eternalcode.core.feature.warp.data;
+
+import com.eternalcode.core.configuration.ReloadableConfig;
+import com.eternalcode.core.injector.annotations.component.ConfigurationFile;
+import java.io.File;
+import java.util.HashMap;
+import java.util.Map;
+import net.dzikoysk.cdn.entity.Description;
+import net.dzikoysk.cdn.entity.Exclude;
+import net.dzikoysk.cdn.source.Resource;
+import net.dzikoysk.cdn.source.Source;
+
+@ConfigurationFile
+public class WarpDataConfig implements ReloadableConfig {
+
+    @Exclude
+    public static final String WARP_DATA_FILE_PATH = "data" + File.separator + "warps.yml";
+
+    @Description({"# Warps data", "# These are warp locations, for your own safety, please don't touch it."})
+    public Map<String, WarpDataConfigRepresenter> warps = new HashMap<>();
+
+    @Override
+    public Resource resource(File folder) {
+        return Source.of(folder, WARP_DATA_FILE_PATH);
+    }
+}
diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/warp/WarpConfigEntry.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/warp/data/WarpDataConfigRepresenter.java
similarity index 57%
rename from eternalcore-core/src/main/java/com/eternalcode/core/feature/warp/WarpConfigEntry.java
rename to eternalcore-core/src/main/java/com/eternalcode/core/feature/warp/data/WarpDataConfigRepresenter.java
index bfa64e7da..c37ae603c 100644
--- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/warp/WarpConfigEntry.java
+++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/warp/data/WarpDataConfigRepresenter.java
@@ -1,19 +1,18 @@
-package com.eternalcode.core.feature.warp;
+package com.eternalcode.core.feature.warp.data;
 
 import com.eternalcode.commons.bukkit.position.Position;
-import net.dzikoysk.cdn.entity.Contextual;
-
 import java.util.List;
+import net.dzikoysk.cdn.entity.Contextual;
 
 @Contextual
-public class WarpConfigEntry {
+public class WarpDataConfigRepresenter {
     public Position position;
     public List<String> permissions;
 
-    public WarpConfigEntry() {
+    public WarpDataConfigRepresenter() {
     }
 
-    public WarpConfigEntry(Position position, List<String> permissions) {
+    public WarpDataConfigRepresenter(Position position, List<String> permissions) {
         this.position = position;
         this.permissions = permissions;
     }
diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/warp/data/WarpDataDataRepositoryImpl.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/warp/data/WarpDataDataRepositoryImpl.java
new file mode 100644
index 000000000..fca475451
--- /dev/null
+++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/warp/data/WarpDataDataRepositoryImpl.java
@@ -0,0 +1,129 @@
+package com.eternalcode.core.feature.warp.data;
+
+import com.eternalcode.commons.bukkit.position.PositionAdapter;
+import com.eternalcode.core.configuration.ConfigurationManager;
+import com.eternalcode.core.configuration.implementation.LocationsConfiguration;
+import com.eternalcode.core.feature.warp.Warp;
+import com.eternalcode.core.feature.warp.WarpImpl;
+import com.eternalcode.core.injector.annotations.Inject;
+import com.eternalcode.core.injector.annotations.component.Service;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+import java.util.concurrent.CompletableFuture;
+import java.util.function.Consumer;
+import java.util.stream.Collectors;
+
+@Service
+public class WarpDataDataRepositoryImpl implements WarpDataRepository {
+
+    private final LocationsConfiguration locationsConfiguration;
+    private final WarpDataConfig warpDataConfig;
+    private final ConfigurationManager configurationManager;
+
+    @Inject
+    WarpDataDataRepositoryImpl(
+        ConfigurationManager configurationManager,
+        LocationsConfiguration locationsConfiguration,
+        WarpDataConfig warpDataConfig
+    ) {
+        this.locationsConfiguration = locationsConfiguration;
+        this.configurationManager = configurationManager;
+        this.warpDataConfig = warpDataConfig;
+
+        this.migrateWarps();
+    }
+
+    @Override
+    public CompletableFuture<Void> addWarp(Warp warp) {
+        return CompletableFuture.runAsync(() -> {
+            WarpDataConfigRepresenter warpDataConfigRepresenter = new WarpDataConfigRepresenter(
+                PositionAdapter.convert(warp.getLocation()),
+                warp.getPermissions()
+            );
+
+            this.edit(warps -> warps.put(warp.getName(), warpDataConfigRepresenter));
+        });
+    }
+
+    @Override
+    public CompletableFuture<Void> removeWarp(String warp) {
+        return CompletableFuture.runAsync(() -> this.edit(warps -> warps.remove(warp)));
+    }
+    @Override
+    public CompletableFuture<Void> addPermissions(String warp, String... permissions) {
+        return CompletableFuture.runAsync(() -> this.edit(warps -> {
+            WarpDataConfigRepresenter warpDataConfigRepresenter = warps.get(warp);
+            if (warpDataConfigRepresenter == null) {
+                return;
+            }
+
+            List<String> newPermissions = new ArrayList<>(warpDataConfigRepresenter.permissions);
+            newPermissions.addAll(List.of(permissions));
+
+            warpDataConfigRepresenter.permissions = newPermissions;
+        }));
+    }
+
+    @Override
+    public CompletableFuture<Void> removePermission(String warp, String permission) {
+        return CompletableFuture.runAsync(() -> this.edit(warps -> {
+            WarpDataConfigRepresenter warpDataConfigRepresenter = warps.get(warp);
+
+            if (warpDataConfigRepresenter == null) {
+                return;
+            }
+
+            List<String> newPermissions = new ArrayList<>(warpDataConfigRepresenter.permissions);
+            newPermissions.remove(permission);
+
+            warpDataConfigRepresenter.permissions = newPermissions;
+        }));
+    }
+
+    private void edit(Consumer<Map<String, WarpDataConfigRepresenter>> editor) {
+        synchronized (warpDataConfig.warps) {
+            Map<String, WarpDataConfigRepresenter> warps = new HashMap<>(this.warpDataConfig.warps);
+            editor.accept(warps);
+            this.warpDataConfig.warps.putAll(warps);
+        }
+        this.configurationManager.save(this.warpDataConfig);
+    }
+
+    @Override
+    public CompletableFuture<Optional<Warp>> getWarp(String name) {
+        return CompletableFuture.completedFuture(Optional.of(this.warpDataConfig.warps.get(name))
+            .map(warpDataConfigRepresenter -> new WarpImpl(name, warpDataConfigRepresenter.position, warpDataConfigRepresenter.permissions)));
+    }
+
+    @Override
+    public CompletableFuture<List<Warp>> getWarps() {
+        return CompletableFuture.completedFuture(this.warpDataConfig.warps.entrySet().stream()
+            .map(warpConfigEntry -> {
+                WarpDataConfigRepresenter warpContextual = warpConfigEntry.getValue();
+                return new WarpImpl(warpConfigEntry.getKey(), warpContextual.position, warpContextual.permissions);
+            })
+            .collect(Collectors.toList()));
+    }
+
+    private void migrateWarps() {
+        if (this.locationsConfiguration.warps.isEmpty()) {
+            return;
+        }
+
+        this.edit(warps -> warps.putAll(this.locationsConfiguration.warps
+            .entrySet()
+            .stream()
+            .collect(Collectors.toMap(Map.Entry::getKey, entry ->
+                new WarpDataConfigRepresenter(entry.getValue(), new ArrayList<>()))
+            )
+        ));
+
+        this.locationsConfiguration.warps.clear();
+        this.configurationManager.save(this.locationsConfiguration);
+        this.configurationManager.save(this.warpDataConfig);
+    }
+}
diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/warp/data/WarpDataRepository.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/warp/data/WarpDataRepository.java
new file mode 100644
index 000000000..11a6bb8a4
--- /dev/null
+++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/warp/data/WarpDataRepository.java
@@ -0,0 +1,21 @@
+package com.eternalcode.core.feature.warp.data;
+
+import com.eternalcode.core.feature.warp.Warp;
+import java.util.List;
+import java.util.Optional;
+import java.util.concurrent.CompletableFuture;
+
+public interface WarpDataRepository {
+
+    CompletableFuture<Void> addWarp(Warp warp);
+
+    CompletableFuture<Void> removeWarp(String warp);
+
+    CompletableFuture<Void> addPermissions(String warp, String... permissions);
+
+    CompletableFuture<Void> removePermission(String warp, String permission);
+
+    CompletableFuture<Optional<Warp>> getWarp(String name);
+
+    CompletableFuture<List<Warp>> getWarps();
+}
diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/translation/Translation.java b/eternalcore-core/src/main/java/com/eternalcode/core/translation/Translation.java
index 8f0762b14..8317275c3 100644
--- a/eternalcore-core/src/main/java/com/eternalcode/core/translation/Translation.java
+++ b/eternalcore-core/src/main/java/com/eternalcode/core/translation/Translation.java
@@ -157,6 +157,9 @@ interface WarpSection {
         Notice removePermission();
         Notice permissionDoesNotExist();
         Notice noPermissionsProvided();
+        Notice noPermissionAssigned();
+        Notice missingWarpName();
+        Notice listPermission();
 
         WarpInventorySection warpInventory();
 
diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/translation/implementation/ENTranslation.java b/eternalcore-core/src/main/java/com/eternalcode/core/translation/implementation/ENTranslation.java
index cc93e15e2..eac3396dc 100644
--- a/eternalcore-core/src/main/java/com/eternalcode/core/translation/implementation/ENTranslation.java
+++ b/eternalcore-core/src/main/java/com/eternalcode/core/translation/implementation/ENTranslation.java
@@ -387,6 +387,9 @@ public static class ENWarpSection implements WarpSection {
         public Notice removePermission = Notice.chat("<red>► <white>Removed permission <red>{PERMISSION}</red> <white>from warp <red>{WARP}<white>!");
         public Notice noPermissionsProvided = Notice.chat("<red>✘ <dark_red>No permissions provided!");
         public Notice permissionDoesNotExist = Notice.chat("<red>✘ <dark_red>Permission <red>{PERMISSION} <dark_red>doesn't exist!");
+        public Notice noPermissionAssigned = Notice.chat("<red>✘ <red>There are no permissions assigned to this warp!");
+        public Notice missingWarpName = Notice.chat("<red>✘ <dark_red>You must provide a warp name!");
+        public Notice listPermission = Notice.chat("<green>► <white>Permissions for warp <green>{WARP}<white>: <green>{PERMISSIONS}");
         @Description({" ", "# {WARPS} - List of warps (separated by commas)"})
         public Notice available = Notice.chat("<green>► <white>Available warps: <green>{WARPS}");
 
diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/translation/implementation/PLTranslation.java b/eternalcore-core/src/main/java/com/eternalcode/core/translation/implementation/PLTranslation.java
index 2a2a224d1..f98bfd126 100644
--- a/eternalcore-core/src/main/java/com/eternalcode/core/translation/implementation/PLTranslation.java
+++ b/eternalcore-core/src/main/java/com/eternalcode/core/translation/implementation/PLTranslation.java
@@ -106,7 +106,7 @@ public static class PLArgumentSection implements ArgumentSection {
         public Notice usageMessageEntry = Notice.chat("<gold>✘ <white>{USAGE}");
 
         @Description(" ")
-        public Notice missingPlayerName = Notice.chat("<red>✘ <dark_red>Błąd: <red>Musisz podać nazwę gracza!");
+        public Notice missingPlayerName = Notice.chat("<red>✘ <red>Musisz podać nazwę gracza!");
         public Notice offlinePlayer = Notice.chat("<red>✘ <dark_red>Ten gracz jest obecnie offline!");
         public Notice onlyPlayer = Notice.chat("<red>✘ <dark_red>Ta komenda jest dostępna tylko dla graczy!");
         public Notice numberBiggerThanOrEqualZero = Notice.chat("<red>✘ <dark_red>Liczba musi być równa lub większa od 0!");
@@ -308,7 +308,7 @@ public static class PLChatSection implements ChatSection {
         public Notice alertQueueAdded = Notice.chat("<green>► <white>Dodano wiadomość do kolejki!");
         public Notice alertQueueRemoved = Notice.chat("<green>► <white>Usunięto wiadomość z kolejki!");
         public Notice alertQueueCleared = Notice.chat("<green>► <white>Wyczyszczono kolejkę wiadomości!");
-        public Notice alertQueueEmpty = Notice.chat("<red>✘ <dark_red>Błąd: <red>Kolejka wiadomości jest pusta!");
+        public Notice alertQueueEmpty = Notice.chat("<red>✘ <red>Kolejka wiadomości jest pusta!");
         public Notice alertQueueSent = Notice.chat("<green>► <white>Wysłano wszystkie wiadomości z kolejki!");
     }
 
@@ -385,14 +385,19 @@ public static class PLWarpSection implements WarpSection {
         public Notice itemAdded = Notice.chat("<green>► <white>Dodano warp do GUI!");
         public Notice noWarps = Notice.chat("<red>✘ <dark_red>Nie ma dostępnych warpów!");
         public Notice itemLimit = Notice.chat("<red>✘ <red>Osiągnąłeś limit warpów w GUI! Limit to: {LIMIT}!");
-        public Notice noPermission = Notice.chat("<red>✘ <red>Nie masz uprawnień do skorzystania z tego warpa ({WARP})!");
+        public Notice noPermission = Notice.chat("<red>✘ <red>Nie masz uprawnień do skorzystania z tego warpa <dark_red>{WARP}<red>!");
         public Notice addPermissions = Notice.chat("<green>► <white>Dodano uprawnienia do warpa <green>{WARP}<white>!");
-        public Notice removePermission = Notice.chat("<red>► <white>Usunięto uprawnienie <red>{PERMISSION}</red> do warpa <red>{WARP}</red>!");
-        public Notice noPermissionsProvided = Notice.chat("<red>✘ <dark_red>Błąd: <red>Nie podano żadnych uprawnień!");
-        public Notice permissionDoesNotExist = Notice.chat("<red>✘ <dark_red>Błąd: <red>Podane uprawnienie nie istnieje ({PERMISSION})!");
+        public Notice removePermission = Notice.chat("<red>► <white>Usunięto uprawnienie <red>{PERMISSION}</red> z warpa <red>{WARP}</red>!");
+        public Notice noPermissionsProvided = Notice.chat("<red>✘ <red>Nie podano żadnych uprawnień!");
+        public Notice permissionDoesNotExist = Notice.chat("<red>✘ <red>Podane uprawnienie nie istnieje ({PERMISSION})!");
+        public Notice noPermissionAssigned = Notice.chat("<red>✘ <red>Ten warp nie ma przypisanych żadnych permisji");
+        public Notice missingWarpName = Notice.chat("<red>✘ <dark_red>Musisz podać nazwę warpu!");
+        public Notice listPermission = Notice.chat("<green>► <white>Lista uprawnień dla warpa <green>{WARP}<white>: <green>{PERMISSIONS}!");
+
         @Description({" ", "# {WARPS} - Lista dostępnych warpów"})
         public Notice available = Notice.chat("<green>► <white>Dostepne warpy: <green>{WARPS}!");
 
+
         @Description({" ", "# Ustawienia gui listy dostępnych warpów"})
         public PLWarpInventory warpInventory = new PLWarpInventory();
 
@@ -468,7 +473,7 @@ public static class PLHomeSection implements HomeSection {
             "# {HOME} - Nazwa domu, {PLAYER} - Gracz, {HOMES} - Lista domów"
         })
         public Notice overrideHomeLocationAsAdmin = Notice.chat("<green>► <white>Nadpisałeś lokalizację domu <green>{HOME} <white>dla gracza <green>{PLAYER}<white>!");
-        public Notice playerNoOwnedHomes = Notice.chat("<red>✘ <dark_red>Błąd: <red>Gracz <dark_red>{PLAYER} <red>nie posiada żadnego domu!");
+        public Notice playerNoOwnedHomes = Notice.chat("<red>✘ <red>Gracz <dark_red>{PLAYER} <red>nie posiada żadnego domu!");
         public Notice createAsAdmin = Notice.chat("<green>► <white>Stworzono dom <green>{HOME} <white>dla gracza <green>{PLAYER}<white>!");
         public Notice deleteAsAdmin = Notice.chat("<red>► <white>Usunięto dom <red>{HOME} <white>dla gracza <red>{PLAYER}<white>!");
         public Notice homeListAsAdmin = Notice.chat("<green>► <white>Lista domów gracza <green>{PLAYER}<white>: <green>{HOMES}!");