diff --git a/src/main/java/com/eu/habbo/Emulator.java b/src/main/java/com/eu/habbo/Emulator.java
index 695d6b11..25f2bda9 100644
--- a/src/main/java/com/eu/habbo/Emulator.java
+++ b/src/main/java/com/eu/habbo/Emulator.java
@@ -35,16 +35,14 @@ public final class Emulator {
 
     public static final int MAJOR = 4;
     public static final int MINOR = 0;
-    public static final int BUILD = 0;
+    public static final int REVISION = 0;
     public static final String PREVIEW = "Developer Preview";
-    public static final String version = "Arcturus Morningstar" + " " + MAJOR + "." + MINOR + "." + BUILD + " " + PREVIEW;
+    public static final String VERSION = "Arcturus Morningstar" + " " + MAJOR + "." + MINOR + "." + REVISION + " " + PREVIEW;
     public static String build = "";
     public static boolean isReady = false;
     public static boolean isShuttingDown = false;
     public static boolean stopped = false;
     public static boolean debugging = false;
-
-    private static final Logger LOGGER = LoggerFactory.getLogger(Emulator.class);
     private static final String OS_NAME = (System.getProperty("os.name") != null ? System.getProperty("os.name") : "Unknown");
     private static final String CLASS_PATH = (System.getProperty("java.class.path") != null ? System.getProperty("java.class.path") : "Unknown");
 
@@ -87,9 +85,9 @@ public final class Emulator {
     }
 
     public static void promptEnterKey(){
-        System.out.println("\n");
-        System.out.println("This is a developer preview build. Your plugins for Arcturus Morningstar 3.x will NOT work on this build.");
-        System.out.println("Press \"ENTER\" if you agree to the terms stated above...");
+        log.info("\n");
+        log.info("This is a developer preview build. Your plugins for Arcturus Morningstar 3.x will NOT work on this build.");
+        log.info("Press \"ENTER\" if you agree to the terms stated above...");
         Scanner scanner = new Scanner(System.in);
         scanner.nextLine();
     }
@@ -121,7 +119,7 @@ public final class Emulator {
             }
             log.info("eek. Has it really been a year?");
             log.info("This project is for educational purposes only. This Emulator is an open-source fork of Arcturus created by TheGeneral.");
-            log.info("Version: {}", version);
+            log.info("Version: {}", VERSION);
             log.info("Build: {}", build);
             log.info("Follow our development at https://git.krews.org/morningstar/Arcturus-Community");
 
@@ -238,7 +236,7 @@ public final class Emulator {
         Emulator.isShuttingDown = true;
         Emulator.isReady = false;
 
-        log.info("Stopping Arcturus Morningstar {}", version);
+        log.info("Stopping Arcturus Morningstar {}", VERSION);
 
         try {
             if (Emulator.getPluginManager() != null)
@@ -289,7 +287,7 @@ public final class Emulator {
         } catch (Exception ignored) {
         }
 
-        log.info("Stopped Arcturus Morningstar {}", version);
+        log.info("Stopped Arcturus Morningstar {}", VERSION);
 
         if (Emulator.database != null) {
             Emulator.getDatabase().dispose();
diff --git a/src/main/java/com/eu/habbo/core/ErrorLog.java b/src/main/java/com/eu/habbo/core/ErrorLog.java
index aa2a5c6a..96ca231c 100644
--- a/src/main/java/com/eu/habbo/core/ErrorLog.java
+++ b/src/main/java/com/eu/habbo/core/ErrorLog.java
@@ -22,8 +22,8 @@ public class ErrorLog implements DatabaseLoggable {
     public final String stackTrace;
 
     public ErrorLog(String type, Throwable e) {
-        this.version = Emulator.version;
-        this.buildHash = Emulator.version;
+        this.version = Emulator.VERSION;
+        this.buildHash = Emulator.VERSION;
 
         this.timeStamp = Emulator.getIntUnixTimestamp();
         this.type = type;
@@ -42,7 +42,7 @@ public class ErrorLog implements DatabaseLoggable {
     }
 
     public ErrorLog(String type, String message) {
-        this.version = Emulator.version;
+        this.version = Emulator.VERSION;
         this.buildHash = Emulator.build;
 
         this.timeStamp = Emulator.getIntUnixTimestamp();
diff --git a/src/main/java/com/eu/habbo/core/consolecommands/ConsoleInfoCommand.java b/src/main/java/com/eu/habbo/core/consolecommands/ConsoleInfoCommand.java
index b0001ee2..e2be1706 100644
--- a/src/main/java/com/eu/habbo/core/consolecommands/ConsoleInfoCommand.java
+++ b/src/main/java/com/eu/habbo/core/consolecommands/ConsoleInfoCommand.java
@@ -21,7 +21,7 @@ public class ConsoleInfoCommand extends ConsoleCommand {
         long minute = TimeUnit.SECONDS.toMinutes(seconds) - (TimeUnit.SECONDS.toHours(seconds) * 60);
         long second = TimeUnit.SECONDS.toSeconds(seconds) - (TimeUnit.SECONDS.toMinutes(seconds) * 60);
 
-        log.info("Emulator version: " + Emulator.version);
+        log.info("Emulator version: " + Emulator.VERSION);
         log.info("Emulator build: " + Emulator.build);
 
         log.info("");
diff --git a/src/main/java/com/eu/habbo/habbohotel/achievements/Achievement.java b/src/main/java/com/eu/habbo/habbohotel/achievements/Achievement.java
index 1e16f29b..6b40995c 100644
--- a/src/main/java/com/eu/habbo/habbohotel/achievements/Achievement.java
+++ b/src/main/java/com/eu/habbo/habbohotel/achievements/Achievement.java
@@ -42,10 +42,8 @@ public class Achievement {
         if (progress > 0) {
             for (AchievementLevel level : this.levels.values()) {
                 if (progress >= level.getProgress()) {
-                    if (l != null) {
-                        if (l.getLevel() > level.getLevel()) {
-                            continue;
-                        }
+                    if (l != null && l.getLevel() > level.getLevel()) {
+                        continue;
                     }
 
                     l = level;
@@ -57,7 +55,6 @@ public class Achievement {
 
 
     public AchievementLevel getNextLevel(int currentLevel) {
-        AchievementLevel l = null;
 
         for (AchievementLevel level : this.levels.values()) {
             if (level.getLevel() == (currentLevel + 1))
diff --git a/src/main/java/com/eu/habbo/habbohotel/achievements/AchievementManager.java b/src/main/java/com/eu/habbo/habbohotel/achievements/AchievementManager.java
index 001585cc..a7c23ace 100644
--- a/src/main/java/com/eu/habbo/habbohotel/achievements/AchievementManager.java
+++ b/src/main/java/com/eu/habbo/habbohotel/achievements/AchievementManager.java
@@ -21,12 +21,15 @@ import gnu.trove.procedure.TObjectIntProcedure;
 import lombok.extern.slf4j.Slf4j;
 
 import java.sql.*;
+import java.util.Arrays;
 import java.util.LinkedHashMap;
 import java.util.Map;
 
+import static com.eu.habbo.database.DatabaseConstants.CAUGHT_SQL_EXCEPTION;
+
 @Slf4j
 public class AchievementManager {
-    public static boolean TALENTTRACK_ENABLED = false;
+    public static boolean TALENT_TRACK_ENABLED = false;
 
     private final THashMap<String, Achievement> achievements;
     private final THashMap<TalentTrackType, LinkedHashMap<Integer, TalentTrackLevel>> talentTrackLevels;
@@ -57,7 +60,7 @@ public class AchievementManager {
                     statement.setInt(4, amount);
                     statement.execute();
                 } catch (SQLException e) {
-                    log.error("Caught SQL exception", e);
+                    log.error(CAUGHT_SQL_EXCEPTION, e);
                 }
             }
         }
@@ -68,13 +71,7 @@ public class AchievementManager {
     }
 
     public static void progressAchievement(Habbo habbo, Achievement achievement, int amount) {
-        if (achievement == null)
-            return;
-
-        if (habbo == null)
-            return;
-
-        if (!habbo.isOnline())
+        if (achievement == null || habbo == null || !habbo.isOnline())
             return;
 
         int currentProgress = habbo.getHabboStats().getAchievementProgress(achievement);
@@ -102,17 +99,12 @@ public class AchievementManager {
 
         AchievementLevel newLevel = achievement.getLevelForProgress(currentProgress + amount);
 
-        if (AchievementManager.TALENTTRACK_ENABLED) {
-            for (TalentTrackType type : TalentTrackType.values()) {
-                if (Emulator.getGameEnvironment().getAchievementManager().talentTrackLevels.containsKey(type)) {
-                    for (Map.Entry<Integer, TalentTrackLevel> entry : Emulator.getGameEnvironment().getAchievementManager().talentTrackLevels.get(type).entrySet()) {
-                        if (entry.getValue().achievements.containsKey(achievement)) {
-                            Emulator.getGameEnvironment().getAchievementManager().handleTalentTrackAchievement(habbo, type);
-                            break;
-                        }
-                    }
-                }
-            }
+        if (AchievementManager.TALENT_TRACK_ENABLED) {
+            Arrays.stream(TalentTrackType.values())
+                    .filter(type -> Emulator.getGameEnvironment().getAchievementManager().talentTrackLevels.containsKey(type))
+                    .filter(type -> Emulator.getGameEnvironment().getAchievementManager().talentTrackLevels.get(type).entrySet().stream()
+                            .anyMatch(entry -> entry.getValue().achievements.containsKey(achievement)))
+                    .forEach(type -> Emulator.getGameEnvironment().getAchievementManager().handleTalentTrackAchievement(habbo, type));
         }
 
         if (newLevel == null ||
@@ -163,10 +155,8 @@ public class AchievementManager {
 
             Emulator.getThreading().run(badge);
 
-            if (badge.getSlot() > 0) {
-                if (habbo.getHabboInfo().getCurrentRoom() != null) {
-                    habbo.getHabboInfo().getCurrentRoom().sendComposer(new UserBadgesComposer(habbo.getInventory().getBadgesComponent().getWearingBadges(), habbo.getHabboInfo().getId()).compose());
-                }
+            if (badge.getSlot() > 0 && habbo.getHabboInfo().getCurrentRoom() != null) {
+                habbo.getHabboInfo().getCurrentRoom().sendComposer(new UserBadgesComposer(habbo.getInventory().getBadgesComponent().getWearingBadges(), habbo.getHabboInfo().getId()).compose());
             }
 
             habbo.getClient().sendResponse(new UnseenItemsComposer(badge.getId(), UnseenItemsComposer.AddHabboItemCategory.BADGE));
@@ -207,7 +197,7 @@ public class AchievementManager {
             statement.setInt(3, 1);
             statement.execute();
         } catch (SQLException e) {
-            log.error("Caught SQL exception", e);
+            log.error(CAUGHT_SQL_EXCEPTION, e);
         }
     }
 
@@ -221,7 +211,7 @@ public class AchievementManager {
             }
             statement.executeBatch();
         } catch (SQLException e) {
-            log.error("Caught SQL exception", e);
+            log.error(CAUGHT_SQL_EXCEPTION, e);
         }
     }
 
@@ -235,7 +225,7 @@ public class AchievementManager {
                 }
             }
         } catch (SQLException e) {
-            log.error("Caught SQL exception", e);
+            log.error(CAUGHT_SQL_EXCEPTION, e);
         }
 
         return 0;
@@ -258,7 +248,7 @@ public class AchievementManager {
                         }
                     }
                 } catch (SQLException e) {
-                    log.error("Caught SQL exception", e);
+                    log.error(CAUGHT_SQL_EXCEPTION, e);
                 } catch (Exception e) {
                     log.error("Caught exception", e);
                 }
@@ -280,7 +270,7 @@ public class AchievementManager {
                     }
                 }
             } catch (SQLException e) {
-                log.error("Caught SQL exception", e);
+                log.error(CAUGHT_SQL_EXCEPTION, e);
                 log.error("Achievement Manager -> Failed to load!");
                 return;
             }
@@ -309,7 +299,7 @@ public class AchievementManager {
         return this.achievements;
     }
 
-    public LinkedHashMap<Integer, TalentTrackLevel> getTalenTrackLevels(TalentTrackType type) {
+    public Map<Integer, TalentTrackLevel> getTalenTrackLevels(TalentTrackType type) {
         return this.talentTrackLevels.get(type);
     }
 
@@ -318,15 +308,12 @@ public class AchievementManager {
 
         for (Map.Entry<Integer, TalentTrackLevel> entry : this.talentTrackLevels.get(type).entrySet()) {
             final boolean[] allCompleted = {true};
-            entry.getValue().achievements.forEachEntry(new TObjectIntProcedure<Achievement>() {
-                @Override
-                public boolean execute(Achievement a, int b) {
-                    if (habbo.getHabboStats().getAchievementProgress(a) < b) {
-                        allCompleted[0] = false;
-                    }
-
-                    return allCompleted[0];
+            entry.getValue().achievements.forEachEntry((a, b) -> {
+                if (habbo.getHabboStats().getAchievementProgress(a) < b) {
+                    allCompleted[0] = false;
                 }
+
+                return allCompleted[0];
             });
 
             if (allCompleted[0]) {
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/AboutCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/AboutCommand.java
index 64be09e6..489aef83 100644
--- a/src/main/java/com/eu/habbo/habbohotel/commands/AboutCommand.java
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/AboutCommand.java
@@ -13,7 +13,7 @@ public class AboutCommand extends Command {
     public AboutCommand() {
         super(null, new String[]{"about", "info", "online", "server"});
     }
-    public static final String credits = """
+    public static final String CREDITS = """
             Arcturus Morningstar is an opensource project based on Arcturus By TheGeneral\s
             The Following people have all contributed to this emulator:
              TheGeneral
@@ -58,7 +58,7 @@ public class AboutCommand extends Command {
         long minute = TimeUnit.SECONDS.toMinutes(seconds) - (TimeUnit.SECONDS.toHours(seconds) * 60);
         long second = TimeUnit.SECONDS.toSeconds(seconds) - (TimeUnit.SECONDS.toMinutes(seconds) * 60);
 
-        String message = "<b>" + Emulator.version + "</b>\r\n";
+        String message = "<b>" + Emulator.VERSION + "</b>\r\n";
 
         if (Emulator.getConfig().getBoolean("info.shown", true)) {
             message += "<b>Hotel Statistics</b>\r" +
@@ -79,7 +79,7 @@ public class AboutCommand extends Command {
                 "<b>Thanks for using Arcturus. Report issues on the forums. http://arcturus.wf \r\r" +
                 "    - The General";
         gameClient.getHabbo().alert(message);
-        gameClient.sendResponse(new MOTDNotificationComposer(Collections.singletonList(credits)));
+        gameClient.sendResponse(new MOTDNotificationComposer(Collections.singletonList(CREDITS)));
         return true;
     }
 }
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/AddYoutubePlaylistCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/AddYoutubePlaylistCommand.java
index be689722..03a2cea4 100644
--- a/src/main/java/com/eu/habbo/habbohotel/commands/AddYoutubePlaylistCommand.java
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/AddYoutubePlaylistCommand.java
@@ -19,7 +19,7 @@ public class AddYoutubePlaylistCommand extends Command {
     @Override
     public boolean handle(GameClient gameClient, String[] params) throws Exception {
         if (params.length < 3) {
-            gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_add_youtube_playlist.usage"));
+            gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_add_youtube_playlist.usage"));
             return true;
         }
 
@@ -28,19 +28,19 @@ public class AddYoutubePlaylistCommand extends Command {
         try {
             itemId = Integer.parseInt(params[1]);
         } catch (NumberFormatException e) {
-            gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_add_youtube_playlist.no_base_item"));
+            gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_add_youtube_playlist.no_base_item"));
             return true;
         }
 
         if (Emulator.getGameEnvironment().getItemManager().getItem(itemId) == null) {
-            gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_add_youtube_playlist.no_base_item"));
+            gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_add_youtube_playlist.no_base_item"));
             return true;
         }
 
         YoutubeManager.YoutubePlaylist playlist = Emulator.getGameEnvironment().getItemManager().getYoutubeManager().getPlaylistDataById(params[2]);
 
         if (playlist == null) {
-            gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_add_youtube_playlist.failed_playlist"));
+            gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_add_youtube_playlist.failed_playlist"));
             return true;
         }
 
@@ -55,7 +55,7 @@ public class AddYoutubePlaylistCommand extends Command {
             log.error("Caught SQL exception", e);
         }
 
-        gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.succes.cmd_add_youtube_playlist"));
+        gameClient.getHabbo().whisper(getTextsValue("commands.succes.cmd_add_youtube_playlist"));
 
         return true;
     }
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/AlertCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/AlertCommand.java
index 17c2042f..4af606f0 100644
--- a/src/main/java/com/eu/habbo/habbohotel/commands/AlertCommand.java
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/AlertCommand.java
@@ -5,6 +5,9 @@ import com.eu.habbo.habbohotel.gameclients.GameClient;
 import com.eu.habbo.habbohotel.rooms.RoomChatMessageBubbles;
 import com.eu.habbo.habbohotel.users.Habbo;
 
+import java.util.stream.Collectors;
+import java.util.stream.IntStream;
+
 public class AlertCommand extends Command {
 
     public AlertCommand() {
@@ -14,28 +17,24 @@ public class AlertCommand extends Command {
     @Override
     public boolean handle(GameClient gameClient, String[] params) {
         if (params.length < 2) {
-            gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_alert.forgot_username"), RoomChatMessageBubbles.ALERT);
+            gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_alert.forgot_username"), RoomChatMessageBubbles.ALERT);
             return true;
         }
         if (params.length < 3) {
-            gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_alert.forgot_message"), RoomChatMessageBubbles.ALERT);
+            gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_alert.forgot_message"), RoomChatMessageBubbles.ALERT);
             return true;
         }
 
         String targetUsername = params[1];
-        StringBuilder message = new StringBuilder();
+        String message = IntStream.range(2, params.length).mapToObj(i -> params[i] + " ").collect(Collectors.joining());
 
-        for (int i = 2; i < params.length; i++) {
-            message.append(params[i]).append(" ");
-        }
-
-        Habbo habbo = Emulator.getGameEnvironment().getHabboManager().getHabbo(targetUsername);
+        Habbo habbo = getHabbo(targetUsername);
 
         if (habbo != null) {
             habbo.alert(message + "\r\n    -" + gameClient.getHabbo().getHabboInfo().getUsername());
-            gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.succes.cmd_alert.message_send").replace("%user%", targetUsername), RoomChatMessageBubbles.ALERT);
+            gameClient.getHabbo().whisper(replaceUser(getTextsValue("commands.succes.cmd_alert.message_send"), targetUsername), RoomChatMessageBubbles.ALERT);
         } else {
-            gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_alert.user_offline").replace("%user%", targetUsername), RoomChatMessageBubbles.ALERT);
+            gameClient.getHabbo().whisper(replaceUser(getTextsValue("commands.error.cmd_alert.user_offline"), targetUsername), RoomChatMessageBubbles.ALERT);
         }
         return true;
     }
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/AllowTradingCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/AllowTradingCommand.java
index 649d5137..6d216a86 100644
--- a/src/main/java/com/eu/habbo/habbohotel/commands/AllowTradingCommand.java
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/AllowTradingCommand.java
@@ -16,21 +16,21 @@ public class AllowTradingCommand extends Command {
     @Override
     public boolean handle(GameClient gameClient, String[] params) throws Exception {
         if (params.length == 1) {
-            gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_allow_trading.forgot_username"));
+            gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_allow_trading.forgot_username"));
             return true;
         }
 
         if (params.length == 2) {
-            gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_allow_trading.forgot_trade").replace("%username%", params[1]));
+            gameClient.getHabbo().whisper(replaceUsername(getTextsValue("commands.error.cmd_allow_trading.forgot_trade"), params[1]));
             return true;
         }
 
         final String username = params[1];
         final String option = params[2];
 
-        if (option.equalsIgnoreCase(Emulator.getTexts().getValue("generic.yes")) || option.equalsIgnoreCase(Emulator.getTexts().getValue("generic.no"))) {
-            final boolean enabled = option.equalsIgnoreCase(Emulator.getTexts().getValue("generic.yes"));
-            final Habbo habbo = Emulator.getGameEnvironment().getHabboManager().getHabbo(username);
+        if (option.equalsIgnoreCase(getTextsValue("generic.yes")) || option.equalsIgnoreCase(getTextsValue("generic.no"))) {
+            final boolean enabled = option.equalsIgnoreCase(getTextsValue("generic.yes"));
+            final Habbo habbo = getHabbo(username);
 
             if (habbo != null) {
                 if (!enabled) {
@@ -41,28 +41,28 @@ public class AllowTradingCommand extends Command {
                     }
                 }
                 habbo.getHabboStats().setAllowTrade(enabled);
-                gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.succes.cmd_allow_trading." + (enabled ? "enabled" : "disabled")).replace("%username%", params[1]));
+                gameClient.getHabbo().whisper(replaceUsername(getTextsValue("commands.succes.cmd_allow_trading." + (enabled ? "enabled" : "disabled")), params[1]));
                 habbo.getClient().sendResponse(new UserPerksComposer(habbo));
                 return true;
             } else {
                 boolean found;
                 try (Connection connection = Emulator.getDatabase().getDataSource().getConnection();
                      PreparedStatement statement = connection.prepareStatement("UPDATE users_settings INNER JOIN users ON users.id = users_settings.user_id SET can_trade = ?, tradelock_amount = tradelock_amount + ? WHERE users.username LIKE ?")) {
-                    statement.setString(1, enabled ? "1" : "0");
-                    statement.setInt(2, enabled ? 0 : 1);
+                    statement.setString(1, booleanToIntString(enabled));
+                    statement.setInt(2, booleanToInt(enabled));
                     statement.setString(3, username);
                     found = statement.executeUpdate() > 0;
                 }
 
                 if (!found) {
-                    gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_allow_trading.user_not_found").replace("%username%", params[1]));
+                    gameClient.getHabbo().whisper(replaceUsername(getTextsValue("commands.error.cmd_allow_trading.user_not_found"), params[1]));
                     return true;
                 }
 
-                gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.succes.cmd_allow_trading." + (enabled ? "enabled" : "disabled")).replace("%username%", params[1]));
+                gameClient.getHabbo().whisper(replaceUsername(getTextsValue("commands.succes.cmd_allow_trading." + (enabled ? "enabled" : "disabled")), params[1]));
             }
         } else {
-            gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_allow_trading.incorrect_setting").replace("%enabled%", Emulator.getTexts().getValue("generic.yes")).replace("%disabled%", Emulator.getTexts().getValue("generic.no")));
+            gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_allow_trading.incorrect_setting").replace("%enabled%", getTextsValue("generic.yes")).replace("%disabled%", getTextsValue("generic.no")));
         }
         return true;
     }
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/BlockAlertCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/BlockAlertCommand.java
index ab8ff887..c23e0f74 100644
--- a/src/main/java/com/eu/habbo/habbohotel/commands/BlockAlertCommand.java
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/BlockAlertCommand.java
@@ -13,7 +13,7 @@ public class BlockAlertCommand extends Command {
     public boolean handle(GameClient gameClient, String[] params) {
         if (gameClient.getHabbo().getHabboInfo().getCurrentRoom() != null) {
             gameClient.getHabbo().getHabboStats().setBlockStaffAlerts(!gameClient.getHabbo().getHabboStats().isBlockStaffAlerts());
-            gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.succes.cmd_blockalert").replace("%state%", (gameClient.getHabbo().getHabboStats().isBlockStaffAlerts() ? Emulator.getTexts().getValue("generic.on") : Emulator.getTexts().getValue("generic.off"))), RoomChatMessageBubbles.ALERT);
+            gameClient.getHabbo().whisper(getTextsValue("commands.succes.cmd_blockalert").replace("%state%", (gameClient.getHabbo().getHabboStats().isBlockStaffAlerts() ? getTextsValue("generic.on") : getTextsValue("generic.off"))), RoomChatMessageBubbles.ALERT);
 
             return true;
         }
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/BotsCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/BotsCommand.java
index 6c49e89e..096c39b1 100644
--- a/src/main/java/com/eu/habbo/habbohotel/commands/BotsCommand.java
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/BotsCommand.java
@@ -14,13 +14,18 @@ public class BotsCommand extends Command {
         if (gameClient.getHabbo().getHabboInfo().getCurrentRoom() == null || !gameClient.getHabbo().getHabboInfo().getCurrentRoom().hasRights(gameClient.getHabbo()))
             return false;
 
-        StringBuilder data = new StringBuilder(Emulator.getTexts().getValue("total") + ": " + gameClient.getHabbo().getHabboInfo().getCurrentRoom().getCurrentBots().values().length);
+        StringBuilder data = new StringBuilder(getTextsValue("total") + ": " + gameClient.getHabbo().getHabboInfo().getCurrentRoom().getCurrentBots().values().length);
 
-        for (Object bot : gameClient.getHabbo().getHabboInfo().getCurrentRoom().getCurrentBots().values()) {
-            if (bot instanceof Bot) {
-                data.append("\r");
-                data.append("<b>").append(Emulator.getTexts().getValue("generic.bot.name")).append("</b>: ").append(((Bot) bot).getName()).append(" <b>").append(Emulator.getTexts().getValue("generic.bot.id")).append("</b>: ").append(((Bot) bot).getId());
-            }
+        for (Bot bot : gameClient.getHabbo().getHabboInfo().getCurrentRoom().getCurrentBots().valueCollection()) {
+            data.append("\r");
+            data.append("<b>");
+            data.append(Emulator.getTexts().getValue("generic.bot.name"));
+            data.append("</b>: ");
+            data.append(bot.getName());
+            data.append(" <b>");
+            data.append(Emulator.getTexts().getValue("generic.bot.id"));
+            data.append("</b>: ");
+            data.append(bot.getId());
         }
 
         gameClient.getHabbo().alert(data.toString());
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/ChangeNameCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/ChangeNameCommand.java
index 25bf2774..aedd2342 100644
--- a/src/main/java/com/eu/habbo/habbohotel/commands/ChangeNameCommand.java
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/ChangeNameCommand.java
@@ -21,16 +21,16 @@ public class ChangeNameCommand extends Command {
         }
 
         // check if the habbo exists or is online
-        Habbo habbo = Emulator.getGameEnvironment().getHabboManager().getHabbo(params[1]);
+        Habbo habbo = getHabbo(params[1]);
 
-        if ( habbo == null) {
-            gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_changename.user_not_found").replace("%user%", params[1]));
+        if (habbo == null) {
+            gameClient.getHabbo().whisper(replaceUser(getTextsValue("commands.error.cmd_changename.user_not_found"), params[1]));
             return true;
         }
 
         // this runs if params[1] is a valid habbo
-        gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.succes.cmd_changename.done").replace("%user%", params[1]));
-        habbo.alert(Emulator.getTexts().getValue("commands.succes.cmd_changename.received"));
+        gameClient.getHabbo().whisper(replaceUser(getTextsValue("commands.succes.cmd_changename.done"), params[1]));
+        habbo.alert(getTextsValue("commands.succes.cmd_changename.received"));
         habbo.getHabboStats().setAllowNameChange(!habbo.getHabboStats().isAllowNameChange());
         habbo.getClient().sendResponse(new UserObjectComposer(habbo));
         return true;
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/ChatTypeCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/ChatTypeCommand.java
index 57f8a421..56c69289 100644
--- a/src/main/java/com/eu/habbo/habbohotel/commands/ChatTypeCommand.java
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/ChatTypeCommand.java
@@ -19,7 +19,7 @@ public class ChatTypeCommand extends Command {
             try {
                 chatColor = Integer.parseInt(params[1]);
             } catch (Exception e) {
-                gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_chatcolor.numbers"), RoomChatMessageBubbles.ALERT);
+                gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_chatcolor.numbers"), RoomChatMessageBubbles.ALERT);
                 return true;
             }
 
@@ -28,14 +28,14 @@ public class ChatTypeCommand extends Command {
             }
 
             if (chatColor < 0) {
-                gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_chatcolor.numbers"), RoomChatMessageBubbles.ALERT);
+                gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_chatcolor.numbers"), RoomChatMessageBubbles.ALERT);
                 return true;
             }
 
             if (!gameClient.getHabbo().hasPermission(Permission.ACC_ANYCHATCOLOR)) {
                 for (String s : Emulator.getConfig().getValue("commands.cmd_chatcolor.banned_numbers").split(";")) {
                     if (Integer.parseInt(s) == chatColor) {
-                        gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_chatcolor.banned"), RoomChatMessageBubbles.ALERT);
+                        gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_chatcolor.banned"), RoomChatMessageBubbles.ALERT);
                         return true;
                     }
                 }
@@ -43,10 +43,10 @@ public class ChatTypeCommand extends Command {
 
             gameClient.getHabbo().getHabboStats().setChatColor(RoomChatMessageBubbles.getBubble(chatColor));
             gameClient.sendResponse(new AccountPreferencesComposer(gameClient.getHabbo()));
-            gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.succes.cmd_chatcolor.set").replace("%chat%", RoomChatMessageBubbles.values()[chatColor].name().replace("_", " ").toLowerCase()), RoomChatMessageBubbles.ALERT);
+            gameClient.getHabbo().whisper(getTextsValue("commands.succes.cmd_chatcolor.set").replace("%chat%", RoomChatMessageBubbles.values()[chatColor].name().replace("_", " ").toLowerCase()), RoomChatMessageBubbles.ALERT);
         } else {
             gameClient.getHabbo().getHabboStats().setChatColor(RoomChatMessageBubbles.NORMAL);
-            gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.succes.cmd_chatcolor.reset"), RoomChatMessageBubbles.ALERT);
+            gameClient.getHabbo().whisper(getTextsValue("commands.succes.cmd_chatcolor.reset"), RoomChatMessageBubbles.ALERT);
         }
         return true;
     }
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/Command.java b/src/main/java/com/eu/habbo/habbohotel/commands/Command.java
index 711bede9..1fe51d85 100644
--- a/src/main/java/com/eu/habbo/habbohotel/commands/Command.java
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/Command.java
@@ -1,6 +1,8 @@
 package com.eu.habbo.habbohotel.commands;
 
+import com.eu.habbo.Emulator;
 import com.eu.habbo.habbohotel.gameclients.GameClient;
+import com.eu.habbo.habbohotel.users.Habbo;
 import lombok.AllArgsConstructor;
 
 @AllArgsConstructor
@@ -11,4 +13,33 @@ public abstract class Command {
 
 
     public abstract boolean handle(GameClient gameClient, String[] params) throws Exception;
+
+
+    protected Habbo getHabbo(String username) {
+        return Emulator.getGameEnvironment().getHabboManager().getHabbo(username);
+    }
+
+    protected String getTextsValue(String key) {
+        return Emulator.getTexts().getValue(key);
+    }
+
+    protected String getTextsValue(String key, String defaultValue) {
+        return Emulator.getTexts().getValue(key, defaultValue);
+    }
+
+    protected String replaceUser(String input, String user) {
+        return input.replace("%user%", user);
+    }
+
+    protected String replaceUsername(String input, String user) {
+        return input.replace("%username%", user);
+    }
+
+    protected int booleanToInt(boolean value) {
+        return value ? 1 : 0;
+    }
+
+    protected String booleanToIntString(boolean value) {
+        return value ? "1" : "0";
+    }
 }
\ No newline at end of file
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/CommandHandler.java b/src/main/java/com/eu/habbo/habbohotel/commands/CommandHandler.java
index bbaea77d..3b1c4720 100644
--- a/src/main/java/com/eu/habbo/habbohotel/commands/CommandHandler.java
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/CommandHandler.java
@@ -5,11 +5,19 @@ import com.eu.habbo.core.CommandLog;
 import com.eu.habbo.habbohotel.commands.badge.BadgeCommand;
 import com.eu.habbo.habbohotel.commands.badge.MassBadgeCommand;
 import com.eu.habbo.habbohotel.commands.badge.RoomBadgeCommand;
+import com.eu.habbo.habbohotel.commands.badge.TakeBadgeCommand;
 import com.eu.habbo.habbohotel.commands.bans.BanCommand;
+import com.eu.habbo.habbohotel.commands.bans.IPBanCommand;
 import com.eu.habbo.habbohotel.commands.bans.MachineBanCommand;
 import com.eu.habbo.habbohotel.commands.bans.SuperbanCommand;
+import com.eu.habbo.habbohotel.commands.credits.CreditsCommand;
+import com.eu.habbo.habbohotel.commands.credits.MassCreditsCommand;
+import com.eu.habbo.habbohotel.commands.credits.RoomCreditsCommand;
 import com.eu.habbo.habbohotel.commands.gift.GiftCommand;
 import com.eu.habbo.habbohotel.commands.gift.MassGiftCommand;
+import com.eu.habbo.habbohotel.commands.pixels.MassPixelsCommand;
+import com.eu.habbo.habbohotel.commands.pixels.PixelCommand;
+import com.eu.habbo.habbohotel.commands.pixels.RoomPixelsCommand;
 import com.eu.habbo.habbohotel.commands.points.MassPointsCommand;
 import com.eu.habbo.habbohotel.commands.points.PointsCommand;
 import com.eu.habbo.habbohotel.commands.points.RoomPointsCommand;
@@ -36,7 +44,7 @@ import java.util.NoSuchElementException;
 
 @Slf4j
 public class CommandHandler {
-    private final static THashMap<String, Command> commands = new THashMap<>(5);
+    private static final THashMap<String, Command> commands = new THashMap<>(5);
     private static final Comparator<Command> ALPHABETICAL_ORDER = (c1, c2) -> {
         int res = String.CASE_INSENSITIVE_ORDER.compare(c1.permission, c2.permission);
         return (res != 0) ? res : c1.permission.compareTo(c2.permission);
@@ -59,7 +67,7 @@ public class CommandHandler {
     public static void addCommand(Class<? extends Command> command) {
         try {
             //command.getConstructor().setAccessible(true);
-            addCommand(command.newInstance());
+            addCommand(command.getDeclaredConstructor().newInstance());
             log.debug("Added command: {}", command.getName());
         } catch (Exception e) {
             log.error("Caught exception", e);
@@ -132,32 +140,30 @@ public class CommandHandler {
 
                         Pet pet = petIterator.value();
 
-                        if (pet != null) {
-                            if (pet.getName().equalsIgnoreCase(args[0])) {
-                                StringBuilder s = new StringBuilder();
+                        if (pet != null && pet.getName().equalsIgnoreCase(args[0])) {
+                            StringBuilder s = new StringBuilder();
 
-                                for (int i = 1; i < args.length; i++) {
-                                    s.append(args[i]).append(" ");
-                                }
+                            for (int i = 1; i < args.length; i++) {
+                                s.append(args[i]).append(" ");
+                            }
 
-                                s = new StringBuilder(s.substring(0, s.length() - 1));
+                            s = new StringBuilder(s.substring(0, s.length() - 1));
 
-                                for (PetCommand command : pet.getPetData().getPetCommands()) {
-                                    if (command.getKey().equalsIgnoreCase(s.toString())) {
-                                        if (pet instanceof RideablePet && ((RideablePet) pet).getRider() != null) {
-                                            if (((RideablePet) pet).getRider().getHabboInfo().getId() == gameClient.getHabbo().getHabboInfo().getId()) {
-                                                ((RideablePet) pet).getRider().getHabboInfo().dismountPet();
-                                            }
-                                            break;
+                            for (PetCommand command : pet.getPetData().getPetCommands()) {
+                                if (command.getKey().equalsIgnoreCase(s.toString())) {
+                                    if (pet instanceof RideablePet rideablePet && ((RideablePet) pet).getRider() != null) {
+                                        if (rideablePet.getRider().getHabboInfo().getId() == gameClient.getHabbo().getHabboInfo().getId()) {
+                                            rideablePet.getRider().getHabboInfo().dismountPet();
                                         }
-
-                                        if (command.getLevel() <= pet.getLevel())
-                                            pet.handleCommand(command, gameClient.getHabbo(), args);
-                                        else
-                                            pet.say(pet.getPetData().randomVocal(PetVocalsType.UNKNOWN_COMMAND));
-
                                         break;
                                     }
+
+                                    if (command.getLevel() <= pet.getLevel())
+                                        pet.handleCommand(command, gameClient.getHabbo(), args);
+                                    else
+                                        pet.say(pet.getPetData().randomVocal(PetVocalsType.UNKNOWN_COMMAND));
+
+                                    break;
                                 }
                             }
                         }
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/CommandsCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/CommandsCommand.java
index c3045199..9be6e3b1 100644
--- a/src/main/java/com/eu/habbo/habbohotel/commands/CommandsCommand.java
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/CommandsCommand.java
@@ -12,12 +12,12 @@ public class CommandsCommand extends Command {
 
     @Override
     public boolean handle(GameClient gameClient, String[] params) {
-        StringBuilder message = new StringBuilder(Emulator.getTexts().getValue("commands.generic.cmd_commands.text"));
+        StringBuilder message = new StringBuilder(getTextsValue("commands.generic.cmd_commands.text"));
         List<Command> commands = Emulator.getGameEnvironment().getCommandHandler().getCommandsForRank(gameClient.getHabbo().getHabboInfo().getRank().getId());
         message.append("(").append(commands.size()).append("):\r\n");
 
         for (Command c : commands) {
-            message.append(Emulator.getTexts().getValue("commands.description." + c.permission, "commands.description." + c.permission)).append("\r");
+            message.append(getTextsValue("commands.description." + c.permission, "commands.description." + c.permission)).append("\r");
         }
 
         gameClient.getHabbo().alert(new String[]{message.toString()});
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/ControlCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/ControlCommand.java
index a2e7bed6..4b25bf51 100644
--- a/src/main/java/com/eu/habbo/habbohotel/commands/ControlCommand.java
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/ControlCommand.java
@@ -14,15 +14,15 @@ public class ControlCommand extends Command {
     public boolean handle(GameClient gameClient, String[] params) {
         if (gameClient.getHabbo().getHabboInfo().getCurrentRoom() != null) {
             if (params.length == 2) {
-                Habbo target = gameClient.getHabbo().getHabboInfo().getCurrentRoom().getHabbo(params[1]);
+                Habbo target = getHabbo(params[1]);
 
                 if (target == null) {
-                    gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_control.not_found").replace("%user%", params[1]), RoomChatMessageBubbles.ALERT);
+                    gameClient.getHabbo().whisper(replaceUser(getTextsValue("commands.error.cmd_control.not_found"), params[1]), RoomChatMessageBubbles.ALERT);
                     return true;
                 }
 
                 if (target == gameClient.getHabbo()) {
-                    gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_control.not_self"), RoomChatMessageBubbles.ALERT);
+                    gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_control.not_self"), RoomChatMessageBubbles.ALERT);
                     return true;
                 }
 
@@ -30,18 +30,18 @@ public class ControlCommand extends Command {
 
                 if (oldHabbo != null) {
                     oldHabbo.getRoomUnit().getCacheable().remove("controller");
-                    gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.succes.cmd_control.stopped").replace("%user%", oldHabbo.getHabboInfo().getUsername()), RoomChatMessageBubbles.ALERT);
+                    gameClient.getHabbo().whisper(replaceUser(getTextsValue("commands.succes.cmd_control.stopped"), oldHabbo.getHabboInfo().getUsername()), RoomChatMessageBubbles.ALERT);
                 }
                 gameClient.getHabbo().getRoomUnit().getCacheable().put("control", target);
                 target.getRoomUnit().getCacheable().put("controller", gameClient.getHabbo());
-                gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.succes.cmd_control.controlling").replace("%user%", params[1]), RoomChatMessageBubbles.ALERT);
+                gameClient.getHabbo().whisper(replaceUser(getTextsValue("commands.succes.cmd_control.controlling"), params[1]), RoomChatMessageBubbles.ALERT);
             } else {
                 Object habbo = gameClient.getHabbo().getRoomUnit().getCacheable().get("control");
 
                 if (habbo != null) {
                     gameClient.getHabbo().getRoomUnit().getCacheable().remove("control");
 
-                    gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.succes.cmd_control.stopped").replace("%user%", ((Habbo) habbo).getHabboInfo().getUsername()), RoomChatMessageBubbles.ALERT);
+                    gameClient.getHabbo().whisper(replaceUser(getTextsValue("commands.succes.cmd_control.stopped"), ((Habbo) habbo).getHabboInfo().getUsername()), RoomChatMessageBubbles.ALERT);
                 }
             }
             return true;
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/CoordsCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/CoordsCommand.java
index d98b00de..d8011e4b 100644
--- a/src/main/java/com/eu/habbo/habbohotel/commands/CoordsCommand.java
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/CoordsCommand.java
@@ -17,13 +17,13 @@ public class CoordsCommand extends Command {
             return false;
 
         if (params.length == 1) {
-            gameClient.getHabbo().alert(Emulator.getTexts().getValue("commands.generic.cmd_coords.title") + "\r\n" +
+            gameClient.getHabbo().alert(getTextsValue("commands.generic.cmd_coords.title") + "\r\n" +
                     "x: " + gameClient.getHabbo().getRoomUnit().getX() + "\r" +
                     "y: " + gameClient.getHabbo().getRoomUnit().getY() + "\r" +
                     "z: " + (gameClient.getHabbo().getRoomUnit().hasStatus(RoomUnitStatus.SIT) ? gameClient.getHabbo().getRoomUnit().getStatus(RoomUnitStatus.SIT) : gameClient.getHabbo().getRoomUnit().getZ()) + "\r" +
-                    Emulator.getTexts().getValue("generic.rotation.head") + ": " + gameClient.getHabbo().getRoomUnit().getHeadRotation() + "-" + gameClient.getHabbo().getRoomUnit().getHeadRotation().getValue() + "\r" +
-                    Emulator.getTexts().getValue("generic.rotation.body") + ": " + gameClient.getHabbo().getRoomUnit().getBodyRotation() + "-" + gameClient.getHabbo().getRoomUnit().getBodyRotation().getValue() + "\r" +
-                    Emulator.getTexts().getValue("generic.sitting") + ": " + (gameClient.getHabbo().getRoomUnit().hasStatus(RoomUnitStatus.SIT) ? Emulator.getTexts().getValue("generic.yes") : Emulator.getTexts().getValue("generic.no")) + "\r" +
+                    getTextsValue("generic.rotation.head") + ": " + gameClient.getHabbo().getRoomUnit().getHeadRotation() + "-" + gameClient.getHabbo().getRoomUnit().getHeadRotation().getValue() + "\r" +
+                    getTextsValue("generic.rotation.body") + ": " + gameClient.getHabbo().getRoomUnit().getBodyRotation() + "-" + gameClient.getHabbo().getRoomUnit().getBodyRotation().getValue() + "\r" +
+                    getTextsValue("generic.sitting") + ": " + (gameClient.getHabbo().getRoomUnit().hasStatus(RoomUnitStatus.SIT) ? getTextsValue("generic.yes") : getTextsValue("generic.no")) + "\r" +
                     "Tile State: " + gameClient.getHabbo().getHabboInfo().getCurrentRoom().getLayout().getTile(gameClient.getHabbo().getRoomUnit().getX(), gameClient.getHabbo().getRoomUnit().getY()).getState().name() + "\r" +
                     "Tile Walkable: " + gameClient.getHabbo().getHabboInfo().getCurrentRoom().getLayout().getTile(gameClient.getHabbo().getRoomUnit().getX(), gameClient.getHabbo().getRoomUnit().getY()).isWalkable() + "\r" +
                     "Tile relative height: " + gameClient.getHabbo().getHabboInfo().getCurrentRoom().getLayout().getTile(gameClient.getHabbo().getRoomUnit().getX(), gameClient.getHabbo().getRoomUnit().getY()).relativeHeight() + "\r" +
@@ -33,7 +33,7 @@ public class CoordsCommand extends Command {
             RoomTile tile = gameClient.getHabbo().getHabboInfo().getCurrentRoom().getLayout().getTile(Short.parseShort(params[1]), Short.parseShort(params[2]));
 
             if (tile != null) {
-                gameClient.getHabbo().alert(Emulator.getTexts().getValue("commands.generic.cmd_coords.title") + "\r\n" +
+                gameClient.getHabbo().alert(getTextsValue("commands.generic.cmd_coords.title") + "\r\n" +
                         "x: " + tile.getX() + "\r" +
                         "y: " + tile.getY() + "\r" +
                         "z: " + tile.getZ() + "\r" +
@@ -42,7 +42,7 @@ public class CoordsCommand extends Command {
                         "Tile Stack Height: " + tile.getStackHeight() + "\r" +
                         "Tile Walkable: " + (tile.isWalkable() ? "Yes" : "No") + "\r");
             } else {
-                gameClient.getHabbo().whisper(Emulator.getTexts().getValue("generic.tile.not.exists"));
+                gameClient.getHabbo().whisper(getTextsValue("generic.tile.not.exists"));
             }
         }
         return true;
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/CreditsCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/CreditsCommand.java
deleted file mode 100644
index 032cc6e8..00000000
--- a/src/main/java/com/eu/habbo/habbohotel/commands/CreditsCommand.java
+++ /dev/null
@@ -1,56 +0,0 @@
-package com.eu.habbo.habbohotel.commands;
-
-import com.eu.habbo.Emulator;
-import com.eu.habbo.habbohotel.gameclients.GameClient;
-import com.eu.habbo.habbohotel.rooms.RoomChatMessageBubbles;
-import com.eu.habbo.habbohotel.users.Habbo;
-import com.eu.habbo.habbohotel.users.HabboInfo;
-import com.eu.habbo.habbohotel.users.HabboManager;
-
-public class CreditsCommand extends Command {
-    public CreditsCommand() {
-        super("cmd_credits", Emulator.getTexts().getValue("commands.keys.cmd_credits").split(";"));
-    }
-
-    @Override
-    public boolean handle(GameClient gameClient, String[] params) {
-        if (params.length == 3) {
-            HabboInfo info = HabboManager.getOfflineHabboInfo(params[1]);
-
-            if (info != null) {
-                Habbo habbo = Emulator.getGameServer().getGameClientManager().getHabbo(params[1]);
-
-                int credits;
-                try {
-                    credits = Integer.parseInt(params[2]);
-                } catch (NumberFormatException e) {
-                    gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_credits.invalid_amount"), RoomChatMessageBubbles.ALERT);
-                    return true;
-                }
-                if (habbo != null) {
-                    if (credits != 0) {
-                        habbo.giveCredits(credits);
-                        if (habbo.getHabboInfo().getCurrentRoom() != null)
-                            habbo.whisper(Emulator.getTexts().getValue("commands.generic.cmd_credits.received").replace("%amount%", Integer.parseInt(params[2]) + ""), RoomChatMessageBubbles.ALERT);
-                        else
-                            habbo.alert(Emulator.getTexts().getValue("commands.generic.cmd_credits.received").replace("%amount%", Integer.parseInt(params[2]) + ""));
-
-                        gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.succes.cmd_credits.send").replace("%amount%", Integer.parseInt(params[2]) + "").replace("%user%", params[1]), RoomChatMessageBubbles.ALERT);
-
-                    } else {
-                        gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_credits.invalid_amount"), RoomChatMessageBubbles.ALERT);
-                    }
-                } else {
-                    Emulator.getGameEnvironment().getHabboManager().giveCredits(info.getId(), credits);
-                    gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.succes.cmd_credits.send").replace("%amount%", Integer.parseInt(params[2]) + "").replace("%user%", params[1]), RoomChatMessageBubbles.ALERT);
-
-                }
-            } else {
-                gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_credits.user_not_found").replace("%amount%", Integer.parseInt(params[2]) + "").replace("%user%", params[1]), RoomChatMessageBubbles.ALERT);
-            }
-        } else {
-            gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_credits.invalid_amount"), RoomChatMessageBubbles.ALERT);
-        }
-        return true;
-    }
-}
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/DiagonalCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/DiagonalCommand.java
index 03dd5fa4..cc5d9099 100644
--- a/src/main/java/com/eu/habbo/habbohotel/commands/DiagonalCommand.java
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/DiagonalCommand.java
@@ -11,18 +11,16 @@ public class DiagonalCommand extends Command {
 
     @Override
     public boolean handle(GameClient gameClient, String[] params) {
-        if (gameClient.getHabbo().getHabboInfo().getCurrentRoom() != null) {
-            if (gameClient.getHabbo().getHabboInfo().getCurrentRoom().hasRights(gameClient.getHabbo())) {
-                gameClient.getHabbo().getHabboInfo().getCurrentRoom().moveDiagonally(!gameClient.getHabbo().getHabboInfo().getCurrentRoom().moveDiagonally());
+        if (gameClient.getHabbo().getHabboInfo().getCurrentRoom() != null && gameClient.getHabbo().getHabboInfo().getCurrentRoom().hasRights(gameClient.getHabbo())) {
+            gameClient.getHabbo().getHabboInfo().getCurrentRoom().moveDiagonally(!gameClient.getHabbo().getHabboInfo().getCurrentRoom().moveDiagonally());
 
-                if (!gameClient.getHabbo().getHabboInfo().getCurrentRoom().moveDiagonally()) {
-                    gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.succes.cmd_diagonal.disabled"), RoomChatMessageBubbles.ALERT);
-                } else {
-                    gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.succes.cmd_diagonal.enabled"), RoomChatMessageBubbles.ALERT);
-                }
-
-                return true;
+            if (!gameClient.getHabbo().getHabboInfo().getCurrentRoom().moveDiagonally()) {
+                gameClient.getHabbo().whisper(getTextsValue("commands.succes.cmd_diagonal.disabled"), RoomChatMessageBubbles.ALERT);
+            } else {
+                gameClient.getHabbo().whisper(getTextsValue("commands.succes.cmd_diagonal.enabled"), RoomChatMessageBubbles.ALERT);
             }
+
+            return true;
         }
 
         return false;
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/DisconnectCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/DisconnectCommand.java
index 7e8f612b..fc642268 100644
--- a/src/main/java/com/eu/habbo/habbohotel/commands/DisconnectCommand.java
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/DisconnectCommand.java
@@ -13,30 +13,30 @@ public class DisconnectCommand extends Command {
     @Override
     public boolean handle(GameClient gameClient, String[] params) {
         if (params.length < 2) {
-            gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_disconnect.forgot_username"), RoomChatMessageBubbles.ALERT);
+            gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_disconnect.forgot_username"), RoomChatMessageBubbles.ALERT);
             return true;
         }
 
         if (params[1].equalsIgnoreCase(gameClient.getHabbo().getHabboInfo().getUsername())) {
-            gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_disconnect.disconnect_self"), RoomChatMessageBubbles.ALERT);
+            gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_disconnect.disconnect_self"), RoomChatMessageBubbles.ALERT);
             return true;
         }
 
-        Habbo target = Emulator.getGameEnvironment().getHabboManager().getHabbo(params[1]);
+        Habbo target = getHabbo(params[1]);
 
         if (target == null) {
-            gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_disconnect.user_offline"), RoomChatMessageBubbles.ALERT);
+            gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_disconnect.user_offline"), RoomChatMessageBubbles.ALERT);
             return true;
         }
 
         if (target.getHabboInfo().getRank().getId() > gameClient.getHabbo().getHabboInfo().getRank().getId()) {
-            gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_disconnect.higher_rank"), RoomChatMessageBubbles.ALERT);
+            gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_disconnect.higher_rank"), RoomChatMessageBubbles.ALERT);
             return true;
         }
 
         target.getClient().getChannel().close();
 
-        gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.succes.cmd_disconnect.disconnected").replace("%user%", params[1]), RoomChatMessageBubbles.ALERT);
+        gameClient.getHabbo().whisper(replaceUser(getTextsValue("commands.succes.cmd_disconnect.disconnected"), params[1]), RoomChatMessageBubbles.ALERT);
         return true;
     }
 }
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/EjectAllCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/EjectAllCommand.java
index a0d67148..37b674c4 100644
--- a/src/main/java/com/eu/habbo/habbohotel/commands/EjectAllCommand.java
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/EjectAllCommand.java
@@ -14,10 +14,9 @@ public class EjectAllCommand extends Command {
     public boolean handle(GameClient gameClient, String[] params) {
         Room room = gameClient.getHabbo().getHabboInfo().getCurrentRoom();
 
-        if (room != null) {
-            if (room.isOwner(gameClient.getHabbo()) || (room.hasGuild() && room.getGuildRightLevel(gameClient.getHabbo()).equals(RoomRightLevels.GUILD_ADMIN))) {
-                room.ejectAll(gameClient.getHabbo());
-            }
+        if (room != null && (room.isOwner(gameClient.getHabbo())
+                || (room.hasGuild() && room.getGuildRightLevel(gameClient.getHabbo()).equals(RoomRightLevels.GUILD_ADMIN)))) {
+            room.ejectAll(gameClient.getHabbo());
         }
 
         return true;
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/EmptyBotsInventoryCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/EmptyBotsInventoryCommand.java
index 7d5b8aff..5a77cfb4 100644
--- a/src/main/java/com/eu/habbo/habbohotel/commands/EmptyBotsInventoryCommand.java
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/EmptyBotsInventoryCommand.java
@@ -17,19 +17,19 @@ public class EmptyBotsInventoryCommand extends Command {
 
     @Override
     public boolean handle(GameClient gameClient, String[] params) {
-        if (params.length == 1 || (params.length >= 2 && !params[1].equals(Emulator.getTexts().getValue("generic.yes")))) {
+        if (params.length == 1 || (params.length >= 2 && !params[1].equals(getTextsValue("generic.yes")))) {
             if (gameClient.getHabbo().getHabboInfo().getCurrentRoom() != null) {
                 if (gameClient.getHabbo().getHabboInfo().getCurrentRoom().getUserCount() > 10) {
-                    gameClient.getHabbo().alert(Emulator.getTexts().getValue("commands.succes.cmd_empty_bots.verify").replace("%generic.yes%", Emulator.getTexts().getValue("generic.yes")));
+                    gameClient.getHabbo().alert(getTextsValue("commands.succes.cmd_empty_bots.verify").replace("%generic.yes%", getTextsValue("generic.yes")));
                 } else {
-                    gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.succes.cmd_empty_bots.verify").replace("%generic.yes%", Emulator.getTexts().getValue("generic.yes")), RoomChatMessageBubbles.ALERT);
+                    gameClient.getHabbo().whisper(getTextsValue("commands.succes.cmd_empty_bots.verify").replace("%generic.yes%", getTextsValue("generic.yes")), RoomChatMessageBubbles.ALERT);
                 }
             }
 
             return true;
         }
 
-        if (params.length >= 2 && params[1].equalsIgnoreCase(Emulator.getTexts().getValue("generic.yes"))) {
+        if (params.length >= 2 && params[1].equalsIgnoreCase(getTextsValue("generic.yes"))) {
 
             Habbo habbo = (params.length == 3 && gameClient.getHabbo().hasPermission(Permission.ACC_EMPTY_OTHERS)) ? Emulator.getGameEnvironment().getHabboManager().getHabbo(params[2]) : gameClient.getHabbo();
 
@@ -45,9 +45,9 @@ public class EmptyBotsInventoryCommand extends Command {
                 habbo.getClient().sendResponse(new FurniListInvalidateComposer());
                 habbo.getClient().sendResponse(new BotInventoryComposer(habbo));
 
-                gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.succes.cmd_empty_bots.cleared").replace("%username%", habbo.getHabboInfo().getUsername()), RoomChatMessageBubbles.ALERT);
+                gameClient.getHabbo().whisper(replaceUsername(getTextsValue("commands.succes.cmd_empty_bots.cleared"), habbo.getHabboInfo().getUsername()), RoomChatMessageBubbles.ALERT);
             } else {
-                gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_empty_bots"), RoomChatMessageBubbles.ALERT);
+                gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_empty_bots"), RoomChatMessageBubbles.ALERT);
             }
         }
 
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/EmptyInventoryCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/EmptyInventoryCommand.java
index 36cba1cb..b384fbe3 100644
--- a/src/main/java/com/eu/habbo/habbohotel/commands/EmptyInventoryCommand.java
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/EmptyInventoryCommand.java
@@ -19,19 +19,19 @@ public class EmptyInventoryCommand extends Command {
 
     @Override
     public boolean handle(GameClient gameClient, String[] params) {
-        if (params.length == 1 || (params.length == 2 && !params[1].equals(Emulator.getTexts().getValue("generic.yes")))) {
+        if (params.length == 1 || (params.length == 2 && !params[1].equals(getTextsValue("generic.yes")))) {
             if (gameClient.getHabbo().getHabboInfo().getCurrentRoom() != null) {
                 if (gameClient.getHabbo().getHabboInfo().getCurrentRoom().getUserCount() > 10) {
-                    gameClient.getHabbo().alert(Emulator.getTexts().getValue("commands.succes.cmd_empty.verify").replace("%generic.yes%", Emulator.getTexts().getValue("generic.yes")));
+                    gameClient.getHabbo().alert(getTextsValue("commands.succes.cmd_empty.verify").replace("%generic.yes%", getTextsValue("generic.yes")));
                 } else {
-                    gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.succes.cmd_empty.verify").replace("%generic.yes%", Emulator.getTexts().getValue("generic.yes")), RoomChatMessageBubbles.ALERT);
+                    gameClient.getHabbo().whisper(getTextsValue("commands.succes.cmd_empty.verify").replace("%generic.yes%", getTextsValue("generic.yes")), RoomChatMessageBubbles.ALERT);
                 }
             }
 
             return true;
         }
 
-        if (params.length >= 2 && params[1].equalsIgnoreCase(Emulator.getTexts().getValue("generic.yes"))) {
+        if (params.length >= 2 && params[1].equalsIgnoreCase(getTextsValue("generic.yes"))) {
 
             Habbo habbo = (params.length == 3 && gameClient.getHabbo().hasPermission(Permission.ACC_EMPTY_OTHERS)) ? Emulator.getGameEnvironment().getHabboManager().getHabbo(params[2]) : gameClient.getHabbo();
 
@@ -45,9 +45,9 @@ public class EmptyInventoryCommand extends Command {
                 habbo.getClient().sendResponse(new FurniListComposer(0, 1, gameClient.getHabbo().getInventory().getItemsComponent().getItems()));
                 
 
-                gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.succes.cmd_empty.cleared").replace("%username%", habbo.getHabboInfo().getUsername()), RoomChatMessageBubbles.ALERT);
+                gameClient.getHabbo().whisper(replaceUsername(getTextsValue("commands.succes.cmd_empty.cleared"), habbo.getHabboInfo().getUsername()), RoomChatMessageBubbles.ALERT);
             } else {
-                gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_empty"), RoomChatMessageBubbles.ALERT);
+                gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_empty"), RoomChatMessageBubbles.ALERT);
             }
         }
 
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/EmptyPetsInventoryCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/EmptyPetsInventoryCommand.java
index c251db55..4a2eef38 100644
--- a/src/main/java/com/eu/habbo/habbohotel/commands/EmptyPetsInventoryCommand.java
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/EmptyPetsInventoryCommand.java
@@ -17,25 +17,24 @@ public class EmptyPetsInventoryCommand extends Command {
 
     @Override
     public boolean handle(GameClient gameClient, String[] params) {
-        if (params.length == 1 || (params.length >= 2 && !params[1].equals(Emulator.getTexts().getValue("generic.yes")))) {
+        if (params.length == 1 || (params.length >= 2 && !params[1].equals(getTextsValue("generic.yes")))) {
             if (gameClient.getHabbo().getHabboInfo().getCurrentRoom() != null) {
                 if (gameClient.getHabbo().getHabboInfo().getCurrentRoom().getUserCount() > 10) {
-                    gameClient.getHabbo().alert(Emulator.getTexts().getValue("commands.succes.cmd_empty_pets.verify").replace("%generic.yes%", Emulator.getTexts().getValue("generic.yes")));
+                    gameClient.getHabbo().alert(getTextsValue("commands.succes.cmd_empty_pets.verify").replace("%generic.yes%", getTextsValue("generic.yes")));
                 } else {
-                    gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.succes.cmd_empty_pets.verify").replace("%generic.yes%", Emulator.getTexts().getValue("generic.yes")), RoomChatMessageBubbles.ALERT);
+                    gameClient.getHabbo().whisper(getTextsValue("commands.succes.cmd_empty_pets.verify").replace("%generic.yes%", getTextsValue("generic.yes")), RoomChatMessageBubbles.ALERT);
                 }
             }
 
             return true;
         }
 
-        if (params.length >= 2 && params[1].equalsIgnoreCase(Emulator.getTexts().getValue("generic.yes"))) {
+        if (params.length >= 2 && params[1].equalsIgnoreCase(getTextsValue("generic.yes"))) {
 
             Habbo habbo = (params.length == 3 && gameClient.getHabbo().hasPermission(Permission.ACC_EMPTY_OTHERS)) ? Emulator.getGameEnvironment().getHabboManager().getHabbo(params[2]) : gameClient.getHabbo();
 
             if (habbo != null) {
-                TIntObjectHashMap<Pet> pets = new TIntObjectHashMap<>();
-                pets.putAll(habbo.getInventory().getPetsComponent().getPets());
+                TIntObjectHashMap<Pet> pets = new TIntObjectHashMap<>(habbo.getInventory().getPetsComponent().getPets());
                 habbo.getInventory().getPetsComponent().getPets().clear();
                 pets.forEachValue(object -> {
                     Emulator.getGameEnvironment().getPetManager().deletePet(object);
@@ -45,9 +44,9 @@ public class EmptyPetsInventoryCommand extends Command {
                 habbo.getClient().sendResponse(new FurniListInvalidateComposer());
                 habbo.getClient().sendResponse(new PetInventoryComposer(habbo));
 
-                gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.succes.cmd_empty_pets.cleared").replace("%username%", habbo.getHabboInfo().getUsername()), RoomChatMessageBubbles.ALERT);
+                gameClient.getHabbo().whisper(replaceUsername(getTextsValue("commands.succes.cmd_empty_pets.cleared"), habbo.getHabboInfo().getUsername()), RoomChatMessageBubbles.ALERT);
             } else {
-                gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_empty_pets"), RoomChatMessageBubbles.ALERT);
+                gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_empty_pets"), RoomChatMessageBubbles.ALERT);
             }
         }
 
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/EnableCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/EnableCommand.java
index 2dc5f5cc..92d6d6b8 100644
--- a/src/main/java/com/eu/habbo/habbohotel/commands/EnableCommand.java
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/EnableCommand.java
@@ -24,25 +24,24 @@ public class EnableCommand extends Command {
             }
             Habbo target = gameClient.getHabbo();
             if (params.length == 3) {
-                target = gameClient.getHabbo().getHabboInfo().getCurrentRoom().getHabbo(params[2]);
+                target = getHabbo(params[2]);
             }
 
-            if (target != null) {
-                if (target == gameClient.getHabbo() || gameClient.getHabbo().hasPermission(Permission.ACC_ENABLE_OTHERS)) {
-                    try {
-                        if (target.getHabboInfo().getCurrentRoom() != null) {
-                            if (target.getHabboInfo().getRiding() == null) {
-                                if (Emulator.getGameEnvironment().getPermissionsManager().isEffectBlocked(effectId, target.getHabboInfo().getRank().getId())) {
-                                    gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_enable.not_allowed"), RoomChatMessageBubbles.ALERT);
-                                    return true;
-                                }
-
-                                target.getHabboInfo().getCurrentRoom().giveEffect(target, effectId, -1);
-                            }
+            if (target == null) {
+                return true;
+            }
+            if (target == gameClient.getHabbo() || gameClient.getHabbo().hasPermission(Permission.ACC_ENABLE_OTHERS)) {
+                try {
+                    if (target.getHabboInfo().getCurrentRoom() != null && target.getHabboInfo().getRiding() == null) {
+                        if (Emulator.getGameEnvironment().getPermissionsManager().isEffectBlocked(effectId, target.getHabboInfo().getRank().getId())) {
+                            gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_enable.not_allowed"), RoomChatMessageBubbles.ALERT);
+                            return true;
                         }
-                    } catch (Exception e) {
-                        log.error("Caught exception", e);
+
+                        target.getHabboInfo().getCurrentRoom().giveEffect(target, effectId, -1);
                     }
+                } catch (Exception e) {
+                    log.error("Caught exception", e);
                 }
             }
         }
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/EventCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/EventCommand.java
index 1ac8424a..9abbb388 100644
--- a/src/main/java/com/eu/habbo/habbohotel/commands/EventCommand.java
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/EventCommand.java
@@ -7,7 +7,8 @@ import com.eu.habbo.messages.ServerMessage;
 import com.eu.habbo.messages.outgoing.generic.alerts.NotificationDialogMessageComposer;
 import gnu.trove.map.hash.THashMap;
 
-import java.util.Map;
+import java.util.stream.Collectors;
+import java.util.stream.IntStream;
 
 public class EventCommand extends Command {
     public EventCommand() {
@@ -16,38 +17,30 @@ public class EventCommand extends Command {
 
     @Override
     public boolean handle(GameClient gameClient, String[] params) {
-        if (gameClient.getHabbo().getHabboInfo().getCurrentRoom() != null) {
-            if (params.length >= 2) {
-                StringBuilder message = new StringBuilder();
+        if (gameClient.getHabbo().getHabboInfo().getCurrentRoom() == null || params.length < 2) {
+            return false;
+        }
+        String message = IntStream.range(1, params.length).mapToObj(i -> params[i] + " ").collect(Collectors.joining());
 
-                for (int i = 1; i < params.length; i++) {
-                    message.append(params[i]);
-                    message.append(" ");
-                }
+        THashMap<String, String> codes = new THashMap<>();
+        codes.put("ROOMNAME", gameClient.getHabbo().getHabboInfo().getCurrentRoom().getName());
+        codes.put("ROOMID", gameClient.getHabbo().getHabboInfo().getCurrentRoom().getId() + "");
+        codes.put("USERNAME", gameClient.getHabbo().getHabboInfo().getUsername());
+        codes.put("LOOK", gameClient.getHabbo().getHabboInfo().getLook());
+        codes.put("TIME", Emulator.getDate().toString());
+        codes.put("MESSAGE", message);
 
-                THashMap<String, String> codes = new THashMap<>();
-                codes.put("ROOMNAME", gameClient.getHabbo().getHabboInfo().getCurrentRoom().getName());
-                codes.put("ROOMID", gameClient.getHabbo().getHabboInfo().getCurrentRoom().getId() + "");
-                codes.put("USERNAME", gameClient.getHabbo().getHabboInfo().getUsername());
-                codes.put("LOOK", gameClient.getHabbo().getHabboInfo().getLook());
-                codes.put("TIME", Emulator.getDate().toString());
-                codes.put("MESSAGE", message.toString());
+        ServerMessage msg = new NotificationDialogMessageComposer("hotel.event", codes).compose();
 
-                ServerMessage msg = new NotificationDialogMessageComposer("hotel.event", codes).compose();
-
-                for (Map.Entry<Integer, Habbo> set : Emulator.getGameEnvironment().getHabboManager().getOnlineHabbos().entrySet()) {
-                    Habbo habbo = set.getValue();
-                    if (habbo.getHabboStats().isBlockStaffAlerts()) {
-                        continue;
-                    }
-
-                    habbo.getClient().sendResponse(msg);
-                }
-
-                return true;
+        for (Habbo habbo : Emulator.getGameEnvironment().getHabboManager().getOnlineHabbos().values()) {
+            if (habbo.getHabboStats().isBlockStaffAlerts()) {
+                continue;
             }
+
+            habbo.getClient().sendResponse(msg);
         }
 
-        return false;
+        return true;
+
     }
 }
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/FacelessCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/FacelessCommand.java
index ce3574f4..2ead7b04 100644
--- a/src/main/java/com/eu/habbo/habbohotel/commands/FacelessCommand.java
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/FacelessCommand.java
@@ -13,32 +13,34 @@ public class FacelessCommand extends Command {
 
     @Override
     public boolean handle(GameClient gameClient, String[] params) {
-        if (gameClient.getHabbo().getHabboInfo().getCurrentRoom() != null) {
-            try {
+        if (gameClient.getHabbo().getHabboInfo().getCurrentRoom() == null) {
+            return false;
+        }
 
-                String[] figureParts = gameClient.getHabbo().getHabboInfo().getLook().split("\\.");
+        try {
 
-                for (String part : figureParts) {
-                    if (part.startsWith("hd")) {
-                        String[] headParts = part.split("-");
+            String[] figureParts = gameClient.getHabbo().getHabboInfo().getLook().split("\\.");
 
-                        if (!headParts[1].equals("99999"))
-                            headParts[1] = "99999";
-                        else
-                            break;
+            for (String part : figureParts) {
+                if (part.startsWith("hd")) {
+                    String[] headParts = part.split("-");
 
-                        String newHead = "hd-" + headParts[1] + "-" + headParts[2];
+                    if (!headParts[1].equals("99999"))
+                        headParts[1] = "99999";
+                    else
+                        break;
 
-                        gameClient.getHabbo().getHabboInfo().setLook(gameClient.getHabbo().getHabboInfo().getLook().replace(part, newHead));
-                        gameClient.sendResponse(new FigureUpdateComposer(gameClient.getHabbo()));
-                        gameClient.getHabbo().getHabboInfo().getCurrentRoom().sendComposer(new UserChangeMessageComposer(gameClient.getHabbo()).compose());
-                        return true;
-                    }
+                    String newHead = "hd-" + headParts[1] + "-" + headParts[2];
+
+                    gameClient.getHabbo().getHabboInfo().setLook(gameClient.getHabbo().getHabboInfo().getLook().replace(part, newHead));
+                    gameClient.sendResponse(new FigureUpdateComposer(gameClient.getHabbo()));
+                    gameClient.getHabbo().getHabboInfo().getCurrentRoom().sendComposer(new UserChangeMessageComposer(gameClient.getHabbo()).compose());
+                    return true;
                 }
-
-            } catch (Exception ignored) {
-
             }
+
+        } catch (Exception ignored) {
+
         }
 
         return false;
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/FastwalkCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/FastwalkCommand.java
index 24e4b006..cec64352 100644
--- a/src/main/java/com/eu/habbo/habbohotel/commands/FastwalkCommand.java
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/FastwalkCommand.java
@@ -12,17 +12,16 @@ public class FastwalkCommand extends Command {
     @Override
     public boolean handle(GameClient gameClient, String[] params) {
         if (gameClient.getHabbo().getHabboInfo().getCurrentRoom() != null) {
-            if (gameClient.getHabbo().getHabboInfo().getCurrentRoom() != null) {
-                if (gameClient.getHabbo().getHabboInfo().getRiding() != null) //TODO Make this an event plugin which fires that can be cancelled
-                    return true;
-            }
+            //TODO Make this an event plugin which fires that can be cancelled
+            if (gameClient.getHabbo().getHabboInfo().getCurrentRoom() != null && gameClient.getHabbo().getHabboInfo().getRiding() != null)
+                return true;
 
             Habbo habbo = gameClient.getHabbo();
 
             if (params.length >= 2) {
                 String username = params[1];
 
-                habbo = gameClient.getHabbo().getHabboInfo().getCurrentRoom().getHabbo(username);
+                habbo = getHabbo(username);
 
                 if (habbo == null)
                     return false;
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/FilterWordCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/FilterWordCommand.java
index 4d985b10..597b32d6 100644
--- a/src/main/java/com/eu/habbo/habbohotel/commands/FilterWordCommand.java
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/FilterWordCommand.java
@@ -20,7 +20,7 @@ public class FilterWordCommand extends Command {
     @Override
     public boolean handle(GameClient gameClient, String[] params) {
         if (params.length < 2) {
-            gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_filterword.missing_word"));
+            gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_filterword.missing_word"));
             return true;
         }
 
@@ -39,11 +39,11 @@ public class FilterWordCommand extends Command {
             statement.execute();
         } catch (SQLException e) {
             log.error("Caught SQL exception", e);
-            gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_filterword.error"));
+            gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_filterword.error"));
             return true;
         }
 
-        gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.succes.cmd_filterword.added").replace("%word%", word).replace("%replacement%", replacement));
+        gameClient.getHabbo().whisper(getTextsValue("commands.succes.cmd_filterword.added").replace("%word%", word).replace("%replacement%", replacement));
         Emulator.getGameEnvironment().getWordFilter().addWord(wordFilterWord);
 
         return true;
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/FreezeBotsCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/FreezeBotsCommand.java
index 22d65c7d..7707c170 100644
--- a/src/main/java/com/eu/habbo/habbohotel/commands/FreezeBotsCommand.java
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/FreezeBotsCommand.java
@@ -12,17 +12,19 @@ public class FreezeBotsCommand extends Command {
 
     @Override
     public boolean handle(GameClient gameClient, String[] params) {
-        if (gameClient.getHabbo().getHabboInfo().getCurrentRoom() != null) {
-            if (gameClient.getHabbo().getHabboInfo().getId() == gameClient.getHabbo().getHabboInfo().getCurrentRoom().getOwnerId() || gameClient.getHabbo().hasPermission(Permission.ACC_ANYROOMOWNER)) {
-                gameClient.getHabbo().getHabboInfo().getCurrentRoom().setAllowBotsWalk(!gameClient.getHabbo().getHabboInfo().getCurrentRoom().isAllowBotsWalk());
-                gameClient.getHabbo().whisper(gameClient.getHabbo().getHabboInfo().getCurrentRoom().isAllowBotsWalk() ? Emulator.getTexts().getValue("commands.succes.cmd_freeze_bots.unfrozen") : Emulator.getTexts().getValue("commands.succes.cmd_freeze_bots.frozen"), RoomChatMessageBubbles.ALERT);
-            } else {
-                gameClient.getHabbo().whisper(Emulator.getTexts().getValue("generic.cannot_do_that"), RoomChatMessageBubbles.ALERT);
-            }
-
-            return true;
+        if (gameClient.getHabbo().getHabboInfo().getCurrentRoom() == null) {
+            return false;
         }
 
-        return false;
+        if (gameClient.getHabbo().getHabboInfo().getId() == gameClient.getHabbo().getHabboInfo().getCurrentRoom().getOwnerId()
+                || gameClient.getHabbo().hasPermission(Permission.ACC_ANYROOMOWNER)) {
+            gameClient.getHabbo().getHabboInfo().getCurrentRoom().setAllowBotsWalk(!gameClient.getHabbo().getHabboInfo().getCurrentRoom().isAllowBotsWalk());
+            gameClient.getHabbo().whisper(gameClient.getHabbo().getHabboInfo().getCurrentRoom().isAllowBotsWalk() ? getTextsValue("commands.succes.cmd_freeze_bots.unfrozen") : getTextsValue("commands.succes.cmd_freeze_bots.frozen"), RoomChatMessageBubbles.ALERT);
+        } else {
+            gameClient.getHabbo().whisper(getTextsValue("generic.cannot_do_that"), RoomChatMessageBubbles.ALERT);
+        }
+
+        return true;
+
     }
 }
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/FreezeCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/FreezeCommand.java
index 0786dd42..8f67258f 100644
--- a/src/main/java/com/eu/habbo/habbohotel/commands/FreezeCommand.java
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/FreezeCommand.java
@@ -13,24 +13,24 @@ public class FreezeCommand extends Command {
     @Override
     public boolean handle(GameClient gameClient, String[] params) {
         if (params.length == 2) {
-            Habbo habbo = gameClient.getHabbo().getHabboInfo().getCurrentRoom().getHabbo(params[1]);
+            Habbo habbo = getHabbo(params[1]);
 
             if (habbo == null) {
-                gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_freeze.not_found").replace("%user%", params[1]), RoomChatMessageBubbles.ALERT);
+                gameClient.getHabbo().whisper(replaceUser(getTextsValue("commands.error.cmd_freeze.not_found"), params[1]), RoomChatMessageBubbles.ALERT);
             } else {
                 if (habbo.getRoomUnit().canWalk()) {
                     habbo.getRoomUnit().setCanWalk(false);
-                    habbo.whisper(Emulator.getTexts().getValue("commands.succes.cmd_freeze.frozen"), RoomChatMessageBubbles.ALERT);
-                    gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.succes.cmd_freeze.user_frozen").replace("%user%", params[1]), RoomChatMessageBubbles.ALERT);
+                    habbo.whisper(getTextsValue("commands.succes.cmd_freeze.frozen"), RoomChatMessageBubbles.ALERT);
+                    gameClient.getHabbo().whisper(replaceUser(getTextsValue("commands.succes.cmd_freeze.user_frozen"), params[1]), RoomChatMessageBubbles.ALERT);
                 } else {
                     habbo.getRoomUnit().setCanWalk(true);
-                    habbo.whisper(Emulator.getTexts().getValue("commands.succes.cmd_freeze.unfrozen"), RoomChatMessageBubbles.ALERT);
-                    gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.succes.cmd_freeze.user_unfrozen").replace("%user%", params[1]), RoomChatMessageBubbles.ALERT);
+                    habbo.whisper(getTextsValue("commands.succes.cmd_freeze.unfrozen"), RoomChatMessageBubbles.ALERT);
+                    gameClient.getHabbo().whisper(replaceUser(getTextsValue("commands.succes.cmd_freeze.user_unfrozen"), params[1]), RoomChatMessageBubbles.ALERT);
                 }
             }
             return true;
         } else {
-            gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_freeze.not_found").replace("%user%", ""), RoomChatMessageBubbles.ALERT);
+            gameClient.getHabbo().whisper(replaceUser(getTextsValue("commands.error.cmd_freeze.not_found"), ""), RoomChatMessageBubbles.ALERT);
             return true;
         }
     }
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/GiveRankCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/GiveRankCommand.java
index 1ea3275f..90ddfb27 100644
--- a/src/main/java/com/eu/habbo/habbohotel/commands/GiveRankCommand.java
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/GiveRankCommand.java
@@ -16,50 +16,49 @@ public class GiveRankCommand extends Command {
     @Override
     public boolean handle(GameClient gameClient, String[] params) throws Exception {
         Rank rank = null;
-        if (params.length == 1) {
-            gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_give_rank.missing_username") + Emulator.getTexts().getValue("commands.description.cmd_give_rank"), RoomChatMessageBubbles.ALERT);
-            return true;
-        }
-
-        if (params.length == 2) {
-            gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_give_rank.missing_rank") + Emulator.getTexts().getValue("commands.description.cmd_give_rank"), RoomChatMessageBubbles.ALERT);
-            return true;
-        }
-
-        if (params.length == 3) {
-            if (StringUtils.isNumeric(params[2])) {
-                int rankId = Integer.parseInt(params[2]);
-                if (Emulator.getGameEnvironment().getPermissionsManager().rankExists(rankId))
-                    rank = Emulator.getGameEnvironment().getPermissionsManager().getRank(rankId);
-            } else {
-                rank = Emulator.getGameEnvironment().getPermissionsManager().getRankByName(params[2]);
+        switch (params.length) {
+            case 1 -> {
+                gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_give_rank.missing_username") + getTextsValue("commands.description.cmd_give_rank"), RoomChatMessageBubbles.ALERT);
+                return true;
             }
-
-            if (rank != null) {
-                if (rank.getId() > gameClient.getHabbo().getHabboInfo().getRank().getId()) {
-                    gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_give_rank.higher").replace("%username%", params[1]).replace("%id%", rank.getName()), RoomChatMessageBubbles.ALERT);
-                    return true;
+            case 2 -> {
+                gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_give_rank.missing_rank") + getTextsValue("commands.description.cmd_give_rank"), RoomChatMessageBubbles.ALERT);
+                return true;
+            }
+            case 3 -> {
+                if (StringUtils.isNumeric(params[2])) {
+                    int rankId = Integer.parseInt(params[2]);
+                    if (Emulator.getGameEnvironment().getPermissionsManager().rankExists(rankId))
+                        rank = Emulator.getGameEnvironment().getPermissionsManager().getRank(rankId);
+                } else {
+                    rank = Emulator.getGameEnvironment().getPermissionsManager().getRankByName(params[2]);
                 }
-
-                HabboInfo habbo = HabboManager.getOfflineHabboInfo(params[1]);
-
-                if (habbo != null) {
-                    if (habbo.getRank().getId() > gameClient.getHabbo().getHabboInfo().getRank().getId()) {
-                        gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_give_rank.higher.other").replace("%username%", params[1]).replace("%id%", rank.getName()), RoomChatMessageBubbles.ALERT);
+                if (rank != null) {
+                    if (rank.getId() > gameClient.getHabbo().getHabboInfo().getRank().getId()) {
+                        gameClient.getHabbo().whisper(replaceUsername(getTextsValue("commands.error.cmd_give_rank.higher"), params[1]).replace("%id%", rank.getName()), RoomChatMessageBubbles.ALERT);
                         return true;
                     }
 
-                    Emulator.getGameEnvironment().getHabboManager().setRank(habbo.getId(), rank.getId());
+                    HabboInfo habbo = HabboManager.getOfflineHabboInfo(params[1]);
 
-                    gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.succes.cmd_give_rank.updated").replace("%id%", rank.getName()).replace("%username%", params[1]), RoomChatMessageBubbles.ALERT);
-                } else {
-                    gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_give_rank.user_offline").replace("%id%", rank.getName()).replace("%username%", params[1]), RoomChatMessageBubbles.ALERT);
+                    if (habbo != null) {
+                        if (habbo.getRank().getId() > gameClient.getHabbo().getHabboInfo().getRank().getId()) {
+                            gameClient.getHabbo().whisper(replaceUsername(getTextsValue("commands.error.cmd_give_rank.higher.other"), params[1]).replace("%id%", rank.getName()), RoomChatMessageBubbles.ALERT);
+                            return true;
+                        }
+
+                        Emulator.getGameEnvironment().getHabboManager().setRank(habbo.getId(), rank.getId());
+
+                        gameClient.getHabbo().whisper(replaceUsername(getTextsValue("commands.succes.cmd_give_rank.updated"), params[1]).replace("%id%", rank.getName()), RoomChatMessageBubbles.ALERT);
+                    } else {
+                        gameClient.getHabbo().whisper(replaceUsername(getTextsValue("commands.error.cmd_give_rank.user_offline"), params[1]).replace("%id%", rank.getName()), RoomChatMessageBubbles.ALERT);
+                    }
+                    return true;
                 }
-                return true;
             }
         }
 
-        gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.errors.cmd_give_rank.not_found").replace("%id%", params[2]).replace("%username%", params[1]), RoomChatMessageBubbles.ALERT);
+        gameClient.getHabbo().whisper(replaceUsername(getTextsValue("commands.errors.cmd_give_rank.not_found"), params[1]).replace("%id%", params[2]), RoomChatMessageBubbles.ALERT);
         return true;
     }
 }
\ No newline at end of file
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/HabnamCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/HabnamCommand.java
index fe2b9499..83d9586c 100644
--- a/src/main/java/com/eu/habbo/habbohotel/commands/HabnamCommand.java
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/HabnamCommand.java
@@ -9,11 +9,9 @@ public class HabnamCommand extends Command {
 
     @Override
     public boolean handle(GameClient gameClient, String[] params) {
-        if (gameClient.getHabbo().getHabboStats().hasActiveClub()) {
-            if (gameClient.getHabbo().getHabboInfo().getCurrentRoom() != null) {
-                gameClient.getHabbo().getHabboInfo().getCurrentRoom().giveEffect(gameClient.getHabbo(), 140, 30);
-                return true;
-            }
+        if (gameClient.getHabbo().getHabboStats().hasActiveClub() && gameClient.getHabbo().getHabboInfo().getCurrentRoom() != null) {
+            gameClient.getHabbo().getHabboInfo().getCurrentRoom().giveEffect(gameClient.getHabbo(), 140, 30);
+            return true;
         }
 
         return false;
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/HappyHourCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/HappyHourCommand.java
index 4c7397ab..7f5c3e5c 100644
--- a/src/main/java/com/eu/habbo/habbohotel/commands/HappyHourCommand.java
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/HappyHourCommand.java
@@ -17,9 +17,8 @@ public class HappyHourCommand extends Command {
     public boolean handle(GameClient gameClient, String[] params) {
         Emulator.getGameServer().getGameClientManager().sendBroadcastResponse(new HabboBroadcastMessageComposer("Happy Hour!"));
 
-        for (Map.Entry<Integer, Habbo> set : Emulator.getGameEnvironment().getHabboManager().getOnlineHabbos().entrySet()) {
-            AchievementManager.progressAchievement(set.getValue(), Emulator.getGameEnvironment().getAchievementManager().getAchievement("HappyHour"));
-        }
+        Emulator.getGameEnvironment().getHabboManager().getOnlineHabbos().values()
+                .forEach(habbo -> AchievementManager.progressAchievement(habbo, Emulator.getGameEnvironment().getAchievementManager().getAchievement("HappyHour")));
 
         return true;
     }
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/HideWiredCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/HideWiredCommand.java
index a86778bf..1b9fa239 100644
--- a/src/main/java/com/eu/habbo/habbohotel/commands/HideWiredCommand.java
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/HideWiredCommand.java
@@ -12,14 +12,15 @@ public class HideWiredCommand extends Command {
     @Override
     public boolean handle(GameClient gameClient, String[] params) {
         Room room = gameClient.getHabbo().getHabboInfo().getCurrentRoom();
+        if (room == null) {
+            return true;
+        }
 
-        if (room != null) {
-            if (room.isOwner(gameClient.getHabbo())) {
-                room.setHideWired(!room.isHideWired());
-                gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.succes.cmd_hidewired." + (room.isHideWired() ? "hidden" : "shown")));
-            } else {
-                gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.errors.cmd_hidewired.permission"));
-            }
+        if (room.isOwner(gameClient.getHabbo())) {
+            room.setHideWired(!room.isHideWired());
+            gameClient.getHabbo().whisper(getTextsValue("commands.succes.cmd_hidewired." + (room.isHideWired() ? "hidden" : "shown")));
+        } else {
+            gameClient.getHabbo().whisper(getTextsValue("commands.errors.cmd_hidewired.permission"));
         }
 
         return true;
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/HotelAlertCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/HotelAlertCommand.java
index 2f8ce1b8..e3a7c946 100644
--- a/src/main/java/com/eu/habbo/habbohotel/commands/HotelAlertCommand.java
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/HotelAlertCommand.java
@@ -8,6 +8,8 @@ import com.eu.habbo.messages.ServerMessage;
 import com.eu.habbo.messages.outgoing.generic.alerts.ModeratorMessageComposer;
 
 import java.util.Map;
+import java.util.stream.Collectors;
+import java.util.stream.IntStream;
 
 public class HotelAlertCommand extends Command {
 
@@ -18,22 +20,15 @@ public class HotelAlertCommand extends Command {
     @Override
     public boolean handle(GameClient gameClient, String[] params) {
         if (params.length > 1) {
-            StringBuilder message = new StringBuilder();
-            for (int i = 1; i < params.length; i++) {
-                message.append(params[i]).append(" ");
-            }
+            String message = IntStream.range(1, params.length).mapToObj(i -> params[i] + " ").collect(Collectors.joining());
 
             ServerMessage msg = new ModeratorMessageComposer(message + "\r\n-" + gameClient.getHabbo().getHabboInfo().getUsername(), "").compose();
 
-            for (Map.Entry<Integer, Habbo> set : Emulator.getGameEnvironment().getHabboManager().getOnlineHabbos().entrySet()) {
-                Habbo habbo = set.getValue();
-                if (habbo.getHabboStats().isBlockStaffAlerts())
-                    continue;
-
-                habbo.getClient().sendResponse(msg);
-            }
+            Emulator.getGameEnvironment().getHabboManager().getOnlineHabbos().values().stream()
+                    .filter(habbo -> !habbo.getHabboStats().isBlockStaffAlerts())
+                    .forEach(habbo -> habbo.getClient().sendResponse(msg));
         } else {
-            gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_ha.forgot_message"), RoomChatMessageBubbles.ALERT);
+            gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_ha.forgot_message"), RoomChatMessageBubbles.ALERT);
         }
         return true;
     }
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/IPBanCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/IPBanCommand.java
deleted file mode 100644
index 0568d975..00000000
--- a/src/main/java/com/eu/habbo/habbohotel/commands/IPBanCommand.java
+++ /dev/null
@@ -1,70 +0,0 @@
-package com.eu.habbo.habbohotel.commands;
-
-import com.eu.habbo.Emulator;
-import com.eu.habbo.habbohotel.gameclients.GameClient;
-import com.eu.habbo.habbohotel.modtool.ModToolBanType;
-import com.eu.habbo.habbohotel.rooms.RoomChatMessageBubbles;
-import com.eu.habbo.habbohotel.users.Habbo;
-import com.eu.habbo.habbohotel.users.HabboInfo;
-import com.eu.habbo.habbohotel.users.HabboManager;
-
-public class IPBanCommand extends Command {
-    public final static int TEN_YEARS = 315569260;
-
-    public IPBanCommand() {
-        super("cmd_ip_ban", Emulator.getTexts().getValue("commands.keys.cmd_ip_ban").split(";"));
-    }
-
-    @Override
-    public boolean handle(GameClient gameClient, String[] params) {
-        HabboInfo habbo;
-        StringBuilder reason = new StringBuilder();
-        if (params.length >= 2) {
-            Habbo h = Emulator.getGameEnvironment().getHabboManager().getHabbo(params[1]);
-
-            if (h != null) {
-                habbo = h.getHabboInfo();
-            } else {
-                habbo = HabboManager.getOfflineHabboInfo(params[1]);
-            }
-        } else {
-            return true;
-        }
-
-        if (params.length > 2) {
-            for (int i = 2; i < params.length; i++) {
-                reason.append(params[i]);
-                reason.append(" ");
-            }
-        }
-
-        int count = 0;
-        if (habbo != null) {
-            if (habbo == gameClient.getHabbo().getHabboInfo()) {
-                gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_ip_ban.ban_self"), RoomChatMessageBubbles.ALERT);
-                return true;
-            }
-
-            if (habbo.getRank().getId() >= gameClient.getHabbo().getHabboInfo().getRank().getId()) {
-                gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_ban.target_rank_higher"), RoomChatMessageBubbles.ALERT);
-                return true;
-            }
-
-            Emulator.getGameEnvironment().getModToolManager().ban(habbo.getId(), gameClient.getHabbo(), reason.toString(), TEN_YEARS, ModToolBanType.IP, -1);
-            count++;
-            for (Habbo h : Emulator.getGameServer().getGameClientManager().getHabbosWithIP(habbo.getIpLogin())) {
-                if (h != null) {
-                    count++;
-                    Emulator.getGameEnvironment().getModToolManager().ban(h.getHabboInfo().getId(), gameClient.getHabbo(), reason.toString(), TEN_YEARS, ModToolBanType.IP, -1);
-                }
-            }
-        } else {
-            gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_ban.user_offline"), RoomChatMessageBubbles.ALERT);
-            return true;
-        }
-
-        gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.succes.cmd_ip_ban").replace("%count%", count + ""), RoomChatMessageBubbles.ALERT);
-
-        return true;
-    }
-}
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/InvisibleCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/InvisibleCommand.java
index 19d52924..40316af2 100644
--- a/src/main/java/com/eu/habbo/habbohotel/commands/InvisibleCommand.java
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/InvisibleCommand.java
@@ -25,8 +25,8 @@ public class InvisibleCommand extends Command {
 
             new RoomUnitTeleport(roomUnit, roomUnit.getRoom(), roomLayout.getDoorTile().getX(), roomLayout.getDoorTile().getY(), roomLayout.getDoorTile().getZ(), 0).run();
 
-            roomUnit.setInvisible(false);
-            roomUnit.setInRoom(true);
+            roomUnit.setInvisible(false)
+                    .setInRoom(true);
 
             roomUnit.getRoom().sendComposer(new RoomUsersComposer(gameClient.getHabbo()).compose());
             roomUnit.getRoom().sendComposer(new UserUpdateComposer(roomUnit).compose());
@@ -34,13 +34,13 @@ public class InvisibleCommand extends Command {
             WiredHandler.handle(WiredTriggerType.ENTER_ROOM, roomUnit, roomUnit.getRoom(), null);
             roomUnit.getRoom().habboEntered(gameClient.getHabbo());
 
-            gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.succes.cmd_invisible.updated.back"));
+            gameClient.getHabbo().whisper(getTextsValue("commands.succes.cmd_invisible.updated.back"));
 
             return true;
         }
 
         roomUnit.setInvisible(true);
-        gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.succes.cmd_invisible.updated"));
+        gameClient.getHabbo().whisper(getTextsValue("commands.succes.cmd_invisible.updated"));
         gameClient.getHabbo().getHabboInfo().getCurrentRoom().sendComposer(new UserRemoveMessageComposer(roomUnit).compose());
 
         return true;
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/LayCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/LayCommand.java
index 96c58da6..d1cb0d87 100644
--- a/src/main/java/com/eu/habbo/habbohotel/commands/LayCommand.java
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/LayCommand.java
@@ -7,6 +7,8 @@ import com.eu.habbo.habbohotel.rooms.RoomUnitStatus;
 import com.eu.habbo.habbohotel.rooms.RoomUserRotation;
 import com.eu.habbo.messages.outgoing.rooms.users.UserUpdateComposer;
 
+import java.util.stream.IntStream;
+
 public class LayCommand extends Command {
     public LayCommand() {
         super(null, Emulator.getTexts().getValue("commands.keys.cmd_lay").split(";"));
@@ -27,11 +29,10 @@ public class LayCommand extends Command {
             return false;
         }
 
-        for (int i = 0; i < 3; i++) {
-            RoomTile t = gameClient.getHabbo().getHabboInfo().getCurrentRoom().getLayout().getTileInFront(tile, gameClient.getHabbo().getRoomUnit().getBodyRotation().getValue(), i);
-            if (t == null || !t.isWalkable()) {
-                return false;
-            }
+        if (IntStream.range(0, 3)
+                .mapToObj(i -> gameClient.getHabbo().getHabboInfo().getCurrentRoom().getLayout().getTileInFront(tile, gameClient.getHabbo().getRoomUnit().getBodyRotation().getValue(), i))
+                .anyMatch(t -> t == null || !t.isWalkable())) {
+            return false;
         }
 
         gameClient.getHabbo().getRoomUnit().setStatus(RoomUnitStatus.LAY, 0.5 + "");
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/MimicCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/MimicCommand.java
index 958bbd38..4b984686 100644
--- a/src/main/java/com/eu/habbo/habbohotel/commands/MimicCommand.java
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/MimicCommand.java
@@ -22,30 +22,34 @@ public class MimicCommand extends Command {
             Habbo habbo = gameClient.getHabbo().getHabboInfo().getCurrentRoom().getHabbo(params[1]);
 
             if (habbo == null) {
-                gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_mimic.not_found").replace("%user%", ""), RoomChatMessageBubbles.ALERT);
+                gameClient.getHabbo().whisper(replaceUser(getTextsValue("commands.error.cmd_mimic.not_found"), ""), RoomChatMessageBubbles.ALERT);
                 return true;
             }
 
             if (habbo == gameClient.getHabbo()) {
-                gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_mimic.not_self"), RoomChatMessageBubbles.ALERT);
+                gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_mimic.not_self"), RoomChatMessageBubbles.ALERT);
                 return true;
             } else if (habbo.hasPermission(Permission.ACC_NOT_MIMICED) && !gameClient.getHabbo().hasPermission(Permission.ACC_NOT_MIMICED)) {
-                gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_mimic.blocked").replace("%user%", params[1]).replace("%gender_name%", (habbo.getHabboInfo().getGender().equals(HabboGender.M) ? Emulator.getTexts().getValue("gender.him") : Emulator.getTexts().getValue("gender.her"))), RoomChatMessageBubbles.ALERT);
+                gameClient.getHabbo().whisper(replaceUser(getTextsValue("commands.error.cmd_mimic.blocked"), params[1]).replace("%gender_name%", getGenderName(habbo)), RoomChatMessageBubbles.ALERT);
                 return true;
             } else if (!habbo.hasPermission("acc_mimic_unredeemed") && FigureUtil.hasBlacklistedClothing(habbo.getHabboInfo().getLook(), gameClient.getHabbo().getForbiddenClothing())) {
-                gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_mimic.forbidden_clothing"), RoomChatMessageBubbles.ALERT);
+                gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_mimic.forbidden_clothing"), RoomChatMessageBubbles.ALERT);
                 return true;
             } else {
                 gameClient.getHabbo().getHabboInfo().setLook(ClothingValidationManager.VALIDATE_ON_MIMIC ? ClothingValidationManager.validateLook(gameClient.getHabbo(), habbo.getHabboInfo().getLook(), habbo.getHabboInfo().getGender().name()) : habbo.getHabboInfo().getLook());
                 gameClient.getHabbo().getHabboInfo().setGender(habbo.getHabboInfo().getGender());
                 gameClient.sendResponse(new UserObjectComposer(gameClient.getHabbo()));
                 gameClient.getHabbo().getHabboInfo().getCurrentRoom().sendComposer(new UserChangeMessageComposer(gameClient.getHabbo()).compose());
-                gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.succes.cmd_mimic.copied").replace("%user%", params[1]).replace("%gender_name%", (habbo.getHabboInfo().getGender().equals(HabboGender.M) ? Emulator.getTexts().getValue("gender.him") : Emulator.getTexts().getValue("gender.her"))), RoomChatMessageBubbles.ALERT);
+                gameClient.getHabbo().whisper(replaceUser(getTextsValue("commands.succes.cmd_mimic.copied"), params[1]).replace("%gender_name%", getGenderName(habbo)), RoomChatMessageBubbles.ALERT);
                 return true;
             }
         } else {
-            gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_mimic.not_found").replace("%user%", ""), RoomChatMessageBubbles.ALERT);
+            gameClient.getHabbo().whisper(replaceUser(getTextsValue("commands.error.cmd_mimic.not_found"), ""), RoomChatMessageBubbles.ALERT);
             return true;
         }
     }
+
+    private String getGenderName(Habbo habbo) {
+        return habbo.getHabboInfo().getGender().equals(HabboGender.M) ? getTextsValue("gender.him") : getTextsValue("gender.her");
+    }
 }
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/MuteBotsCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/MuteBotsCommand.java
index 1958c3ea..4f7a1e3c 100644
--- a/src/main/java/com/eu/habbo/habbohotel/commands/MuteBotsCommand.java
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/MuteBotsCommand.java
@@ -12,7 +12,7 @@ public class MuteBotsCommand extends Command {
     @Override
     public boolean handle(GameClient gameClient, String[] params) {
         gameClient.getHabbo().getHabboStats().setIgnoreBots(!gameClient.getHabbo().getHabboStats().isIgnoreBots());
-        gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.succes.cmd_mute_bots." + (gameClient.getHabbo().getHabboStats().isIgnoreBots() ? "ignored" : "unignored")), RoomChatMessageBubbles.ALERT);
+        gameClient.getHabbo().whisper(getTextsValue("commands.succes.cmd_mute_bots." + (gameClient.getHabbo().getHabboStats().isIgnoreBots() ? "ignored" : "unignored")), RoomChatMessageBubbles.ALERT);
         return true;
     }
 }
\ No newline at end of file
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/MuteCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/MuteCommand.java
index 9fc016de..a4e39464 100644
--- a/src/main/java/com/eu/habbo/habbohotel/commands/MuteCommand.java
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/MuteCommand.java
@@ -14,18 +14,18 @@ public class MuteCommand extends Command {
     @Override
     public boolean handle(GameClient gameClient, String[] params) {
         if (params.length == 1) {
-            gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_mute.not_specified"), RoomChatMessageBubbles.ALERT);
+            gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_mute.not_specified"), RoomChatMessageBubbles.ALERT);
             return true;
         }
 
         Habbo habbo = Emulator.getGameEnvironment().getHabboManager().getHabbo(params[1]);
 
         if (habbo == null) {
-            gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_mute.not_found").replace("%user%", params[1]), RoomChatMessageBubbles.ALERT);
+            gameClient.getHabbo().whisper(replaceUser(getTextsValue("commands.error.cmd_mute.not_found"), params[1]), RoomChatMessageBubbles.ALERT);
             return true;
         } else {
             if (habbo == gameClient.getHabbo()) {
-                gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_mute.self"), RoomChatMessageBubbles.ALERT);
+                gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_mute.self"), RoomChatMessageBubbles.ALERT);
                 return true;
             }
 
@@ -38,7 +38,7 @@ public class MuteCommand extends Command {
                     if (duration <= 0)
                         throw new Exception("");
                 } catch (Exception e) {
-                    gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_mute.time"), RoomChatMessageBubbles.ALERT);
+                    gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_mute.time"), RoomChatMessageBubbles.ALERT);
                     return true;
                 }
             }
@@ -49,7 +49,7 @@ public class MuteCommand extends Command {
                 habbo.getHabboInfo().getCurrentRoom().sendComposer(new IgnoreResultMessageComposer(habbo, IgnoreResultMessageComposer.MUTED).compose()); //: RoomUserIgnoredComposer.UNIGNORED
             }
 
-            gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.succes.cmd_mute.muted").replace("%user%", params[1]), RoomChatMessageBubbles.ALERT);
+            gameClient.getHabbo().whisper(replaceUser(getTextsValue("commands.succes.cmd_mute.muted"), params[1]), RoomChatMessageBubbles.ALERT);
         }
 
         return true;
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/MutePetsCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/MutePetsCommand.java
index f9f0f2ba..6e59c0d9 100644
--- a/src/main/java/com/eu/habbo/habbohotel/commands/MutePetsCommand.java
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/MutePetsCommand.java
@@ -12,7 +12,7 @@ public class MutePetsCommand extends Command {
     @Override
     public boolean handle(GameClient gameClient, String[] params) {
         gameClient.getHabbo().getHabboStats().setIgnorePets(!gameClient.getHabbo().getHabboStats().isIgnorePets());
-        gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.succes.cmd_mute_pets." + (gameClient.getHabbo().getHabboStats().isIgnorePets() ? "ignored" : "unignored")), RoomChatMessageBubbles.ALERT);
+        gameClient.getHabbo().whisper(getTextsValue("commands.succes.cmd_mute_pets." + (gameClient.getHabbo().getHabboStats().isIgnorePets() ? "ignored" : "unignored")), RoomChatMessageBubbles.ALERT);
         return true;
     }
 }
\ No newline at end of file
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/PetInfoCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/PetInfoCommand.java
index 1c74d9f5..a588964d 100644
--- a/src/main/java/com/eu/habbo/habbohotel/commands/PetInfoCommand.java
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/PetInfoCommand.java
@@ -12,37 +12,37 @@ public class PetInfoCommand extends Command {
 
     @Override
     public boolean handle(GameClient gameClient, String[] params) {
-        if (params.length > 1) {
-            if (gameClient.getHabbo().getHabboInfo().getCurrentRoom() == null)
-                return false;
-
-            String name = params[1];
-
-            gameClient.getHabbo().getHabboInfo().getCurrentRoom().getCurrentPets().forEachEntry((a, pet) -> {
-                if (pet.getName().equalsIgnoreCase(name)) {
-                    gameClient.getHabbo().alert("" +
-                            Emulator.getTexts().getValue("commands.generic.cmd_pet_info.title") + ": " + pet.getName() + "\r\n" +
-                            Emulator.getTexts().getValue("generic.pet.id") + ": " + pet.getId() + "\r" +
-                            Emulator.getTexts().getValue("generic.pet.name") + ": " + pet.getName() + "\r" +
-                            Emulator.getTexts().getValue("generic.pet.age") + ": " + pet.daysAlive() + " " + Emulator.getTexts().getValue("generic.pet.days.alive") + "\r" +
-                            Emulator.getTexts().getValue("generic.pet.level") + ": " + pet.getLevel() + "\r" +
-                            "\r" +
-                            Emulator.getTexts().getValue("commands.generic.cmd_pet_info.stats") + "\r\n" +
-                            Emulator.getTexts().getValue("generic.pet.scratches") + ": " + pet.getRespect() + "\r" +
-                            Emulator.getTexts().getValue("generic.pet.energy") + ": " + pet.getEnergy() + "/" + PetManager.maxEnergy(pet.getLevel()) + "\r" +
-                            Emulator.getTexts().getValue("generic.pet.happiness") + ": " + pet.getHappiness() + "\r" +
-                            Emulator.getTexts().getValue("generic.pet.level.thirst") + ": " + pet.levelThirst + "\r" +
-                            Emulator.getTexts().getValue("generic.pet.level.hunger") + ": " + pet.levelHunger + "\r" +
-                            Emulator.getTexts().getValue("generic.pet.current_action") + ": " + (pet.getTask() == null ? Emulator.getTexts().getValue("generic.nothing") : pet.getTask().name()) + "\r" +
-                            Emulator.getTexts().getValue("generic.can.walk") + ": " + (pet.getRoomUnit().canWalk() ? Emulator.getTexts().getValue("generic.yes") : Emulator.getTexts().getValue("generic.no")) + ""
-                    );
-                }
-
-                return true;
-            });
-        } else {
-            gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_pet_info.pet_not_found"), RoomChatMessageBubbles.ALERT);
+        if (params.length <= 1) {
+            gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_pet_info.pet_not_found"), RoomChatMessageBubbles.ALERT);
+            return true;
         }
+        if (gameClient.getHabbo().getHabboInfo().getCurrentRoom() == null)
+            return false;
+
+        String name = params[1];
+
+        gameClient.getHabbo().getHabboInfo().getCurrentRoom().getCurrentPets().forEachEntry((a, pet) -> {
+            if (pet.getName().equalsIgnoreCase(name)) {
+                gameClient.getHabbo().alert("" +
+                        getTextsValue("commands.generic.cmd_pet_info.title") + ": " + pet.getName() + "\r\n" +
+                        getTextsValue("generic.pet.id") + ": " + pet.getId() + "\r" +
+                        getTextsValue("generic.pet.name") + ": " + pet.getName() + "\r" +
+                        getTextsValue("generic.pet.age") + ": " + pet.daysAlive() + " " + getTextsValue("generic.pet.days.alive") + "\r" +
+                        getTextsValue("generic.pet.level") + ": " + pet.getLevel() + "\r" +
+                        "\r" +
+                        getTextsValue("commands.generic.cmd_pet_info.stats") + "\r\n" +
+                        getTextsValue("generic.pet.scratches") + ": " + pet.getRespect() + "\r" +
+                        getTextsValue("generic.pet.energy") + ": " + pet.getEnergy() + "/" + PetManager.maxEnergy(pet.getLevel()) + "\r" +
+                        getTextsValue("generic.pet.happiness") + ": " + pet.getHappiness() + "\r" +
+                        getTextsValue("generic.pet.level.thirst") + ": " + pet.levelThirst + "\r" +
+                        getTextsValue("generic.pet.level.hunger") + ": " + pet.levelHunger + "\r" +
+                        getTextsValue("generic.pet.current_action") + ": " + (pet.getTask() == null ? getTextsValue("generic.nothing") : pet.getTask().name()) + "\r" +
+                        getTextsValue("generic.can.walk") + ": " + (pet.getRoomUnit().canWalk() ? getTextsValue("generic.yes") : getTextsValue("generic.no")) + ""
+                );
+            }
+
+            return true;
+        });
         return true;
     }
 }
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/PickallCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/PickallCommand.java
index 58cb4aa4..30138ac8 100644
--- a/src/main/java/com/eu/habbo/habbohotel/commands/PickallCommand.java
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/PickallCommand.java
@@ -13,15 +13,17 @@ public class PickallCommand extends Command {
     public boolean handle(GameClient gameClient, String[] params) {
         Room room = gameClient.getHabbo().getHabboInfo().getCurrentRoom();
 
-        if (room != null) {
-            if (room.isOwner(gameClient.getHabbo())) {
-                room.ejectAll();
-                return true;
-            }
-
-            room.ejectUserFurni(gameClient.getHabbo().getHabboInfo().getId());
+        if (room == null) {
+            return true;
         }
 
+        if (room.isOwner(gameClient.getHabbo())) {
+            room.ejectAll();
+            return true;
+        }
+
+        room.ejectUserFurni(gameClient.getHabbo().getHabboInfo().getId());
+
         return true;
     }
 }
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/PixelCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/PixelCommand.java
deleted file mode 100644
index 0b25107d..00000000
--- a/src/main/java/com/eu/habbo/habbohotel/commands/PixelCommand.java
+++ /dev/null
@@ -1,43 +0,0 @@
-package com.eu.habbo.habbohotel.commands;
-
-import com.eu.habbo.Emulator;
-import com.eu.habbo.habbohotel.gameclients.GameClient;
-import com.eu.habbo.habbohotel.rooms.RoomChatMessageBubbles;
-import com.eu.habbo.habbohotel.users.Habbo;
-
-public class PixelCommand extends Command {
-    public PixelCommand() {
-        super("cmd_duckets", Emulator.getTexts().getValue("commands.keys.cmd_duckets").split(";"));
-    }
-
-    @Override
-    public boolean handle(GameClient gameClient, String[] params) {
-        if (params.length == 3) {
-            Habbo habbo = Emulator.getGameServer().getGameClientManager().getHabbo(params[1]);
-
-            if (habbo != null) {
-                try {
-                    if (Integer.parseInt(params[2]) != 0) {
-                        habbo.givePixels(Integer.parseInt(params[2]));
-                        if (habbo.getHabboInfo().getCurrentRoom() != null)
-                            habbo.whisper(Emulator.getTexts().getValue("commands.generic.cmd_duckets.received").replace("%amount%", Integer.parseInt(params[2]) + ""), RoomChatMessageBubbles.ALERT);
-                        else
-                            habbo.alert(Emulator.getTexts().getValue("commands.generic.cmd_duckets.received").replace("%amount%", Integer.parseInt(params[2]) + ""));
-
-                        gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.succes.cmd_duckets.send").replace("%amount%", Integer.parseInt(params[2]) + "").replace("%user%", params[1]), RoomChatMessageBubbles.ALERT);
-
-                    } else {
-                        gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_duckets.invalid_amount"), RoomChatMessageBubbles.ALERT);
-                    }
-                } catch (NumberFormatException e) {
-                    gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_duckets.invalid_amount"), RoomChatMessageBubbles.ALERT);
-                }
-            } else {
-                gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_duckets.user_offline").replace("%user%", params[1]), RoomChatMessageBubbles.ALERT);
-            }
-        } else {
-            gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_duckets.invalid_amount"), RoomChatMessageBubbles.ALERT);
-        }
-        return true;
-    }
-}
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/PromoteTargetOfferCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/PromoteTargetOfferCommand.java
index 35622227..c5f649fd 100644
--- a/src/main/java/com/eu/habbo/habbohotel/commands/PromoteTargetOfferCommand.java
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/PromoteTargetOfferCommand.java
@@ -20,17 +20,17 @@ public class PromoteTargetOfferCommand extends Command {
     @Override
     public boolean handle(GameClient gameClient, String[] params) {
         if (params.length <= 1) {
-            gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_promote_offer.not_found"));
+            gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_promote_offer.not_found"));
             return true;
         }
 
         String offerKey = params[1];
 
-        if (offerKey.equalsIgnoreCase(Emulator.getTexts().getValue("commands.cmd_promote_offer.info"))) {
+        if (offerKey.equalsIgnoreCase(getTextsValue("commands.cmd_promote_offer.info"))) {
             THashMap<Integer, TargetOffer> targetOffers = Emulator.getGameEnvironment().getCatalogManager().targetOffers;
-            String[] textConfig = Emulator.getTexts().getValue("commands.cmd_promote_offer.list").replace("%amount%", targetOffers.size() + "").split("<br>");
+            String[] textConfig = getTextsValue("commands.cmd_promote_offer.list").replace("%amount%", targetOffers.size() + "").split("<br>");
 
-            String entryConfig = Emulator.getTexts().getValue("commands.cmd_promote_offer.list.entry");
+            String entryConfig = getTextsValue("commands.cmd_promote_offer.list.entry");
             List<String> message = new ArrayList<>();
 
             for (String pair : textConfig) {
@@ -56,14 +56,13 @@ public class PromoteTargetOfferCommand extends Command {
 
                 if (offer != null) {
                     TargetOffer.ACTIVE_TARGET_OFFER_ID = offer.getId();
-                    gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.succes.cmd_promote_offer").replace("%id%", offerKey).replace("%title%", offer.getTitle()));
+                    gameClient.getHabbo().whisper(getTextsValue("commands.succes.cmd_promote_offer").replace("%id%", offerKey).replace("%title%", offer.getTitle()));
 
-                    for (Habbo habbo : Emulator.getGameEnvironment().getHabboManager().getOnlineHabbos().values()) {
-                        habbo.getClient().sendResponse(new TargetedOfferComposer(habbo, offer));
-                    }
+                    Emulator.getGameEnvironment().getHabboManager().getOnlineHabbos().values()
+                            .forEach(habbo -> habbo.getClient().sendResponse(new TargetedOfferComposer(habbo, offer)));
                 }
             } else {
-                gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_promote_offer.not_found"));
+                gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_promote_offer.not_found"));
                 return true;
             }
         }
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/PullCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/PullCommand.java
index 51e25aa8..90929c83 100644
--- a/src/main/java/com/eu/habbo/habbohotel/commands/PullCommand.java
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/PullCommand.java
@@ -20,29 +20,29 @@ public class PullCommand extends Command {
         Habbo habbo = gameClient.getHabbo().getHabboInfo().getCurrentRoom().getHabbo(params[1]);
 
         if (habbo == null) {
-            gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_pull.not_found").replace("%user%", params[1]), RoomChatMessageBubbles.ALERT);
+            gameClient.getHabbo().whisper(replaceUser(getTextsValue("commands.error.cmd_pull.not_found"), params[1]), RoomChatMessageBubbles.ALERT);
             return true;
         }
         if (habbo == gameClient.getHabbo()) {
-            gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_pull.pull_self"), RoomChatMessageBubbles.ALERT);
+            gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_pull.pull_self"), RoomChatMessageBubbles.ALERT);
             return true;
         }
         int distanceX = habbo.getRoomUnit().getX() - gameClient.getHabbo().getRoomUnit().getX();
         int distanceY = habbo.getRoomUnit().getY() - gameClient.getHabbo().getRoomUnit().getY();
 
         if (distanceX < -2 || distanceX > 2 || distanceY < -2 || distanceY > 2) {
-            gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_pull.cant_reach").replace("%user%", params[1]), RoomChatMessageBubbles.ALERT);
+            gameClient.getHabbo().whisper(replaceUser(getTextsValue("commands.error.cmd_pull.cant_reach"), params[1]), RoomChatMessageBubbles.ALERT);
             return true;
         }
         RoomTile tile = gameClient.getHabbo().getHabboInfo().getCurrentRoom().getLayout().getTileInFront(gameClient.getHabbo().getRoomUnit().getCurrentLocation(), gameClient.getHabbo().getRoomUnit().getBodyRotation().getValue());
 
         if (tile != null && tile.isWalkable()) {
             if (gameClient.getHabbo().getHabboInfo().getCurrentRoom().getLayout().getDoorTile() == tile) {
-                gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_pull.invalid").replace("%username%", params[1]));
+                gameClient.getHabbo().whisper(replaceUsername(getTextsValue("commands.error.cmd_pull.invalid"), params[1]));
                 return true;
             }
             habbo.getRoomUnit().setGoalLocation(tile);
-            gameClient.getHabbo().getHabboInfo().getCurrentRoom().sendComposer(new ChatMessageComposer(new RoomChatMessage(Emulator.getTexts().getValue("commands.succes.cmd_pull.pull").replace("%user%", params[1]).replace("%gender_name%", (gameClient.getHabbo().getHabboInfo().getGender().equals(HabboGender.M) ? Emulator.getTexts().getValue("gender.him") : Emulator.getTexts().getValue("gender.her"))), gameClient.getHabbo(), gameClient.getHabbo(), RoomChatMessageBubbles.NORMAL)).compose());
+            gameClient.getHabbo().getHabboInfo().getCurrentRoom().sendComposer(new ChatMessageComposer(new RoomChatMessage(replaceUser(getTextsValue("commands.succes.cmd_pull.pull"), params[1]).replace("%gender_name%", (gameClient.getHabbo().getHabboInfo().getGender().equals(HabboGender.M) ? getTextsValue("gender.him") : getTextsValue("gender.her"))), gameClient.getHabbo(), gameClient.getHabbo(), RoomChatMessageBubbles.NORMAL)).compose());
         }
 
 
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/PushCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/PushCommand.java
index 6944fab7..3d49edd4 100644
--- a/src/main/java/com/eu/habbo/habbohotel/commands/PushCommand.java
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/PushCommand.java
@@ -21,12 +21,12 @@ public class PushCommand extends Command {
         Habbo habbo = gameClient.getHabbo().getHabboInfo().getCurrentRoom().getHabbo(params[1]);
 
         if (habbo == null) {
-            gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_push.not_found").replace("%user%", params[1]), RoomChatMessageBubbles.ALERT);
+            gameClient.getHabbo().whisper(replaceUser(getTextsValue("commands.error.cmd_push.not_found"), params[1]), RoomChatMessageBubbles.ALERT);
             return true;
         }
 
         if (habbo == gameClient.getHabbo()) {
-            gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_push.push_self"), RoomChatMessageBubbles.ALERT);
+            gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_push.push_self"), RoomChatMessageBubbles.ALERT);
             return true;
         }
         RoomTile tFront = gameClient.getHabbo().getHabboInfo().getCurrentRoom().getLayout().getTileInFront(gameClient.getHabbo().getRoomUnit().getCurrentLocation(), gameClient.getHabbo().getRoomUnit().getBodyRotation().getValue());
@@ -37,14 +37,19 @@ public class PushCommand extends Command {
 
                 if (tFrontTarget != null && tFrontTarget.isWalkable()) {
                     if (gameClient.getHabbo().getHabboInfo().getCurrentRoom().getLayout().getDoorTile() == tFrontTarget) {
-                        gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_push.invalid").replace("%username%", params[1]));
+                        gameClient.getHabbo().whisper(replaceUsername(getTextsValue("commands.error.cmd_push.invalid"), params[1]));
                         return true;
                     }
                     habbo.getRoomUnit().setGoalLocation(tFrontTarget);
-                    gameClient.getHabbo().getHabboInfo().getCurrentRoom().sendComposer(new ChatMessageComposer(new RoomChatMessage(Emulator.getTexts().getValue("commands.succes.cmd_push.push").replace("%user%", params[1]).replace("%gender_name%", (gameClient.getHabbo().getHabboInfo().getGender().equals(HabboGender.M) ? Emulator.getTexts().getValue("gender.him") : Emulator.getTexts().getValue("gender.her"))), gameClient.getHabbo(), gameClient.getHabbo(), RoomChatMessageBubbles.NORMAL)).compose());
+                    gameClient.getHabbo().getHabboInfo().getCurrentRoom().sendComposer(
+                            new ChatMessageComposer(
+                                    new RoomChatMessage(
+                                            replaceUser(getTextsValue("commands.succes.cmd_push.push"), params[1])
+                                                    .replace("%gender_name%", (gameClient.getHabbo().getHabboInfo().getGender().equals(HabboGender.M) ? getTextsValue("gender.him") : getTextsValue("gender.her"))), gameClient.getHabbo(), gameClient.getHabbo(), RoomChatMessageBubbles.NORMAL)).compose()
+                    );
                 }
             } else {
-                gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_push.cant_reach").replace("%user%", params[1]), RoomChatMessageBubbles.ALERT);
+                gameClient.getHabbo().whisper(replaceUser(getTextsValue("commands.error.cmd_push.cant_reach"), params[1]), RoomChatMessageBubbles.ALERT);
                 return true;
             }
         }
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/RedeemCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/RedeemCommand.java
index 41d6fd0a..34ae90b5 100644
--- a/src/main/java/com/eu/habbo/habbohotel/commands/RedeemCommand.java
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/RedeemCommand.java
@@ -29,47 +29,44 @@ public class RedeemCommand extends Command {
         TIntIntMap points = new TIntIntHashMap();
 
         for (HabboItem item : gameClient.getHabbo().getInventory().getItemsComponent().getItemsAsValueCollection()) {
-            if (item.getBaseItem().getName().startsWith("CF_") || item.getBaseItem().getName().startsWith("CFC_") || item.getBaseItem().getName().startsWith("DF_") || item.getBaseItem().getName().startsWith("PF_")) {
-                if (item.getUserId() == gameClient.getHabbo().getHabboInfo().getId()) {
-                    items.add(item);
-                    if ((item.getBaseItem().getName().startsWith("CF_") || item.getBaseItem().getName().startsWith("CFC_")) && !item.getBaseItem().getName().contains("_diamond_")) {
-                        try {
-                            credits += Integer.parseInt(item.getBaseItem().getName().split("_")[1]);
-                        } catch (Exception ignored) {
-                        }
-
-                    } else if (item.getBaseItem().getName().startsWith("PF_")) {
-                        try {
-                            pixels += Integer.parseInt(item.getBaseItem().getName().split("_")[1]);
-                        } catch (Exception ignored) {
-                        }
-                    } else if (item.getBaseItem().getName().startsWith("DF_")) {
-                        int pointsType;
-                        int pointsAmount;
-
-                        pointsType = Integer.parseInt(item.getBaseItem().getName().split("_")[1]);
-                        pointsAmount = Integer.parseInt(item.getBaseItem().getName().split("_")[2]);
-
-                        points.adjustOrPutValue(pointsType, pointsAmount, pointsAmount);
+            if ((item.getBaseItem().getName().startsWith("CF_") || item.getBaseItem().getName().startsWith("CFC_") || item.getBaseItem().getName().startsWith("DF_") || item.getBaseItem().getName().startsWith("PF_")) && item.getUserId() == gameClient.getHabbo().getHabboInfo().getId()) {
+                items.add(item);
+                if ((item.getBaseItem().getName().startsWith("CF_") || item.getBaseItem().getName().startsWith("CFC_")) && !item.getBaseItem().getName().contains("_diamond_")) {
+                    try {
+                        credits += Integer.parseInt(item.getBaseItem().getName().split("_")[1]);
+                    } catch (Exception ignored) {
                     }
-                    else if (item.getBaseItem().getName().startsWith("CF_diamond_")) {
-                        int pointsType;
-                        int pointsAmount;
 
-                        pointsType = 5;
-                        pointsAmount = Integer.parseInt(item.getBaseItem().getName().split("_")[2]);
-
-                        points.adjustOrPutValue(pointsType, pointsAmount, pointsAmount);
+                } else if (item.getBaseItem().getName().startsWith("PF_")) {
+                    try {
+                        pixels += Integer.parseInt(item.getBaseItem().getName().split("_")[1]);
+                    } catch (Exception ignored) {
                     }
+                } else if (item.getBaseItem().getName().startsWith("DF_")) {
+                    int pointsType;
+                    int pointsAmount;
+
+                    pointsType = Integer.parseInt(item.getBaseItem().getName().split("_")[1]);
+                    pointsAmount = Integer.parseInt(item.getBaseItem().getName().split("_")[2]);
+
+                    points.adjustOrPutValue(pointsType, pointsAmount, pointsAmount);
+                } else if (item.getBaseItem().getName().startsWith("CF_diamond_")) {
+                    int pointsType;
+                    int pointsAmount;
+
+                    pointsType = 5;
+                    pointsAmount = Integer.parseInt(item.getBaseItem().getName().split("_")[2]);
+
+                    points.adjustOrPutValue(pointsType, pointsAmount, pointsAmount);
                 }
             }
         }
 
         TIntObjectHashMap<HabboItem> deleted = new TIntObjectHashMap<>();
-        for (HabboItem item : items) {
+        items.forEach(item -> {
             gameClient.getHabbo().getInventory().getItemsComponent().removeHabboItem(item);
             deleted.put(item.getId(), item);
-        }
+        });
 
         Emulator.getThreading().run(new QueryDeleteHabboItems(deleted));
 
@@ -77,20 +74,20 @@ public class RedeemCommand extends Command {
         gameClient.getHabbo().giveCredits(credits);
         gameClient.getHabbo().givePixels(pixels);
 
-        final String[] message = {Emulator.getTexts().getValue("generic.redeemed")};
+        final String[] message = {getTextsValue("generic.redeemed")};
 
-        message[0] += Emulator.getTexts().getValue("generic.credits");
+        message[0] += getTextsValue("generic.credits");
         message[0] += ": " + credits;
 
         if (pixels > 0) {
-            message[0] += ", " + Emulator.getTexts().getValue("generic.pixels");
-            message[0] += ": " + pixels + "";
+            message[0] += ", " + getTextsValue("generic.pixels");
+            message[0] += ": " + pixels;
         }
 
         if (!points.isEmpty()) {
             points.forEachEntry((a, b) -> {
                 gameClient.getHabbo().givePoints(a, b);
-                message[0] += " ," + Emulator.getTexts().getValue("seasonal.name." + a) + ": " + b;
+                message[0] += " ," + getTextsValue("seasonal.name." + a) + ": " + b;
                 return true;
             });
         }
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/ReloadRoomCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/ReloadRoomCommand.java
index 83dc8e0d..141f5bd2 100644
--- a/src/main/java/com/eu/habbo/habbohotel/commands/ReloadRoomCommand.java
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/ReloadRoomCommand.java
@@ -24,9 +24,7 @@ public class ReloadRoomCommand extends Command {
                 Emulator.getGameEnvironment().getRoomManager().unloadRoom(room);
                 room = Emulator.getGameEnvironment().getRoomManager().loadRoom(room.getId());
                 ServerMessage message = new RoomForwardMessageComposer(room.getId()).compose();
-                for (Habbo habbo : habbos) {
-                    habbo.getClient().sendResponse(message);
-                }
+                habbos.forEach(habbo -> habbo.getClient().sendResponse(message));
             }
         }, 100);
 
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/RoomAlertCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/RoomAlertCommand.java
index 0c3c8f64..c54aad3d 100644
--- a/src/main/java/com/eu/habbo/habbohotel/commands/RoomAlertCommand.java
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/RoomAlertCommand.java
@@ -6,6 +6,9 @@ import com.eu.habbo.habbohotel.rooms.Room;
 import com.eu.habbo.habbohotel.rooms.RoomChatMessageBubbles;
 import com.eu.habbo.messages.outgoing.modtool.IssueCloseNotificationMessageComposer;
 
+import java.util.stream.Collectors;
+import java.util.stream.IntStream;
+
 public class RoomAlertCommand extends Command {
     public RoomAlertCommand() {
         super("cmd_roomalert", Emulator.getTexts().getValue("commands.keys.cmd_roomalert").split(";"));
@@ -13,24 +16,22 @@ public class RoomAlertCommand extends Command {
 
     @Override
     public boolean handle(GameClient gameClient, String[] params) {
-        StringBuilder message = new StringBuilder();
+        String message;
 
-        if (params.length >= 2) {
-            for (int i = 1; i < params.length; i++) {
-                message.append(params[i]).append(" ");
-            }
+        if (params.length < 2) {
+            return false;
+        }
+        message = IntStream.range(1, params.length).mapToObj(i -> params[i] + " ").collect(Collectors.joining());
 
-            if (message.length() == 0) {
-                gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_roomalert.empty"), RoomChatMessageBubbles.ALERT);
-                return true;
-            }
+        if (message.length() == 0) {
+            gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_roomalert.empty"), RoomChatMessageBubbles.ALERT);
+            return true;
+        }
 
-            Room room = gameClient.getHabbo().getHabboInfo().getCurrentRoom();
-
-            if (room != null) {
-                room.sendComposer(new IssueCloseNotificationMessageComposer(message.toString()).compose());
-                return true;
-            }
+        Room room = gameClient.getHabbo().getHabboInfo().getCurrentRoom();
+        if (room != null) {
+            room.sendComposer(new IssueCloseNotificationMessageComposer(message).compose());
+            return true;
         }
 
         return false;
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/RoomBundleCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/RoomBundleCommand.java
index 289b00af..71753696 100644
--- a/src/main/java/com/eu/habbo/habbohotel/commands/RoomBundleCommand.java
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/RoomBundleCommand.java
@@ -26,12 +26,12 @@ public class RoomBundleCommand extends Command {
         int pointsType;
 
         if (params.length < 5) {
-            gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_bundle.missing_params"), RoomChatMessageBubbles.ALERT);
+            gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_bundle.missing_params"), RoomChatMessageBubbles.ALERT);
             return true;
         }
 
         if (Emulator.getGameEnvironment().getCatalogManager().getCatalogPage("room_bundle_" + gameClient.getHabbo().getHabboInfo().getCurrentRoom().getId()) != null) {
-            gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_bundle.duplicate"), RoomChatMessageBubbles.ALERT);
+            gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_bundle.duplicate"), RoomChatMessageBubbles.ALERT);
             return true;
         }
 
@@ -42,9 +42,9 @@ public class RoomBundleCommand extends Command {
 
         CatalogPage page = Emulator.getGameEnvironment().getCatalogManager().createCatalogPage("Room Bundle: " + gameClient.getHabbo().getHabboInfo().getCurrentRoom().getName(), "room_bundle_" + gameClient.getHabbo().getHabboInfo().getCurrentRoom().getId(), gameClient.getHabbo().getHabboInfo().getCurrentRoom().getId(), 0, CatalogPageLayouts.room_bundle, gameClient.getHabbo().getHabboInfo().getRank().getId(), parentId);
 
-        if (page instanceof RoomBundleLayout) {
+        if (page instanceof RoomBundleLayout roomBundleLayout) {
             try (Connection connection = Emulator.getDatabase().getDataSource().getConnection(); PreparedStatement statement = connection.prepareStatement("INSERT INTO catalog_items (page_id, item_ids, catalog_name, cost_credits, cost_points, points_type ) VALUES (?, ?, ?, ?, ?, ?)", Statement.RETURN_GENERATED_KEYS)) {
-                statement.setInt(1, page.getId());
+                statement.setInt(1, roomBundleLayout.getId());
                 statement.setString(2, "");
                 statement.setString(3, "room_bundle");
                 statement.setInt(4, credits);
@@ -67,9 +67,9 @@ public class RoomBundleCommand extends Command {
             } catch (SQLException e) {
                 log.error("Caught SQL exception", e);
             }
-            ((RoomBundleLayout) page).loadItems(gameClient.getHabbo().getHabboInfo().getCurrentRoom());
+            roomBundleLayout.loadItems(gameClient.getHabbo().getHabboInfo().getCurrentRoom());
 
-            gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.succes.cmd_bundle").replace("%id%", page.getId() + ""), RoomChatMessageBubbles.ALERT);
+            gameClient.getHabbo().whisper(getTextsValue("commands.succes.cmd_bundle").replace("%id%", roomBundleLayout.getId() + ""), RoomChatMessageBubbles.ALERT);
         }
 
         return true;
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/RoomDanceCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/RoomDanceCommand.java
index 1c1310cf..ad890783 100644
--- a/src/main/java/com/eu/habbo/habbohotel/commands/RoomDanceCommand.java
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/RoomDanceCommand.java
@@ -20,21 +20,21 @@ public class RoomDanceCommand extends Command {
             try {
                 danceId = Integer.parseInt(params[1]);
             } catch (Exception e) {
-                gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_danceall.invalid_dance"), RoomChatMessageBubbles.ALERT);
+                gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_danceall.invalid_dance"), RoomChatMessageBubbles.ALERT);
                 return true;
             }
 
             if (danceId < 0 || danceId > 4) {
-                gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_danceall.outside_bounds"), RoomChatMessageBubbles.ALERT);
+                gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_danceall.outside_bounds"), RoomChatMessageBubbles.ALERT);
                 return true;
             }
 
-            for (Habbo habbo : gameClient.getHabbo().getHabboInfo().getCurrentRoom().getHabbos()) {
+            gameClient.getHabbo().getHabboInfo().getCurrentRoom().getHabbos().forEach(habbo -> {
                 habbo.getRoomUnit().setDanceType(DanceType.values()[danceId]);
                 habbo.getHabboInfo().getCurrentRoom().sendComposer(new DanceMessageComposer(habbo.getRoomUnit()).compose());
-            }
+            });
         } else {
-            gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_danceall.no_dance"), RoomChatMessageBubbles.ALERT);
+            gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_danceall.no_dance"), RoomChatMessageBubbles.ALERT);
         }
 
         return true;
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/RoomEffectCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/RoomEffectCommand.java
index 535ee273..336610ef 100644
--- a/src/main/java/com/eu/habbo/habbohotel/commands/RoomEffectCommand.java
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/RoomEffectCommand.java
@@ -14,7 +14,7 @@ public class RoomEffectCommand extends Command {
     @Override
     public boolean handle(GameClient gameClient, String[] params) {
         if (params.length < 2) {
-            gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_roomeffect.no_effect"), RoomChatMessageBubbles.ALERT);
+            gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_roomeffect.no_effect"), RoomChatMessageBubbles.ALERT);
             return true;
         }
 
@@ -23,16 +23,14 @@ public class RoomEffectCommand extends Command {
 
             if (effectId >= 0) {
                 Room room = gameClient.getHabbo().getHabboInfo().getCurrentRoom();
-                for (Habbo habbo : room.getHabbos()) {
-                    room.giveEffect(habbo, effectId, -1);
-                }
+                room.getHabbos().forEach(habbo -> room.giveEffect(habbo, effectId, -1));
 
             } else {
-                gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_roomeffect.positive"), RoomChatMessageBubbles.ALERT);
+                gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_roomeffect.positive"), RoomChatMessageBubbles.ALERT);
             }
             return true;
         } catch (Exception e) {
-            gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_roomeffect.numbers_only"), RoomChatMessageBubbles.ALERT);
+            gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_roomeffect.numbers_only"), RoomChatMessageBubbles.ALERT);
             return true;
         }
     }
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/RoomItemCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/RoomItemCommand.java
index 8853a52d..da108f84 100644
--- a/src/main/java/com/eu/habbo/habbohotel/commands/RoomItemCommand.java
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/RoomItemCommand.java
@@ -20,11 +20,11 @@ public class RoomItemCommand extends Command {
                 itemId = Integer.parseInt(params[1]);
 
                 if (itemId < 0) {
-                    gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_roomitem.positive"), RoomChatMessageBubbles.ALERT);
+                    gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_roomitem.positive"), RoomChatMessageBubbles.ALERT);
                     return true;
                 }
             } catch (Exception e) {
-                gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_roomitem.no_item"), RoomChatMessageBubbles.ALERT);
+                gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_roomitem.no_item"), RoomChatMessageBubbles.ALERT);
                 return true;
             }
         }
@@ -35,9 +35,9 @@ public class RoomItemCommand extends Command {
         }
 
         if (itemId > 0) {
-            gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.succes.cmd_roomitem.given").replace("%item%", itemId + ""), RoomChatMessageBubbles.ALERT);
+            gameClient.getHabbo().whisper(getTextsValue("commands.succes.cmd_roomitem.given").replace("%item%", itemId + ""), RoomChatMessageBubbles.ALERT);
         } else {
-            gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.succes.cmd_roomitem.removed"), RoomChatMessageBubbles.ALERT);
+            gameClient.getHabbo().whisper(getTextsValue("commands.succes.cmd_roomitem.removed"), RoomChatMessageBubbles.ALERT);
         }
         return true;
     }
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/RoomKickCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/RoomKickCommand.java
index 4190581c..5c525a0e 100644
--- a/src/main/java/com/eu/habbo/habbohotel/commands/RoomKickCommand.java
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/RoomKickCommand.java
@@ -7,6 +7,9 @@ import com.eu.habbo.habbohotel.rooms.Room;
 import com.eu.habbo.habbohotel.users.Habbo;
 import com.eu.habbo.messages.outgoing.generic.alerts.HabboBroadcastMessageComposer;
 
+import java.util.stream.Collectors;
+import java.util.stream.IntStream;
+
 public class RoomKickCommand extends Command {
     public RoomKickCommand() {
         super("cmd_kickall", Emulator.getTexts().getValue("commands.keys.cmd_kickall").split(";"));
@@ -17,10 +20,7 @@ public class RoomKickCommand extends Command {
         final Room room = gameClient.getHabbo().getHabboInfo().getCurrentRoom();
         if (room != null) {
             if (params.length > 1) {
-                StringBuilder message = new StringBuilder();
-                for (int i = 1; i < params.length; i++) {
-                    message.append(params[i]).append(" ");
-                }
+                String message = IntStream.range(1, params.length).mapToObj(i -> params[i] + " ").collect(Collectors.joining());
                 room.sendComposer(new HabboBroadcastMessageComposer(message + "\r\n-" + gameClient.getHabbo().getHabboInfo().getUsername()).compose());
             }
 
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/SayAllCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/SayAllCommand.java
index 26ac9292..d2eeced7 100644
--- a/src/main/java/com/eu/habbo/habbohotel/commands/SayAllCommand.java
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/SayAllCommand.java
@@ -5,6 +5,9 @@ import com.eu.habbo.habbohotel.gameclients.GameClient;
 import com.eu.habbo.habbohotel.rooms.RoomChatMessageBubbles;
 import com.eu.habbo.habbohotel.users.Habbo;
 
+import java.util.stream.Collectors;
+import java.util.stream.IntStream;
+
 public class SayAllCommand extends Command {
     public SayAllCommand() {
         super("cmd_say_all", Emulator.getTexts().getValue("commands.keys.cmd_say_all").split(";"));
@@ -13,18 +16,13 @@ public class SayAllCommand extends Command {
     @Override
     public boolean handle(GameClient gameClient, String[] params) {
         if (params.length < 2) {
-            gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_say_all.forgot_message"), RoomChatMessageBubbles.ALERT);
+            gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_say_all.forgot_message"), RoomChatMessageBubbles.ALERT);
             return true;
         }
 
-        StringBuilder message = new StringBuilder();
-        for (int i = 1; i < params.length; i++) {
-            message.append(params[i]).append(" ");
-        }
+        String message = IntStream.range(1, params.length).mapToObj(i -> params[i] + " ").collect(Collectors.joining());
 
-        for (Habbo habbo : gameClient.getHabbo().getHabboInfo().getCurrentRoom().getHabbos()) {
-            habbo.talk(message.toString());
-        }
+        gameClient.getHabbo().getHabboInfo().getCurrentRoom().getHabbos().forEach(habbo -> habbo.talk(message));
 
         return true;
     }
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/SayCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/SayCommand.java
index 3fe9367c..2d1b4279 100644
--- a/src/main/java/com/eu/habbo/habbohotel/commands/SayCommand.java
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/SayCommand.java
@@ -7,6 +7,9 @@ import com.eu.habbo.habbohotel.rooms.RoomChatMessageBubbles;
 import com.eu.habbo.habbohotel.users.Habbo;
 import com.eu.habbo.messages.outgoing.rooms.users.ChatMessageComposer;
 
+import java.util.stream.Collectors;
+import java.util.stream.IntStream;
+
 public class SayCommand extends Command {
     public SayCommand() {
         super("cmd_say", Emulator.getTexts().getValue("commands.keys.cmd_say").split(";"));
@@ -15,31 +18,29 @@ public class SayCommand extends Command {
     @Override
     public boolean handle(GameClient gameClient, String[] params) {
         if (params.length < 2) {
-            gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_say.forgot_username"), RoomChatMessageBubbles.ALERT);
+            gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_say.forgot_username"), RoomChatMessageBubbles.ALERT);
             return true;
         }
 
-        Habbo target = Emulator.getGameEnvironment().getHabboManager().getHabbo(params[1]);
+        Habbo target = getHabbo(params[1]);
 
         if (target == null) {
-            gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_say.user_not_found"), RoomChatMessageBubbles.ALERT);
+            gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_say.user_not_found"), RoomChatMessageBubbles.ALERT);
             return true;
         } else {
             if (target.getHabboInfo().getCurrentRoom() == null) {
-                gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_say.hotel_view").replace("%user%", params[1]), RoomChatMessageBubbles.ALERT);
+                gameClient.getHabbo().whisper(replaceUser(getTextsValue("commands.error.cmd_say.hotel_view"), params[1]), RoomChatMessageBubbles.ALERT);
                 return true;
             }
         }
 
-        StringBuilder message = new StringBuilder();
+        String message = "";
         if (params.length > 2) {
-            for (int i = 2; i < params.length; i++) {
-                message.append(params[i]).append(" ");
-            }
+            message = IntStream.range(2, params.length).mapToObj(i -> params[i] + " ").collect(Collectors.joining());
         }
 
-        target.getHabboInfo().getCurrentRoom().sendComposer(new ChatMessageComposer(new RoomChatMessage(message.toString(), target, RoomChatMessageBubbles.NORMAL)).compose());
-        gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.succes.cmd_say").replace("%user%", params[1]).replace("%message%", message.toString()), RoomChatMessageBubbles.ALERT);
+        target.getHabboInfo().getCurrentRoom().sendComposer(new ChatMessageComposer(new RoomChatMessage(message, target, RoomChatMessageBubbles.NORMAL)).compose());
+        gameClient.getHabbo().whisper(replaceUser(getTextsValue("commands.succes.cmd_say"), params[1]).replace("%message%", message), RoomChatMessageBubbles.ALERT);
         return true;
     }
 }
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/SetMaxCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/SetMaxCommand.java
index 688ae9c1..a0b40549 100644
--- a/src/main/java/com/eu/habbo/habbohotel/commands/SetMaxCommand.java
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/SetMaxCommand.java
@@ -21,12 +21,12 @@ public class SetMaxCommand extends Command {
 
             if (max > 0 && max < 9999) {
                 gameClient.getHabbo().getHabboInfo().getCurrentRoom().setUsersMax(max);
-                gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.success.cmd_setmax").replace("%value%", max + ""), RoomChatMessageBubbles.ALERT);
+                gameClient.getHabbo().whisper(getTextsValue("commands.success.cmd_setmax").replace("%value%", max + ""), RoomChatMessageBubbles.ALERT);
             } else {
-                gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_setmax.invalid_number"), RoomChatMessageBubbles.ALERT);
+                gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_setmax.invalid_number"), RoomChatMessageBubbles.ALERT);
             }
         } else {
-            gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_setmax.forgot_number"), RoomChatMessageBubbles.ALERT);
+            gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_setmax.forgot_number"), RoomChatMessageBubbles.ALERT);
         }
         return true;
     }
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/SetPollCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/SetPollCommand.java
index e3064cc9..3ee22856 100644
--- a/src/main/java/com/eu/habbo/habbohotel/commands/SetPollCommand.java
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/SetPollCommand.java
@@ -11,28 +11,27 @@ public class SetPollCommand extends Command {
 
     @Override
     public boolean handle(GameClient gameClient, String[] params) {
-        if (params.length >= 2) {
-            if (gameClient.getHabbo().getHabboInfo().getCurrentRoom() != null) {
-                int pollId = -1;
-                try {
-                    pollId = Integer.parseInt(params[1]);
-                } catch (Exception ignored) {
+        if (params.length < 2) {
+            gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_set_poll.missing_arg"), RoomChatMessageBubbles.ALERT);
+            return true;
+        }
 
-                }
+        if (gameClient.getHabbo().getHabboInfo().getCurrentRoom() != null) {
+            int pollId = -1;
+            try {
+                pollId = Integer.parseInt(params[1]);
+            } catch (Exception ignored) {}
 
-                if (pollId >= 0) {
-                    if (Emulator.getGameEnvironment().getPollManager().getPoll(pollId) != null) {
-                        gameClient.getHabbo().getHabboInfo().getCurrentRoom().setPollId(pollId);
-                        gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.succes.cmd_set_poll"), RoomChatMessageBubbles.ALERT);
-                    } else {
-                        gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_set_poll.not_found"), RoomChatMessageBubbles.ALERT);
-                    }
+            if (pollId >= 0) {
+                if (Emulator.getGameEnvironment().getPollManager().getPoll(pollId) != null) {
+                    gameClient.getHabbo().getHabboInfo().getCurrentRoom().setPollId(pollId);
+                    gameClient.getHabbo().whisper(getTextsValue("commands.succes.cmd_set_poll"), RoomChatMessageBubbles.ALERT);
                 } else {
-                    gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_set_poll.invalid_number"), RoomChatMessageBubbles.ALERT);
+                    gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_set_poll.not_found"), RoomChatMessageBubbles.ALERT);
                 }
+            } else {
+                gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_set_poll.invalid_number"), RoomChatMessageBubbles.ALERT);
             }
-        } else {
-            gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_set_poll.missing_arg"), RoomChatMessageBubbles.ALERT);
         }
 
         return true;
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/SetSpeedCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/SetSpeedCommand.java
index ed67a1e8..08e26036 100644
--- a/src/main/java/com/eu/habbo/habbohotel/commands/SetSpeedCommand.java
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/SetSpeedCommand.java
@@ -12,30 +12,28 @@ public class SetSpeedCommand extends Command {
 
     @Override
     public boolean handle(GameClient gameClient, String[] params) {
-        if (gameClient.getHabbo().getHabboInfo().getCurrentRoom() != null) {
-            if (gameClient.getHabbo().getHabboInfo().getCurrentRoom().hasRights(gameClient.getHabbo())) {
-                Room room = gameClient.getHabbo().getHabboInfo().getCurrentRoom();
+        if (gameClient.getHabbo().getHabboInfo().getCurrentRoom() != null && gameClient.getHabbo().getHabboInfo().getCurrentRoom().hasRights(gameClient.getHabbo())) {
+            Room room = gameClient.getHabbo().getHabboInfo().getCurrentRoom();
 
-                int oldSpeed = room.getRollerSpeed();
-                int newSpeed;
+            int oldSpeed = room.getRollerSpeed();
+            int newSpeed;
 
-                try {
-                    newSpeed = Integer.parseInt(params[1]);
-                } catch (Exception e) {
-                    gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_setspeed.invalid_amount"), RoomChatMessageBubbles.ALERT);
-                    return true;
-                }
-
-                if (newSpeed < -1 || newSpeed > Emulator.getConfig().getInt("hotel.rollers.speed.maximum")) {
-                    gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_setspeed.bounds"), RoomChatMessageBubbles.ALERT);
-                    return true;
-                }
-
-                room.setRollerSpeed(newSpeed);
-
-                gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.succes.cmd_setspeed").replace("%oldspeed%", oldSpeed + "").replace("%newspeed%", newSpeed + ""), RoomChatMessageBubbles.ALERT);
+            try {
+                newSpeed = Integer.parseInt(params[1]);
+            } catch (Exception e) {
+                gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_setspeed.invalid_amount"), RoomChatMessageBubbles.ALERT);
                 return true;
             }
+
+            if (newSpeed < -1 || newSpeed > Emulator.getConfig().getInt("hotel.rollers.speed.maximum")) {
+                gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_setspeed.bounds"), RoomChatMessageBubbles.ALERT);
+                return true;
+            }
+
+            room.setRollerSpeed(newSpeed);
+
+            gameClient.getHabbo().whisper(getTextsValue("commands.succes.cmd_setspeed").replace("%oldspeed%", oldSpeed + "").replace("%newspeed%", newSpeed + ""), RoomChatMessageBubbles.ALERT);
+            return true;
         }
         return false;
     }
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/ShoutAllCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/ShoutAllCommand.java
index 249c4d8e..aebda31e 100644
--- a/src/main/java/com/eu/habbo/habbohotel/commands/ShoutAllCommand.java
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/ShoutAllCommand.java
@@ -5,6 +5,9 @@ import com.eu.habbo.habbohotel.gameclients.GameClient;
 import com.eu.habbo.habbohotel.rooms.RoomChatMessageBubbles;
 import com.eu.habbo.habbohotel.users.Habbo;
 
+import java.util.stream.Collectors;
+import java.util.stream.IntStream;
+
 public class ShoutAllCommand extends Command {
     public ShoutAllCommand() {
         super("cmd_shout_all", Emulator.getTexts().getValue("commands.keys.cmd_shout_all").split(";"));
@@ -13,17 +16,14 @@ public class ShoutAllCommand extends Command {
     @Override
     public boolean handle(GameClient gameClient, String[] params) {
         if (params.length < 2) {
-            gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_shout_all.forgot_message"), RoomChatMessageBubbles.ALERT);
+            gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_shout_all.forgot_message"), RoomChatMessageBubbles.ALERT);
             return true;
         }
 
-        StringBuilder message = new StringBuilder();
-        for (int i = 1; i < params.length; i++) {
-            message.append(params[i]).append(" ");
-        }
+        String message = IntStream.range(1, params.length).mapToObj(i -> params[i] + " ").collect(Collectors.joining());
 
         for (Habbo habbo : gameClient.getHabbo().getHabboInfo().getCurrentRoom().getHabbos()) {
-            habbo.shout(message.toString());
+            habbo.shout(message);
         }
 
         return true;
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/ShoutCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/ShoutCommand.java
index 880a056a..d6e9733b 100644
--- a/src/main/java/com/eu/habbo/habbohotel/commands/ShoutCommand.java
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/ShoutCommand.java
@@ -7,6 +7,9 @@ import com.eu.habbo.habbohotel.rooms.RoomChatMessageBubbles;
 import com.eu.habbo.habbohotel.users.Habbo;
 import com.eu.habbo.messages.outgoing.rooms.users.ShoutMessageComposer;
 
+import java.util.stream.Collectors;
+import java.util.stream.IntStream;
+
 public class ShoutCommand extends Command {
 
     public ShoutCommand() {
@@ -16,31 +19,29 @@ public class ShoutCommand extends Command {
     @Override
     public boolean handle(GameClient gameClient, String[] params) {
         if (params.length < 2) {
-            gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_shout.forgot_username"), RoomChatMessageBubbles.ALERT);
+            gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_shout.forgot_username"), RoomChatMessageBubbles.ALERT);
             return true;
         }
 
         Habbo target = Emulator.getGameEnvironment().getHabboManager().getHabbo(params[1]);
 
         if (target == null) {
-            gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_shout.user_not_found"), RoomChatMessageBubbles.ALERT);
+            gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_shout.user_not_found"), RoomChatMessageBubbles.ALERT);
             return true;
         } else {
             if (target.getHabboInfo().getCurrentRoom() == null) {
-                gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_shout.hotel_view").replace("%user%", params[1]), RoomChatMessageBubbles.ALERT);
+                gameClient.getHabbo().whisper(replaceUser(getTextsValue("commands.error.cmd_shout.hotel_view"), params[1]), RoomChatMessageBubbles.ALERT);
                 return true;
             }
         }
 
-        StringBuilder message = new StringBuilder();
+        String message = "";
         if (params.length > 2) {
-            for (int i = 2; i < params.length; i++) {
-                message.append(params[i]).append(" ");
-            }
+            message = IntStream.range(2, params.length).mapToObj(i -> params[i] + " ").collect(Collectors.joining());
         }
 
-        target.getHabboInfo().getCurrentRoom().sendComposer(new ShoutMessageComposer(new RoomChatMessage(message.toString(), target, RoomChatMessageBubbles.NORMAL)).compose());
-        gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.succes.cmd_shout").replace("%user%", params[1]).replace("%message%", message.toString()), RoomChatMessageBubbles.ALERT);
+        target.getHabboInfo().getCurrentRoom().sendComposer(new ShoutMessageComposer(new RoomChatMessage(message, target, RoomChatMessageBubbles.NORMAL)).compose());
+        gameClient.getHabbo().whisper(replaceUser(getTextsValue("commands.succes.cmd_shout"), params[1]).replace("%message%", message), RoomChatMessageBubbles.ALERT);
         return true;
     }
 }
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/ShutdownCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/ShutdownCommand.java
index 5dfe34ac..fbce855d 100644
--- a/src/main/java/com/eu/habbo/habbohotel/commands/ShutdownCommand.java
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/ShutdownCommand.java
@@ -34,9 +34,9 @@ public class ShutdownCommand extends Command {
 
         ServerMessage message;
         if (!reason.toString().equals("-")) {
-            message = new HabboBroadcastMessageComposer("<b>" + Emulator.getTexts().getValue("generic.warning") + "</b> \r\n" +
-                    Emulator.getTexts().getValue("generic.shutdown").replace("%minutes%", minutes + "") + "\r\n" +
-                    Emulator.getTexts().getValue("generic.reason.specified") + ": <b>" + reason + "</b>\r" +
+            message = new HabboBroadcastMessageComposer("<b>" + getTextsValue("generic.warning") + "</b> \r\n" +
+                    getTextsValue("generic.shutdown").replace("%minutes%", minutes + "") + "\r\n" +
+                    getTextsValue("generic.reason.specified") + ": <b>" + reason + "</b>\r" +
                     "\r" +
                     "- " + gameClient.getHabbo().getHabboInfo().getUsername()).compose();
         } else {
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/SitDownCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/SitDownCommand.java
index 37c4bac0..c539d0b6 100644
--- a/src/main/java/com/eu/habbo/habbohotel/commands/SitDownCommand.java
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/SitDownCommand.java
@@ -12,15 +12,14 @@ public class SitDownCommand extends Command {
 
     @Override
     public boolean handle(GameClient gameClient, String[] params) {
-        for (Habbo habbo : gameClient.getHabbo().getHabboInfo().getCurrentRoom().getHabbos()) {
+        gameClient.getHabbo().getHabboInfo().getCurrentRoom().getHabbos().forEach(habbo -> {
             if (habbo.getRoomUnit().isWalking()) {
                 habbo.getRoomUnit().stopWalking();
             } else if (habbo.getRoomUnit().hasStatus(RoomUnitStatus.SIT)) {
-                continue;
+                return;
             }
-
             gameClient.getHabbo().getHabboInfo().getCurrentRoom().makeSit(habbo);
-        }
+        });
 
         return true;
     }
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/SoftKickCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/SoftKickCommand.java
index 69bc0345..005e9f6e 100644
--- a/src/main/java/com/eu/habbo/habbohotel/commands/SoftKickCommand.java
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/SoftKickCommand.java
@@ -15,23 +15,23 @@ public class SoftKickCommand extends Command {
     @Override
     public boolean handle(GameClient gameClient, String[] params) {
         if (params.length != 2) return true;
-            final Habbo habbo = gameClient.getHabbo().getHabboInfo().getCurrentRoom().getHabbo(params[1]);
+        final Habbo habbo = gameClient.getHabbo().getHabboInfo().getCurrentRoom().getHabbo(params[1]);
 
-            if (habbo == null) {
-                gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.keys.cmd_softkick_error").replace("%user%", params[1]), RoomChatMessageBubbles.ALERT);
-                return true;
-            }
+        if (habbo == null) {
+            gameClient.getHabbo().whisper(replaceUser(getTextsValue("commands.keys.cmd_softkick_error"), params[1]), RoomChatMessageBubbles.ALERT);
+            return true;
+        }
 
-            if (habbo == gameClient.getHabbo()) {
-                gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.keys.cmd_softkick_error_self"), RoomChatMessageBubbles.ALERT);
-                return true;
-            }
+        if (habbo == gameClient.getHabbo()) {
+            gameClient.getHabbo().whisper(getTextsValue("commands.keys.cmd_softkick_error_self"), RoomChatMessageBubbles.ALERT);
+            return true;
+        }
 
-            final Room room = gameClient.getHabbo().getHabboInfo().getCurrentRoom();
+        final Room room = gameClient.getHabbo().getHabboInfo().getCurrentRoom();
 
-                if (room != null && (!(habbo.hasPermission(Permission.ACC_UNKICKABLE) || habbo.hasPermission(Permission.ACC_SUPPORTTOOL) || room.isOwner(habbo)))) {
-                    room.kickHabbo(habbo, false);
-                }
-                return true;
+        if (room != null && (!(habbo.hasPermission(Permission.ACC_UNKICKABLE) || habbo.hasPermission(Permission.ACC_SUPPORTTOOL) || room.isOwner(habbo)))) {
+            room.kickHabbo(habbo, false);
+        }
+        return true;
     }
 }
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/StaffAlertCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/StaffAlertCommand.java
index 2ba1ed45..2169a2d1 100644
--- a/src/main/java/com/eu/habbo/habbohotel/commands/StaffAlertCommand.java
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/StaffAlertCommand.java
@@ -6,6 +6,9 @@ import com.eu.habbo.habbohotel.messenger.Message;
 import com.eu.habbo.habbohotel.rooms.RoomChatMessageBubbles;
 import com.eu.habbo.messages.outgoing.friends.NewConsoleMessageComposer;
 
+import java.util.stream.Collectors;
+import java.util.stream.IntStream;
+
 public class StaffAlertCommand extends Command {
     public StaffAlertCommand() {
         super("cmd_staffalert", Emulator.getTexts().getValue("commands.keys.cmd_staffalert").split(";"));
@@ -14,15 +17,12 @@ public class StaffAlertCommand extends Command {
     @Override
     public boolean handle(GameClient gameClient, String[] params) {
         if (params.length > 1) {
-            StringBuilder message = new StringBuilder();
-            for (int i = 1; i < params.length; i++) {
-                message.append(params[i]).append(" ");
-            }
+            String message = IntStream.range(1, params.length).mapToObj(i -> params[i] + " ").collect(Collectors.joining());
 
             Emulator.getGameEnvironment().getHabboManager().staffAlert(message + "\r\n-" + gameClient.getHabbo().getHabboInfo().getUsername());
-            Emulator.getGameServer().getGameClientManager().sendBroadcastResponse(new NewConsoleMessageComposer(new Message(gameClient.getHabbo().getHabboInfo().getId(), -1, message.toString())).compose(), "acc_staff_chat", gameClient);
+            Emulator.getGameServer().getGameClientManager().sendBroadcastResponse(new NewConsoleMessageComposer(new Message(gameClient.getHabbo().getHabboInfo().getId(), -1, message)).compose(), "acc_staff_chat", gameClient);
         } else {
-            gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_staffalert.forgot_message"), RoomChatMessageBubbles.ALERT);
+            gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_staffalert.forgot_message"), RoomChatMessageBubbles.ALERT);
         }
 
         return true;
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/StaffOnlineCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/StaffOnlineCommand.java
index eb1a5bcf..5be956af 100644
--- a/src/main/java/com/eu/habbo/habbohotel/commands/StaffOnlineCommand.java
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/StaffOnlineCommand.java
@@ -7,7 +7,9 @@ import com.eu.habbo.habbohotel.users.Habbo;
 
 import java.util.ArrayList;
 import java.util.Comparator;
+import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 public class StaffOnlineCommand extends Command {
     public StaffOnlineCommand() {
@@ -23,39 +25,29 @@ public class StaffOnlineCommand extends Command {
                 int i = Integer.parseInt(params[1]);
 
                 if (i < 1) {
-                    gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_staffonline.positive_only"), RoomChatMessageBubbles.ALERT);
+                    gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_staffonline.positive_only"), RoomChatMessageBubbles.ALERT);
                     return true;
                 } else {
                     minRank = i;
                 }
             } catch (Exception e) {
-                gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_staffonline.numbers_only"), RoomChatMessageBubbles.ALERT);
+                gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_staffonline.numbers_only"), RoomChatMessageBubbles.ALERT);
                 return true;
             }
         }
 
         synchronized (Emulator.getGameEnvironment().getHabboManager().getOnlineHabbos()) {
-            ArrayList<Habbo> staffs = new ArrayList<>();
+            int finalMinRank = minRank;
+            List<Habbo> staffs = Emulator.getGameEnvironment().getHabboManager().getOnlineHabbos().values().stream()
+                    .filter(habbo -> habbo.getHabboInfo().getRank().getId() >= finalMinRank)
+                    .sorted(Comparator.comparingInt(o->o.getHabboInfo().getId()))
+                    .toList();
 
-            for (Map.Entry<Integer, Habbo> set : Emulator.getGameEnvironment().getHabboManager().getOnlineHabbos().entrySet()) {
-                if (set.getValue().getHabboInfo().getRank().getId() >= minRank) {
-                    staffs.add(set.getValue());
-                }
-            }
+            String message = staffs.stream()
+                    .map(habbo -> habbo.getHabboInfo().getUsername() + ": " + habbo.getHabboInfo().getRank().getName() + "\r")
+                    .collect(Collectors.joining("", getTextsValue("commands.generic.cmd_staffonline.staffs") + "\r\n", ""));
 
-            staffs.sort(Comparator.comparingInt(o -> o.getHabboInfo().getId()));
-
-            StringBuilder message = new StringBuilder(Emulator.getTexts().getValue("commands.generic.cmd_staffonline.staffs"));
-            message.append("\r\n");
-
-            for (Habbo habbo : staffs) {
-                message.append(habbo.getHabboInfo().getUsername());
-                message.append(": ");
-                message.append(habbo.getHabboInfo().getRank().getName());
-                message.append("\r");
-            }
-
-            gameClient.getHabbo().alert(message.toString());
+            gameClient.getHabbo().alert(message);
         }
 
         return true;
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/StalkCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/StalkCommand.java
index 11fed574..f7f3fb44 100644
--- a/src/main/java/com/eu/habbo/habbohotel/commands/StalkCommand.java
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/StalkCommand.java
@@ -17,32 +17,31 @@ public class StalkCommand extends Command {
             return true;
 
         if (params.length >= 2) {
-            Habbo habbo = Emulator.getGameEnvironment().getHabboManager().getHabbo(params[1]);
+            Habbo habbo = getHabbo(params[1]);
 
             if (habbo == null) {
-                gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_stalk.not_found").replace("%user%", params[1]), RoomChatMessageBubbles.ALERT);
+                gameClient.getHabbo().whisper(replaceUser(getTextsValue("commands.error.cmd_stalk.not_found"), params[1]), RoomChatMessageBubbles.ALERT);
                 return true;
             }
 
             if (habbo.getHabboInfo().getCurrentRoom() == null) {
-                gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_stalk.not_room").replace("%user%", params[1]), RoomChatMessageBubbles.ALERT);
+                gameClient.getHabbo().whisper(replaceUser(getTextsValue("commands.error.cmd_stalk.not_room"), params[1]), RoomChatMessageBubbles.ALERT);
                 return true;
             }
 
             if (gameClient.getHabbo().getHabboInfo().getUsername().equals(habbo.getHabboInfo().getUsername())) {
-                gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.generic.cmd_stalk.self").replace("%user%", params[1]), RoomChatMessageBubbles.ALERT);
+                gameClient.getHabbo().whisper(replaceUser(getTextsValue("commands.generic.cmd_stalk.self"), params[1]), RoomChatMessageBubbles.ALERT);
                 return true;
             }
 
             if (gameClient.getHabbo().getHabboInfo().getCurrentRoom() == habbo.getHabboInfo().getCurrentRoom()) {
-                gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.generic.cmd_stalk.same_room").replace("%user%", params[1]), RoomChatMessageBubbles.ALERT);
+                gameClient.getHabbo().whisper(replaceUser(getTextsValue("commands.generic.cmd_stalk.same_room"), params[1]), RoomChatMessageBubbles.ALERT);
                 return true;
             }
 
             gameClient.sendResponse(new GetGuestRoomResultComposer(habbo.getHabboInfo().getCurrentRoom(), gameClient.getHabbo(), true, false));
-            //gameClient.sendResponse(new ForwardToRoomComposer(habbo.getHabboInfo().getCurrentRoom().getId()));
         } else {
-            gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_stalk.forgot_username"), RoomChatMessageBubbles.ALERT);
+            gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_stalk.forgot_username"), RoomChatMessageBubbles.ALERT);
         }
         return true;
     }
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/SubscriptionCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/SubscriptionCommand.java
index 1a18b404..089a3415 100644
--- a/src/main/java/com/eu/habbo/habbohotel/commands/SubscriptionCommand.java
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/SubscriptionCommand.java
@@ -8,6 +8,9 @@ import com.eu.habbo.habbohotel.users.HabboManager;
 import com.eu.habbo.habbohotel.users.HabboStats;
 import com.eu.habbo.habbohotel.users.subscriptions.Subscription;
 
+import java.util.stream.Collectors;
+import java.util.stream.IntStream;
+
 /**
  * @author Beny
  */
@@ -18,13 +21,13 @@ public class SubscriptionCommand extends Command {
 
     /**
      * Allows you to give/extend/remove subscription on a given user.
-     *
+     * <p>
      * Parameters:
      * [username] = Username of user to execute command on
      * [type] = Subscription type (e.g. HABBO_CLUB)
      * [add|remove] = Use add or remove to increase/decrease sub duration
      * [time] = Time string e.g. "1 week", "18 days", "4 minutes". Can be complex e.g. "1 month 5 days 2 minutes"
-     *
+     * <p>
      * Examples:
      * :sub Beny habbo_club add 1 month - adds 1 month of HABBO_CLUB subscription duration on the user Beny
      * :sub Beny builders_club add 1 month - adds 1 month of BUILDERS_CLUB subscription duration on the user Beny
@@ -32,76 +35,72 @@ public class SubscriptionCommand extends Command {
      * :sub Beny habbo_club remove - removes all remaining time from the HABBO_CLUB subscription (expires it) on the user Beny
      *
      * @param gameClient Client that executed the command
-     * @param params Command parameters
+     * @param params     Command parameters
      * @return Boolean indicating success
      */
     @Override
     public boolean handle(GameClient gameClient, String[] params) {
-        if (params.length >= 4) {
-            HabboInfo info = HabboManager.getOfflineHabboInfo(params[1]);
+        if (params.length < 4) {
+            gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_subscription.invalid_params", "Invalid command format"), RoomChatMessageBubbles.ALERT);
+            return true;
+        }
+        HabboInfo info = HabboManager.getOfflineHabboInfo(params[1]);
 
-            if (info != null) {
-                HabboStats stats = info.getHabboStats();
-                String subscription = params[2].toUpperCase();
-                String action = params[3];
+        if (info == null) {
+            gameClient.getHabbo().whisper(replaceUser(getTextsValue("commands.error.cmd_subscription.user_not_found", "%user% was not found"), params[1]), RoomChatMessageBubbles.ALERT);
+            return true;
+        }
 
-                StringBuilder message = new StringBuilder();
-                if (params.length > 4) {
-                    for (int i = 4; i < params.length; i++) {
-                        message.append(params[i]).append(" ");
-                    }
-                }
-                
-                if(!Emulator.getGameEnvironment().getSubscriptionManager().getTypes().containsKey(subscription)) {
-                    gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_subscription.type_not_found", "%subscription% is not a valid subscription type").replace("%subscription%", subscription), RoomChatMessageBubbles.ALERT);
+        HabboStats stats = info.getHabboStats();
+        String subscription = params[2].toUpperCase();
+        String action = params[3];
+
+        String message = "";
+        if (params.length > 4) {
+            message = IntStream.range(4, params.length).mapToObj(i -> params[i] + " ").collect(Collectors.joining());
+        }
+
+        if (!Emulator.getGameEnvironment().getSubscriptionManager().getTypes().containsKey(subscription)) {
+            gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_subscription.type_not_found", "%subscription% is not a valid subscription type").replace("%subscription%", subscription), RoomChatMessageBubbles.ALERT);
+            return true;
+        }
+
+        if (action.equalsIgnoreCase("add") || action.equalsIgnoreCase("+") || action.equalsIgnoreCase("a")) {
+            int timeToAdd = Emulator.timeStringToSeconds(message);
+
+            if (timeToAdd < 1) {
+                gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_subscription.invalid_params_time", "Invalid time span, try: x minutes/days/weeks/months"), RoomChatMessageBubbles.ALERT);
+                return true;
+            }
+
+            stats.createSubscription(subscription, timeToAdd);
+            gameClient.getHabbo().whisper(replaceUser(getTextsValue("commands.error.cmd_subscription.success_add_time", "Successfully added %time% seconds to %subscription% on %user%"), params[1]).replace("%time%", timeToAdd + "").replace("%subscription%", subscription), RoomChatMessageBubbles.ALERT);
+        } else if (action.equalsIgnoreCase("remove") || action.equalsIgnoreCase("-") || action.equalsIgnoreCase("r")) {
+            Subscription s = stats.getSubscription(subscription);
+
+            if (s == null) {
+                gameClient.getHabbo().whisper(replaceUser(getTextsValue("commands.error.cmd_subscription.user_not_have", "%user% does not have the %subscription% subscription"), params[1]).replace("%subscription%", subscription), RoomChatMessageBubbles.ALERT);
+                return true;
+            }
+
+            if (message.length() != 0) {
+                int timeToRemove = Emulator.timeStringToSeconds(message);
+
+                if (timeToRemove < 1) {
+                    gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_subscription.invalid_params_time", "Invalid time span, try: x minutes/days/weeks/months"), RoomChatMessageBubbles.ALERT);
                     return true;
                 }
 
-                if(action.equalsIgnoreCase("add") || action.equalsIgnoreCase("+") || action.equalsIgnoreCase("a")) {
-                    int timeToAdd = Emulator.timeStringToSeconds(message.toString());
-
-                    if(timeToAdd < 1) {
-                        gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_subscription.invalid_params_time", "Invalid time span, try: x minutes/days/weeks/months"), RoomChatMessageBubbles.ALERT);
-                        return true;
-                    }
-
-                    stats.createSubscription(subscription, timeToAdd);
-                    gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_subscription.success_add_time", "Successfully added %time% seconds to %subscription% on %user%").replace("%time%", timeToAdd + "").replace("%user%", params[1]).replace("%subscription%", subscription), RoomChatMessageBubbles.ALERT);
-                }
-                else if(action.equalsIgnoreCase("remove") || action.equalsIgnoreCase("-") || action.equalsIgnoreCase("r")) {
-                    Subscription s = stats.getSubscription(subscription);
-
-                    if (s == null) {
-                        gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_subscription.user_not_have", "%user% does not have the %subscription% subscription").replace("%user%", params[1]).replace("%subscription%", subscription), RoomChatMessageBubbles.ALERT);
-                        return true;
-                    }
-
-                    if(message.length() != 0) {
-                        int timeToRemove = Emulator.timeStringToSeconds(message.toString());
-
-                        if (timeToRemove < 1) {
-                            gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_subscription.invalid_params_time", "Invalid time span, try: x minutes/days/weeks/months"), RoomChatMessageBubbles.ALERT);
-                            return true;
-                        }
-
-                        s.addDuration(-timeToRemove);
-                        gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_subscription.success_remove_time", "Successfully removed %time% seconds from %subscription% on %user%").replace("%time%", timeToRemove + "").replace("%user%", params[1]).replace("%subscription%", subscription), RoomChatMessageBubbles.ALERT);
-                    }
-                    else {
-                        s.addDuration(-s.getRemaining());
-                        gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_subscription.success_remove_sub", "Successfully removed %subscription% sub from %user%").replace("%user%", params[1]).replace("%subscription%", subscription), RoomChatMessageBubbles.ALERT);
-                    }
-                }
-                else {
-                    gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_subscription.invalid_action", "Invalid action specified. Must be add, +, remove or -"), RoomChatMessageBubbles.ALERT);
-                }
-
+                s.addDuration(-timeToRemove);
+                gameClient.getHabbo().whisper(replaceUser(getTextsValue("commands.error.cmd_subscription.success_remove_time", "Successfully removed %time% seconds from %subscription% on %user%"), params[1]).replace("%time%", timeToRemove + "").replace("%subscription%", subscription), RoomChatMessageBubbles.ALERT);
             } else {
-                gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_subscription.user_not_found", "%user% was not found").replace("%user%", params[1]), RoomChatMessageBubbles.ALERT);
+                s.addDuration(-s.getRemaining());
+                gameClient.getHabbo().whisper(replaceUser(getTextsValue("commands.error.cmd_subscription.success_remove_sub", "Successfully removed %subscription% sub from %user%"), params[1]).replace("%subscription%", subscription), RoomChatMessageBubbles.ALERT);
             }
         } else {
-            gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_subscription.invalid_params", "Invalid command format"), RoomChatMessageBubbles.ALERT);
+            gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_subscription.invalid_action", "Invalid action specified. Must be add, +, remove or -"), RoomChatMessageBubbles.ALERT);
         }
+
         return true;
     }
 }
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/SummonCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/SummonCommand.java
index 4699866e..0bd17d72 100644
--- a/src/main/java/com/eu/habbo/habbohotel/commands/SummonCommand.java
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/SummonCommand.java
@@ -17,44 +17,45 @@ public class SummonCommand extends Command {
         if (gameClient.getHabbo().getHabboInfo().getCurrentRoom() == null)
             return true;
 
-        if (params.length >= 2) {
-            Habbo habbo = Emulator.getGameEnvironment().getHabboManager().getHabbo(params[1]);
-
-            if (habbo == null) {
-                gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_summon.not_found").replace("%user%", params[1]), RoomChatMessageBubbles.ALERT);
-                return true;
-            }
-
-            if (gameClient.getHabbo().getHabboInfo().getUsername().equals(habbo.getHabboInfo().getUsername())) {
-                gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.generic.cmd_summon.self").replace("%user%", params[1]), RoomChatMessageBubbles.ALERT);
-                return true;
-            }
-
-            if (gameClient.getHabbo().getHabboInfo().getCurrentRoom() == habbo.getHabboInfo().getCurrentRoom()) {
-                gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.generic.cmd_summon.same_room").replace("%user%", params[1]), RoomChatMessageBubbles.ALERT);
-                return true;
-            }
-
-            Room room = habbo.getHabboInfo().getCurrentRoom();
-            if (room != null) {
-                Emulator.getGameEnvironment().getRoomManager().logExit(habbo);
-
-                room.removeHabbo(habbo, true);
-
-                habbo.getHabboInfo().setCurrentRoom(null);
-            }
-
-            Emulator.getGameEnvironment().getRoomManager().enterRoom(habbo, gameClient.getHabbo().getHabboInfo().getCurrentRoom().getId(), "", true);
-
-            habbo.getClient().sendResponse(new RoomForwardMessageComposer(gameClient.getHabbo().getHabboInfo().getCurrentRoom().getId()));
-
-            gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.succes.cmd_summon.summoned").replace("%user%", params[1]), RoomChatMessageBubbles.ALERT);
-
-            habbo.alert(Emulator.getTexts().getValue("commands.generic.cmd_summon.been_summoned").replace("%user%", gameClient.getHabbo().getHabboInfo().getUsername()));
-
-        } else {
-            gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_summon.forgot_username"), RoomChatMessageBubbles.ALERT);
+        if (params.length < 2) {
+            gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_summon.forgot_username"), RoomChatMessageBubbles.ALERT);
+            return true;
         }
+
+        Habbo habbo = getHabbo(params[1]);
+
+        if (habbo == null) {
+            gameClient.getHabbo().whisper(replaceUser(getTextsValue("commands.error.cmd_summon.not_found"), params[1]), RoomChatMessageBubbles.ALERT);
+            return true;
+        }
+
+        if (gameClient.getHabbo().getHabboInfo().getUsername().equals(habbo.getHabboInfo().getUsername())) {
+            gameClient.getHabbo().whisper(replaceUser(getTextsValue("commands.generic.cmd_summon.self"), params[1]), RoomChatMessageBubbles.ALERT);
+            return true;
+        }
+
+        if (gameClient.getHabbo().getHabboInfo().getCurrentRoom() == habbo.getHabboInfo().getCurrentRoom()) {
+            gameClient.getHabbo().whisper(replaceUser(getTextsValue("commands.generic.cmd_summon.same_room"), params[1]), RoomChatMessageBubbles.ALERT);
+            return true;
+        }
+
+        Room room = habbo.getHabboInfo().getCurrentRoom();
+        if (room != null) {
+            Emulator.getGameEnvironment().getRoomManager().logExit(habbo);
+
+            room.removeHabbo(habbo, true);
+
+            habbo.getHabboInfo().setCurrentRoom(null);
+        }
+
+        Emulator.getGameEnvironment().getRoomManager().enterRoom(habbo, gameClient.getHabbo().getHabboInfo().getCurrentRoom().getId(), "", true);
+
+        habbo.getClient().sendResponse(new RoomForwardMessageComposer(gameClient.getHabbo().getHabboInfo().getCurrentRoom().getId()));
+
+        gameClient.getHabbo().whisper(replaceUser(getTextsValue("commands.succes.cmd_summon.summoned"), params[1]), RoomChatMessageBubbles.ALERT);
+
+        habbo.alert(replaceUser(getTextsValue("commands.generic.cmd_summon.been_summoned"), gameClient.getHabbo().getHabboInfo().getUsername()));
+
         return true;
     }
 }
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/SummonRankCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/SummonRankCommand.java
index ace86821..62757e39 100644
--- a/src/main/java/com/eu/habbo/habbohotel/commands/SummonRankCommand.java
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/SummonRankCommand.java
@@ -22,30 +22,30 @@ public class SummonRankCommand extends Command {
             try {
                 minRank = Integer.parseInt(params[1]);
             } catch (Exception e) {
-                gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.generic.cmd_summonrank.error"), RoomChatMessageBubbles.ALERT);
+                gameClient.getHabbo().whisper(getTextsValue("commands.generic.cmd_summonrank.error"), RoomChatMessageBubbles.ALERT);
                 return true;
             }
 
-            for (Map.Entry<Integer, Habbo> set : Emulator.getGameEnvironment().getHabboManager().getOnlineHabbos().entrySet()) {
-                if (set.getValue().getHabboInfo().getRank().getId() >= minRank) {
-                    if (set.getValue() == gameClient.getHabbo())
+            for (Habbo habbo : Emulator.getGameEnvironment().getHabboManager().getOnlineHabbos().values()) {
+                if (habbo.getHabboInfo().getRank().getId() >= minRank) {
+                    if (habbo == gameClient.getHabbo())
                         continue;
 
-                    if (set.getValue().getHabboInfo().getCurrentRoom() == gameClient.getHabbo().getHabboInfo().getCurrentRoom())
+                    if (habbo.getHabboInfo().getCurrentRoom() == gameClient.getHabbo().getHabboInfo().getCurrentRoom())
                         continue;
 
-                    Room room = set.getValue().getHabboInfo().getCurrentRoom();
+                    Room room = habbo.getHabboInfo().getCurrentRoom();
                     if (room != null) {
-                        Emulator.getGameEnvironment().getRoomManager().logExit(set.getValue());
+                        Emulator.getGameEnvironment().getRoomManager().logExit(habbo);
 
-                        room.removeHabbo(set.getValue(), true);
+                        room.removeHabbo(habbo, true);
 
-                        set.getValue().getHabboInfo().setCurrentRoom(null);
+                        habbo.getHabboInfo().setCurrentRoom(null);
                     }
 
-                    Emulator.getGameEnvironment().getRoomManager().enterRoom(set.getValue(), gameClient.getHabbo().getHabboInfo().getCurrentRoom().getId(), "", true);
+                    Emulator.getGameEnvironment().getRoomManager().enterRoom(habbo, gameClient.getHabbo().getHabboInfo().getCurrentRoom().getId(), "", true);
 
-                    set.getValue().getClient().sendResponse(new RoomForwardMessageComposer(gameClient.getHabbo().getHabboInfo().getCurrentRoom().getId()));
+                    habbo.getClient().sendResponse(new RoomForwardMessageComposer(gameClient.getHabbo().getHabboInfo().getCurrentRoom().getId()));
 
                 }
             }
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/SuperPullCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/SuperPullCommand.java
index 0ece8ed7..39106cf0 100644
--- a/src/main/java/com/eu/habbo/habbohotel/commands/SuperPullCommand.java
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/SuperPullCommand.java
@@ -16,30 +16,31 @@ public class SuperPullCommand extends Command {
 
     @Override
     public boolean handle(GameClient gameClient, String[] params) {
-        if (params.length == 2) {
-            Habbo habbo = gameClient.getHabbo().getHabboInfo().getCurrentRoom().getHabbo(params[1]);
-
-            if (habbo == null) {
-                gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_pull.not_found").replace("%user%", params[1]), RoomChatMessageBubbles.ALERT);
-                return true;
-            } else if (habbo == gameClient.getHabbo()) {
-                gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_pull.pull_self"), RoomChatMessageBubbles.ALERT);
-                return true;
-            } else {
-                RoomTile tile = gameClient.getHabbo().getHabboInfo().getCurrentRoom().getLayout().getTileInFront(gameClient.getHabbo().getRoomUnit().getCurrentLocation(), gameClient.getHabbo().getRoomUnit().getBodyRotation().getValue());
-
-                if (tile != null && tile.isWalkable()) {
-                    if (tile == gameClient.getHabbo().getHabboInfo().getCurrentRoom().getLayout().getDoorTile()) {
-                        gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_pull.invalid").replace("%username%", params[1]), RoomChatMessageBubbles.ALERT);
-                        return true;
-                    }
-                    habbo.getRoomUnit().setGoalLocation(tile);
-                    gameClient.getHabbo().getHabboInfo().getCurrentRoom().sendComposer(new ChatMessageComposer(new RoomChatMessage(Emulator.getTexts().getValue("commands.succes.cmd_pull.pull").replace("%user%", params[1]).replace("%gender_name%", (gameClient.getHabbo().getHabboInfo().getGender().equals(HabboGender.M) ? Emulator.getTexts().getValue("gender.him") : Emulator.getTexts().getValue("gender.her"))), gameClient.getHabbo(), gameClient.getHabbo(), RoomChatMessageBubbles.NORMAL)).compose());
-                }
-            }
+        if (params.length != 2) {
             return true;
         }
 
+        Habbo habbo = gameClient.getHabbo().getHabboInfo().getCurrentRoom().getHabbo(params[1]);
+
+        if (habbo == null) {
+            gameClient.getHabbo().whisper(replaceUser(getTextsValue("commands.error.cmd_pull.not_found"), params[1]), RoomChatMessageBubbles.ALERT);
+            return true;
+        } else if (habbo == gameClient.getHabbo()) {
+            gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_pull.pull_self"), RoomChatMessageBubbles.ALERT);
+            return true;
+        } else {
+            RoomTile tile = gameClient.getHabbo().getHabboInfo().getCurrentRoom().getLayout().getTileInFront(gameClient.getHabbo().getRoomUnit().getCurrentLocation(), gameClient.getHabbo().getRoomUnit().getBodyRotation().getValue());
+
+            if (tile != null && tile.isWalkable()) {
+                if (tile == gameClient.getHabbo().getHabboInfo().getCurrentRoom().getLayout().getDoorTile()) {
+                    gameClient.getHabbo().whisper(replaceUsername(getTextsValue("commands.error.cmd_pull.invalid"), params[1]), RoomChatMessageBubbles.ALERT);
+                    return true;
+                }
+                habbo.getRoomUnit().setGoalLocation(tile);
+                gameClient.getHabbo().getHabboInfo().getCurrentRoom().sendComposer(new ChatMessageComposer(new RoomChatMessage(replaceUser(getTextsValue("commands.succes.cmd_pull.pull"), params[1]).replace("%gender_name%", (gameClient.getHabbo().getHabboInfo().getGender().equals(HabboGender.M) ? getTextsValue("gender.him") : getTextsValue("gender.her"))), gameClient.getHabbo(), gameClient.getHabbo(), RoomChatMessageBubbles.NORMAL)).compose());
+            }
+        }
         return true;
+
     }
 }
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/TeleportCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/TeleportCommand.java
index 994e610a..c6a29ed8 100644
--- a/src/main/java/com/eu/habbo/habbohotel/commands/TeleportCommand.java
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/TeleportCommand.java
@@ -11,16 +11,18 @@ public class TeleportCommand extends Command {
 
     @Override
     public boolean handle(GameClient gameClient, String[] params) {
-        if (gameClient.getHabbo().getHabboInfo().getRiding() == null) //TODO Make this an event plugin which fires that can be cancelled
-            if (gameClient.getHabbo().getRoomUnit().isCmdTeleport()) {
-                gameClient.getHabbo().getRoomUnit().setCmdTeleport(false);
-                gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.succes.cmd_teleport.disabled"), RoomChatMessageBubbles.ALERT);
-                return true;
-            } else {
-                gameClient.getHabbo().getRoomUnit().setCmdTeleport(true);
-                gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.succes.cmd_teleport.enabled"), RoomChatMessageBubbles.ALERT);
-                return true;
-            }
-        return true;
+        if (gameClient.getHabbo().getHabboInfo().getRiding() != null){ //TODO Make this an event plugin which fires that can be cancelled
+            return true;
+        }
+        
+        if (gameClient.getHabbo().getRoomUnit().isCmdTeleport()) {
+            gameClient.getHabbo().getRoomUnit().setCmdTeleport(false);
+            gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.succes.cmd_teleport.disabled"), RoomChatMessageBubbles.ALERT);
+            return true;
+        } else {
+            gameClient.getHabbo().getRoomUnit().setCmdTeleport(true);
+            gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.succes.cmd_teleport.enabled"), RoomChatMessageBubbles.ALERT);
+            return true;
+        }
     }
 }
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/TransformCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/TransformCommand.java
index 606ad427..fe3513e7 100644
--- a/src/main/java/com/eu/habbo/habbohotel/commands/TransformCommand.java
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/TransformCommand.java
@@ -21,11 +21,11 @@ public class TransformCommand extends Command {
     public boolean handle(GameClient gameClient, String[] params) {
         if (params.length == 1) {
             StringBuilder petNames = new StringBuilder();
-            petNames.append(Emulator.getTexts().getValue("commands.generic.cmd_transform.title"));
+            petNames.append(getTextsValue("commands.generic.cmd_transform.title"));
             petNames.append("\r------------------------------------------------------------------------------\r");
             ArrayList<PetData> petData = new ArrayList<>(Emulator.getGameEnvironment().getPetManager().getPetData());
             Collections.sort(petData);
-            String line = Emulator.getTexts().getValue("commands.generic.cmd_transform.line");
+            String line = getTextsValue("commands.generic.cmd_transform.line");
             for (PetData p : petData) {
                 petNames.append(line.replace("%id%", p.getType() + "").replace("%name%", p.getName())).append("\r");
             }
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/UnbanCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/UnbanCommand.java
index cdcb6903..c509789e 100644
--- a/src/main/java/com/eu/habbo/habbohotel/commands/UnbanCommand.java
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/UnbanCommand.java
@@ -12,12 +12,12 @@ public class UnbanCommand extends Command {
     @Override
     public boolean handle(GameClient gameClient, String[] params) {
         if (params.length == 1) {
-            gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_unban.not_specified"), RoomChatMessageBubbles.ALERT);
+            gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_unban.not_specified"), RoomChatMessageBubbles.ALERT);
         } else {
             if (Emulator.getGameEnvironment().getModToolManager().unban(params[1])) {
-                gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_unban.success").replace("%user%", params[1]), RoomChatMessageBubbles.ALERT);
+                gameClient.getHabbo().whisper(replaceUser(getTextsValue("commands.error.cmd_unban.success"), params[1]), RoomChatMessageBubbles.ALERT);
             } else {
-                gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_unban.not_found").replace("%user%", params[1]), RoomChatMessageBubbles.ALERT);
+                gameClient.getHabbo().whisper(replaceUser(getTextsValue("commands.error.cmd_unban.not_found"), params[1]), RoomChatMessageBubbles.ALERT);
             }
         }
 
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/UnmuteCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/UnmuteCommand.java
index e2cb4703..d54fdf1a 100644
--- a/src/main/java/com/eu/habbo/habbohotel/commands/UnmuteCommand.java
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/UnmuteCommand.java
@@ -13,30 +13,30 @@ public class UnmuteCommand extends Command {
     @Override
     public boolean handle(GameClient gameClient, String[] params) {
         if (params.length == 1) {
-            gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_unmute.not_specified"), RoomChatMessageBubbles.ALERT);
+            gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_unmute.not_specified"), RoomChatMessageBubbles.ALERT);
             return true;
         }
 
         Habbo habbo = Emulator.getGameEnvironment().getHabboManager().getHabbo(params[1]);
 
         if (habbo == null) {
-            gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_unmute.not_found").replace("%user%", params[1]), RoomChatMessageBubbles.ALERT);
+            gameClient.getHabbo().whisper(replaceUser(getTextsValue("commands.error.cmd_unmute.not_found"), params[1]), RoomChatMessageBubbles.ALERT);
             return true;
-        } else {
-            if (!habbo.getHabboStats().allowTalk() || (habbo.getHabboInfo().getCurrentRoom() != null && habbo.getHabboInfo().getCurrentRoom().isMuted(habbo))) {
-                if (!habbo.getHabboStats().allowTalk()) {
-                    habbo.unMute();
-                }
+        }
 
-                if (habbo.getHabboInfo().getCurrentRoom() != null && habbo.getHabboInfo().getCurrentRoom().isMuted(habbo)) {
-                    habbo.getHabboInfo().getCurrentRoom().muteHabbo(habbo, 1);
-                }
-
-                gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.succes.cmd_unmute").replace("%user%", params[1]), RoomChatMessageBubbles.ALERT);
-            } else {
-                gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_unmute.not_muted").replace("%user%", params[1]), RoomChatMessageBubbles.ALERT);
-                return true;
+        if (!habbo.getHabboStats().allowTalk() || (habbo.getHabboInfo().getCurrentRoom() != null && habbo.getHabboInfo().getCurrentRoom().isMuted(habbo))) {
+            if (!habbo.getHabboStats().allowTalk()) {
+                habbo.unMute();
             }
+
+            if (habbo.getHabboInfo().getCurrentRoom() != null && habbo.getHabboInfo().getCurrentRoom().isMuted(habbo)) {
+                habbo.getHabboInfo().getCurrentRoom().muteHabbo(habbo, 1);
+            }
+
+            gameClient.getHabbo().whisper(replaceUser(getTextsValue("commands.succes.cmd_unmute"), params[1]), RoomChatMessageBubbles.ALERT);
+        } else {
+            gameClient.getHabbo().whisper(replaceUser(getTextsValue("commands.error.cmd_unmute.not_muted"), params[1]), RoomChatMessageBubbles.ALERT);
+            return true;
         }
 
         return true;
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/UpdateAchievements.java b/src/main/java/com/eu/habbo/habbohotel/commands/UpdateAchievements.java
index 5631aa7f..88cf2fbf 100644
--- a/src/main/java/com/eu/habbo/habbohotel/commands/UpdateAchievements.java
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/UpdateAchievements.java
@@ -12,7 +12,7 @@ public class UpdateAchievements extends Command {
     @Override
     public boolean handle(GameClient gameClient, String[] params) {
         Emulator.getGameEnvironment().getAchievementManager().reload();
-        gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.succes.cmd_update_achievements.updated"), RoomChatMessageBubbles.ALERT);
+        gameClient.getHabbo().whisper(getTextsValue("commands.succes.cmd_update_achievements.updated"), RoomChatMessageBubbles.ALERT);
         return true;
     }
 }
\ No newline at end of file
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/UpdateCalendarCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/UpdateCalendarCommand.java
index 777234c2..d7d28215 100644
--- a/src/main/java/com/eu/habbo/habbohotel/commands/UpdateCalendarCommand.java
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/UpdateCalendarCommand.java
@@ -13,7 +13,7 @@ public class UpdateCalendarCommand extends Command {
     @Override
     public boolean handle(GameClient gameClient, String[] params) {
         Emulator.getGameEnvironment().getCalendarManager().reload();
-        gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.success.cmd_update_calendar"), RoomChatMessageBubbles.ALERT);
+        gameClient.getHabbo().whisper(getTextsValue("commands.success.cmd_update_calendar"), RoomChatMessageBubbles.ALERT);
         return true;
     }
 }
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/UpdateCatalogCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/UpdateCatalogCommand.java
index 4088a16e..11ab8c8e 100644
--- a/src/main/java/com/eu/habbo/habbohotel/commands/UpdateCatalogCommand.java
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/UpdateCatalogCommand.java
@@ -22,7 +22,7 @@ public class UpdateCatalogCommand extends Command {
         Emulator.getGameServer().getGameClientManager().sendBroadcastResponse(new GiftWrappingConfigurationComposer());
         Emulator.getGameServer().getGameClientManager().sendBroadcastResponse(new RecyclerPrizesComposer());
         Emulator.getGameEnvironment().getCraftingManager().reload();
-        gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.succes.cmd_update_catalog"), RoomChatMessageBubbles.ALERT);
+        gameClient.getHabbo().whisper(getTextsValue("commands.succes.cmd_update_catalog"), RoomChatMessageBubbles.ALERT);
         return true;
     }
 }
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/UpdateConfigCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/UpdateConfigCommand.java
index c1de3bce..f8502bf9 100644
--- a/src/main/java/com/eu/habbo/habbohotel/commands/UpdateConfigCommand.java
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/UpdateConfigCommand.java
@@ -13,7 +13,7 @@ public class UpdateConfigCommand extends Command {
     public boolean handle(GameClient gameClient, String[] params) {
         Emulator.getConfig().reload();
 
-        gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.succes.cmd_update_config"), RoomChatMessageBubbles.ALERT);
+        gameClient.getHabbo().whisper(getTextsValue("commands.succes.cmd_update_config"), RoomChatMessageBubbles.ALERT);
 
         return true;
     }
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/UpdateHotelViewCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/UpdateHotelViewCommand.java
index 72eab994..78edfe38 100644
--- a/src/main/java/com/eu/habbo/habbohotel/commands/UpdateHotelViewCommand.java
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/UpdateHotelViewCommand.java
@@ -13,7 +13,7 @@ public class UpdateHotelViewCommand extends Command {
         Emulator.getGameEnvironment().getHotelViewManager().getNewsList().reload();
         Emulator.getGameEnvironment().getHotelViewManager().getHallOfFame().reload();
 
-        gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.succes.cmd_update_hotel_view"));
+        gameClient.getHabbo().whisper(getTextsValue("commands.succes.cmd_update_hotel_view"));
 
         return true;
     }
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/UpdateItemsCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/UpdateItemsCommand.java
index 1e7c6f0c..8eb69620 100644
--- a/src/main/java/com/eu/habbo/habbohotel/commands/UpdateItemsCommand.java
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/UpdateItemsCommand.java
@@ -18,14 +18,12 @@ public class UpdateItemsCommand extends Command {
         Emulator.getGameEnvironment().getItemManager().loadSoundTracks();
 
         synchronized (Emulator.getGameEnvironment().getRoomManager().getActiveRooms()) {
-            for (Room room : Emulator.getGameEnvironment().getRoomManager().getActiveRooms()) {
-                if (room.isLoaded() && room.getUserCount() > 0 && room.getLayout() != null) {
-                    room.sendComposer(new HeightMapComposer(room).compose());
-                }
-            }
+            Emulator.getGameEnvironment().getRoomManager().getActiveRooms().stream()
+                    .filter(room -> room.isLoaded() && room.getUserCount() > 0 && room.getLayout() != null)
+                    .forEach(room -> room.sendComposer(new HeightMapComposer(room).compose()));
         }
 
-        gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.succes.cmd_update_items"), RoomChatMessageBubbles.ALERT);
+        gameClient.getHabbo().whisper(getTextsValue("commands.succes.cmd_update_items"), RoomChatMessageBubbles.ALERT);
 
         return true;
     }
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/UpdateNavigatorCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/UpdateNavigatorCommand.java
index b6f99dd7..991210e9 100644
--- a/src/main/java/com/eu/habbo/habbohotel/commands/UpdateNavigatorCommand.java
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/UpdateNavigatorCommand.java
@@ -14,7 +14,7 @@ public class UpdateNavigatorCommand extends Command {
         Emulator.getGameEnvironment().getNavigatorManager().loadNavigator();
         Emulator.getGameEnvironment().getRoomManager().loadRoomModels();
         Emulator.getGameEnvironment().getRoomManager().loadPublicRooms();
-        gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.succes.cmd_update_navigator"), RoomChatMessageBubbles.ALERT);
+        gameClient.getHabbo().whisper(getTextsValue("commands.succes.cmd_update_navigator"), RoomChatMessageBubbles.ALERT);
 
         return true;
     }
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/UpdatePermissionsCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/UpdatePermissionsCommand.java
index afc0f02c..5ec84097 100644
--- a/src/main/java/com/eu/habbo/habbohotel/commands/UpdatePermissionsCommand.java
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/UpdatePermissionsCommand.java
@@ -13,7 +13,7 @@ public class UpdatePermissionsCommand extends Command {
     public boolean handle(GameClient gameClient, String[] params) {
         Emulator.getGameEnvironment().getPermissionsManager().reload();
 
-        gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.succes.cmd_update_permissions"), RoomChatMessageBubbles.ALERT);
+        gameClient.getHabbo().whisper(getTextsValue("commands.succes.cmd_update_permissions"), RoomChatMessageBubbles.ALERT);
 
         return true;
     }
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/UpdatePetDataCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/UpdatePetDataCommand.java
index a972a3f5..7ace3c20 100644
--- a/src/main/java/com/eu/habbo/habbohotel/commands/UpdatePetDataCommand.java
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/UpdatePetDataCommand.java
@@ -13,7 +13,7 @@ public class UpdatePetDataCommand extends Command {
     public boolean handle(GameClient gameClient, String[] params) {
         Emulator.getGameEnvironment().getPetManager().reloadPetData();
 
-        gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.succes.cmd_update_pet_data"), RoomChatMessageBubbles.ALERT);
+        gameClient.getHabbo().whisper(getTextsValue("commands.succes.cmd_update_pet_data"), RoomChatMessageBubbles.ALERT);
 
         return true;
     }
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/UpdatePluginsCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/UpdatePluginsCommand.java
index 0e893bdb..a5bb09e3 100644
--- a/src/main/java/com/eu/habbo/habbohotel/commands/UpdatePluginsCommand.java
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/UpdatePluginsCommand.java
@@ -14,7 +14,7 @@ public class UpdatePluginsCommand extends Command {
         Emulator.getPluginManager().reload();
 
         gameClient.getHabbo().whisper("This is an unsafe command and could possibly lead to memory leaks.\rIt is recommended to restart the emulator in order to reload plugins.");
-        gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.succes.cmd_update_plugins").replace("%count%", Emulator.getPluginManager().getPlugins().size() + ""), RoomChatMessageBubbles.ALERT);
+        gameClient.getHabbo().whisper(getTextsValue("commands.succes.cmd_update_plugins").replace("%count%", Emulator.getPluginManager().getPlugins().size() + ""), RoomChatMessageBubbles.ALERT);
         return true;
     }
 }
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/UpdatePollsCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/UpdatePollsCommand.java
index 4d8dca2e..949d0779 100644
--- a/src/main/java/com/eu/habbo/habbohotel/commands/UpdatePollsCommand.java
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/UpdatePollsCommand.java
@@ -12,7 +12,7 @@ public class UpdatePollsCommand extends Command {
     @Override
     public boolean handle(GameClient gameClient, String[] params) {
         Emulator.getGameEnvironment().getPollManager().loadPolls();
-        gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.succes.cmd_update_polls"), RoomChatMessageBubbles.ALERT);
+        gameClient.getHabbo().whisper(getTextsValue("commands.succes.cmd_update_polls"), RoomChatMessageBubbles.ALERT);
         return true;
     }
 }
\ No newline at end of file
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/UpdateTextsCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/UpdateTextsCommand.java
index 98d1eec6..510bca33 100644
--- a/src/main/java/com/eu/habbo/habbohotel/commands/UpdateTextsCommand.java
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/UpdateTextsCommand.java
@@ -14,9 +14,9 @@ public class UpdateTextsCommand extends Command {
         try {
             Emulator.getTexts().reload();
             Emulator.getGameEnvironment().getCommandHandler().reloadCommands();
-            gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.succes.cmd_update_texts"), RoomChatMessageBubbles.ALERT);
+            gameClient.getHabbo().whisper(getTextsValue("commands.succes.cmd_update_texts"), RoomChatMessageBubbles.ALERT);
         } catch (Exception e) {
-            gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_update_texts.failed"), RoomChatMessageBubbles.ALERT);
+            gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_update_texts.failed"), RoomChatMessageBubbles.ALERT);
         }
 
         return true;
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/UpdateWordFilterCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/UpdateWordFilterCommand.java
index 6e21abef..9cd66cd7 100644
--- a/src/main/java/com/eu/habbo/habbohotel/commands/UpdateWordFilterCommand.java
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/UpdateWordFilterCommand.java
@@ -13,7 +13,7 @@ public class UpdateWordFilterCommand extends Command {
     public boolean handle(GameClient gameClient, String[] params) {
         Emulator.getGameEnvironment().getWordFilter().reload();
 
-        gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.succes.cmd_update_wordfilter"), RoomChatMessageBubbles.ALERT);
+        gameClient.getHabbo().whisper(getTextsValue("commands.succes.cmd_update_wordfilter"), RoomChatMessageBubbles.ALERT);
 
         return true;
     }
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/UpdateYoutubePlaylistsCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/UpdateYoutubePlaylistsCommand.java
index 9a48570a..aae0d920 100644
--- a/src/main/java/com/eu/habbo/habbohotel/commands/UpdateYoutubePlaylistsCommand.java
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/UpdateYoutubePlaylistsCommand.java
@@ -13,7 +13,7 @@ public class UpdateYoutubePlaylistsCommand extends Command {
     public boolean handle(GameClient gameClient, String[] params) {
         Emulator.getGameEnvironment().getItemManager().getYoutubeManager().load();
 
-        gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.succes.cmd_update_youtube_playlists"), RoomChatMessageBubbles.ALERT);
+        gameClient.getHabbo().whisper(getTextsValue("commands.succes.cmd_update_youtube_playlists"), RoomChatMessageBubbles.ALERT);
 
         return true;
     }
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/UserInfoCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/UserInfoCommand.java
index 92f14e57..643361ba 100644
--- a/src/main/java/com/eu/habbo/habbohotel/commands/UserInfoCommand.java
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/UserInfoCommand.java
@@ -21,7 +21,7 @@ public class UserInfoCommand extends Command {
     @Override
     public boolean handle(GameClient gameClient, String[] params) {
         if (params.length < 2) {
-            gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_userinfo.forgot_username"), RoomChatMessageBubbles.ALERT);
+            gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_userinfo.forgot_username"), RoomChatMessageBubbles.ALERT);
             return true;
         }
 
@@ -33,32 +33,32 @@ public class UserInfoCommand extends Command {
         }
 
         if (habbo == null) {
-            gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_userinfo.not_found").replace("%user%", params[1]), RoomChatMessageBubbles.ALERT);
+            gameClient.getHabbo().whisper(replaceUser(getTextsValue("commands.error.cmd_userinfo.not_found"), params[1]), RoomChatMessageBubbles.ALERT);
             return true;
         }
 
-        StringBuilder message = new StringBuilder(Emulator.getTexts().getValue("command.cmd_userinfo.userinfo") + ": " + " <b>" + habbo.getUsername() + "</b> (<b>" + habbo.getId() + "</b>)\r" +
-                Emulator.getTexts().getValue("command.cmd_userinfo.user_id") + ": " + habbo.getId() + "\r" +
-                Emulator.getTexts().getValue("command.cmd_userinfo.user_name") + ": " + habbo.getUsername() + "\r" +
-                Emulator.getTexts().getValue("command.cmd_userinfo.motto") + ": " + habbo.getMotto().replace("<", "[").replace(">", "]") + "\r" +
-                Emulator.getTexts().getValue("command.cmd_userinfo.rank") + ": " + habbo.getRank().getName() + " (" + habbo.getRank().getId() + ") \r" +
-                Emulator.getTexts().getValue("command.cmd_userinfo.online") + ": " + (onlineHabbo == null ? Emulator.getTexts().getValue("generic.no") : Emulator.getTexts().getValue("generic.yes")) + "\r" +
-                ((habbo.getRank().hasPermission(Permission.ACC_HIDE_MAIL, true)) ? "" : Emulator.getTexts().getValue("command.cmd_userinfo.email") + ": " + habbo.getMail() + "\r") +
-                ((habbo.getRank().hasPermission(Permission.ACC_HIDE_IP, true)) ? "" : Emulator.getTexts().getValue("command.cmd_userinfo.ip_register") + ": " + habbo.getIpRegister() + "\r") +
-                ((habbo.getRank().hasPermission(Permission.ACC_HIDE_IP, true)) || onlineHabbo == null ? "" : Emulator.getTexts().getValue("command.cmd_userinfo.ip_current") + ": " + onlineHabbo.getHabboInfo().getIpLogin() + "\r") +
-                (onlineHabbo != null ? Emulator.getTexts().getValue("command.cmd_userinfo.achievement_score") + ": " + onlineHabbo.getHabboStats().getAchievementScore() + "\r" : ""));
+        StringBuilder message = new StringBuilder(getTextsValue("command.cmd_userinfo.userinfo") + ": " + " <b>" + habbo.getUsername() + "</b> (<b>" + habbo.getId() + "</b>)\r" +
+                getTextsValue("command.cmd_userinfo.user_id") + ": " + habbo.getId() + "\r" +
+                getTextsValue("command.cmd_userinfo.user_name") + ": " + habbo.getUsername() + "\r" +
+                getTextsValue("command.cmd_userinfo.motto") + ": " + habbo.getMotto().replace("<", "[").replace(">", "]") + "\r" +
+                getTextsValue("command.cmd_userinfo.rank") + ": " + habbo.getRank().getName() + " (" + habbo.getRank().getId() + ") \r" +
+                getTextsValue("command.cmd_userinfo.online") + ": " + (onlineHabbo == null ? getTextsValue("generic.no") : getTextsValue("generic.yes")) + "\r" +
+                ((habbo.getRank().hasPermission(Permission.ACC_HIDE_MAIL, true)) ? "" : getTextsValue("command.cmd_userinfo.email") + ": " + habbo.getMail() + "\r") +
+                ((habbo.getRank().hasPermission(Permission.ACC_HIDE_IP, true)) ? "" : getTextsValue("command.cmd_userinfo.ip_register") + ": " + habbo.getIpRegister() + "\r") +
+                ((habbo.getRank().hasPermission(Permission.ACC_HIDE_IP, true)) || onlineHabbo == null ? "" : getTextsValue("command.cmd_userinfo.ip_current") + ": " + onlineHabbo.getHabboInfo().getIpLogin() + "\r") +
+                (onlineHabbo != null ? getTextsValue("command.cmd_userinfo.achievement_score") + ": " + onlineHabbo.getHabboStats().getAchievementScore() + "\r" : ""));
 
         ModToolBan ban = Emulator.getGameEnvironment().getModToolManager().checkForBan(habbo.getId());
 
-        message.append(Emulator.getTexts().getValue("command.cmd_userinfo.total_bans")).append(": ").append(Emulator.getGameEnvironment().getModToolManager().totalBans(habbo.getId())).append("\r");
-        message.append(Emulator.getTexts().getValue("command.cmd_userinfo.banned")).append(": ").append(Emulator.getTexts().getValue(ban != null ? "generic.yes" : "generic.no")).append("\r\r");
+        message.append(getTextsValue("command.cmd_userinfo.total_bans")).append(": ").append(Emulator.getGameEnvironment().getModToolManager().totalBans(habbo.getId())).append("\r");
+        message.append(getTextsValue("command.cmd_userinfo.banned")).append(": ").append(getTextsValue(ban != null ? "generic.yes" : "generic.no")).append("\r\r");
         if (ban != null) {
-            message.append("<b>").append(Emulator.getTexts().getValue("command.cmd_userinfo.ban_info")).append("</b>\r");
+            message.append("<b>").append(getTextsValue("command.cmd_userinfo.ban_info")).append("</b>\r");
             message.append(ban.listInfo()).append("\r");
         }
 
-        message.append("<b>").append(Emulator.getTexts().getValue("command.cmd_userinfo.currencies")).append("</b>\r");
-        message.append(Emulator.getTexts().getValue("command.cmd_userinfo.credits")).append(": ").append(habbo.getCredits()).append("\r");
+        message.append("<b>").append(getTextsValue("command.cmd_userinfo.currencies")).append("</b>\r");
+        message.append(getTextsValue("command.cmd_userinfo.credits")).append(": ").append(habbo.getCredits()).append("\r");
         TIntIntIterator iterator = habbo.getCurrencies().iterator();
 
         for (int i = habbo.getCurrencies().size(); i-- > 0; ) {
@@ -68,9 +68,9 @@ public class UserInfoCommand extends Command {
                 break;
             }
 
-            message.append(Emulator.getTexts().getValue("seasonal.name." + iterator.key())).append(": ").append(iterator.value()).append("\r");
+            message.append(getTextsValue("seasonal.name." + iterator.key())).append(": ").append(iterator.value()).append("\r");
         }
-        message.append("\r").append(onlineHabbo != null ? "<b>" + Emulator.getTexts().getValue("command.cmd_userinfo.current_activity") + "</b>\r" : "").append(onlineHabbo != null ? Emulator.getTexts().getValue("command.cmd_userinfo.room") + ": " + (onlineHabbo.getHabboInfo().getCurrentRoom() != null ? onlineHabbo.getHabboInfo().getCurrentRoom().getName() + "(" + onlineHabbo.getHabboInfo().getCurrentRoom().getId() + ")\r" : "-") : "").append(onlineHabbo != null ? Emulator.getTexts().getValue("command.cmd_userinfo.respect_left") + ": " + onlineHabbo.getHabboStats().getRespectPointsToGive() + "\r" : "").append(onlineHabbo != null ? Emulator.getTexts().getValue("command.cmd_userinfo.pet_respect_left") + ": " + onlineHabbo.getHabboStats().getPetRespectPointsToGive() + "\r" : "").append(onlineHabbo != null ? Emulator.getTexts().getValue("command.cmd_userinfo.allow_trade") + ": " + ((onlineHabbo.getHabboStats().allowTrade()) ? Emulator.getTexts().getValue("generic.yes") : Emulator.getTexts().getValue("generic.no")) + "\r" : "").append(onlineHabbo != null ? Emulator.getTexts().getValue("command.cmd_userinfo.allow_follow") + ": " + ((onlineHabbo.getHabboStats().isBlockFollowing()) ? Emulator.getTexts().getValue("generic.no") : Emulator.getTexts().getValue("generic.yes")) + "\r" : "").append(onlineHabbo != null ? Emulator.getTexts().getValue("command.cmd_userinfo.allow_friend_request") + ": " + ((onlineHabbo.getHabboStats().isBlockFriendRequests()) ? Emulator.getTexts().getValue("generic.no") : Emulator.getTexts().getValue("generic.yes")) + "\r" : "");
+        message.append("\r").append(onlineHabbo != null ? "<b>" + getTextsValue("command.cmd_userinfo.current_activity") + "</b>\r" : "").append(onlineHabbo != null ? getTextsValue("command.cmd_userinfo.room") + ": " + (onlineHabbo.getHabboInfo().getCurrentRoom() != null ? onlineHabbo.getHabboInfo().getCurrentRoom().getName() + "(" + onlineHabbo.getHabboInfo().getCurrentRoom().getId() + ")\r" : "-") : "").append(onlineHabbo != null ? getTextsValue("command.cmd_userinfo.respect_left") + ": " + onlineHabbo.getHabboStats().getRespectPointsToGive() + "\r" : "").append(onlineHabbo != null ? getTextsValue("command.cmd_userinfo.pet_respect_left") + ": " + onlineHabbo.getHabboStats().getPetRespectPointsToGive() + "\r" : "").append(onlineHabbo != null ? getTextsValue("command.cmd_userinfo.allow_trade") + ": " + ((onlineHabbo.getHabboStats().allowTrade()) ? getTextsValue("generic.yes") : getTextsValue("generic.no")) + "\r" : "").append(onlineHabbo != null ? getTextsValue("command.cmd_userinfo.allow_follow") + ": " + ((onlineHabbo.getHabboStats().isBlockFollowing()) ? getTextsValue("generic.no") : getTextsValue("generic.yes")) + "\r" : "").append(onlineHabbo != null ? getTextsValue("command.cmd_userinfo.allow_friend_request") + ": " + ((onlineHabbo.getHabboStats().isBlockFriendRequests()) ? getTextsValue("generic.no") : getTextsValue("generic.yes")) + "\r" : "");
 
         SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
         List<Map.Entry<Integer, String>> nameChanges = Emulator.getGameEnvironment().getHabboManager().getNameChanges(habbo.getId(), 3);
@@ -93,7 +93,7 @@ public class UserInfoCommand extends Command {
             message.append("<b>Username,\tID,\tDate register,\tDate last online</b>\r");
 
             for (HabboInfo info : users) {
-                message.append(info.getUsername()).append(",\t").append(info.getId()).append(",\t").append(format.format(new Date((long) info.getAccountCreated() * 1000L))).append(",\t").append(format.format(new Date((long) info.getLastOnline() * 1000L))).append("\r");
+                message.append(info.getUsername()).append(",\t").append(info.getId()).append(",\t").append(format.format(new Date(info.getAccountCreated() * 1000L))).append(",\t").append(format.format(new Date((long) info.getLastOnline() * 1000L))).append("\r");
             }
         }
         gameClient.getHabbo().alert(message.toString());
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/WordQuizCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/WordQuizCommand.java
index b116a49f..87afee6c 100644
--- a/src/main/java/com/eu/habbo/habbohotel/commands/WordQuizCommand.java
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/WordQuizCommand.java
@@ -15,7 +15,7 @@ public class WordQuizCommand extends Command {
     public boolean handle(GameClient gameClient, String[] params) {
         if (!gameClient.getHabbo().getHabboInfo().getCurrentRoom().hasActiveWordQuiz()) {
             if(params.length == 1) {
-                gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.description.cmd_word_quiz"), RoomChatMessageBubbles.ALERT);
+                gameClient.getHabbo().whisper(getTextsValue("commands.description.cmd_word_quiz"), RoomChatMessageBubbles.ALERT);
                 return  true;
             }
             StringBuilder question = new StringBuilder();
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/badge/BadgeCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/badge/BadgeCommand.java
index ea1bfdec..82325e6f 100644
--- a/src/main/java/com/eu/habbo/habbohotel/commands/badge/BadgeCommand.java
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/badge/BadgeCommand.java
@@ -24,22 +24,22 @@ public class BadgeCommand extends BaseBadgeCommand {
     @Override
     public boolean handle(GameClient gameClient, String[] params) {
         if (params.length == 1) {
-            gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_badge.forgot_username"), RoomChatMessageBubbles.ALERT);
+            gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_badge.forgot_username"), RoomChatMessageBubbles.ALERT);
             return true;
         }
         if (params.length == 2) {
-            gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_badge.forgot_badge").replace("%user%", params[1]), RoomChatMessageBubbles.ALERT);
+            gameClient.getHabbo().whisper(replaceUserAndBadge(getTextsValue("commands.error.cmd_badge.forgot_badge"), params[1], ""), RoomChatMessageBubbles.ALERT);
             return true;
         }
 
         if (params.length == 3) {
-            Habbo habbo = Emulator.getGameEnvironment().getHabboManager().getHabbo(params[1]);
+            Habbo habbo = getHabbo(params[1]);
 
             if (habbo != null) {
                 if (habbo.addBadge(params[2])) {
-                    gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.succes.cmd_badge.given").replace("%user%", params[1]).replace("%badge%", params[2]), RoomChatMessageBubbles.ALERT);
+                    gameClient.getHabbo().whisper(replaceUserAndBadge(getTextsValue("commands.succes.cmd_badge.given"), params[1], params[2]), RoomChatMessageBubbles.ALERT);
                 } else {
-                    gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_badge.already_owned").replace("%user%", params[1]).replace("%badge%", params[2]), RoomChatMessageBubbles.ALERT);
+                    gameClient.getHabbo().whisper(replaceUserAndBadge(getTextsValue("commands.error.cmd_badge.already_owned"), params[1], params[2]), RoomChatMessageBubbles.ALERT);
                 }
 
                 return true;
@@ -47,7 +47,7 @@ public class BadgeCommand extends BaseBadgeCommand {
                 HabboInfo habboInfo = HabboManager.getOfflineHabboInfo(params[1]);
 
                 if (habboInfo == null) {
-                    gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_badge.unknown_user"), RoomChatMessageBubbles.ALERT);
+                    gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_badge.unknown_user"), RoomChatMessageBubbles.ALERT);
                     return true;
                 }
 
@@ -63,7 +63,7 @@ public class BadgeCommand extends BaseBadgeCommand {
                     }
 
                     if (found) {
-                        gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_badge.already_owns").replace("%user%", params[1]).replace("%badge%", params[2]), RoomChatMessageBubbles.ALERT);
+                        gameClient.getHabbo().whisper(replaceUserAndBadge(getTextsValue("commands.error.cmd_badge.already_owns"), params[1], params[2]), RoomChatMessageBubbles.ALERT);
                     } else {
                         try (PreparedStatement statement = connection.prepareStatement("INSERT INTO users_badges (`id`, `user_id`, `slot_id`, `badge_code`) VALUES (null, ?, 0, ?)")) {
                             statement.setInt(1, habboInfo.getId());
@@ -71,7 +71,7 @@ public class BadgeCommand extends BaseBadgeCommand {
                             statement.execute();
                         }
 
-                        gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.succes.cmd_badge.given").replace("%user%", params[1]).replace("%badge%", params[2]), RoomChatMessageBubbles.ALERT);
+                        gameClient.getHabbo().whisper(replaceUserAndBadge(getTextsValue("commands.succes.cmd_badge.given"), params[1], params[2]), RoomChatMessageBubbles.ALERT);
                     }
                     return true;
                 } catch (SQLException e) {
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/badge/BaseBadgeCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/badge/BaseBadgeCommand.java
index d1269729..e930ff4a 100644
--- a/src/main/java/com/eu/habbo/habbohotel/commands/badge/BaseBadgeCommand.java
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/badge/BaseBadgeCommand.java
@@ -20,18 +20,20 @@ public abstract class BaseBadgeCommand extends Command {
         THashMap<String, String> keys = new THashMap<>();
         keys.put("display", "BUBBLE");
         keys.put("image", "${image.library.url}album1584/" + badge + ".gif");
-        keys.put("message", Emulator.getTexts().getValue("commands.generic.cmd_badge.received"));
+        keys.put("message", getTextsValue("commands.generic.cmd_badge.received"));
         return new NotificationDialogMessageComposer(BubbleAlertKeys.RECEIVED_BADGE.getKey(), keys).compose();
     }
 
     protected void sendBadgeToClient(String badge, ServerMessage message, Habbo habbo) {
-        if (habbo.isOnline()) {
-            if (habbo.getInventory() != null && habbo.getInventory().getBadgesComponent() != null && !habbo.getInventory().getBadgesComponent().hasBadge(badge)) {
-                HabboBadge b = BadgesComponent.createBadge(badge, habbo);
+        if (habbo.isOnline() && habbo.getInventory() != null && habbo.getInventory().getBadgesComponent() != null && !habbo.getInventory().getBadgesComponent().hasBadge(badge)) {
+            HabboBadge b = BadgesComponent.createBadge(badge, habbo);
 
-                habbo.getClient().sendResponse(new BadgeReceivedComposer(b));
-                habbo.getClient().sendResponse(message);
-            }
+            habbo.getClient().sendResponse(new BadgeReceivedComposer(b));
+            habbo.getClient().sendResponse(message);
         }
     }
+
+    protected String replaceUserAndBadge(String input, String name, String badge) {
+        return replaceUser(input, name).replace("%badge%", badge);
+    }
 }
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/badge/MassBadgeCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/badge/MassBadgeCommand.java
index ff93d9d8..05ae78ba 100644
--- a/src/main/java/com/eu/habbo/habbohotel/commands/badge/MassBadgeCommand.java
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/badge/MassBadgeCommand.java
@@ -38,7 +38,7 @@ public class MassBadgeCommand extends BaseBadgeCommand {
                 return true;
             }
         }
-        gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_massbadge.no_badge"), RoomChatMessageBubbles.ALERT);
+        gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_massbadge.no_badge"), RoomChatMessageBubbles.ALERT);
         return true;
 
 
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/badge/RoomBadgeCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/badge/RoomBadgeCommand.java
index d5b8e3c1..8156ca72 100644
--- a/src/main/java/com/eu/habbo/habbohotel/commands/badge/RoomBadgeCommand.java
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/badge/RoomBadgeCommand.java
@@ -1,17 +1,9 @@
 package com.eu.habbo.habbohotel.commands.badge;
 
 import com.eu.habbo.Emulator;
-import com.eu.habbo.habbohotel.commands.Command;
 import com.eu.habbo.habbohotel.gameclients.GameClient;
 import com.eu.habbo.habbohotel.rooms.RoomChatMessageBubbles;
-import com.eu.habbo.habbohotel.users.Habbo;
-import com.eu.habbo.habbohotel.users.HabboBadge;
-import com.eu.habbo.habbohotel.users.inventory.BadgesComponent;
 import com.eu.habbo.messages.ServerMessage;
-import com.eu.habbo.messages.outgoing.generic.alerts.BubbleAlertKeys;
-import com.eu.habbo.messages.outgoing.generic.alerts.NotificationDialogMessageComposer;
-import com.eu.habbo.messages.outgoing.users.BadgeReceivedComposer;
-import gnu.trove.map.hash.THashMap;
 
 public class RoomBadgeCommand extends BaseBadgeCommand {
     public RoomBadgeCommand() {
@@ -24,21 +16,18 @@ public class RoomBadgeCommand extends BaseBadgeCommand {
             return true;
 
         if (params.length == 2) {
-            String badge;
-
-            badge = params[1];
+            String badge = params[1];
 
             if (!badge.isEmpty()) {
                 ServerMessage message = createServerMessage(badge);
 
-                for (Habbo habbo : gameClient.getHabbo().getRoomUnit().getRoom().getHabbos()) {
-                    sendBadgeToClient(badge, message, habbo);
-                }
+                gameClient.getHabbo().getRoomUnit().getRoom().getHabbos()
+                        .forEach(habbo -> sendBadgeToClient(badge, message, habbo));
             }
             return true;
         }
 
-        gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_roombadge.no_badge"), RoomChatMessageBubbles.ALERT);
+        gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_roombadge.no_badge"), RoomChatMessageBubbles.ALERT);
         return true;
     }
 
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/TakeBadgeCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/badge/TakeBadgeCommand.java
similarity index 74%
rename from src/main/java/com/eu/habbo/habbohotel/commands/TakeBadgeCommand.java
rename to src/main/java/com/eu/habbo/habbohotel/commands/badge/TakeBadgeCommand.java
index 9a0a1845..a31802d8 100644
--- a/src/main/java/com/eu/habbo/habbohotel/commands/TakeBadgeCommand.java
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/badge/TakeBadgeCommand.java
@@ -1,6 +1,7 @@
-package com.eu.habbo.habbohotel.commands;
+package com.eu.habbo.habbohotel.commands.badge;
 
 import com.eu.habbo.Emulator;
+import com.eu.habbo.habbohotel.commands.Command;
 import com.eu.habbo.habbohotel.gameclients.GameClient;
 import com.eu.habbo.habbohotel.rooms.RoomChatMessageBubbles;
 import com.eu.habbo.habbohotel.users.Habbo;
@@ -11,7 +12,7 @@ import com.eu.habbo.habbohotel.users.inventory.BadgesComponent;
 import com.eu.habbo.messages.outgoing.inventory.BadgesComposer;
 import com.eu.habbo.messages.outgoing.users.UserBadgesComposer;
 
-public class TakeBadgeCommand extends Command {
+public class TakeBadgeCommand extends BaseBadgeCommand {
     public TakeBadgeCommand() {
         super("cmd_take_badge", Emulator.getTexts().getValue("commands.keys.cmd_take_badge").split(";"));
     }
@@ -19,10 +20,10 @@ public class TakeBadgeCommand extends Command {
     @Override
     public boolean handle(GameClient gameClient, String[] params) {
         if (params.length == 2) {
-            gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_take_badge.forgot_badge"), RoomChatMessageBubbles.ALERT);
+            gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_take_badge.forgot_badge"), RoomChatMessageBubbles.ALERT);
             return true;
         } else if (params.length == 1) {
-            gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_take_badge.forgot_username"), RoomChatMessageBubbles.ALERT);
+            gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_take_badge.forgot_username"), RoomChatMessageBubbles.ALERT);
             return true;
         }
 
@@ -36,7 +37,7 @@ public class TakeBadgeCommand extends Command {
                 HabboBadge b = habbo.getInventory().getBadgesComponent().removeBadge(badge);
 
                 if (b == null) {
-                    gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_take_badge.no_badge").replace("%username%", username).replace("%badge%", badge), RoomChatMessageBubbles.ALERT);
+                    gameClient.getHabbo().whisper(replaceUsername(getTextsValue("commands.error.cmd_take_badge.no_badge"), username).replace("%badge%", badge), RoomChatMessageBubbles.ALERT);
                     return true;
                 }
 
@@ -57,7 +58,7 @@ public class TakeBadgeCommand extends Command {
             }
 
             if (userId > 0) {
-                gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.succes.cmd_take_badge"), RoomChatMessageBubbles.ALERT);
+                gameClient.getHabbo().whisper(getTextsValue("commands.succes.cmd_take_badge"), RoomChatMessageBubbles.ALERT);
 
                 BadgesComponent.deleteBadge(userId, badge);
             }
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/bans/BanCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/bans/BanCommand.java
index 97570ce1..c24ed0f0 100644
--- a/src/main/java/com/eu/habbo/habbohotel/commands/bans/BanCommand.java
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/bans/BanCommand.java
@@ -10,6 +10,9 @@ import com.eu.habbo.habbohotel.users.Habbo;
 import com.eu.habbo.habbohotel.users.HabboInfo;
 import com.eu.habbo.habbohotel.users.HabboManager;
 
+import java.util.stream.Collectors;
+import java.util.stream.IntStream;
+
 public class BanCommand extends Command {
     public BanCommand() {
         super("cmd_ban", Emulator.getTexts().getValue("commands.keys.cmd_ban").split(";"));
@@ -18,12 +21,12 @@ public class BanCommand extends Command {
     @Override
     public boolean handle(GameClient gameClient, String[] params) {
         if (params.length < 2) {
-            gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_ban.forgot_user"), RoomChatMessageBubbles.ALERT);
+            gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_ban.forgot_user"), RoomChatMessageBubbles.ALERT);
             return true;
         }
 
         if (params.length < 3) {
-            gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_ban.forgot_time"), RoomChatMessageBubbles.ALERT);
+            gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_ban.forgot_time"), RoomChatMessageBubbles.ALERT);
             return true;
         }
 
@@ -31,21 +34,21 @@ public class BanCommand extends Command {
         try {
             banTime = Integer.parseInt(params[2]);
         } catch (Exception e) {
-            gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_ban.invalid_time"), RoomChatMessageBubbles.ALERT);
+            gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_ban.invalid_time"), RoomChatMessageBubbles.ALERT);
             return true;
         }
 
         if (banTime < 600) {
-            gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_ban.time_to_short"), RoomChatMessageBubbles.ALERT);
+            gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_ban.time_to_short"), RoomChatMessageBubbles.ALERT);
             return true;
         }
 
         if (params[1].equalsIgnoreCase(gameClient.getHabbo().getHabboInfo().getUsername())) {
-            gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_ban.ban_self"), RoomChatMessageBubbles.ALERT);
+            gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_ban.ban_self"), RoomChatMessageBubbles.ALERT);
             return true;
         }
 
-        Habbo t = Emulator.getGameEnvironment().getHabboManager().getHabbo(params[1]);
+        Habbo t = getHabbo(params[1]);
 
         HabboInfo target;
         if (t != null) {
@@ -55,26 +58,24 @@ public class BanCommand extends Command {
         }
 
         if (target == null) {
-            gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_ban.user_offline"), RoomChatMessageBubbles.ALERT);
+            gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_ban.user_offline"), RoomChatMessageBubbles.ALERT);
             return true;
         }
 
         if (target.getRank().getId() >= gameClient.getHabbo().getHabboInfo().getRank().getId()) {
-            gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_ban.target_rank_higher"), RoomChatMessageBubbles.ALERT);
+            gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_ban.target_rank_higher"), RoomChatMessageBubbles.ALERT);
             return true;
         }
 
 
-        StringBuilder reason = new StringBuilder();
+        String reason = "";
 
         if (params.length > 3) {
-            for (int i = 3; i < params.length; i++) {
-                reason.append(params[i]).append(" ");
-            }
+            reason = IntStream.range(3, params.length).mapToObj(i -> params[i] + " ").collect(Collectors.joining());
         }
 
-        ModToolBan ban = Emulator.getGameEnvironment().getModToolManager().ban(target.getId(), gameClient.getHabbo(), reason.toString(), banTime, ModToolBanType.ACCOUNT, -1).get(0);
-        gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.succes.cmd_ban.ban_issued").replace("%user%", target.getUsername()).replace("%time%", ban.getExpireDate() - Emulator.getIntUnixTimestamp() + "").replace("%reason%", ban.getReason()), RoomChatMessageBubbles.ALERT);
+        ModToolBan ban = Emulator.getGameEnvironment().getModToolManager().ban(target.getId(), gameClient.getHabbo(), reason, banTime, ModToolBanType.ACCOUNT, -1).get(0);
+        gameClient.getHabbo().whisper(replaceUser(getTextsValue("commands.succes.cmd_ban.ban_issued"), target.getUsername()).replace("%time%", ban.getExpireDate() - Emulator.getIntUnixTimestamp() + "").replace("%reason%", ban.getReason()), RoomChatMessageBubbles.ALERT);
 
         return true;
     }
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/bans/BaseBanCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/bans/BaseBanCommand.java
index 710f3650..749a8430 100644
--- a/src/main/java/com/eu/habbo/habbohotel/commands/bans/BaseBanCommand.java
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/bans/BaseBanCommand.java
@@ -7,8 +7,12 @@ import com.eu.habbo.habbohotel.users.Habbo;
 import com.eu.habbo.habbohotel.users.HabboInfo;
 import com.eu.habbo.habbohotel.users.HabboManager;
 
+import java.util.stream.Collectors;
+import java.util.stream.IntStream;
+
 
 public abstract class BaseBanCommand extends Command {
+    protected static final int TEN_YEARS = 315569260;
     protected HabboInfo habboInfo;
     protected String reason;
     protected int count;
@@ -25,22 +29,17 @@ public abstract class BaseBanCommand extends Command {
         return false;
     }
 
-    private String getReason(String[] params) {
-        StringBuilder reason = new StringBuilder();
-
+    protected String getReason(String[] params) {
         if (params.length > 2) {
-            for (int i = 2; i < params.length; i++) {
-                reason.append(params[i]);
-                reason.append(" ");
-            }
+            return IntStream.range(2, params.length).mapToObj(i -> params[i] + " ").collect(Collectors.joining());
         }
 
-        return reason.toString();
+        return "";
     }
 
     protected HabboInfo getHabboInfo(String[] params) {
         if (params.length >= 2) {
-            Habbo h = Emulator.getGameEnvironment().getHabboManager().getHabbo(params[1]);
+            Habbo h = getHabbo(params[1]);
 
             if (h != null) {
                 return h.getHabboInfo();
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/bans/IPBanCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/bans/IPBanCommand.java
new file mode 100644
index 00000000..c0e212f2
--- /dev/null
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/bans/IPBanCommand.java
@@ -0,0 +1,53 @@
+package com.eu.habbo.habbohotel.commands.bans;
+
+import com.eu.habbo.Emulator;
+import com.eu.habbo.habbohotel.commands.Command;
+import com.eu.habbo.habbohotel.gameclients.GameClient;
+import com.eu.habbo.habbohotel.modtool.ModToolBanType;
+import com.eu.habbo.habbohotel.rooms.RoomChatMessageBubbles;
+import com.eu.habbo.habbohotel.users.Habbo;
+import com.eu.habbo.habbohotel.users.HabboInfo;
+import com.eu.habbo.habbohotel.users.HabboManager;
+
+import java.util.stream.Collectors;
+import java.util.stream.IntStream;
+
+public class IPBanCommand extends BaseBanCommand {
+
+
+    public IPBanCommand() {
+        super("cmd_ip_ban", Emulator.getTexts().getValue("commands.keys.cmd_ip_ban").split(";"));
+    }
+
+    @Override
+    public boolean handle(GameClient gameClient, String[] params) {
+        int count = 0;
+        if (habboInfo != null) {
+            if (habboInfo == gameClient.getHabbo().getHabboInfo()) {
+                gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_ip_ban.ban_self"), RoomChatMessageBubbles.ALERT);
+                return true;
+            }
+
+            if (habboInfo.getRank().getId() >= gameClient.getHabbo().getHabboInfo().getRank().getId()) {
+                gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_ban.target_rank_higher"), RoomChatMessageBubbles.ALERT);
+                return true;
+            }
+
+            Emulator.getGameEnvironment().getModToolManager().ban(habboInfo.getId(), gameClient.getHabbo(), reason, TEN_YEARS, ModToolBanType.IP, -1);
+            count++;
+            for (Habbo h : Emulator.getGameServer().getGameClientManager().getHabbosWithIP(habboInfo.getIpLogin())) {
+                if (h != null) {
+                    count++;
+                    Emulator.getGameEnvironment().getModToolManager().ban(h.getHabboInfo().getId(), gameClient.getHabbo(), reason, TEN_YEARS, ModToolBanType.IP, -1);
+                }
+            }
+        } else {
+            gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_ban.user_offline"), RoomChatMessageBubbles.ALERT);
+            return true;
+        }
+
+        gameClient.getHabbo().whisper(getTextsValue("commands.succes.cmd_ip_ban").replace("%count%", count + ""), RoomChatMessageBubbles.ALERT);
+
+        return true;
+    }
+}
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/bans/MachineBanCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/bans/MachineBanCommand.java
index c67d5a59..a99ea7d7 100644
--- a/src/main/java/com/eu/habbo/habbohotel/commands/bans/MachineBanCommand.java
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/bans/MachineBanCommand.java
@@ -1,7 +1,6 @@
 package com.eu.habbo.habbohotel.commands.bans;
 
 import com.eu.habbo.Emulator;
-import com.eu.habbo.habbohotel.commands.IPBanCommand;
 import com.eu.habbo.habbohotel.gameclients.GameClient;
 import com.eu.habbo.habbohotel.modtool.ModToolBanType;
 import com.eu.habbo.habbohotel.rooms.RoomChatMessageBubbles;
@@ -17,22 +16,22 @@ public class MachineBanCommand extends BaseBanCommand {
 
         if (habboInfo != null) {
             if (habboInfo == gameClient.getHabbo().getHabboInfo()) {
-                gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_machine_ban.ban_self"), RoomChatMessageBubbles.ALERT);
+                gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_machine_ban.ban_self"), RoomChatMessageBubbles.ALERT);
                 return true;
             }
 
             if (habboInfo.getRank().getId() >= gameClient.getHabbo().getHabboInfo().getRank().getId()) {
-                gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_ban.target_rank_higher"), RoomChatMessageBubbles.ALERT);
+                gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_ban.target_rank_higher"), RoomChatMessageBubbles.ALERT);
                 return true;
             }
 
-            count = Emulator.getGameEnvironment().getModToolManager().ban(habboInfo.getId(), gameClient.getHabbo(), reason, IPBanCommand.TEN_YEARS, ModToolBanType.MACHINE, -1).size();
+            count = Emulator.getGameEnvironment().getModToolManager().ban(habboInfo.getId(), gameClient.getHabbo(), reason, TEN_YEARS, ModToolBanType.MACHINE, -1).size();
         } else {
-            gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_ban.user_offline"), RoomChatMessageBubbles.ALERT);
+            gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_ban.user_offline"), RoomChatMessageBubbles.ALERT);
             return true;
         }
 
-        gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.succes.cmd_machine_ban").replace("%count%", count + ""), RoomChatMessageBubbles.ALERT);
+        gameClient.getHabbo().whisper(getTextsValue("commands.succes.cmd_machine_ban").replace("%count%", count + ""), RoomChatMessageBubbles.ALERT);
 
         return true;
     }
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/bans/SuperbanCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/bans/SuperbanCommand.java
index b75f363c..1497d42a 100644
--- a/src/main/java/com/eu/habbo/habbohotel/commands/bans/SuperbanCommand.java
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/bans/SuperbanCommand.java
@@ -1,7 +1,6 @@
 package com.eu.habbo.habbohotel.commands.bans;
 
 import com.eu.habbo.Emulator;
-import com.eu.habbo.habbohotel.commands.IPBanCommand;
 import com.eu.habbo.habbohotel.gameclients.GameClient;
 import com.eu.habbo.habbohotel.modtool.ModToolBanType;
 import com.eu.habbo.habbohotel.rooms.RoomChatMessageBubbles;
@@ -17,22 +16,22 @@ public class SuperbanCommand extends BaseBanCommand {
 
         if (habboInfo != null) {
             if (habboInfo == gameClient.getHabbo().getHabboInfo()) {
-                gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_super_ban.ban_self"), RoomChatMessageBubbles.ALERT);
+                gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_super_ban.ban_self"), RoomChatMessageBubbles.ALERT);
                 return true;
             }
 
             if (habboInfo.getRank().getId() >= gameClient.getHabbo().getHabboInfo().getRank().getId()) {
-                gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_ban.target_rank_higher"), RoomChatMessageBubbles.ALERT);
+                gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_ban.target_rank_higher"), RoomChatMessageBubbles.ALERT);
                 return true;
             }
 
-            count = Emulator.getGameEnvironment().getModToolManager().ban(habboInfo.getId(), gameClient.getHabbo(), reason, IPBanCommand.TEN_YEARS, ModToolBanType.SUPER, -1).size();
+            count = Emulator.getGameEnvironment().getModToolManager().ban(habboInfo.getId(), gameClient.getHabbo(), reason, TEN_YEARS, ModToolBanType.SUPER, -1).size();
         } else {
-            gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_ban.user_offline"), RoomChatMessageBubbles.ALERT);
+            gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_ban.user_offline"), RoomChatMessageBubbles.ALERT);
             return true;
         }
 
-        gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.succes.cmd_super_ban").replace("%count%", count + ""), RoomChatMessageBubbles.ALERT);
+        gameClient.getHabbo().whisper(getTextsValue("commands.succes.cmd_super_ban").replace("%count%", count + ""), RoomChatMessageBubbles.ALERT);
 
         return true;
     }
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/credits/CreditsCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/credits/CreditsCommand.java
new file mode 100644
index 00000000..7da60d12
--- /dev/null
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/credits/CreditsCommand.java
@@ -0,0 +1,59 @@
+package com.eu.habbo.habbohotel.commands.credits;
+
+import com.eu.habbo.Emulator;
+import com.eu.habbo.habbohotel.gameclients.GameClient;
+import com.eu.habbo.habbohotel.rooms.RoomChatMessageBubbles;
+import com.eu.habbo.habbohotel.users.Habbo;
+import com.eu.habbo.habbohotel.users.HabboInfo;
+import com.eu.habbo.habbohotel.users.HabboManager;
+
+public class CreditsCommand extends BaseCreditsCommand {
+
+    private static final String INVALID_AMOUNT = "commands.error.cmd_credits.invalid_amount";
+
+    public CreditsCommand() {
+        super("cmd_credits", Emulator.getTexts().getValue("commands.keys.cmd_credits").split(";"));
+    }
+
+    @Override
+    public boolean handle(GameClient gameClient, String[] params) {
+        if (params.length == 3) {
+            HabboInfo info = HabboManager.getOfflineHabboInfo(params[1]);
+
+            if (info != null) {
+                Habbo habbo = getHabbo(params[1]);
+
+                int credits;
+                try {
+                    credits = Integer.parseInt(params[2]);
+                } catch (NumberFormatException e) {
+                    gameClient.getHabbo().whisper(getTextsValue(INVALID_AMOUNT), RoomChatMessageBubbles.ALERT);
+                    return true;
+                }
+                if (habbo != null) {
+                    if (credits != 0) {
+                        habbo.giveCredits(credits);
+                        if (habbo.getHabboInfo().getCurrentRoom() != null)
+                            habbo.whisper(replaceAmount(getTextsValue("commands.generic.cmd_credits.received"), params[2]), RoomChatMessageBubbles.ALERT);
+                        else
+                            habbo.alert(replaceAmount(getTextsValue("commands.generic.cmd_credits.received"), params[2]));
+
+                        gameClient.getHabbo().whisper(replaceUserAndAmount(getTextsValue("commands.succes.cmd_credits.send"), params[1], params[2]), RoomChatMessageBubbles.ALERT);
+
+                    } else {
+                        gameClient.getHabbo().whisper(getTextsValue(INVALID_AMOUNT), RoomChatMessageBubbles.ALERT);
+                    }
+                } else {
+                    Emulator.getGameEnvironment().getHabboManager().giveCredits(info.getId(), credits);
+                    gameClient.getHabbo().whisper(replaceUserAndAmount(getTextsValue("commands.succes.cmd_credits.send"), params[1], params[2]), RoomChatMessageBubbles.ALERT);
+
+                }
+            } else {
+                gameClient.getHabbo().whisper(replaceUserAndAmount(getTextsValue("commands.error.cmd_credits.user_not_found"), params[1], params[2]), RoomChatMessageBubbles.ALERT);
+            }
+        } else {
+            gameClient.getHabbo().whisper(getTextsValue(INVALID_AMOUNT), RoomChatMessageBubbles.ALERT);
+        }
+        return true;
+    }
+}
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/MassCreditsCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/credits/MassCreditsCommand.java
similarity index 67%
rename from src/main/java/com/eu/habbo/habbohotel/commands/MassCreditsCommand.java
rename to src/main/java/com/eu/habbo/habbohotel/commands/credits/MassCreditsCommand.java
index 5cb7f887..330952a9 100644
--- a/src/main/java/com/eu/habbo/habbohotel/commands/MassCreditsCommand.java
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/credits/MassCreditsCommand.java
@@ -1,6 +1,7 @@
-package com.eu.habbo.habbohotel.commands;
+package com.eu.habbo.habbohotel.commands.credits;
 
 import com.eu.habbo.Emulator;
+import com.eu.habbo.habbohotel.commands.Command;
 import com.eu.habbo.habbohotel.gameclients.GameClient;
 import com.eu.habbo.habbohotel.rooms.RoomChatMessageBubbles;
 import com.eu.habbo.habbohotel.users.Habbo;
@@ -8,7 +9,7 @@ import com.eu.habbo.messages.outgoing.users.CreditBalanceComposer;
 
 import java.util.Map;
 
-public class MassCreditsCommand extends Command {
+public class MassCreditsCommand extends BaseCreditsCommand {
     public MassCreditsCommand() {
         super("cmd_masscredits", Emulator.getTexts().getValue("commands.keys.cmd_masscredits").split(";"));
     }
@@ -21,7 +22,7 @@ public class MassCreditsCommand extends Command {
             try {
                 amount = Integer.parseInt(params[1]);
             } catch (Exception e) {
-                gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_masscredits.invalid_amount"), RoomChatMessageBubbles.ALERT);
+                gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_masscredits.invalid_amount"), RoomChatMessageBubbles.ALERT);
                 return true;
             }
 
@@ -33,12 +34,12 @@ public class MassCreditsCommand extends Command {
                     habbo.getClient().sendResponse(new CreditBalanceComposer(habbo));
 
                     if (habbo.getHabboInfo().getCurrentRoom() != null)
-                        habbo.whisper(Emulator.getTexts().getValue("commands.generic.cmd_credits.received").replace("%amount%", amount + ""), RoomChatMessageBubbles.ALERT);
+                        habbo.whisper(replaceAmount(getTextsValue("commands.generic.cmd_credits.received"), amount + ""), RoomChatMessageBubbles.ALERT);
                 }
             }
             return true;
         }
-        gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_masscredits.invalid_amount"), RoomChatMessageBubbles.ALERT);
+        gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_masscredits.invalid_amount"), RoomChatMessageBubbles.ALERT);
         return true;
     }
 }
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/RoomCreditsCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/credits/RoomCreditsCommand.java
similarity index 56%
rename from src/main/java/com/eu/habbo/habbohotel/commands/RoomCreditsCommand.java
rename to src/main/java/com/eu/habbo/habbohotel/commands/credits/RoomCreditsCommand.java
index 3b599c94..972a6d36 100644
--- a/src/main/java/com/eu/habbo/habbohotel/commands/RoomCreditsCommand.java
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/credits/RoomCreditsCommand.java
@@ -1,11 +1,12 @@
-package com.eu.habbo.habbohotel.commands;
+package com.eu.habbo.habbohotel.commands.credits;
 
 import com.eu.habbo.Emulator;
+import com.eu.habbo.habbohotel.commands.Command;
 import com.eu.habbo.habbohotel.gameclients.GameClient;
 import com.eu.habbo.habbohotel.rooms.RoomChatMessageBubbles;
 import com.eu.habbo.habbohotel.users.Habbo;
 
-public class RoomCreditsCommand extends Command {
+public class RoomCreditsCommand extends BaseCreditsCommand {
     public RoomCreditsCommand() {
         super("cmd_roomcredits", Emulator.getTexts().getValue("commands.keys.cmd_roomcredits").split(";"));
     }
@@ -18,20 +19,20 @@ public class RoomCreditsCommand extends Command {
             try {
                 amount = Integer.parseInt(params[1]);
             } catch (Exception e) {
-                gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_masscredits.invalid_amount"), RoomChatMessageBubbles.ALERT);
+                gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_masscredits.invalid_amount"), RoomChatMessageBubbles.ALERT);
                 return true;
             }
 
             if (amount != 0) {
-                final String message = Emulator.getTexts().getValue("commands.generic.cmd_credits.received").replace("%amount%", amount + "");
-                for (Habbo habbo : gameClient.getHabbo().getHabboInfo().getCurrentRoom().getHabbos()) {
+                final String message = replaceAmount(getTextsValue("commands.generic.cmd_credits.received"), amount + "");
+                gameClient.getHabbo().getHabboInfo().getCurrentRoom().getHabbos().forEach(habbo -> {
                     habbo.giveCredits(amount);
                     habbo.whisper(message, RoomChatMessageBubbles.ALERT);
-                }
+                });
             }
             return true;
         }
-        gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_masscredits.invalid_amount"), RoomChatMessageBubbles.ALERT);
+        gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_masscredits.invalid_amount"), RoomChatMessageBubbles.ALERT);
         return true;
     }
 }
\ No newline at end of file
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/gift/BaseGiftCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/gift/BaseGiftCommand.java
index 8447807b..604af266 100644
--- a/src/main/java/com/eu/habbo/habbohotel/commands/gift/BaseGiftCommand.java
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/gift/BaseGiftCommand.java
@@ -20,19 +20,19 @@ public abstract class BaseGiftCommand extends Command {
     protected boolean validateGiftCommand(GameClient gameClient, String[] params) {
         Integer itemId = getItemId(params);
         if (itemId == null) {
-            gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_gift.not_a_number"), RoomChatMessageBubbles.ALERT);
+            gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_gift.not_a_number"), RoomChatMessageBubbles.ALERT);
             return false;
         }
 
         if (itemId <= 0) {
-            gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_gift.not_a_number"), RoomChatMessageBubbles.ALERT);
+            gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_gift.not_a_number"), RoomChatMessageBubbles.ALERT);
             return false;
         }
 
         final Item baseItem = getBaseItem(itemId);
 
         if (baseItem == null) {
-            gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_gift.not_found").replace("%itemid%", itemId + ""), RoomChatMessageBubbles.ALERT);
+            gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_gift.not_found").replace("%itemid%", itemId + ""), RoomChatMessageBubbles.ALERT);
             return false;
         }
 
@@ -40,13 +40,11 @@ public abstract class BaseGiftCommand extends Command {
     }
 
     protected String getFinalMessage(String[] params) {
-        String message = "";
-
         if (params.length > 2) {
-            message = IntStream.range(2, params.length).mapToObj(i -> params[i] + " ").collect(Collectors.joining());
+            return IntStream.range(2, params.length).mapToObj(i -> params[i] + " ").collect(Collectors.joining());
         }
 
-        return message;
+        return "";
     }
 
     protected void createGift(String finalMessage, Habbo habbo, String[] params) {
@@ -54,8 +52,7 @@ public abstract class BaseGiftCommand extends Command {
 
         Item giftItem = Emulator.getGameEnvironment().getItemManager().getItem((Integer) Emulator.getGameEnvironment().getCatalogManager().giftFurnis.values().toArray()[Emulator.getRandom().nextInt(Emulator.getGameEnvironment().getCatalogManager().giftFurnis.size())]);
 
-        String extraData = "1\t" + item.getId();
-        extraData += "\t0\t0\t0\t" + finalMessage + "\t0\t0";
+        String extraData = "1\t" + item.getId() + "\t0\t0\t0\t" + finalMessage + "\t0\t0";
 
         Emulator.getGameEnvironment().getItemManager().createGift(habbo.getHabboInfo().getUsername(), giftItem, extraData, 0, 0);
 
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/gift/GiftCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/gift/GiftCommand.java
index 2c44f9ee..a2408e6b 100644
--- a/src/main/java/com/eu/habbo/habbohotel/commands/gift/GiftCommand.java
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/gift/GiftCommand.java
@@ -14,6 +14,9 @@ import com.eu.habbo.messages.outgoing.generic.alerts.NotificationDialogMessageCo
 import com.eu.habbo.messages.outgoing.inventory.FurniListInvalidateComposer;
 import gnu.trove.map.hash.THashMap;
 
+import java.util.stream.Collectors;
+import java.util.stream.IntStream;
+
 public class GiftCommand extends BaseGiftCommand {
     public GiftCommand() {
         super("cmd_gift", Emulator.getTexts().getValue("commands.keys.cmd_gift").split(";"));
@@ -28,49 +31,39 @@ public class GiftCommand extends BaseGiftCommand {
             try {
                 itemId = Integer.parseInt(params[2]);
             } catch (Exception e) {
-                gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_gift.not_a_number"), RoomChatMessageBubbles.ALERT);
+                gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_gift.not_a_number"), RoomChatMessageBubbles.ALERT);
                 return true;
             }
 
             if (itemId <= 0) {
-                gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_gift.not_a_number"), RoomChatMessageBubbles.ALERT);
+                gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_gift.not_a_number"), RoomChatMessageBubbles.ALERT);
                 return true;
             }
 
             Item baseItem = Emulator.getGameEnvironment().getItemManager().getItem(itemId);
 
             if (baseItem == null) {
-                gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_gift.not_found").replace("%itemid%", itemId + ""), RoomChatMessageBubbles.ALERT);
+                gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_gift.not_found").replace("%itemid%", itemId + ""), RoomChatMessageBubbles.ALERT);
                 return true;
             }
 
             HabboInfo habboInfo = HabboManager.getOfflineHabboInfo(username);
 
             if (habboInfo == null) {
-                gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_gift.user_not_found").replace("%username%", username), RoomChatMessageBubbles.ALERT);
+                gameClient.getHabbo().whisper(replaceUser(getTextsValue("commands.error.cmd_gift.user_not_found"), username), RoomChatMessageBubbles.ALERT);
                 return true;
             }
 
-            StringBuilder message = new StringBuilder();
-
-            if (params.length > 3) {
-                for (int i = 3; i < params.length; i++) {
-                    message.append(params[i]).append(" ");
-                }
-            }
-
-            final String finalMessage = message.toString();
+            String message = params.length > 3 ? IntStream.range(3, params.length).mapToObj(i -> params[i] + " ").collect(Collectors.joining()) : "";
 
             HabboItem item = Emulator.getGameEnvironment().getItemManager().createItem(0, baseItem, 0, 0, "");
-
             Item giftItem = Emulator.getGameEnvironment().getItemManager().getItem((Integer) Emulator.getGameEnvironment().getCatalogManager().giftFurnis.values().toArray()[Emulator.getRandom().nextInt(Emulator.getGameEnvironment().getCatalogManager().giftFurnis.size())]);
 
-            String extraData = "1\t" + item.getId();
-            extraData += "\t0\t0\t0\t" + finalMessage + "\t0\t0";
+            String extraData = "1\t" + item.getId() + "\t0\t0\t0\t" + message + "\t0\t0";
 
             Emulator.getGameEnvironment().getItemManager().createGift(username, giftItem, extraData, 0, 0);
 
-            gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.succes.cmd_gift").replace("%username%", username).replace("%itemname%", item.getBaseItem().getName()), RoomChatMessageBubbles.ALERT);
+            gameClient.getHabbo().whisper(replaceUser(getTextsValue("commands.succes.cmd_gift"), username).replace("%itemname%", item.getBaseItem().getName()), RoomChatMessageBubbles.ALERT);
 
             Habbo habbo = Emulator.getGameEnvironment().getHabboManager().getHabbo(habboInfo.getId());
 
@@ -80,7 +73,7 @@ public class GiftCommand extends BaseGiftCommand {
                 THashMap<String, String> keys = new THashMap<>();
                 keys.put("display", "BUBBLE");
                 keys.put("image", "${image.library.url}notifications/gift.gif");
-                keys.put("message", Emulator.getTexts().getValue("generic.gift.received.anonymous"));
+                keys.put("message", getTextsValue("generic.gift.received.anonymous"));
                 habbo.getClient().sendResponse(new NotificationDialogMessageComposer(BubbleAlertKeys.RECEIVED_BADGE.getKey(), keys));
             }
             return true;
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/gift/MassGiftCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/gift/MassGiftCommand.java
index 703c911d..e8341a76 100644
--- a/src/main/java/com/eu/habbo/habbohotel/commands/gift/MassGiftCommand.java
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/gift/MassGiftCommand.java
@@ -23,7 +23,7 @@ public class MassGiftCommand extends BaseGiftCommand {
     @Override
     public boolean handle(final GameClient gameClient, String[] params) {
         if (params.length >= 2) {
-            if(!validateGiftCommand(gameClient, params)){
+            if (!validateGiftCommand(gameClient, params)) {
                 return true;
             }
 
@@ -32,17 +32,14 @@ public class MassGiftCommand extends BaseGiftCommand {
             THashMap<String, String> keys = new THashMap<>();
             keys.put("display", "BUBBLE");
             keys.put("image", "${image.library.url}notifications/gift.gif");
-            keys.put("message", Emulator.getTexts().getValue("generic.gift.received.anonymous"));
+            keys.put("message", getTextsValue("generic.gift.received.anonymous"));
             ServerMessage giftNotificationMessage = new NotificationDialogMessageComposer(BubbleAlertKeys.RECEIVED_BADGE.getKey(), keys).compose();
 
-            Emulator.getThreading().run(() -> {
-                for (Map.Entry<Integer, Habbo> set : Emulator.getGameEnvironment().getHabboManager().getOnlineHabbos().entrySet()) {
-                    Habbo habbo = set.getValue();
-
-                    createGift(finalMessage, habbo, params);
-                    habbo.getClient().sendResponse(giftNotificationMessage);
-                }
-            });
+            Emulator.getThreading().run(() -> Emulator.getGameEnvironment().getHabboManager().getOnlineHabbos().values().forEach(habbo -> {
+                        createGift(finalMessage, habbo, params);
+                        habbo.getClient().sendResponse(giftNotificationMessage);
+                    })
+            );
 
 
             return true;
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/gift/RoomGiftCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/gift/RoomGiftCommand.java
index a234d20f..f9df93e1 100644
--- a/src/main/java/com/eu/habbo/habbohotel/commands/gift/RoomGiftCommand.java
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/gift/RoomGiftCommand.java
@@ -24,11 +24,11 @@ public class RoomGiftCommand extends BaseGiftCommand {
 
             final String finalMessage = getFinalMessage(params);
 
-            for (Habbo habbo : gameClient.getHabbo().getHabboInfo().getCurrentRoom().getHabbos()) {
-                createGift(finalMessage, habbo, params);
-
-                habbo.getClient().sendResponse(new WiredRewardResultMessageComposer(WiredRewardResultMessageComposer.REWARD_RECEIVED_ITEM));
-            }
+            gameClient.getHabbo().getHabboInfo().getCurrentRoom().getHabbos().forEach(habbo -> {
+                        createGift(finalMessage, habbo, params);
+                        habbo.getClient().sendResponse(new WiredRewardResultMessageComposer(WiredRewardResultMessageComposer.REWARD_RECEIVED_ITEM));
+                    }
+            );
 
             return true;
         }
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/MassPixelsCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/pixels/MassPixelsCommand.java
similarity index 65%
rename from src/main/java/com/eu/habbo/habbohotel/commands/MassPixelsCommand.java
rename to src/main/java/com/eu/habbo/habbohotel/commands/pixels/MassPixelsCommand.java
index 4c7c6a53..9011a3ca 100644
--- a/src/main/java/com/eu/habbo/habbohotel/commands/MassPixelsCommand.java
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/pixels/MassPixelsCommand.java
@@ -1,13 +1,14 @@
-package com.eu.habbo.habbohotel.commands;
+package com.eu.habbo.habbohotel.commands.pixels;
 
 import com.eu.habbo.Emulator;
+import com.eu.habbo.habbohotel.commands.Command;
 import com.eu.habbo.habbohotel.gameclients.GameClient;
 import com.eu.habbo.habbohotel.rooms.RoomChatMessageBubbles;
 import com.eu.habbo.habbohotel.users.Habbo;
 
 import java.util.Map;
 
-public class MassPixelsCommand extends Command {
+public class MassPixelsCommand extends BasePixelsCommand {
     public MassPixelsCommand() {
         super("cmd_massduckets", Emulator.getTexts().getValue("commands.keys.cmd_massduckets").split(";"));
     }
@@ -20,7 +21,7 @@ public class MassPixelsCommand extends Command {
             try {
                 amount = Integer.parseInt(params[1]);
             } catch (Exception e) {
-                gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_massduckets.invalid_amount"), RoomChatMessageBubbles.ALERT);
+                gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_massduckets.invalid_amount"), RoomChatMessageBubbles.ALERT);
                 return true;
             }
 
@@ -31,12 +32,12 @@ public class MassPixelsCommand extends Command {
                     habbo.givePixels(amount);
 
                     if (habbo.getHabboInfo().getCurrentRoom() != null)
-                        habbo.whisper(Emulator.getTexts().getValue("commands.generic.cmd_duckets.received").replace("%amount%", amount + ""), RoomChatMessageBubbles.ALERT);
+                        habbo.whisper(replaceAmount(getTextsValue("commands.generic.cmd_duckets.received"), amount + ""), RoomChatMessageBubbles.ALERT);
                 }
             }
             return true;
         }
-        gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_massduckets.invalid_amount"), RoomChatMessageBubbles.ALERT);
+        gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_massduckets.invalid_amount"), RoomChatMessageBubbles.ALERT);
         return true;
     }
 }
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/pixels/PixelCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/pixels/PixelCommand.java
new file mode 100644
index 00000000..de50f2c3
--- /dev/null
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/pixels/PixelCommand.java
@@ -0,0 +1,45 @@
+package com.eu.habbo.habbohotel.commands.pixels;
+
+import com.eu.habbo.Emulator;
+import com.eu.habbo.habbohotel.commands.Command;
+import com.eu.habbo.habbohotel.gameclients.GameClient;
+import com.eu.habbo.habbohotel.rooms.RoomChatMessageBubbles;
+import com.eu.habbo.habbohotel.users.Habbo;
+
+public class PixelCommand extends BasePixelsCommand {
+    public PixelCommand() {
+        super("cmd_duckets", Emulator.getTexts().getValue("commands.keys.cmd_duckets").split(";"));
+    }
+
+    @Override
+    public boolean handle(GameClient gameClient, String[] params) {
+        if (params.length != 3) {
+            gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_duckets.invalid_amount"), RoomChatMessageBubbles.ALERT);
+            return true;
+        }
+        Habbo habbo = getHabbo(params[1]);
+
+        if (habbo != null) {
+            try {
+                if (Integer.parseInt(params[2]) != 0) {
+                    habbo.givePixels(Integer.parseInt(params[2]));
+                    if (habbo.getHabboInfo().getCurrentRoom() != null)
+                        habbo.whisper(replaceAmount(getTextsValue("commands.generic.cmd_duckets.received"), params[2]), RoomChatMessageBubbles.ALERT);
+                    else
+                        habbo.alert(replaceAmount(getTextsValue("commands.generic.cmd_duckets.received"), params[2]));
+
+                    gameClient.getHabbo().whisper(replaceUserAndAmount(getTextsValue("commands.succes.cmd_duckets.send"), params[1], params[2]), RoomChatMessageBubbles.ALERT);
+
+                } else {
+                    gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_duckets.invalid_amount"), RoomChatMessageBubbles.ALERT);
+                }
+            } catch (NumberFormatException e) {
+                gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_duckets.invalid_amount"), RoomChatMessageBubbles.ALERT);
+            }
+        } else {
+            gameClient.getHabbo().whisper(replaceUser(getTextsValue("commands.error.cmd_duckets.user_offline"), params[1]), RoomChatMessageBubbles.ALERT);
+        }
+
+        return true;
+    }
+}
\ No newline at end of file
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/RoomPixelsCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/pixels/RoomPixelsCommand.java
similarity index 55%
rename from src/main/java/com/eu/habbo/habbohotel/commands/RoomPixelsCommand.java
rename to src/main/java/com/eu/habbo/habbohotel/commands/pixels/RoomPixelsCommand.java
index 644dab8b..a771f052 100644
--- a/src/main/java/com/eu/habbo/habbohotel/commands/RoomPixelsCommand.java
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/pixels/RoomPixelsCommand.java
@@ -1,11 +1,12 @@
-package com.eu.habbo.habbohotel.commands;
+package com.eu.habbo.habbohotel.commands.pixels;
 
 import com.eu.habbo.Emulator;
+import com.eu.habbo.habbohotel.commands.Command;
 import com.eu.habbo.habbohotel.gameclients.GameClient;
 import com.eu.habbo.habbohotel.rooms.RoomChatMessageBubbles;
 import com.eu.habbo.habbohotel.users.Habbo;
 
-public class RoomPixelsCommand extends Command {
+public class RoomPixelsCommand extends BasePixelsCommand {
     public RoomPixelsCommand() {
         super("cmd_roompixels", Emulator.getTexts().getValue("commands.keys.cmd_roompixels").split(";"));
     }
@@ -18,20 +19,20 @@ public class RoomPixelsCommand extends Command {
             try {
                 amount = Integer.parseInt(params[1]);
             } catch (Exception e) {
-                gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_massduckets.invalid_amount"), RoomChatMessageBubbles.ALERT);
+                gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_massduckets.invalid_amount"), RoomChatMessageBubbles.ALERT);
                 return true;
             }
 
             if (amount != 0) {
-                final String message = Emulator.getTexts().getValue("commands.generic.cmd_duckets.received").replace("%amount%", amount + "");
-                for (Habbo habbo : gameClient.getHabbo().getHabboInfo().getCurrentRoom().getHabbos()) {
+                final String message = replaceAmount(getTextsValue("commands.generic.cmd_duckets.received"), amount + "");
+                gameClient.getHabbo().getHabboInfo().getCurrentRoom().getHabbos().forEach(habbo -> {
                     habbo.givePixels(amount);
                     habbo.whisper(message, RoomChatMessageBubbles.ALERT);
-                }
+                });
             }
             return true;
         }
-        gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_massduckets.invalid_amount"), RoomChatMessageBubbles.ALERT);
+        gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_massduckets.invalid_amount"), RoomChatMessageBubbles.ALERT);
         return true;
     }
 }
\ No newline at end of file
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/points/BasePointsCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/points/BasePointsCommand.java
index b3c6fb2d..4f657b6d 100644
--- a/src/main/java/com/eu/habbo/habbohotel/commands/points/BasePointsCommand.java
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/points/BasePointsCommand.java
@@ -3,7 +3,16 @@ package com.eu.habbo.habbohotel.commands.points;
 import com.eu.habbo.habbohotel.commands.Command;
 
 public abstract class BasePointsCommand extends Command {
+
     public BasePointsCommand(String permission, String[] keys) {
         super(permission, keys);
     }
+
+    protected String replaceAmountAndType(String input, String amount, String type) {
+        return input.replace("%amount%", amount).replace("%type%", type);
+    }
+
+    protected String replaceUserAndAmountAndType(String input, String user, String amount, String type) {
+        return replaceAmountAndType(replaceUser(input, user), amount, type);
+    }
 }
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/points/MassPointsCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/points/MassPointsCommand.java
index 9300805e..e9a0264e 100644
--- a/src/main/java/com/eu/habbo/habbohotel/commands/points/MassPointsCommand.java
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/points/MassPointsCommand.java
@@ -22,14 +22,14 @@ public class MassPointsCommand extends BasePointsCommand {
             try {
                 type = Integer.parseInt(params[2]);
             } catch (Exception e) {
-                gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_masspoints.invalid_type").replace("%types%", Emulator.getConfig().getValue("seasonal.types").replace(";", ", ")), RoomChatMessageBubbles.ALERT);
+                gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_masspoints.invalid_type").replace("%types%", Emulator.getConfig().getValue("seasonal.types").replace(";", ", ")), RoomChatMessageBubbles.ALERT);
                 return true;
             }
 
         } else if (params.length == 2) {
             amountString = params[1];
         } else {
-            gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_masspoints.invalid_amount"), RoomChatMessageBubbles.ALERT);
+            gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_masspoints.invalid_amount"), RoomChatMessageBubbles.ALERT);
             return true;
         }
 
@@ -42,7 +42,7 @@ public class MassPointsCommand extends BasePointsCommand {
         }
 
         if (!found) {
-            gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_masspoints.invalid_type").replace("%types%", Emulator.getConfig().getValue("seasonal.types").replace(";", ", ")), RoomChatMessageBubbles.ALERT);
+            gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_masspoints.invalid_type").replace("%types%", Emulator.getConfig().getValue("seasonal.types").replace(";", ", ")), RoomChatMessageBubbles.ALERT);
             return true;
         }
 
@@ -51,15 +51,14 @@ public class MassPointsCommand extends BasePointsCommand {
         try {
             amount = Integer.parseInt(amountString);
         } catch (Exception e) {
-            gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_masspoints.invalid_amount"), RoomChatMessageBubbles.ALERT);
+            gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_masspoints.invalid_amount"), RoomChatMessageBubbles.ALERT);
             return true;
         }
 
         if (amount != 0) {
-            String message = Emulator.getTexts().getValue("commands.generic.cmd_points.received").replace("%amount%", amount + "").replace("%type%", Emulator.getTexts().getValue("seasonal.name." + type));
+            String message = replaceAmountAndType(getTextsValue("commands.generic.cmd_points.received"), amount + "", Emulator.getTexts().getValue("seasonal.name." + type));
 
-            for (Map.Entry<Integer, Habbo> set : Emulator.getGameEnvironment().getHabboManager().getOnlineHabbos().entrySet()) {
-                Habbo habbo = set.getValue();
+            for (Habbo habbo : Emulator.getGameEnvironment().getHabboManager().getOnlineHabbos().values()) {
                 habbo.givePoints(type, amount);
 
                 if (habbo.getHabboInfo().getCurrentRoom() != null)
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/points/PointsCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/points/PointsCommand.java
index 9ab11d83..044abf67 100644
--- a/src/main/java/com/eu/habbo/habbohotel/commands/points/PointsCommand.java
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/points/PointsCommand.java
@@ -1,12 +1,14 @@
 package com.eu.habbo.habbohotel.commands.points;
 
 import com.eu.habbo.Emulator;
-import com.eu.habbo.habbohotel.commands.Command;
 import com.eu.habbo.habbohotel.gameclients.GameClient;
 import com.eu.habbo.habbohotel.rooms.RoomChatMessageBubbles;
 import com.eu.habbo.habbohotel.users.Habbo;
 
 public class PointsCommand extends BasePointsCommand {
+
+    private static final String INVALID_AMOUNT_TEXTS = "commands.error.cmd_points.invalid_amount";
+
     public PointsCommand() {
         super("cmd_points", Emulator.getTexts().getValue("commands.keys.cmd_points").split(";"));
     }
@@ -14,15 +16,15 @@ public class PointsCommand extends BasePointsCommand {
     @Override
     public boolean handle(GameClient gameClient, String[] params) {
         if (params.length < 3) {
-            gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_points.invalid_amount"), RoomChatMessageBubbles.ALERT);
+            gameClient.getHabbo().whisper(getTextsValue(INVALID_AMOUNT_TEXTS), RoomChatMessageBubbles.ALERT);
             return true;
         }
 
-        Habbo habbo = Emulator.getGameServer().getGameClientManager().getHabbo(params[1]);
+        Habbo habbo = getHabbo(params[1]);
 
         if (habbo == null) {
-            gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_points.user_offline").replace("%user%", params[1]), RoomChatMessageBubbles.ALERT);
-            return  true;
+            gameClient.getHabbo().whisper(replaceUser(getTextsValue("commands.error.cmd_points.user_offline"), params[1]), RoomChatMessageBubbles.ALERT);
+            return true;
         }
 
         try {
@@ -32,7 +34,7 @@ public class PointsCommand extends BasePointsCommand {
                 try {
                     type = Integer.parseInt(params[3]);
                 } catch (NumberFormatException e) {
-                    gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_points.invalid_type").replace("%types%", Emulator.getConfig().getValue("seasonal.types").replace(";", ", ")), RoomChatMessageBubbles.ALERT);
+                    gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_points.invalid_type").replace("%types%", Emulator.getConfig().getValue("seasonal.types").replace(";", ", ")), RoomChatMessageBubbles.ALERT);
                     return true;
                 }
             }
@@ -40,7 +42,7 @@ public class PointsCommand extends BasePointsCommand {
             try {
                 amount = Integer.parseInt(params[2]);
             } catch (NumberFormatException e) {
-                gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_points.invalid_amount"), RoomChatMessageBubbles.ALERT);
+                gameClient.getHabbo().whisper(getTextsValue(INVALID_AMOUNT_TEXTS), RoomChatMessageBubbles.ALERT);
                 return true;
             }
 
@@ -48,19 +50,17 @@ public class PointsCommand extends BasePointsCommand {
                 habbo.givePoints(type, amount);
 
                 if (habbo.getHabboInfo().getCurrentRoom() != null)
-                    habbo.whisper(Emulator.getTexts().getValue("commands.generic.cmd_points.received").replace("%amount%", amount + "").replace("%type%", Emulator.getTexts().getValue("seasonal.name." + type)), RoomChatMessageBubbles.ALERT);
+                    habbo.whisper(replaceAmountAndType(getTextsValue("commands.generic.cmd_points.received"), amount + "", getTextsValue("seasonal.name." + type)), RoomChatMessageBubbles.ALERT);
                 else
-                    habbo.alert(Emulator.getTexts().getValue("commands.generic.cmd_points.received").replace("%amount%", amount + "").replace("%type%", Emulator.getTexts().getValue("seasonal.name." + type)));
+                    habbo.alert(replaceAmountAndType(getTextsValue("commands.generic.cmd_points.received"), amount + "", getTextsValue("seasonal.name." + type)));
 
-                // habbo.getClient().sendResponse(new UserPointsComposer(habbo.getHabboInfo().getCurrencyAmount(type), amount, type));
-
-                gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.succes.cmd_points.send").replace("%amount%", amount + "").replace("%user%", params[1]).replace("%type%", Emulator.getTexts().getValue("seasonal.name." + type)), RoomChatMessageBubbles.ALERT);
+                gameClient.getHabbo().whisper(replaceUserAndAmountAndType(getTextsValue("commands.succes.cmd_points.send"), params[1], amount + "", getTextsValue("seasonal.name." + type)), RoomChatMessageBubbles.ALERT);
 
             } else {
-                gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_points.invalid_amount"), RoomChatMessageBubbles.ALERT);
+                gameClient.getHabbo().whisper(getTextsValue(INVALID_AMOUNT_TEXTS), RoomChatMessageBubbles.ALERT);
             }
         } catch (NumberFormatException e) {
-            gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_points.invalid_amount"), RoomChatMessageBubbles.ALERT);
+            gameClient.getHabbo().whisper(getTextsValue(INVALID_AMOUNT_TEXTS), RoomChatMessageBubbles.ALERT);
         }
 
         return true;
diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/points/RoomPointsCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/points/RoomPointsCommand.java
index c241c299..90528818 100644
--- a/src/main/java/com/eu/habbo/habbohotel/commands/points/RoomPointsCommand.java
+++ b/src/main/java/com/eu/habbo/habbohotel/commands/points/RoomPointsCommand.java
@@ -21,13 +21,13 @@ public class RoomPointsCommand extends BasePointsCommand {
 
                 type = Integer.parseInt(params[2]);
             } catch (Exception e) {
-                gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_masspoints.invalid_type").replace("%types%", Emulator.getConfig().getValue("seasonal.types").replace(";", ", ")), RoomChatMessageBubbles.ALERT);
+                gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_masspoints.invalid_type").replace("%types%", Emulator.getConfig().getValue("seasonal.types").replace(";", ", ")), RoomChatMessageBubbles.ALERT);
                 return true;
             }
         } else if (params.length == 2) {
             amountString = params[1];
         } else {
-            gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_masspoints.invalid_amount"), RoomChatMessageBubbles.ALERT);
+            gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_masspoints.invalid_amount"), RoomChatMessageBubbles.ALERT);
             return true;
         }
 
@@ -40,7 +40,7 @@ public class RoomPointsCommand extends BasePointsCommand {
         }
 
         if (!found) {
-            gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_masspoints.invalid_type").replace("%types%", Emulator.getConfig().getValue("seasonal.types").replace(";", ", ")), RoomChatMessageBubbles.ALERT);
+            gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_masspoints.invalid_type").replace("%types%", Emulator.getConfig().getValue("seasonal.types").replace(";", ", ")), RoomChatMessageBubbles.ALERT);
             return true;
         }
 
@@ -49,12 +49,12 @@ public class RoomPointsCommand extends BasePointsCommand {
         try {
             amount = Integer.parseInt(amountString);
         } catch (Exception e) {
-            gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_masspoints.invalid_amount"), RoomChatMessageBubbles.ALERT);
+            gameClient.getHabbo().whisper(getTextsValue("commands.error.cmd_masspoints.invalid_amount"), RoomChatMessageBubbles.ALERT);
             return true;
         }
 
         if (amount != 0) {
-            final String message = Emulator.getTexts().getValue("commands.generic.cmd_points.received").replace("%amount%", amount + "").replace("%type%", Emulator.getTexts().getValue("seasonal.name." + type));
+            final String message = replaceAmountAndType(getTextsValue("commands.generic.cmd_points.received"), amount + "", getTextsValue("seasonal.name." + type));
 
             for (Habbo habbo : gameClient.getHabbo().getHabboInfo().getCurrentRoom().getHabbos()) {
                 habbo.givePoints(type, amount);
diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionFurniHaveFurni.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionFurniHaveFurni.java
index 53b108ae..752454a8 100644
--- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionFurniHaveFurni.java
+++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionFurniHaveFurni.java
@@ -15,8 +15,9 @@ import gnu.trove.set.hash.THashSet;
 
 import java.sql.ResultSet;
 import java.sql.SQLException;
+import java.util.Arrays;
 import java.util.List;
-import java.util.stream.Collectors;
+import java.util.Objects;
 
 public class WiredConditionFurniHaveFurni extends InteractionWiredCondition {
     public static final WiredConditionType type = WiredConditionType.FURNI_HAS_FURNI;
@@ -38,17 +39,16 @@ public class WiredConditionFurniHaveFurni extends InteractionWiredCondition {
     public boolean execute(RoomUnit roomUnit, Room room, Object[] stuff) {
         this.refresh();
 
-        if(this.items.isEmpty())
+        if (this.items.isEmpty())
             return true;
 
-        if(this.all) {
+        if (this.all) {
             return this.items.stream().allMatch(item -> {
                 double minZ = item.getZ() + Item.getCurrentHeight(item);
                 THashSet<RoomTile> occupiedTiles = room.getLayout().getTilesAt(room.getLayout().getTile(item.getX(), item.getY()), item.getBaseItem().getWidth(), item.getBaseItem().getLength(), item.getRotation());
                 return occupiedTiles.stream().anyMatch(tile -> room.getItemsAt(tile).stream().anyMatch(matchedItem -> matchedItem != item && matchedItem.getZ() >= minZ));
             });
-        }
-        else {
+        } else {
             return this.items.stream().anyMatch(item -> {
                 double minZ = item.getZ() + Item.getCurrentHeight(item);
                 THashSet<RoomTile> occupiedTiles = room.getLayout().getTilesAt(room.getLayout().getTile(item.getX(), item.getY()), item.getBaseItem().getWidth(), item.getBaseItem().getLength(), item.getRotation());
@@ -62,7 +62,7 @@ public class WiredConditionFurniHaveFurni extends InteractionWiredCondition {
         this.refresh();
         return WiredHandler.getGsonBuilder().create().toJson(new JsonData(
                 this.all,
-                this.items.stream().map(HabboItem::getId).collect(Collectors.toList())
+                this.items.stream().map(HabboItem::getId).toList()
         ));
     }
 
@@ -74,13 +74,7 @@ public class WiredConditionFurniHaveFurni extends InteractionWiredCondition {
             JsonData data = WiredHandler.getGsonBuilder().create().fromJson(wiredData, JsonData.class);
             this.all = data.all;
 
-            for(int id : data.itemIds) {
-                HabboItem item = room.getHabboItem(id);
-
-                if (item != null) {
-                    this.items.add(item);
-                }
-            }
+            data.itemIds.stream().mapToInt(id -> id).mapToObj(room::getHabboItem).filter(Objects::nonNull).forEach(this.items::add);
 
         } else {
             String[] data = wiredData.split(":");
@@ -89,14 +83,8 @@ public class WiredConditionFurniHaveFurni extends InteractionWiredCondition {
                 this.all = (data[0].equals("1"));
 
                 if (data.length == 2) {
-                    String[] items = data[1].split(";");
-
-                    for (String s : items) {
-                        HabboItem item = room.getHabboItem(Integer.parseInt(s));
-
-                        if (item != null)
-                            this.items.add(item);
-                    }
+                    String[] itemsSplit = data[1].split(";");
+                    Arrays.stream(itemsSplit).map(s -> room.getHabboItem(Integer.parseInt(s))).filter(Objects::nonNull).forEach(this.items::add);
                 }
             }
         }
@@ -137,7 +125,7 @@ public class WiredConditionFurniHaveFurni extends InteractionWiredCondition {
 
     @Override
     public boolean saveData(WiredSettings settings) {
-        if(settings.getIntParams().length < 1) return false;
+        if (settings.getIntParams().length < 1) return false;
 
         this.all = settings.getIntParams()[0] == 1;
 
@@ -162,21 +150,8 @@ public class WiredConditionFurniHaveFurni extends InteractionWiredCondition {
     }
 
     private void refresh() {
-        THashSet<HabboItem> items = new THashSet<>();
-
         Room room = Emulator.getGameEnvironment().getRoomManager().getRoom(this.getRoomId());
-        if (room == null) {
-            items.addAll(this.items);
-        } else {
-            for (HabboItem item : this.items) {
-                if (room.getHabboItem(item.getId()) == null)
-                    items.add(item);
-            }
-        }
-
-        for (HabboItem item : items) {
-            this.items.remove(item);
-        }
+        this.items.removeIf(i -> room.getHabboItem(i.getId()) == null);
     }
 
     static class JsonData {
diff --git a/src/main/java/com/eu/habbo/habbohotel/pets/actions/ActionBreed.java b/src/main/java/com/eu/habbo/habbohotel/pets/actions/ActionBreed.java
index a6f014dd..7eb182de 100644
--- a/src/main/java/com/eu/habbo/habbohotel/pets/actions/ActionBreed.java
+++ b/src/main/java/com/eu/habbo/habbohotel/pets/actions/ActionBreed.java
@@ -18,11 +18,9 @@ public class ActionBreed extends PetAction {
     public boolean apply(Pet pet, Habbo habbo, String[] data) {
         InteractionPetBreedingNest nest = null;
         for (HabboItem item : pet.getRoom().getRoomSpecialTypes().getItemsOfType(InteractionPetBreedingNest.class)) {
-            if (StringUtils.containsIgnoreCase(item.getBaseItem().getName(), pet.getPetData().getName())) {
-                if (!((InteractionPetBreedingNest) item).boxFull()) {
-                    nest = (InteractionPetBreedingNest) item;
-                    break;
-                }
+            if (StringUtils.containsIgnoreCase(item.getBaseItem().getName(), pet.getPetData().getName()) && !((InteractionPetBreedingNest) item).boxFull()) {
+                nest = (InteractionPetBreedingNest) item;
+                break;
             }
         }
 
diff --git a/src/main/java/com/eu/habbo/habbohotel/rooms/RoomUnit.java b/src/main/java/com/eu/habbo/habbohotel/rooms/RoomUnit.java
index 4020f2eb..c0437373 100644
--- a/src/main/java/com/eu/habbo/habbohotel/rooms/RoomUnit.java
+++ b/src/main/java/com/eu/habbo/habbohotel/rooms/RoomUnit.java
@@ -100,6 +100,9 @@ public class RoomUnit {
     @Getter
     private boolean fastWalk = false;
     private boolean statusUpdate = false;
+    @Getter
+    @Setter
+    @Accessors(chain = true)
     private boolean invisible = false;
     @Setter
     private boolean canLeaveRoomByDoor = true;
@@ -115,6 +118,8 @@ public class RoomUnit {
     @Setter
     @Accessors(chain = true)
     private RoomUnitType roomUnitType;
+    @Getter
+    @Setter
     private Deque<RoomTile> path = new LinkedList<>();
     private int handItem;
     private long handItemTimestamp;
@@ -126,7 +131,11 @@ public class RoomUnit {
     private int timeInRoom;
 
     private int idleTimer;
+    @Setter
+    @Getter
     private Room room;
+    @Getter
+    @Setter
     private RoomRightLevels rightsLevel = RoomRightLevels.NONE;
     private final THashSet<Integer> overridableTiles;
 
@@ -663,38 +672,6 @@ public class RoomUnit {
         }
     }
 
-    public Deque<RoomTile> getPath() {
-        return this.path;
-    }
-
-    public void setPath(Deque<RoomTile> path) {
-        this.path = path;
-    }
-
-    public RoomRightLevels getRightsLevel() {
-        return this.rightsLevel;
-    }
-
-    public void setRightsLevel(RoomRightLevels rightsLevel) {
-        this.rightsLevel = rightsLevel;
-    }
-
-    public boolean isInvisible() {
-        return this.invisible;
-    }
-
-    public void setInvisible(boolean invisible) {
-        this.invisible = invisible;
-    }
-
-    public Room getRoom() {
-        return room;
-    }
-
-    public void setRoom(Room room) {
-        this.room = room;
-    }
-
     public boolean canOverrideTile(RoomTile tile) {
         if (tile == null || room == null || room.getLayout() == null) return false;
 
diff --git a/src/main/java/com/eu/habbo/habbohotel/users/HabboInfo.java b/src/main/java/com/eu/habbo/habbohotel/users/HabboInfo.java
index c61feb84..1aee0e2c 100644
--- a/src/main/java/com/eu/habbo/habbohotel/users/HabboInfo.java
+++ b/src/main/java/com/eu/habbo/habbohotel/users/HabboInfo.java
@@ -34,6 +34,7 @@ public class HabboInfo implements Runnable {
     @Setter
     private String motto;
     @Setter
+    @Accessors(chain = true)
     private String look;
     @Setter
     private HabboGender gender;
diff --git a/src/main/java/com/eu/habbo/habbohotel/users/HabboStats.java b/src/main/java/com/eu/habbo/habbohotel/users/HabboStats.java
index 532ae1fe..91266d72 100644
--- a/src/main/java/com/eu/habbo/habbohotel/users/HabboStats.java
+++ b/src/main/java/com/eu/habbo/habbohotel/users/HabboStats.java
@@ -770,7 +770,7 @@ public class HabboStats implements Runnable {
     }
 
     public boolean allowTrade() {
-        if (AchievementManager.TALENTTRACK_ENABLED && RoomTrade.TRADING_REQUIRES_PERK)
+        if (AchievementManager.TALENT_TRACK_ENABLED && RoomTrade.TRADING_REQUIRES_PERK)
             return this.perkTrade && this.allowTrade;
         else return this.allowTrade;
     }
diff --git a/src/main/java/com/eu/habbo/messages/incoming/guilds/AddAdminRightsToMemberEvent.java b/src/main/java/com/eu/habbo/messages/incoming/guilds/AddAdminRightsToMemberEvent.java
index 62832e44..f73fa9fa 100644
--- a/src/main/java/com/eu/habbo/messages/incoming/guilds/AddAdminRightsToMemberEvent.java
+++ b/src/main/java/com/eu/habbo/messages/incoming/guilds/AddAdminRightsToMemberEvent.java
@@ -18,30 +18,26 @@ public class AddAdminRightsToMemberEvent extends MessageHandler {
 
         Guild guild = Emulator.getGameEnvironment().getGuildManager().getGuild(guildId);
 
-        if (guild != null) {
-            if (guild.getOwnerId() == this.client.getHabbo().getHabboInfo().getId() || this.client.getHabbo().hasPermission(Permission.ACC_GUILD_ADMIN)) {
-                Emulator.getGameEnvironment().getGuildManager().setAdmin(guild, userId);
+        if (guild != null && (guild.getOwnerId() == this.client.getHabbo().getHabboInfo().getId() || this.client.getHabbo().hasPermission(Permission.ACC_GUILD_ADMIN))) {
+            Emulator.getGameEnvironment().getGuildManager().setAdmin(guild, userId);
 
-                Habbo habbo = Emulator.getGameEnvironment().getHabboManager().getHabbo(userId);
+            Habbo habbo = Emulator.getGameEnvironment().getHabboManager().getHabbo(userId);
 
-                GuildGivenAdminEvent adminEvent = new GuildGivenAdminEvent(guild, userId, habbo, this.client.getHabbo());
-                Emulator.getPluginManager().fireEvent(adminEvent);
-                if (adminEvent.isCancelled())
-                    return;
+            GuildGivenAdminEvent adminEvent = new GuildGivenAdminEvent(guild, userId, habbo, this.client.getHabbo());
+            Emulator.getPluginManager().fireEvent(adminEvent);
+            if (adminEvent.isCancelled())
+                return;
 
-                if (habbo != null) {
-                    Room room = habbo.getHabboInfo().getCurrentRoom();
-                    if (room != null) {
-                        if (room.getGuildId() == guildId) {
-                            room.refreshRightsForHabbo(habbo);
-                        }
-                    }
+            if (habbo != null) {
+                Room room = habbo.getHabboInfo().getCurrentRoom();
+                if (room != null && room.getGuildId() == guildId) {
+                    room.refreshRightsForHabbo(habbo);
                 }
-
-                GuildMember guildMember = Emulator.getGameEnvironment().getGuildManager().getGuildMember(guildId, userId);
-
-                this.client.sendResponse(new GuildMembershipUpdatedMessageComposer(guild, guildMember));
             }
+
+            GuildMember guildMember = Emulator.getGameEnvironment().getGuildManager().getGuildMember(guildId, userId);
+
+            this.client.sendResponse(new GuildMembershipUpdatedMessageComposer(guild, guildMember));
         }
     }
 }
diff --git a/src/main/java/com/eu/habbo/messages/incoming/polls/AnswerPollEvent.java b/src/main/java/com/eu/habbo/messages/incoming/polls/AnswerPollEvent.java
index bf9053eb..33ef0cff 100644
--- a/src/main/java/com/eu/habbo/messages/incoming/polls/AnswerPollEvent.java
+++ b/src/main/java/com/eu/habbo/messages/incoming/polls/AnswerPollEvent.java
@@ -48,17 +48,15 @@ public class AnswerPollEvent extends MessageHandler {
                 log.error("Caught SQL exception", e);
             }
 
-            if (poll.getLastQuestionId() == questionId) {
-                if (poll.getBadgeReward().length() > 0) {
-                    if (!this.client.getHabbo().getInventory().getBadgesComponent().hasBadge(poll.getBadgeReward())) {
-                        HabboBadge badge = new HabboBadge(0, poll.getBadgeReward(), 0, this.client.getHabbo());
-                        Emulator.getThreading().run(badge);
-                        this.client.getHabbo().getInventory().getBadgesComponent().addBadge(badge);
-                        this.client.sendResponse(new BadgeReceivedComposer(badge));
-                        this.client.sendResponse(new WiredRewardResultMessageComposer(WiredRewardResultMessageComposer.REWARD_RECEIVED_BADGE));
-                    } else {
-                        this.client.sendResponse(new WiredRewardResultMessageComposer(WiredRewardResultMessageComposer.REWARD_ALREADY_RECEIVED));
-                    }
+            if (poll.getLastQuestionId() == questionId && poll.getBadgeReward().length() > 0) {
+                if (!this.client.getHabbo().getInventory().getBadgesComponent().hasBadge(poll.getBadgeReward())) {
+                    HabboBadge badge = new HabboBadge(0, poll.getBadgeReward(), 0, this.client.getHabbo());
+                    Emulator.getThreading().run(badge);
+                    this.client.getHabbo().getInventory().getBadgesComponent().addBadge(badge);
+                    this.client.sendResponse(new BadgeReceivedComposer(badge));
+                    this.client.sendResponse(new WiredRewardResultMessageComposer(WiredRewardResultMessageComposer.REWARD_RECEIVED_BADGE));
+                } else {
+                    this.client.sendResponse(new WiredRewardResultMessageComposer(WiredRewardResultMessageComposer.REWARD_ALREADY_RECEIVED));
                 }
             }
         }
diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/items/AddSpamWallPostItEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/items/AddSpamWallPostItEvent.java
index bc418af6..aa0c27d9 100644
--- a/src/main/java/com/eu/habbo/messages/incoming/rooms/items/AddSpamWallPostItEvent.java
+++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/items/AddSpamWallPostItEvent.java
@@ -10,6 +10,7 @@ import com.eu.habbo.messages.incoming.MessageHandler;
 import lombok.extern.slf4j.Slf4j;
 
 import java.time.LocalDate;
+import java.util.Arrays;
 
 @Slf4j
 public class AddSpamWallPostItEvent extends MessageHandler {
@@ -25,10 +26,9 @@ public class AddSpamWallPostItEvent extends MessageHandler {
             if (this.client.getHabbo().hasPermission("cmd_multi")) {
                 String[] commands = this.packet.readString().split("\r");
 
-                for (String command : commands) {
-                    command = command.replace("<br>", "\r");
-                    CommandHandler.handleCommand(this.client, command);
-                }
+                Arrays.stream(commands)
+                        .map(command -> command.replace("<br>", "\r"))
+                        .forEach(command -> CommandHandler.handleCommand(this.client, command));
             } else {
                 log.info("Scripter Alert! " + this.client.getHabbo().getHabboInfo().getUsername() + " | " + this.packet.readString());
             }
@@ -38,23 +38,21 @@ public class AddSpamWallPostItEvent extends MessageHandler {
             Room room = this.client.getHabbo().getHabboInfo().getCurrentRoom();
             HabboItem sticky = room.getHabboItem(itemId);
 
-            if (sticky != null) {
-                if (sticky.getUserId() == this.client.getHabbo().getHabboInfo().getId()) {
-                    sticky.setUserId(room.getOwnerId());
+            if (sticky != null && sticky.getUserId() == this.client.getHabbo().getHabboInfo().getId()) {
+                sticky.setUserId(room.getOwnerId());
 
-                    if (color.equalsIgnoreCase(PostItColor.YELLOW.hexColor)) {
-                        color = PostItColor.randomColorNotYellow().hexColor;
-                    }
-                    if (!InteractionPostIt.STICKYPOLE_PREFIX_TEXT.isEmpty()) {
-                        text = InteractionPostIt.STICKYPOLE_PREFIX_TEXT.replace("\\r", "\r").replace("%username%", this.client.getHabbo().getHabboInfo().getUsername()).replace("%timestamp%", LocalDate.now().toString()) + text;
-                    }
-
-                    sticky.setUserId(room.getOwnerId());
-                    sticky.setExtradata(color + " " + text);
-                    sticky.needsUpdate(true);
-                    room.updateItem(sticky);
-                    Emulator.getThreading().run(sticky);
+                if (color.equalsIgnoreCase(PostItColor.YELLOW.hexColor)) {
+                    color = PostItColor.randomColorNotYellow().hexColor;
                 }
+                if (!InteractionPostIt.STICKYPOLE_PREFIX_TEXT.isEmpty()) {
+                    text = InteractionPostIt.STICKYPOLE_PREFIX_TEXT.replace("\\r", "\r").replace("%username%", this.client.getHabbo().getHabboInfo().getUsername()).replace("%timestamp%", LocalDate.now().toString()) + text;
+                }
+
+                sticky.setUserId(room.getOwnerId());
+                sticky.setExtradata(color + " " + text);
+                sticky.needsUpdate(true);
+                room.updateItem(sticky);
+                Emulator.getThreading().run(sticky);
             }
         }
     }
diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/items/jukebox/AddJukeboxDiskEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/items/jukebox/AddJukeboxDiskEvent.java
index da481cc1..402281f6 100644
--- a/src/main/java/com/eu/habbo/messages/incoming/rooms/items/jukebox/AddJukeboxDiskEvent.java
+++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/items/jukebox/AddJukeboxDiskEvent.java
@@ -18,8 +18,8 @@ public class AddJukeboxDiskEvent extends MessageHandler {
         if (habbo != null) {
             HabboItem item = habbo.getInventory().getItemsComponent().getHabboItem(itemId);
 
-            if (item instanceof InteractionMusicDisc && item.getRoomId() == 0) {
-                this.client.getHabbo().getHabboInfo().getCurrentRoom().getTraxManager().addSong((InteractionMusicDisc) item, habbo);
+            if (item instanceof InteractionMusicDisc interactionMusicDisc && item.getRoomId() == 0) {
+                this.client.getHabbo().getHabboInfo().getCurrentRoom().getTraxManager().addSong(interactionMusicDisc, habbo);
             }
         }
     }
diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/users/AvatarExpressionEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/users/AvatarExpressionEvent.java
index b7efb012..c3dffc03 100644
--- a/src/main/java/com/eu/habbo/messages/incoming/rooms/users/AvatarExpressionEvent.java
+++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/users/AvatarExpressionEvent.java
@@ -12,45 +12,45 @@ public class AvatarExpressionEvent extends MessageHandler {
     @Override
     public void handle() {
         Room room = this.client.getHabbo().getHabboInfo().getCurrentRoom();
-        if (room != null) {
-            Habbo habbo = this.client.getHabbo();
-
-            if (this.client.getHabbo().getRoomUnit().getCacheable().get("control") != null) {
-                habbo = (Habbo) this.client.getHabbo().getRoomUnit().getCacheable().get("control");
-
-                if (habbo.getHabboInfo().getCurrentRoom() != room) {
-                    habbo.getRoomUnit().getCacheable().remove("controller");
-                    this.client.getHabbo().getRoomUnit().getCacheable().remove("control");
-                    habbo = this.client.getHabbo();
-                }
-            }
-
-            int action = this.packet.readInt();
-
-            if (action == 5) {
-                UserIdleEvent event = new UserIdleEvent(this.client.getHabbo(), UserIdleEvent.IdleReason.ACTION, true);
-                Emulator.getPluginManager().fireEvent(event);
-
-                if (!event.isCancelled()) {
-                    if (event.isIdle()) {
-                        room.idle(habbo);
-                    } else {
-                        room.unIdle(habbo);
-                    }
-                }
-            } else {
-                UserIdleEvent event = new UserIdleEvent(this.client.getHabbo(), UserIdleEvent.IdleReason.ACTION, false);
-                Emulator.getPluginManager().fireEvent(event);
-
-                if (!event.isCancelled()) {
-                    if (!event.isIdle()) {
-                        room.unIdle(habbo);
-                    }
-                }
-
-            }
-
-            room.sendComposer(new ExpressionMessageComposer(habbo.getRoomUnit(), RoomUserAction.fromValue(action)).compose());
+        if (room == null) {
+            return;
         }
+
+        Habbo habbo = this.client.getHabbo();
+
+        if (this.client.getHabbo().getRoomUnit().getCacheable().get("control") != null) {
+            habbo = (Habbo) this.client.getHabbo().getRoomUnit().getCacheable().get("control");
+
+            if (habbo.getHabboInfo().getCurrentRoom() != room) {
+                habbo.getRoomUnit().getCacheable().remove("controller");
+                this.client.getHabbo().getRoomUnit().getCacheable().remove("control");
+                habbo = this.client.getHabbo();
+            }
+        }
+
+        int action = this.packet.readInt();
+
+        if (action == 5) {
+            UserIdleEvent event = new UserIdleEvent(this.client.getHabbo(), UserIdleEvent.IdleReason.ACTION, true);
+            Emulator.getPluginManager().fireEvent(event);
+
+            if (!event.isCancelled()) {
+                if (event.isIdle()) {
+                    room.idle(habbo);
+                } else {
+                    room.unIdle(habbo);
+                }
+            }
+        } else {
+            UserIdleEvent event = new UserIdleEvent(this.client.getHabbo(), UserIdleEvent.IdleReason.ACTION, false);
+            Emulator.getPluginManager().fireEvent(event);
+
+            if (!event.isCancelled() && !event.isIdle()) {
+                room.unIdle(habbo);
+            }
+
+        }
+
+        room.sendComposer(new ExpressionMessageComposer(habbo.getRoomUnit(), RoomUserAction.fromValue(action)).compose());
     }
 }
diff --git a/src/main/java/com/eu/habbo/messages/incoming/wired/ApplySnapshotEvent.java b/src/main/java/com/eu/habbo/messages/incoming/wired/ApplySnapshotEvent.java
index c52491cd..5f9aebd7 100644
--- a/src/main/java/com/eu/habbo/messages/incoming/wired/ApplySnapshotEvent.java
+++ b/src/main/java/com/eu/habbo/messages/incoming/wired/ApplySnapshotEvent.java
@@ -37,65 +37,59 @@ public class ApplySnapshotEvent extends MessageHandler {
 
         Room room = this.client.getHabbo().getHabboInfo().getCurrentRoom();
 
-        if (room != null) {
+        // Executing Habbo should be able to edit wireds
+        if (room == null || (!room.hasRights(this.client.getHabbo()) && !room.isOwner(this.client.getHabbo()))) {
+            return;
+        }
 
-            // Executing Habbo should be able to edit wireds
-            if (room.hasRights(this.client.getHabbo()) || room.isOwner(this.client.getHabbo())) {
+        List<HabboItem> wireds = new ArrayList<>();
+        wireds.addAll(room.getRoomSpecialTypes().getConditions());
+        wireds.addAll(room.getRoomSpecialTypes().getEffects());
 
-                List<HabboItem> wireds = new ArrayList<>();
-                wireds.addAll(room.getRoomSpecialTypes().getConditions());
-                wireds.addAll(room.getRoomSpecialTypes().getEffects());
+        // Find the item with the given ID in the room
+        Optional<HabboItem> item = wireds.stream()
+                .filter(wired -> wired.getId() == itemId)
+                .findFirst();
 
-                // Find the item with the given ID in the room
-                Optional<HabboItem> item = wireds.stream()
-                        .filter(wired -> wired.getId() == itemId)
-                        .findFirst();
+        // If the item exists
+        if (item.isEmpty()) {
+            return;
+        }
 
-                // If the item exists
-                if (item.isPresent()) {
-                    HabboItem wiredItem = item.get();
+        HabboItem wiredItem = item.get();
+        // The item should have settings to match furni state, position and rotation
+        if (wiredItem instanceof InteractionWiredMatchFurniSettings wired) {
 
-                    // The item should have settings to match furni state, position and rotation
-                    if (wiredItem instanceof InteractionWiredMatchFurniSettings wired) {
+            // Try to apply the set settings to each item
+            wired.getMatchFurniSettings().forEach(setting -> {
+                HabboItem matchItem = room.getHabboItem(setting.getItem_id());
 
-                        // Try to apply the set settings to each item
-                        wired.getMatchFurniSettings().forEach(setting -> {
-                            HabboItem matchItem = room.getHabboItem(setting.getItem_id());
+                // Match state
+                if (wired.shouldMatchState() && matchItem.allowWiredResetState() && !setting.getState().equals(" ") && !matchItem.getExtradata().equals(setting.getState())) {
+                    matchItem.setExtradata(setting.getState());
+                    room.updateItemState(matchItem);
+                }
 
-                            // Match state
-                            if (wired.shouldMatchState() && matchItem.allowWiredResetState()) {
-                                if (!setting.getState().equals(" ") && !matchItem.getExtradata().equals(setting.getState())) {
-                                    matchItem.setExtradata(setting.getState());
-                                    room.updateItemState(matchItem);
-                                }
-                            }
+                RoomTile oldLocation = room.getLayout().getTile(matchItem.getX(), matchItem.getY());
+                double oldZ = matchItem.getZ();
 
-                            RoomTile oldLocation = room.getLayout().getTile(matchItem.getX(), matchItem.getY());
-                            double oldZ = matchItem.getZ();
+                // Match Position & Rotation
+                if (wired.shouldMatchRotation() && !wired.shouldMatchPosition()) {
+                    if (matchItem.getRotation() != setting.getRotation() && room.furnitureFitsAt(oldLocation, matchItem, setting.getRotation(), false) == FurnitureMovementError.NONE) {
+                        room.moveFurniTo(matchItem, oldLocation, setting.getRotation(), null, true);
+                    }
+                } else if (wired.shouldMatchPosition()) {
+                    boolean slideAnimation = !wired.shouldMatchRotation() || matchItem.getRotation() == setting.getRotation();
+                    RoomTile newLocation = room.getLayout().getTile((short) setting.getX(), (short) setting.getY());
+                    int newRotation = wired.shouldMatchRotation() ? setting.getRotation() : matchItem.getRotation();
 
-                            // Match Position & Rotation
-                            if(wired.shouldMatchRotation() && !wired.shouldMatchPosition()) {
-                                if(matchItem.getRotation() != setting.getRotation() && room.furnitureFitsAt(oldLocation, matchItem, setting.getRotation(), false) == FurnitureMovementError.NONE) {
-                                    room.moveFurniTo(matchItem, oldLocation, setting.getRotation(), null, true);
-                                }
-                            }
-                            else if(wired.shouldMatchPosition()) {
-                                boolean slideAnimation = !wired.shouldMatchRotation() || matchItem.getRotation() == setting.getRotation();
-                                RoomTile newLocation = room.getLayout().getTile((short) setting.getX(), (short) setting.getY());
-                                int newRotation = wired.shouldMatchRotation() ? setting.getRotation() : matchItem.getRotation();
-
-                                if(newLocation != null && newLocation.getState() != RoomTileState.INVALID && (newLocation != oldLocation || newRotation != matchItem.getRotation()) && room.furnitureFitsAt(newLocation, matchItem, newRotation, true) == FurnitureMovementError.NONE) {
-                                    if(room.moveFurniTo(matchItem, newLocation, newRotation, null, !slideAnimation) == FurnitureMovementError.NONE) {
-                                        if(slideAnimation) {
-                                            room.sendComposer(new FloorItemOnRollerComposer(matchItem, null, oldLocation, oldZ, newLocation, matchItem.getZ(), 0, room).compose());
-                                        }
-                                    }
-                                }
-                            }
-                        });
+                    if (newLocation != null && newLocation.getState() != RoomTileState.INVALID && (newLocation != oldLocation || newRotation != matchItem.getRotation())
+                            && room.furnitureFitsAt(newLocation, matchItem, newRotation, true) == FurnitureMovementError.NONE
+                            && room.moveFurniTo(matchItem, newLocation, newRotation, null, !slideAnimation) == FurnitureMovementError.NONE && slideAnimation) {
+                        room.sendComposer(new FloorItemOnRollerComposer(matchItem, null, oldLocation, oldZ, newLocation, matchItem.getZ(), 0, room).compose());
                     }
                 }
-            }
+            });
         }
     }
 }
diff --git a/src/main/java/com/eu/habbo/messages/outgoing/MessageComposer.java b/src/main/java/com/eu/habbo/messages/outgoing/MessageComposer.java
index d55e8db8..16707243 100644
--- a/src/main/java/com/eu/habbo/messages/outgoing/MessageComposer.java
+++ b/src/main/java/com/eu/habbo/messages/outgoing/MessageComposer.java
@@ -22,4 +22,7 @@ public abstract class MessageComposer {
         return this.composed;
     }
 
+    protected int booleanToInt(boolean value) {
+        return value ? 1 : 0;
+    }
 }
\ No newline at end of file
diff --git a/src/main/java/com/eu/habbo/messages/outgoing/achievements/talenttrack/TalentTrackMessageComposer.java b/src/main/java/com/eu/habbo/messages/outgoing/achievements/talenttrack/TalentTrackMessageComposer.java
index 3365d161..0ee49d22 100644
--- a/src/main/java/com/eu/habbo/messages/outgoing/achievements/talenttrack/TalentTrackMessageComposer.java
+++ b/src/main/java/com/eu/habbo/messages/outgoing/achievements/talenttrack/TalentTrackMessageComposer.java
@@ -12,7 +12,6 @@ import com.eu.habbo.messages.outgoing.Outgoing;
 import lombok.AllArgsConstructor;
 import lombok.Getter;
 
-import java.util.LinkedHashMap;
 import java.util.Map;
 import java.util.NoSuchElementException;
 
@@ -28,7 +27,7 @@ public class TalentTrackMessageComposer extends MessageComposer {
         this.response.init(Outgoing.talentTrackMessageComposer);
         this.response.appendString(this.type.name().toLowerCase());
 
-        LinkedHashMap<Integer, TalentTrackLevel> talentTrackLevels = Emulator.getGameEnvironment().getAchievementManager().getTalenTrackLevels(this.type);
+        Map<Integer, TalentTrackLevel> talentTrackLevels = Emulator.getGameEnvironment().getAchievementManager().getTalenTrackLevels(this.type);
         if (talentTrackLevels != null) {
             this.response.appendInt(talentTrackLevels.size()); //Count
             for (Map.Entry<Integer, TalentTrackLevel> set : talentTrackLevels.entrySet()) {
diff --git a/src/main/java/com/eu/habbo/messages/outgoing/gamecenter/basejump/LoadGameMessageComposer.java b/src/main/java/com/eu/habbo/messages/outgoing/gamecenter/basejump/LoadGameMessageComposer.java
index bb4e13e4..9d70ab47 100644
--- a/src/main/java/com/eu/habbo/messages/outgoing/gamecenter/basejump/LoadGameMessageComposer.java
+++ b/src/main/java/com/eu/habbo/messages/outgoing/gamecenter/basejump/LoadGameMessageComposer.java
@@ -33,7 +33,7 @@ public class LoadGameMessageComposer extends MessageComposer {
             this.response.appendString("habboHost");
             this.response.appendString(Emulator.getConfig().getValue("hotel.url"));
             this.response.appendString("accessToken");
-            this.response.appendString(Emulator.getConfig().getValue("username") + "\t" + Emulator.version + "\t" + this.client.getHabbo().getHabboInfo().getId() + "\t" + this.client.getHabbo().getHabboInfo().getUsername() + "\t" + this.client.getHabbo().getHabboInfo().getLook() + "\t" + this.client.getHabbo().getHabboInfo().getCredits() + "\t" + FASTFOOD_KEY);
+            this.response.appendString(Emulator.getConfig().getValue("username") + "\t" + Emulator.VERSION + "\t" + this.client.getHabbo().getHabboInfo().getId() + "\t" + this.client.getHabbo().getHabboInfo().getUsername() + "\t" + this.client.getHabbo().getHabboInfo().getLook() + "\t" + this.client.getHabbo().getHabboInfo().getCredits() + "\t" + FASTFOOD_KEY);
             this.response.appendString("gameServerHost");
             this.response.appendString("google.com");
             this.response.appendString("gameServerPort");
diff --git a/src/main/java/com/eu/habbo/messages/outgoing/inventory/AvatarEffectsMessageComposer.java b/src/main/java/com/eu/habbo/messages/outgoing/inventory/AvatarEffectsMessageComposer.java
index 4b8ebd88..113f9609 100644
--- a/src/main/java/com/eu/habbo/messages/outgoing/inventory/AvatarEffectsMessageComposer.java
+++ b/src/main/java/com/eu/habbo/messages/outgoing/inventory/AvatarEffectsMessageComposer.java
@@ -33,7 +33,7 @@ public class AvatarEffectsMessageComposer extends MessageComposer {
                     AvatarEffectsMessageComposer.this.response.appendInt(effect.getEffect());
                     AvatarEffectsMessageComposer.this.response.appendInt(0);
                     AvatarEffectsMessageComposer.this.response.appendInt(effect.getDuration() > 0 ? effect.getDuration() : Integer.MAX_VALUE);
-                    AvatarEffectsMessageComposer.this.response.appendInt((effect.getDuration() > 0 ? (effect.getTotal() - (effect.isActivated() ? 1 : 0)) : 0));
+                    AvatarEffectsMessageComposer.this.response.appendInt((effect.getDuration() > 0 ? (effect.getTotal() - booleanToInt(effect.isActivated())) : 0));
 
                     if(!effect.isActivated() && effect.getDuration() > 0) {
                         AvatarEffectsMessageComposer.this.response.appendInt(0);
diff --git a/src/main/java/com/eu/habbo/networking/camera/messages/outgoing/CameraLoginComposer.java b/src/main/java/com/eu/habbo/networking/camera/messages/outgoing/CameraLoginComposer.java
index f8b97a0f..356e502b 100644
--- a/src/main/java/com/eu/habbo/networking/camera/messages/outgoing/CameraLoginComposer.java
+++ b/src/main/java/com/eu/habbo/networking/camera/messages/outgoing/CameraLoginComposer.java
@@ -14,6 +14,6 @@ public class CameraLoginComposer extends CameraOutgoingMessage {
     public void compose(Channel channel) {
         this.appendString(Emulator.getConfig().getValue("username").trim());
         this.appendString(Emulator.getConfig().getValue("password").trim());
-        this.appendString(Emulator.version);
+        this.appendString(Emulator.VERSION);
     }
 }
\ No newline at end of file
diff --git a/src/main/java/com/eu/habbo/plugin/PluginManager.java b/src/main/java/com/eu/habbo/plugin/PluginManager.java
index 8ff991c0..62ab70cc 100644
--- a/src/main/java/com/eu/habbo/plugin/PluginManager.java
+++ b/src/main/java/com/eu/habbo/plugin/PluginManager.java
@@ -143,7 +143,7 @@ public class PluginManager {
         WordFilter.DEFAULT_REPLACEMENT = Emulator.getConfig().getValue("hotel.wordfilter.replacement");
         CatalogManager.PURCHASE_COOLDOWN = Emulator.getConfig().getInt("hotel.catalog.purchase.cooldown");
         CatalogManager.SORT_USING_ORDERNUM = Emulator.getConfig().getBoolean("hotel.catalog.items.display.ordernum");
-        AchievementManager.TALENTTRACK_ENABLED = Emulator.getConfig().getBoolean("hotel.talenttrack.enabled");
+        AchievementManager.TALENT_TRACK_ENABLED = Emulator.getConfig().getBoolean("hotel.talenttrack.enabled");
         InteractionRoller.NO_RULES = Emulator.getConfig().getBoolean("hotel.room.rollers.norules");
         RoomManager.SHOW_PUBLIC_IN_POPULAR_TAB = Emulator.getConfig().getBoolean("hotel.navigator.populartab.publics");
         ApproveNameEvent.PET_NAME_LENGTH_MINIMUM = Emulator.getConfig().getInt("hotel.pets.name.length.min");
diff --git a/src/main/java/com/eu/habbo/util/ANSI.java b/src/main/java/com/eu/habbo/util/ANSI.java
index 4c59761f..b72aacd4 100644
--- a/src/main/java/com/eu/habbo/util/ANSI.java
+++ b/src/main/java/com/eu/habbo/util/ANSI.java
@@ -4,13 +4,17 @@ import ch.qos.logback.core.pattern.color.ANSIConstants;
 
 public class ANSI {
 
-    public static final String RED = "\u001B[" + ANSIConstants.RED_FG + "m";
-    public static final String GREEN = "\u001B[" + ANSIConstants.GREEN_FG + "m";
-    public static final String YELLOW = "\u001B[" + ANSIConstants.YELLOW_FG + "m";
-    public static final String BLUE = "\u001B[" + ANSIConstants.BLUE_FG + "m";
-    public static final String MAGENTA = "\u001B[" + ANSIConstants.MAGENTA_FG + "m";
-    public static final String CYAN = "\u001B[" + ANSIConstants.CYAN_FG + "m";
-    public static final String WHITE = "\u001B[" + ANSIConstants.WHITE_FG + "m";
-    public static final String DEFAULT = "\u001B[" + ANSIConstants.DEFAULT_FG + "m";
+    private ANSI(){}
+
+    private static final String HEADER = "\u001B[";
+
+    public static final String RED = HEADER + ANSIConstants.RED_FG + "m";
+    public static final String GREEN = HEADER + ANSIConstants.GREEN_FG + "m";
+    public static final String YELLOW = HEADER + ANSIConstants.YELLOW_FG + "m";
+    public static final String BLUE = HEADER + ANSIConstants.BLUE_FG + "m";
+    public static final String MAGENTA = HEADER + ANSIConstants.MAGENTA_FG + "m";
+    public static final String CYAN = HEADER + ANSIConstants.CYAN_FG + "m";
+    public static final String WHITE = HEADER + ANSIConstants.WHITE_FG + "m";
+    public static final String DEFAULT = HEADER + ANSIConstants.DEFAULT_FG + "m";
 
 }