private void moveGameDown(){
        final int index = gameList.getSelectedIndex();
        
        if(index < gameModel.getSize()){
            
            byte movedGameId = games[index+1];
            
            // Update the active games array
            if(Utils.getIndex(activeGames, games[index]) != -1){// Only run when the game being moved is active
                int movedGameIndex = Utils.getIndex(activeGames, movedGameId);

                // Make sure that the movedGameID is not the first active game
                if(movedGameIndex > 0){
                    activeGames[movedGameIndex] = activeGames[movedGameIndex-1];
                    activeGames[movedGameIndex-1] = movedGameId;

                    prefs.put(Config.Key.active_tabs.toString(),
                            implode(activeGames));
                }
            }
            
            // Store the built in game ID index
            int bIndex = Utils.getIndex(builtInGames, games[index]);
            
            games[index+1] = games[index];
            games[index] = movedGameId;
            
            Object tempObj = gameModel.get(index+1);
            gameModel.set(index+1, gameModel.get(index));
            gameModel.set(index, tempObj);
            
            gameList.setSelectedIndex(index+1);
            
            // Only run this when both games involved are built in.
            if(bIndex != -1 && Utils.getIndex(builtInGames, movedGameId) > 0)
            {
                // Update the games id position in the built in games array
                builtInGames[bIndex+1] = builtInGames[bIndex];
                builtInGames[bIndex] = movedGameId;
                
                // Rebuild the tabs
                if(selectedTab == bIndex)
                    selectedTab++;
                else if(selectedTab == bIndex+1)
                    selectedTab--;

                buildTabs();
            }
        }
    }