public OlympicDataVisualiserFrame() {
		TitledBorder title;
		// TODO Add more views

		// TODO filter data (sliders, checkboxes)

		// This instantiates the classes based of the name in the
		// visualisationOptions array
		// Each of these classes must have a constructor which takes one
		// string(data) to open the csv file, else the program will exit
		for (String visualisation : visualisationOptions) {
			Class<?> clazz;
			Constructor<?> constructor;
			try {
				clazz = Class.forName("is3."
						+ visualisation.replaceAll("\\s+", "") + "Panel");
				constructor = clazz.getConstructor(String.class);
				JPanel temp = (JPanel) constructor.newInstance(data);
				title = BorderFactory.createTitledBorder("Visualisation");
				title.setTitleJustification(TitledBorder.CENTER);
				temp.setBorder(title);
				visualisations.add(temp);
			} catch (ClassNotFoundException | NoSuchMethodException
					| SecurityException | InstantiationException
					| IllegalAccessException | IllegalArgumentException
					| InvocationTargetException e) {
				e.printStackTrace();
				System.exit(1);
			}
		}

		// Setting up the combo box and panel
		setTitle("Olympic Data Visualiser");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

		JList<String> visualisationSelector = new JList<String>(
				visualisationOptions);

		visualisationSelector.addListSelectionListener(new ComboBoxListener());

		JPanel visualisationSelectorPanel = new JPanel(new BorderLayout());
		visualisationSelectorPanel.add(visualisationSelector,
				BorderLayout.LINE_START);
		title = BorderFactory.createTitledBorder("Choose");
		visualisationSelectorPanel.setBorder(title);

		getContentPane().add(visualisationSelectorPanel,
				BorderLayout.LINE_START);
		getContentPane().add(visualisations.get(0));

		pack();
		setVisible(true);
	}