protected String doInBackground() throws Exception {
		MainFrame.getOpenButton().setEnabled(false);
        MainFrame.getGoButton().setEnabled(false);
        MainFrame.getSongTable().setEnabled(false);
		((SongTableModel) MainFrame.getSongTable().getModel()).clearTable();
		Logger.LogToStatusBar(file.getAbsolutePath());
		MainFrame.getLocationField().setText(file.getAbsolutePath());
        MainFrame.getOptions().setProperty("LastDir", file.getAbsolutePath());
        try {
			List<File> fileList = FileLister.getFileListing(file);
			Logger.LogToStatusBar("Loading MP3 files");
			MainFrame.getProgressBar().setMinimum(0);
			MainFrame.getProgressBar().setValue(0);
			MainFrame.getProgressBar().setMaximum(fileList.size());
			for (File mp3File : fileList) {
				Logger.LogToStatusBar(mp3File.getName());
				Vector<String> song = MP3TagHandler.getTags(mp3File);
				if (song != null) {
					song.add(mp3File.getAbsolutePath());
					((SongTableModel)MainFrame.getSongTable().getModel()).addRow(song);
				}
				else {
					Logger.LogToStatusBar("There was an error loading this MP3!");
				}
				
				int value = MainFrame.getProgressBar().getValue() + 1;
		        if (value > MainFrame.getProgressBar().getMaximum()) {
		          value = MainFrame.getProgressBar().getMaximum();
		        }
		        MainFrame.getProgressBar().setValue(value);
			}
			MainFrame.getSongTable().setFillsViewportHeight(true);
		} catch (FileNotFoundException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}
		
		MainFrame.getOpenButton().setEnabled(true);
		MainFrame.getGoButton().setEnabled(true);
		MainFrame.getSongTable().setEnabled(true);
		Logger.LogToStatusBar("Loading done.");
		return null;
	}