private void rescanDatabase() {
		// get all songs from DB
		Vector<Song> databaseList = new Vector<Song>();
		databaseList = myDatabase.getSongs("");
		
		// get all songs from HD
		final String mp3Dir=Settings.get("mp3Dir");
		File mp3dir = new File(mp3Dir);
		Vector<File> mp3Files = new Vector<File>();
		mp3Files = getAllmp3Files(mp3dir, mp3Files);
		
		// create a new Vector to store all mp3-infos in
		Vector<Song> songFiles = new Vector<Song>();
		for (int i=0; i<mp3Files.size(); i++) {
			songFiles.add(new Song(mp3Files.elementAt(i)));
		}
		
		model.setLogtext("Database size: "+databaseList.size()+" Song(s)");
		model.setLogtext("Files on HD: "+songFiles.size()+" Song(s)");
		
		// find and remove all files which have a DB entry
		// and are unchanged from songFiles
		// mark all such files in databaseList (set them null)
		for(int i=0; i<databaseList.size(); i++) {
			for (int j=0; j<songFiles.size(); j++) {
				if (databaseList.elementAt(i).equals(songFiles.elementAt(j))) {
					databaseList.set(i,null);
					songFiles.remove(j);
					break;
				} else if ( databaseList.elementAt(i).compareMD5sum (songFiles.elementAt(j)) ||
							databaseList.elementAt(i).compareFile   (songFiles.elementAt(j))) {
					model.setLogtext("Found possible match:");
					model.setLogtext("DB:   "+databaseList.elementAt(i).toString());
					model.setLogtext("File: "+songFiles.elementAt(j).toString());
					// update DB
					myDatabase.changeSong(databaseList.elementAt(i), songFiles.elementAt(j));
					databaseList.set(i,null);
					songFiles.remove(j);
					break;
				}
			}
		}
		
		// remove all found files from databaseList
		while(databaseList.remove(null)) {
			continue;
		}

		for (int i=0; i<songFiles.size(); i++) {
			myDatabase.addSong(songFiles.elementAt(i));
		}
		model.setLogtext("Added "+songFiles.size()+" song(s) to database.");
	}