private void initialize() {
		setupApplicationLocalData();
		resetLastWindowState();

		setMargin();

		JPanel maincontainer = new JPanel(new BorderLayout());

		/*
		 * top panel
		 */
		JPanel top = new JPanel(new GridLayout(3, 8));

		initComboBoxes();

		// OLDDATA
		file_input_old.setRenderer(new FileNameListCellRenderer());
		top.add(file_input_old);
		JButton btn_input_old = new JButton("Datei 1");
		top.add(btn_input_old);
		top.add(new JLabel("Zeichensatz", SwingConstants.CENTER));
		top.add(encoding_old);
		top.add(new JLabel("Trennzeichen", SwingConstants.CENTER));
		top.add(separator_old);
		top.add(new JLabel("Quotes", SwingConstants.CENTER));
		top.add(quote_old);

		// NEWDATA
		file_input_new.setRenderer(new FileNameListCellRenderer());
		top.add(file_input_new);
		JButton btn_input_new = new JButton("Datei 2");
		btn_input_new.setEnabled(file_input_old.getItemCount() > 0);
		top.add(btn_input_new);
		top.add(new JLabel("Zeichensatz", SwingConstants.CENTER));
		top.add(encoding_new);
		top.add(new JLabel("Trennzeichen", SwingConstants.CENTER));
		top.add(separator_new);
		top.add(new JLabel("Quotes", SwingConstants.CENTER));
		top.add(quote_new);

		// OUTPUTDATA
		file_output.setRenderer(new FileNameListCellRenderer());
		top.add(file_output);
		JButton btn_output = new JButton("Ausgabedatei");
		btn_output.setEnabled(file_input_new.getItemCount() > 0);
		top.add(btn_output);
		top.add(new JLabel("Zeichensatz", SwingConstants.CENTER));
		top.add(encoding_out);
		top.add(new JLabel("Trennzeichen", SwingConstants.CENTER));
		top.add(separator_out);
		top.add(new JLabel("Quotes", SwingConstants.CENTER));
		top.add(quote_out);

		Component[] dependingComponents = {btn_input_new, file_input_new};
		btn_input_old.addActionListener(new ChooseFileActionListener(this, file_input_old, false, dependingComponents));

		Component[] dependingComponents2 = {btn_output, file_output};
		btn_input_new.addActionListener(new ChooseFileActionListener(this, file_input_new, false, dependingComponents2));

		btn_output.addActionListener(new ChooseFileActionListener(this, file_output, true));

		maincontainer.add(top, BorderLayout.NORTH);

		/*
		 * log panel
		 */
		JScrollPane log_scroll = new JScrollPane(this.log);
		maincontainer.add(log_scroll, BorderLayout.CENTER);

		/*
		 * bottom panel
		 */
		JButton start = new JButton("Beginne den Abgleich");
		start.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				try {
					process();
				} catch (IOException e1) {
					addlog("Fehler: "+e1.getMessage());
				}
			}

		});
		maincontainer.add(start, BorderLayout.SOUTH);

		final DefaultListModel mymodel = new DefaultListModel();
		mymodel.addElement("dupchecked=1");
		moreOutput.setModel(mymodel);
		moreOutput.setToolTipText("Double click to add more fields for output file; key=value");
		moreOutput.addMouseListener(new MouseAdapter() {

			@Override
			public void mouseClicked(MouseEvent e) {

				if (e.getButton() == MouseEvent.BUTTON1 && e.getClickCount() == 2) {
					String result = JOptionPane.showInputDialog(moreOutput, "New key value pair:");
					if (result != null && !result.equalsIgnoreCase("")) {
						mymodel.addElement(result);
					}
					e.consume();
				} else if (e.getButton() == MouseEvent.BUTTON3) {
					if (moreOutput.getSelectedIndex() != -1) {
						if (JOptionPane.showConfirmDialog(separator_new, "Delete '"+moreOutput.getSelectedValue()+"'") == JOptionPane.YES_OPTION) {
							mymodel.remove(moreOutput.getSelectedIndex());
						}
					}
					e.consume();
				}
			}

		});

//		JScrollPane field_scroll = new JScrollPane(this.moreOutput);
		//maincontainer.add(field_scroll, BorderLayout.EAST);

		/*
		 * init overall panel
		 */
		add(maincontainer, BorderLayout.CENTER);

		this.getContentPane().addHierarchyBoundsListener(new WindowPropertyChangeListener(this));
		this.addWindowStateListener(new WindowPropertyChangeListener(this));
		this.addWindowListener(new WindowClosingAdapter(this));
	}