public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				// check if program folder exists, else create
				File programFolder = new File(SETTINGS_DIRECTORY);
				if (!programFolder.exists()) {
					if (!programFolder.mkdirs()) {
						JOptionPane.showMessageDialog(null, "Programmordner " + SETTINGS_DIRECTORY + " konnte nicht erstellt werden!", "Error", JOptionPane.ERROR_MESSAGE);
						System.exit(1);
					}
				}
				// read user directory
				File userSettings = new File(SETTINGS);
				FileInputStream in = null;
				PropertyResourceBundle settingsBundle;
				if (userSettings.exists()) {
					// read user settings and use them
					try {
						in = new FileInputStream(SETTINGS);
						settingsBundle = new PropertyResourceBundle(in);
						DIRECTORY = settingsBundle.getString("userdir");
						in.close();
					} catch (IOException e) {
						JOptionPane.showMessageDialog(null, e.getMessage()
								+ "Kann Usersettings nicht lesen!", "Error",
								JOptionPane.ERROR_MESSAGE);
						e.printStackTrace();
						System.exit(1);
					}
				} else {
					// ask for user directory
					chooseDirectory();
					if (DIRECTORY == null) {
						JOptionPane.showMessageDialog(null, "Kein Ordner festgelegt, beende...", "Information",
								JOptionPane.INFORMATION_MESSAGE);
						System.exit(0);
					}
				}
				try {
					SMSViewerMain frame = new SMSViewerMain();
					frame.setVisible(true);
				} catch (IOException e) {
					JOptionPane.showMessageDialog(null, "Eine oder mehrere Datei(en) konnten nicht gelesen werden!", "Error", JOptionPane.ERROR_MESSAGE);
					e.printStackTrace();
					System.exit(1);
				} catch (ParseException e) {
					JOptionPane.showMessageDialog(null, "Die CSV-Datei mit den Nachrichten konnte nicht eingelesen werden!", "Error", JOptionPane.ERROR_MESSAGE);
					e.printStackTrace();
					System.exit(1);
				}
			}
		});
	}