public ManualAssignList(final List<Student> students, List<Timeslot> timeslots, final GUI gui) {
		super("Students to Manually Assign " + (timeslots.get(0) instanceof Lab? "Labs":"Tuts"));
		this.setLayout(new BorderLayout());
		UIDefaults ui = UIManager.getLookAndFeel().getDefaults();
		UIManager.put("RadioButton.focus", ui.getColor("control"));

		this.columnNames = createColumnNames(timeslots);
		this.data = createData(students, timeslots);
		Object[][] buts = createButs(students, timeslots);

		this.students = students;
		//    	this.timeslots = timeslots;

		DefaultTableModel dm = new DefaultTableModel();
		dm.setDataVector(buts, columnNames);

		JTable table = new JTable(dm) {
			public void tableChanged(TableModelEvent e) {
				super.tableChanged(e);
				repaint();
			}
		};

		for(int i = 0; i < students.size(); ++i){
			ButtonGroup group = new ButtonGroup();
			for (int t = 1; t <= timeslots.size(); ++t) {
				group.add((JRadioButton) dm.getValueAt(i, t));	
			}
			buttonMap.put(i, group);
		}
		for(String s: columnNames){
			table.getColumn(s).setCellRenderer(new RadioButtonRenderer());
			table.getColumn(s).setCellEditor(new RadioButtonEditor(new JCheckBox()));
		}
		JButton button = new JButton("Save Selections");
		button.setBounds(0, 0, 50, 20);
		for (int i = 0; i < table.getColumnCount(); i++) {
			table.getColumnModel().getColumn(0).setPreferredWidth(100);
		}
		button.addActionListener(new ActionListener() {			 
			@Override
			public void actionPerformed(ActionEvent e) {
				for(int i = 0; i < students.size(); i++){
					if(buttonMap.get(i).getSelection() != null){
						String action = buttonMap.get(i).getSelection().getActionCommand();					
						Timeslot t = timeslotsMap.get(action);
						if(t instanceof Lab){
							students.get(i).setAssignedLab(t);
							students.get(i).setFlaggedForLabs(false);
							t.addStudent(students.get(i));
						}
						else{
							students.get(i).setAssignedTut(t);
							students.get(i).setFlaggedForTuts(false);
							t.addStudent(students.get(i));
						}
					}
				}
				gui.naughtyCalculation();
				dispose();
			}
		});
		JScrollPane scroll = new JScrollPane(table);
		this.add(scroll, BorderLayout.NORTH);
		this.add(button, BorderLayout.SOUTH);
		this.pack();
		setVisible(true);
	}