private JMenu createOptionMenu() {

		String s = getInternationalText("DisableRecorder");
		final JMenuItem disableRecorderItem = new JCheckBoxMenuItem(s != null ? s : "Disable Recorder");

		s = getInternationalText("Option");
		JMenu menu = new JMenu(s != null ? s : "Options");
		menu.addMenuListener(new MenuListener() {
			public void menuSelected(MenuEvent e) {
				ModelerUtilities.setWithoutNotifyingListeners(disableRecorderItem, model.getRecorderDisabled());
			}

			public void menuCanceled(MenuEvent e) {
			}

			public void menuDeselected(MenuEvent e) {
			}
		});

		disableRecorderItem.setMnemonic(KeyEvent.VK_D);
		disableRecorderItem.addItemListener(new ItemListener() {
			public void itemStateChanged(ItemEvent e) {
				enableRecorder(e.getStateChange() == ItemEvent.DESELECTED);
				repaint();
				notifyChange();
			}
		});
		menu.add(disableRecorderItem);
		menu.addSeparator();

		JMenuItem mi = new JMenuItem(view.getActionMap().get("properties"));
		s = MolecularContainer.getInternationalText("Properties");
		mi.setText((s != null ? s : mi.getText()) + "...");
		mi.setIcon(null);
		menu.add(mi);

		mi = new JMenuItem(view.getActionMap().get("view options"));
		s = getInternationalText("ViewOption");
		mi.setText((s != null ? s : mi.getText()) + "...");
		mi.setIcon(null);
		menu.add(mi);

		mi = new JMenuItem(view.getActionMap().get("task manager"));
		s = getInternationalText("TaskManager");
		mi.setText((s != null ? s : mi.getText()) + "...");
		mi.setIcon(null);
		menu.add(mi);

		s = getInternationalText("Snapshot");
		snapshotMenuItem = new JMenuItem((s != null ? s : "Take a Snapshot") + "...");
		snapshotMenuItem.setToolTipText("Create a snapshot image and put it into the Snapshot Gallery");
		menu.add(snapshotMenuItem);
		menu.addSeparator();

		s = MolecularContainer.getInternationalText("RunEnergyMinimization");
		final JMenu minimizationMenu = new JMenu(s != null ? s : "Run Energy Minimization");
		menu.add(minimizationMenu);

		s = MolecularContainer.getInternationalText("ForSelectedAtoms");
		final JMenuItem miMinimizeSelected = new JMenuItem((s != null ? s : "For Selected Atoms") + "...");
		miMinimizeSelected.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				if (minimizerDialog == null)
					minimizerDialog = new MinimizerDialog(model);
				minimizerDialog.setLocationRelativeTo(MolecularContainer.this);
				minimizerDialog.setVisible(true);
				minimizerDialog.runMinimizer(view.getSelectionSet());
			}
		});
		minimizationMenu.add(miMinimizeSelected);

		s = MolecularContainer.getInternationalText("ForUnselectedAtoms");
		final JMenuItem miMinimizeUnselected = new JMenuItem((s != null ? s : "For Unselected Atoms") + "...");
		miMinimizeUnselected.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				if (minimizerDialog == null)
					minimizerDialog = new MinimizerDialog(model);
				minimizerDialog.setLocationRelativeTo(MolecularContainer.this);
				minimizerDialog.setVisible(true);
				int n = view.getModel().getAtomCount();
				BitSet bs = new BitSet(n);
				bs.set(0, n);
				bs.andNot(view.getSelectionSet());
				minimizerDialog.runMinimizer(bs);
			}
		});
		minimizationMenu.add(miMinimizeUnselected);

		s = MolecularContainer.getInternationalText("ForAllAtoms");
		mi = new JMenuItem((s != null ? s : "For All Atoms") + "...");
		mi.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				if (minimizerDialog == null)
					minimizerDialog = new MinimizerDialog(model);
				minimizerDialog.setLocationRelativeTo(MolecularContainer.this);
				minimizerDialog.setVisible(true);
				minimizerDialog.runMinimizer();
			}
		});
		minimizationMenu.add(mi);

		s = getInternationalText("ToolBox");
		JMenu subMenu = new JMenu(s != null ? s : "Toolbox");
		menu.add(subMenu);

		s = getInternationalText("HeatCool");
		final JMenuItem miEnergizer = new JCheckBoxMenuItem(s != null ? s : "Quick Heat and Cool", IconPool.getIcon("thermometer"));
		miEnergizer.addItemListener(new ItemListener() {
			public void itemStateChanged(ItemEvent e) {
				view.setShowEnergizer(e.getStateChange() == ItemEvent.SELECTED);
			}
		});
		subMenu.add(miEnergizer);

		s = getInternationalText("HeatBath");
		mi = new JMenuItem((s != null ? s : "Heat Bath") + "...", IconPool.getIcon("heat bath"));
		mi.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				if (ModelerUtilities.stopFiring(e))
					return;
				new HeatBathPanel(model).createDialog().setVisible(true);
			}
		});
		subMenu.add(mi);

		mi = new JMenuItem(view.getActionMap().get("show energy"));
		s = getInternationalText("EnergyTimeSeries");
		mi.setText((s != null ? s : mi.getText()) + "...");
		subMenu.add(mi);

		menu.addMenuListener(new MenuListener() {
			public void menuSelected(MenuEvent e) {
				ModelerUtilities.setWithoutNotifyingListeners(miEnergizer, view.getShowEnergizer());
				minimizationMenu.setEnabled(!view.getModel().isRunning());
				miMinimizeSelected.setEnabled(view.getSelectionSet().cardinality() > 0);
				miMinimizeUnselected.setEnabled(view.getSelectionSet().cardinality() < view.getModel().getAtomCount());
			}

			public void menuCanceled(MenuEvent e) {
			}

			public void menuDeselected(MenuEvent e) {
			}
		});

		return menu;

	}