public static Map<String, Vector<String>> getCuratedCategories() throws PluginNotFoundException {
		final Map<String, Vector<String>> identities = new HashMap<String, Vector<String>>();
		final SimpleFieldSet sfs = new SimpleFieldSet(true);
		sfs.putOverwrite("Message", "GetOwnIdentities");
		
		SyncPluginTalker spt = new SyncPluginTalker(new ReceptorCore() {

			public void onReply(String pluginname, String indentifier, SimpleFieldSet params, Bucket data) {
				try {
					if (params.getString("Message").equals("OwnIdentities")) {
						Map<String,String> identifiers = new HashMap<String,String>();
						String currentId = null;
						Iterator<String> it = params.toplevelKeyIterator();
						while (it.hasNext()) {
							String key = it.next();
							if (key.startsWith(IDENTITY_KEY_PREFIX)) {
								currentId = params.get(key);
								String id = key.split(IDENTITY_KEY_PREFIX)[1];
								identifiers.put(id,currentId);
							} 
						}
						for(String idNum : identifiers.keySet()) {
							int count = 0;
							Vector<String> categories = new Vector<String>();
							while(true) {
								String name = params.get("Properties"+idNum+".Property"+count+".Name");
								if(name == null) break;
								count++;
								if (name.startsWith(IDENTITY_CATEGORY_NAME_PREFIX)) {
									categories.add(name.split(IDENTITY_CATEGORY_NAME_PREFIX)[1]);
								}
							}
							if (!categories.isEmpty()) {
								identities.put(identifiers.get(idNum), categories);
							}
						}
					} else {
						Logger.error(this, "Unexpected message : " + params.getString("Message"));
					}
				} catch (FSParseException ex) {
					Logger.error(this, "WoTIdentity : Parse error !");
				}
			}
		}, sfs, null);

		spt.run();
		
		return identities;
	}