public void updateTable() throws IOException {
		String backup = makeBackupTable();
		ArrayList<TableElement> table = new ArrayList<TableElement>();
		try {
			setStatus(Status.READING);
			File pwd = new File(WORKING_DIRECTORY.toString());
			for (File current : pwd.listFiles()) {
				setFile(current.getName());
				TableElement temp = TableElement.ParseFitFile(current);
				if(temp != null)
					table.add( temp );
			}
			setFile("");
			setStatus(Status.SORTING);
			Collections.sort(table);
			for(int i = 0; i < table.size(); i++)
				table.get(i).setUniqueID(i);
			setStatus(Status.MATCHING);
			for(int i = 0; i < table.size(); i++) {
				TableElement tei = table.get(i);
				setFile(tei.getFilename());
				for(int j = i + 1; j < table.size(); j++) {
					TableElement tej = table.get(j);
					if( tei.isMatch(tej) ) {
						tei.addMatch(tej);
						tej.addMatch(tei);
					}
				}
			}
			setFile("");
			setStatus(Status.WRITING);
			writeTable(table);
			remove(backup);
		} catch (Exception e) {
			restoreBackupTable(backup);
			throw (new IOException("ERROR: Table IOS failed.", e));
		}
	}