public static void fetchCategory(final String categoryName) {
        Thread thread = new Thread() {
            @Override
            public void run() {
                super.run();

                Category category = categories.get(categoryName.toLowerCase());
                String updateString = "";
                int fetched = 0;
                int size = category.getChannels().size();
                gui.labelThing.setText("Fetching channel 0/" + size);
                for(YTChannel channel : category.getChannels()) {
                    fetched++;
                    gui.labelThing.setText("Fetching channel " + fetched + "/" + size);

                    fetchUpdate(channel, false);
                    while(isWorking) {
                        try {
                            Thread.sleep(500);
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                    }
                    if(!returnText.equals("NaN"))
                        updateString = updateString + returnText;
                }

                if(!updateString.isEmpty()) {
                    JOptionPane.showMessageDialog(gui.panel1, updateString);
                }
                else {
                    JOptionPane.showMessageDialog(gui.panel1, "No new videos from your channels.\nCheck back later!");
                }
                gui.labelThing.setText("");
                gui.loadingSub.setText("");
                gui.buttonFunc = true;
                gui.categories.setEnabled(true);
                gui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            }
        };
        gui.buttonFunc = false;
        gui.categories.setEnabled(false);
        gui.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
        thread.start();
    }