@Override
    public void run() {
        //Thread.currentThread().setPriority(Thread.MAX_PRIORITY);
        while(true) {
            // Map
            Map.view.setBounds(MainFrame.view.getInsets().left + 10, MainFrame.view.getInsets().top + 42, MainFrame.view.getWidth() - 10, MainFrame.view.getHeight() - 42 - OutText.view.getHeight() - 10 - 10);
            Image img = Map.view.getImage();
            Image newImg = img.getScaledInstance(MainFrame.view.getWidth() - 20, Map.view.getHeight(), Image.SCALE_SMOOTH);
            Map.view.setIcon(new ImageIcon(newImg));
            
            // Text Area
            OutText.view.setBounds(MainFrame.view.getInsets().left + 10, MainFrame.view.getInsets().top + 52 + Map.view.getHeight(), MainFrame.view.getWidth() - 20, OutText.view.getHeight());
            
            // Region Oh god someone make a backup of this I'm not doing this again
            int mh = Map.view.getHeight();
            int mw = Map.view.getWidth();
            
            Region.NORTH_AMERICA = new Region("north_america", new RectArea [] {
                new RectArea(mw*0.0333, mh*0.1676, mw*0.3833, mh*0.1676, mw*0.0333, mh*0.2932, mw*0.3833, mh*0.2932),
                new RectArea(mw*0.15, mh*0, mw*0.45, mh*0, mw*0.15, mh*0.1955, mw*0.45, mh*0.1955),
                new RectArea(mw*0.15, mh*0.2793, mw*0.3333, mh*0.2793, mw*0.15, mh*0.5028, mw*0.3333, mh*0.5028)
             });
    
            Region.MESO_AMERICA = new Region("meso_america", new RectArea [] {
                new RectArea(mw*0.1917, mh*0.5028, mw*0.3333, mh*0.5028, mw*0.1917, mh*0.5866, mw*0.3333, mh*0.5866) 
             });
    
            Region.SOUTH_AMERICA = new Region("south_america", new RectArea [] {
                new RectArea(mw*0.275, mh*0.5866, mw*0.3417, mh*0.5866, mw*0.275, mh*0.9497, mw*0.3417, mh*0.9497),
                new RectArea(mw*0.3417, mh*0.6145, mw*0.3917, mh*0.6145, mw*0.3417, mh*0.7961, mw*0.3917, mh*0.7961)
             });
    
            Region.EUROPE = new Region("europe", new RectArea [] {
                new RectArea(mw*0.5333, mh*0.1676, mw*0.5917, mh*0.1676, mw*0.5333, mh*0.2932, mw*0.5917, mh*0.2932),
                new RectArea(mw*0.475, mh*0.2932, mw*0.5917, mh*0.2932, mw*0.475, mh*0.4609, mw*0.5917, mh*0.4509)
            });
    
            Region.MIDDLE_EAST = new Region("middle_east", new RectArea [] {
               new RectArea(mw*0.5667, mh*0.3631, mw*0.6833, mh*0.3631, mw*0.5667, mh*0.5726, mw*0.6833, mh*0.5726) 
            });
    
            Region.NORTH_ASIA = new Region("north_asia", new RectArea [] {
               new RectArea(mw*0.5917, mh*0.1536, mw*1, mh*0.1536, mw*0.5917, mh*0.3631, mw*1, mh*0.3631) 
            });
    
            Region.EAST_ASIA = new Region("east_asia", new RectArea [] {
               new RectArea(mw*0.6833, mh*0.3631, mw*0.8917, mh*0.3631, mw*0.6833, mh*0.5307, mw*0.8917, mh*0.5307) 
            });
    
            Region.SOUTH_ASIA = new Region("south_asia", new RectArea [] {
               new RectArea(mw*0.6833, mh*0.5307, mw*0.875, mh*0.5307, mw*0.6833, mh*0.6704, mw*0.875, mh*0.6704) 
            });
    
            Region.NORTH_AFRICA = new Region("north_africa", new RectArea [] {
               new RectArea(mw*0.4583, mh*0.4749, mw*0.5667, mh*0.4749, mw*0.4583, mh*0.5587, mw*0.5667, mh*0.5587) 
            });
    
            Region.SUB_SAHARAN_AFRICA = new Region("sub_saharan_africa", new RectArea [] {
               new RectArea(mw*0.5333, mh*0.5587, mw*0.5667, mh*0.5587, mw*0.5333, mh*0.8101, mw*0.5667, mh*0.8101),
               new RectArea(mw*0.5667, mh*0.5726, mw*0.6833, mh*0.5726, mw*0.5667, mh*0.7682, mw*0.6833, mh*0.7682)
            });
    
            Region.WEST_AFRICA = new Region("west_africa", new RectArea [] {
               new RectArea(mw*0.45, mh*0.5587, mw*0.5333, mh*0.5587, mw*0.45, mh*0.6145, mw*0.5333, mh*0.6145) 
            });

            Region.OCEANIA = new Region("oceania", new RectArea [] {
                new RectArea(mw*0.875, mh*0.6425, mw*1, mh*0.6425, mw*0.875, mh*0.8938, mw*1, mh*0.8938),
                new RectArea(mw*0.8167, mh*0.6983, mw*0.8833, mh*0.6983, mw*0.8167, mh*0.8101, mw*0.8833, mh*0.8101)
            });
            
            // Finalize
            MainFrame.view.repaint();
            
            
            // Pop
            if(PopFrame.view.isVisible()) {
                // Frame
                PopImage.view.setBounds(PopFrame.view.getInsets().left + 10, PopFrame.view.getInsets().top + 45, PopImage.view.getImageIcon().getIconWidth(), PopImage.view.getImageIcon().getIconHeight());
                PopFrame.view.setSize(PopImage.view.getImageIcon().getIconWidth() + 29, PopImage.view.getImageIcon().getIconHeight() + 150);
                                
                // Buttons
                PopLeftNav.view.setBounds(PopFrame.view.getInsets().left + 10, PopFrame.view.getInsets().top + PopFrame.view.getHeight() - PopLeftNav.view.getPreferredSize().height - 10, PopLeftNav.view.getPreferredSize().width, PopLeftNav.view.getPreferredSize().height);
                PopRightNav.view.setBounds(PopFrame.view.getInsets().left + PopFrame.view.getWidth() - PopRightNav.view.getPreferredSize().width - 9, PopFrame.view.getInsets().top + PopFrame.view.getHeight() - PopLeftNav.view.getPreferredSize().height - 10, PopLeftNav.view.getPreferredSize().width, PopLeftNav.view.getPreferredSize().height);
                
                // Label
                PopLabel.view.setText("Images: " + (PopImage.model.getCurrentIndex() + 1) + " / " + (PopImage.model.getAlbumLength()));
                PopLabel.view.setBounds(PopFrame.view.getInsets().left + PopFrame.view.getWidth() / 2 - PopLabel.view.getWidth() / 2, PopFrame.view.getInsets().top + 10, PopLabel.view.getPreferredSize().width, PopLabel.view.getPreferredSize().height);
                  
                // Description
                PopDescription.view.setText(PopImage.model.getDesc(PopImage.view.getImageIcon()));
                PopDescription.view.setBounds(PopFrame.view.getInsets().left + PopFrame.view.getWidth() / 2 - PopDescription.view.getPreferredSize().width / 2, PopFrame.view.getInsets().top + PopFrame.view.getHeight() - PopDescription.view.getPreferredSize().height - 20, PopDescription.view.getPreferredSize().width, PopDescription.view.getPreferredSize().height);
                
                // Say good bye to resizing while keeping it to scale because that takes too much effort! fweeee
                
                // Finalize                
                PopFrame.view.repaint();
            }
        }
    }