public MainFrame(boolean silent){
		super(AlienFXProperties.ALIEN_FX_APPLICATION_NAME);
		
		try{
			lockApplication();
		}catch(Exception e){
			JOptionPane.showMessageDialog(null, AlienFXTexts.ALREADY_RUNNING_ERROR_TEXT, AlienFXTexts.ALIEN_FX_ERROR_TITLE_TEXT, JOptionPane.ERROR_MESSAGE);
			return;
		}
		
		ProfileModel model = new ProfileModel();
		model.addObserver(new ProfileListener());
		try {
			engine = new AlienFXEngine();
			profiles = new AlienFXProfiles(model);
			profiles.loadProfiles();
			setupTray();
		} catch (AlienFXControllerNotFoundException e) {
			JOptionPane.showMessageDialog(null, AlienFXTexts.DEVICE_NOT_PRESENT_ERROR_TEXT, AlienFXTexts.ALIEN_FX_ERROR_TITLE_TEXT, JOptionPane.ERROR_MESSAGE);
			return;
		} catch (AlienFXControllerUnknownDeviceException e) {
			JOptionPane.showMessageDialog(null, AlienFXTexts.UNKNOWN_DEVICE_ERROR_TEXT, AlienFXTexts.ALIEN_FX_ERROR_TITLE_TEXT, JOptionPane.ERROR_MESSAGE);
			return;
		} catch (AlienFXCommunicationException e) {
			JOptionPane.showMessageDialog(null, AlienFXTexts.DEVICE_PERMISSION_ERROR_TEXT, AlienFXTexts.ALIEN_FX_ERROR_TITLE_TEXT, JOptionPane.ERROR_MESSAGE);
			return;
		}
		
		Container container = this.getContentPane();
		container.setLayout(new BorderLayout());
		
		JColorChooser chooser = new JColorChooser();
		chooser.setPreviewPanel(new JPanel());
		
		ColorModel colorModel = new ColorModel();

		// Top row: device name, profile selection panel
		JPanel toprow = new JPanel(new BorderLayout());
		toprow.add(new DeviceInfoPanel(engine.getController().description), BorderLayout.LINE_START);
		toprow.add(new ProfileSelectionPanel(model, engine, profiles), BorderLayout.CENTER);
		add(toprow, BorderLayout.PAGE_START);

		JPanel profile = new ProfilePanel(model,colorModel);
		profile.setBorder(BorderFactory.createTitledBorder(AlienFXTexts.PROFILE_TEXT));
		add(profile, BorderLayout.CENTER);

		JPanel leftcolumn = new JPanel(new BorderLayout());
		JPanel colorchooserpanel = new ColorChooserPanel(colorModel);
		
		colorchooserpanel.setBorder(BorderFactory.createTitledBorder(AlienFXTexts.COLORS_TEXT));
		leftcolumn.add(colorchooserpanel, BorderLayout.PAGE_START);
		leftcolumn.add(new ColorUsedPanel(model, colorModel), BorderLayout.CENTER);
		add(leftcolumn, BorderLayout.LINE_START);
		
		setSize(1100,550);
		setLocationRelativeTo(null);
		setResizable(true);
		addWindowListener(new CloseListener());
		setDefaultCloseOperation(useTrays ? JFrame.DO_NOTHING_ON_CLOSE : JFrame.EXIT_ON_CLOSE);
		setupMenu();
		setVisible((useTrays && !silent) || !useTrays);
		updateTray();
	}