public void migrateToUUID() {
		
		// Bail if no-one has ever been warned
		// or this is a first run
		if (!getConfig().contains("Warned")) {
			return;
		}
		
		// Get all the currently warned players and put them in a HashMap
		Map<String,Object> userList = getConfig().getConfigurationSection("Warned").getValues(false);
		
		Integer c = 0;
		
		final List<String> players = new ArrayList<String>();

		// Iterate the hashmap
		for(Map.Entry<String,Object> entry : userList.entrySet()) {
			
			String identifier = entry.getKey();

			// Only do this if the current player isn't already migrated
			if (!getConfig().contains("Warned." + identifier.toLowerCase()+".name")) {
				players.add(identifier);
				c++;
			}
		}
			
		if (c > 0) {
			
			this.logger.info("[BadWords] About to migrate " + c + " players to UUID support");
			
			Bukkit.getScheduler().runTaskAsynchronously(this, new Runnable() {
				@Override
				public void run() {
					UUIDFetcher fetcher = new UUIDFetcher(players, true);
					Map<String, UUID> response = null;
					Integer d = 0;
					try {
						response = fetcher.call();
						for (Map.Entry<String, UUID> entry : response.entrySet()) {
							Integer warn = getConfig().getInt("Warned."+entry.getKey().toLowerCase()+".remaining");
							Long timestamp = getConfig().getLong("Warned."+entry.getKey().toLowerCase()+".timestamp");
							// Add a new entry with the UUID as the key
							addUUIDEntry(entry.getValue(), warn, timestamp, entry.getKey().toLowerCase());
							// Remove the old entry
							delPreUUIDEntry(entry.getKey().toLowerCase());
							//logger.info("[BadWords] Migrated user:" + entry.getKey() + " UUID:" + entry.getValue());
							d++;
						}
					} catch (Exception e) {
						logger.warning("[BadWords] Unable to contact Mojang UUID lookup - aborting migration");
					}
					logger.info("[BadWords] Migrated " + d + " players to UUID support");
				}
			});
		}
		
	}