public static void doit() {
        mainGui.start();            //GUI is needed as a thread to enable better user experience
        do {
            while (mainDatabase.getUserInput() == null) {       //wait fot the userInput to be set
                try {
                    Thread.sleep(100);
                } catch (InterruptedException ex) {             //something, somewhere went horribly wrong
                    JOptionPane.showConfirmDialog(null, "Kritischer Fehler! Bitte Programm neustarten.", "Kritischer Fehler", JOptionPane.OK_CANCEL_OPTION, JOptionPane.ERROR_MESSAGE);
                }
            }

            //main control flow
            PrGenerator.mainInputAnalyzer.modifyInputToString();
            PrGenerator.mainDatabase.manageData();
            PrGenerator.mainTextCreator.createMainText();
            PrGenerator.mainAbstractCreator.createAbstract();
            PrGenerator.mainHeadingCreator.createHeading();
            PrGenerator.mainPictureChooser.choosePicture();
            PrGenerator.mainOutputGenerator.generateOutput();
            while (mainDatabase.getUserInput() != null) {       //on this point userInput will be reset by pressing "zurück" or the programm will be closed
                try {
                    Thread.sleep(100);      //wait for the userinput to be reset to start over again
                } catch (InterruptedException ex) {             //something, somewhere went horribly wrong
                    JOptionPane.showConfirmDialog(null, "Kritischer Fehler! Bitte Programm neustarten.", "Kritischer Fehler", JOptionPane.OK_CANCEL_OPTION, JOptionPane.ERROR_MESSAGE);
                }
            }
        } while (true);

    }