private void createListeners() {
		final JFileChooser jf = new JFileChooser();

		removeSys.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent arg0) {
				int j = systems.getSelectedIndex();
				systems.remove(j);
				dats.systems.remove(j);
				compare.systemUpdate();
				somethingChanged();
			}
		});
		newSystem.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent arg0) {
				Data data = new Data();
				data.g0 = G0;
				data.g1 = G1;
				dats.systems.add(data);
				systems.add(new SystemTab(i++, FluidApp.this, jf, dats.systems
						.get(dats.systems.size() - 1)));
				compare.systemUpdate();
				somethingChanged();

			}
		});
		store.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent arg0) {
				int choice = jf.showSaveDialog(FluidApp.this);
				if (choice == JFileChooser.APPROVE_OPTION) {
					try {
						ObjectOutputStream os = new ObjectOutputStream(
								new FileOutputStream(jf.getSelectedFile()));
						FluidApp.this.stop();
						os.writeObject(FluidApp.this);
						FluidApp.this.start();
					} catch (IOException e1) {
						JOptionPane.showMessageDialog(getRootPane(),
								"Error: \n\n" + e1); //$NON-NLS-1$
					}
				}

			}
		});

		load.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent arg0) {
				int choice = jf.showOpenDialog(FluidApp.this);
				if (choice == JFileChooser.APPROVE_OPTION) {
					try {
						ObjectInputStream is = new ObjectInputStream(
								new FileInputStream(jf.getSelectedFile()));
						FluidApp app = (FluidApp) is.readObject();
						app.start();
						javax.swing.JFrame window = new javax.swing.JFrame(
								"Fluid Info"); // Title //$NON-NLS-1$
						window.setContentPane(app);
						window.setDefaultCloseOperation(javax.swing.JFrame.EXIT_ON_CLOSE);
						window.pack(); // Arrange the components.
						window.setVisible(true); // Make the window visible.
						window.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
					} catch (Exception e1) {
						JOptionPane.showMessageDialog(getRootPane(),
								"Error: \n\n" + e1);
					}
				}
			}
		});

		storeSys.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {

				int choice = jf.showSaveDialog(FluidApp.this);
				if (choice == JFileChooser.APPROVE_OPTION) {
					try {
						ObjectOutputStream os = new ObjectOutputStream(
								new FileOutputStream(jf.getSelectedFile()));
						FluidApp.this.stop();
						os.writeObject(systems.getSelectedComponent());
						FluidApp.this.start();
					} catch (IOException e1) {
						JOptionPane.showMessageDialog(getRootPane(),
								"Error: \n\n" + e1);
					}
				}

			}
		});

		loadSys.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				int choice = jf.showOpenDialog(FluidApp.this);
				if (choice == JFileChooser.APPROVE_OPTION) {
					try {
						ObjectInputStream is = new ObjectInputStream(
								new FileInputStream(jf.getSelectedFile()));
						SystemTab tab = (SystemTab) is.readObject();
						tab.parent = FluidApp.this;
						if (tab.getName().matches("System \\d+")) {
							tab.dat.name = "System " + i++;
							tab.setName(tab.dat.name);
						}
						dats.systems.add(tab.dat);
						systems.add(tab);
						compare.systemUpdate();
						somethingChanged();
					} catch (Exception e1) {
						JOptionPane.showMessageDialog(getRootPane(),
								"Error: \n\n" + e1);
					}
				}

			}
		});

		new Timer(2000, new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				newStuff();
			}
		}).start();
	}