public void execute(GameSession gameSession, byte[] bytes)
        {
            var read = new LegacyModuleRequest();

            read.readCommand(bytes);

            var player = gameSession.Player;

            string[] packet = read.message.Split('|');

            switch (packet[0])
            {
            case ServerCommands.TECHS:
                player.TechManager.AssembleTechCategoryRequest(packet[1]);
                break;

            case ClientCommands.PORTAL_JUMP:
                JumpRequest(gameSession);
                break;

            case ClientCommands.LASER_STOP:
                player.DisableAttack(player.SettingsManager.SelectedLaser);
                break;

            case ServerCommands.ROCKET_ATTACK:
                player.AttackManager.RocketAttack();
                break;

            case ServerCommands.SET_STATUS:
                switch (packet[1])
                {
                case ClientCommands.INSTAREPAIR:
                    InstaRepair(gameSession);
                    break;

                case ClientCommands.CONFIGURATION:
                    player.ChangeConfiguration(packet[2]);
                    break;

                case ServerCommands.EMP:
                    player.AttackManager.EMP();
                    break;

                case ServerCommands.INSTASHIELD:
                    player.AttackManager.ISH();
                    break;

                case ServerCommands.SMARTBOMB:
                    player.AttackManager.SMB();
                    break;

                case ClientCommands.SELECT_CLOAK:
                    player.CpuManager.Cloak();
                    break;

                case ClientCommands.AROL:
                    player.CpuManager.ArolX();
                    break;

                case ClientCommands.RLLB:
                    player.CpuManager.RllbX();
                    break;

                case ClientCommands.MINE:
                    AssembleMineRequest(packet[2], gameSession);
                    break;
                }
                break;

            case ServerCommands.GROUPSYSTEM:
                switch (packet[1])
                {
                case ServerCommands.GROUPSYSTEM_GROUP_INVITE:
                    switch (packet[2])
                    {
                    case ServerCommands.GROUPSYSTEM_GROUP_INVITE_SUB_BY_NAME:
                        GroupSystem.AssembleInvite(gameSession.Player, GroupSystem.GetPlayerByName(Out.DecodeFrom64(packet[3])));
                        break;

                    case ServerCommands.GROUPSYSTEM_GROUP_INVITE_SUB_REVOKE:
                        GroupSystem.Revoke(gameSession.Player, GameManager.GetGameSession(Convert.ToInt32(packet[3]))?.Player);
                        break;

                    case ServerCommands.GROUPSYSTEM_GROUP_INVITE_SUB_ACKNOWLEDGE:
                        GroupSystem.AssembleAcceptedInvitation(gameSession.Player, GameManager.GetGameSession(Convert.ToInt32(packet[3]))?.Player);
                        break;

                    case ServerCommands.GROUPSYSTEM_GROUP_INVITE_SUB_REJECT:
                        GroupSystem.Reject(gameSession.Player, GameManager.GetGameSession(Convert.ToInt32(packet[3]))?.Player);
                        break;
                    }
                    break;

                case ServerCommands.GROUPSYSTEM_GROUP_EVENT_MEMBER_LEAVES_SUB_KICK:
                    gameSession.Player.Group?.Kick(GameManager.GetGameSession(Convert.ToInt32(packet[2]))?.Player);
                    break;

                case ServerCommands.GROUPSYSTEM_GROUP_EVENT_MEMBER_LEAVES_SUB_LEAVE:
                    gameSession.Player.Group?.Leave(gameSession.Player);
                    break;

                case ServerCommands.GROUPSYSTEM_BLOCK_INVITATIONS:
                    GroupSystem.BlockInvitations(gameSession.Player);
                    break;

                case ClientCommands.GROUPSYSTEM_PING:
                    switch (packet[2])
                    {
                    case ClientCommands.GROUPSYSTEM_PING_POSITION:
                        if (packet.Length < 4)
                        {
                            GroupSystem.Ping(gameSession.Player, gameSession.Player.Spacemap.Characters[int.Parse(packet[3])]?.Position);
                            break;
                        }
                        GroupSystem.Ping(gameSession.Player, new Position(int.Parse(packet[3]), int.Parse(packet[4])));
                        break;

                    case ClientCommands.GROUPSYSTEM_PING_USER:
                        GroupSystem.Ping(gameSession.Player, GameManager.GetGameSession(Convert.ToInt32(packet[3]))?.Player);
                        break;
                    }
                    break;

                case ClientCommands.GROUPSYSTEM_FOLLOW:
                    gameSession.Player.Group?.Follow(gameSession.Player, GameManager.GetGameSession(Convert.ToInt32(packet[2]))?.Player);
                    break;

                case ClientCommands.GROUPSYSTEM_PROMOTE:
                    gameSession.Player.Group?.ChangeLeader(GameManager.GetGameSession(Convert.ToInt32(packet[2])));
                    break;

                case ClientCommands.GROUPSYSTEM_SET_REMOTE:
                    switch (packet[2])
                    {
                    case ClientCommands.GROUPSYSTEM_CHANGE_INVITATON_BEHAVIOUR:
                        gameSession.Player.Group?.ChangeBehavior(gameSession, Convert.ToInt32(packet[3]));
                        break;
                    }
                    break;
                }
                break;
            }
        }