public static void main(String[] pArgs) {
	
		final LedString ledString = new LedString();
		final SshAndColorPickerConfig  sshConfig = new SshAndColorPickerConfig();
		try {
		// Configure swing to use the system default look and feel
			UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
		} catch (Exception e) {}
		
		
	    //check if the minimum java version is ok
        if (! JavaVersion.isOKJVMVersion()) {
        	String message=language.getString("general.JavaVerionInfoMessage");
        	JOptionPane.showMessageDialog(new JFrame(), message, language.getString("general.HyperConInformationDialogTitle"),
        		        JOptionPane.INFORMATION_MESSAGE);
        }
		//Check for HyperCon version	
        UpdateTool.main(pArgs);
        
		// Create a frame for the configuration panel
		JFrame frame = new JFrame();
		ErrorHandling.mainframe = frame;
		String title = language.getString("general.title") + " -" + ((versionStr != null && !versionStr.isEmpty())? (" (" + versionStr + ")") : "") + " " + DateStr;
		frame.setTitle(title);
		frame.setSize(1400, 800);
		frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		frame.setIconImage(new ImageIcon(Main.class.getResource("HyperConIcon_64.png")).getImage());
		frame.addWindowListener(new WindowAdapter() {
			@Override
			public void windowClosing(WindowEvent e) {
				try {
					ConfigurationFile configFile = new ConfigurationFile();
					configFile.store(Main.HyperConConfig);
					configFile.store(ledString.mDeviceConfig);
					configFile.store(ledString.mLedFrameConfig);
					configFile.store(ledString.mProcessConfig);
					configFile.store(ledString.mColorConfig);
					configFile.store(ledString.mMiscConfig);
					configFile.store(sshConfig);
					configFile.store(ledString.mGrabberv4l2Config);
					configFile.save(configFilename);
				} catch (Throwable t) {
					System.err.println(language.getString("general.failedtosave") + configFilename); 
				}
				SshConnectionModel.getInstance().disconnect();
				SSHTrafficPrinterFrame.close();
				System.exit(0); return;
			}
		});
		
		if (new File(configFilename).exists()) {
			try {
				ConfigurationFile configFile = new ConfigurationFile();
				configFile.load(configFilename);
				configFile.restore(Main.HyperConConfig);
				configFile.restore(ledString.mDeviceConfig);
				configFile.restore(ledString.mLedFrameConfig);
				configFile.restore(ledString.mProcessConfig);
				configFile.restore(ledString.mColorConfig);
				configFile.restore(ledString.mMiscConfig);
				configFile.restore(sshConfig);
				configFile.restore(ledString.mGrabberv4l2Config);
			} catch (Throwable t) {
				System.err.println(language.getString("general.failedtoload") + configFilename);
			}
			if (ledString.mColorConfig.mTransforms.isEmpty()) {
				ledString.mColorConfig.mTransforms.add(new TransformConfig());
			}
		}
		
		// Add the HyperCon configuration panel
		frame.setContentPane(new ConfigPanel(ledString, sshConfig));
		
		// Show the frame
		frame.setVisible(true);
	}