private Action createHeatAction(final byte element, double amount, String name) {
		Action a = new AbstractAction() {
			public void actionPerformed(ActionEvent e) {
				if (ModelerUtilities.stopFiring(e))
					return;
				Object o = getValue("increment");
				if (o instanceof Double) {
					transferHeatToType(element, ((Double) o).doubleValue());
					view.repaint();
				}
			}

			public String toString() {
				return (String) getValue(SHORT_DESCRIPTION);
			}
		};
		a.putValue(Action.MNEMONIC_KEY, new Integer(amount >= 0 ? KeyEvent.VK_H : KeyEvent.VK_C));
		a.putValue(Action.SMALL_ICON, IconPool.getIcon(amount >= 0 ? "heat" : "cool"));
		a.putValue(Action.NAME, name);
		a.putValue(Action.SHORT_DESCRIPTION, name);
		a.putValue("increment", new Double(amount));
		return a;
	}