Index: tmp/org.txm.lexicaltable.core/src/org/txm/lexicaltable/core/functions/LexicalTable.java
===================================================================
--- tmp/org.txm.lexicaltable.core/src/org/txm/lexicaltable/core/functions/LexicalTable.java	(revision 1180)
+++ tmp/org.txm.lexicaltable.core/src/org/txm/lexicaltable/core/functions/LexicalTable.java	(revision 1181)
@@ -557,7 +557,8 @@
 				strb.append(property.getName() + " ");
 			}
 			try {
-				strb.append(this.getFMin() + " / " + this.getNRows());
+				//strb.append(this.getFMin() + " / " + this.getNRows());
+				strb.append(this.fMinFilter +" / "+this.vMaxFilter);
 			} catch (Exception e) {
 				// TODO Auto-generated catch block
 				e.printStackTrace();
Index: tmp/org.txm.ahc.core/src/org/txm/ahc/core/functions/AHC.java
===================================================================
--- tmp/org.txm.ahc.core/src/org/txm/ahc/core/functions/AHC.java	(revision 1180)
+++ tmp/org.txm.ahc.core/src/org/txm/ahc/core/functions/AHC.java	(revision 1181)
@@ -185,7 +185,7 @@
 	@Override
 	protected boolean _compute()	{
 
-		Log.info("Computing CAH...");
+		Log.info("Computing AHC...");
 		try {
 			CA ca = getParent();
 			LexicalTable table = ca.getLexicalTable();
@@ -685,14 +685,7 @@
 
 	@Override
 	public String getName() {
-		// FIXME: to define
-		// TMP solution below
-		try {
-			return getParent().getName();
-		}
-		catch (Exception e) {
-			return this.getEmptyName();
-		}
+		return ""+this.getNumberOfClusters()+" "+(this.columnsComputing?"columns":"rows");
 	}
 
 
Index: tmp/org.txm.ca.core/src/org/txm/ca/core/functions/CA.java
===================================================================
--- tmp/org.txm.ca.core/src/org/txm/ca/core/functions/CA.java	(revision 1180)
+++ tmp/org.txm.ca.core/src/org/txm/ca/core/functions/CA.java	(revision 1181)
@@ -717,7 +717,12 @@
 	@Override
 	public String getSimpleName() {
 		try {
-			return this.getParent().getSimpleName() + " (" + this.firstDimension + "," + this.secondDimension + ")";
+			if (this.hasBeenComputedOnce) {
+				return this.getParent().getSimpleName() + " (" + this.firstDimension + "," + this.secondDimension + ")";
+			} else {
+				return "";
+			}
+			
 		}
 		catch (Exception e) {
 			return this.getEmptyName();
Index: tmp/org.txm.rcp/src/main/java/org/txm/rcp/views/debug/TXMResultDebugView.java
===================================================================
--- tmp/org.txm.rcp/src/main/java/org/txm/rcp/views/debug/TXMResultDebugView.java	(revision 1180)
+++ tmp/org.txm.rcp/src/main/java/org/txm/rcp/views/debug/TXMResultDebugView.java	(revision 1181)
@@ -103,7 +103,7 @@
 		
 		StringBuffer buffer = new StringBuffer();
 		buffer.append("Class: " + this.currentResult.getClass() + "\n"); //$NON-NLS-1$ //$NON-NLS-2$
-		buffer.append("UUID: " + this.currentResult.getUUID() + "\n"); //$NON-NLS-1$ //$NON-NLS-2$
+		//buffer.append("UUID: " + this.currentResult.getUUID() + "\n"); //$NON-NLS-1$ //$NON-NLS-2$
 		buffer.append("Node path: " + this.currentResult.getParametersNodePath() + "\n"); //$NON-NLS-1$ //$NON-NLS-2$
 		buffer.append("Simple name: " + this.currentResult.getSimpleName() + "\n"); //$NON-NLS-1$ //$NON-NLS-2$
 		buffer.append("User name: " + this.currentResult.getUserName() + "\n"); //$NON-NLS-1$ //$NON-NLS-2$
Index: tmp/org.txm.links.rcp/src/org/txm/links/rcp/handlers/SendSelectionToMatchable.java
===================================================================
--- tmp/org.txm.links.rcp/src/org/txm/links/rcp/handlers/SendSelectionToMatchable.java	(revision 1180)
+++ tmp/org.txm.links.rcp/src/org/txm/links/rcp/handlers/SendSelectionToMatchable.java	(revision 1181)
@@ -72,7 +72,7 @@
 			
 			// create a local result node in the project node, store in some parameters and call the linked command
 			String resultParametersNodePath = this.getResultParent(event).getProject().getParametersNodeRootPath() + TXMResult.createUUID() + "_link"; // FIXME: we can't put the class name here since we does not know the target class
-			TXMPreferences.put(resultParametersNodePath, TXMPreferences.PARENT_UUID, this.getResultParent(event).getUUID());
+			TXMPreferences.put(resultParametersNodePath, TXMPreferences.PARENT_UUID, this.getResultParent(event).getParametersNodePath());
 			TXMPreferences.put(resultParametersNodePath, TXMPreferences.MATCHES, matches.toString());
 			
 			BaseAbstractHandler.executeSendToCommand(event.getCommand().getId(), resultParametersNodePath);
Index: tmp/org.txm.links.rcp/src/org/txm/links/rcp/handlers/SendSelectionToQueryable.java
===================================================================
--- tmp/org.txm.links.rcp/src/org/txm/links/rcp/handlers/SendSelectionToQueryable.java	(revision 1180)
+++ tmp/org.txm.links.rcp/src/org/txm/links/rcp/handlers/SendSelectionToQueryable.java	(revision 1181)
@@ -80,7 +80,7 @@
 			
 			// create a local result node in the project node, store in some parameters and call the linked command
 			String resultParametersNodePath = this.getResultParent(event).getProject().getParametersNodeRootPath() + TXMResult.createUUID() + "_link"; // FIXME: we can't put the class name here since we does not know the target class
-			TXMPreferences.put(resultParametersNodePath, TXMPreferences.PARENT_UUID, this.getResultParent(event).getUUID());
+			TXMPreferences.put(resultParametersNodePath, TXMPreferences.PARENT_UUID, this.getResultParent(event).getParametersNodePath());
 			TXMPreferences.put(resultParametersNodePath, TXMPreferences.QUERY, query);
 			TXMPreferences.put(resultParametersNodePath, TXMPreferences.QUERIES, queries);
 			
Index: tmp/org.txm.core/src/java/org/txm/core/preferences/TXMPreferences.java
===================================================================
--- tmp/org.txm.core/src/java/org/txm/core/preferences/TXMPreferences.java	(revision 1180)
+++ tmp/org.txm.core/src/java/org/txm/core/preferences/TXMPreferences.java	(revision 1181)
@@ -88,8 +88,8 @@
 
 	// essentially for Links and Persistence
 	public final static String RESULT_PARAMETERS_NODE_PATH = "result_parameters_node_path"; //$NON-NLS-1$
-	public final static String RESULT_UUID = "result_uuid"; //$NON-NLS-1$
-	public final static String PARENT_UUID = "parent_uuid"; //$NON-NLS-1$
+	//public final static String RESULT_UUID = "result_uuid"; //$NON-NLS-1$
+	public final static String PARENT_UUID = "parent_parameters_node_path"; //$NON-NLS-1$
 	public final static String BUNDLE_ID = "bundle_id"; //$NON-NLS-1$
 	public final static String USER_NAME = "user_name"; //$NON-NLS-1$
 	public final static String LAZY_NAME = "lazy_name"; //$NON-NLS-1$
@@ -1225,7 +1225,7 @@
 	 * @param result
 	 */
 	public static void flush(TXMResult result)	{
-		Log.finest("TXMPreferences.flush(): Local preferences for object " + result.getUUID() + " saved to file.");
+		Log.finest("TXMPreferences.flush(): Local preferences for object " + result.getParametersNodePath() + " saved to file.");
 		flush(result.getParametersNodePath());
 	}
 	
@@ -1254,7 +1254,7 @@
 	 */
 	public static void delete(TXMResult result)	{
 		delete(preferencesRootNode.node(result.getParametersNodePath()));
-		Log.finest("TXMPreferences.delete(): Local preferences node for object " + result.getUUID() + " deleted.");
+		Log.finest("TXMPreferences.delete(): Local preferences node for object " + result.getParametersNodePath() + " deleted.");
 	}
 
 
Index: tmp/org.txm.core/src/java/org/txm/core/results/TXMResult.java
===================================================================
--- tmp/org.txm.core/src/java/org/txm/core/results/TXMResult.java	(revision 1180)
+++ tmp/org.txm.core/src/java/org/txm/core/results/TXMResult.java	(revision 1181)
@@ -1,7 +1,10 @@
 package org.txm.core.results;
 
 import java.io.File;
+import java.io.FileNotFoundException;
 import java.io.IOException;
+import java.io.PrintWriter;
+import java.io.UnsupportedEncodingException;
 import java.lang.reflect.Field;
 import java.text.DateFormat;
 import java.text.SimpleDateFormat;
@@ -25,6 +28,7 @@
 import org.txm.objects.Project;
 import org.txm.objects.Workspace;
 import org.txm.stat.utils.LogMonitor;
+import org.txm.utils.io.IOUtils;
 import org.txm.utils.logger.Log;
 
 // FIXME: At this moment, an empty list is created for children, to not return
@@ -67,10 +71,10 @@
 	public static final Pattern FILE_NAME_PATTERN = Pattern.compile("[^a-zA-Z0-9\\.-]+"); //$NON-NLS-1$
 	public static final String UNDERSCORE = "_";
 
-	/**
-	 * Unique ID of the result.
-	 */
-	protected String uniqueID;
+//	/**
+//	 * Unique ID of the result.
+//	 */
+//	protected String uniqueID;
 
 	/**
 	 * Editor can use this to test if the result has been computed once.
@@ -196,26 +200,19 @@
 		}
 
 		if (parametersNodePath == null)	{
-			this.uniqueID = createUUID() + "_" + this.getClass().getSimpleName(); //$NON-NLS-1$
 			if (this.getProject() != null)	{
 				parametersNodePath = this.getProject().getParametersNodeRootPath();
+			} else {
+				parametersNodePath = "";
 			}
-			this.parametersNodePath = parametersNodePath + this.uniqueID;
+			this.parametersNodePath = parametersNodePath + createUUID() + "_" + this.getClass().getSimpleName(); //$NON-NLS-1$;
 		}
 		else	{
-			try {
-				this.uniqueID = parametersNodePath.substring(parametersNodePath.lastIndexOf("/") + 1); //$NON-NLS-1$
-			}
-			// FIXME: essentially for the UUID "ROOT" defined in the Workspace class, see if we can do it in another way
-			catch (Exception e) {
-				this.uniqueID = parametersNodePath;
-			}
 			this.parametersNodePath = parametersNodePath;
 		}
 
 		Log.finest("TXMResult.TXMResult(): parameters node path: " + this.parametersNodePath);
 
-
 		this.weight = 0;
 
 		this.children = new ArrayList<TXMResult>(1);
@@ -232,22 +229,22 @@
 
 
 		// retrieving parent from UUID
-		String parentUUID = this.getStringParameterValue(TXMPreferences.PARENT_UUID);
+		String parentNodePath = this.getStringParameterValue(TXMPreferences.PARENT_UUID);
 
 		//System.out.println("TXMResult.TXMResult(): parent UUID = " + parentUUID);
 
-		if (!("ROOT".equals(this.uniqueID)) && // search for parent only if UUID != "ROOT"
+		if (!("ROOT".equals(this.parametersNodePath)) && // search for parent only if UUID != "ROOT"
 				parent == null && 
-				this.uniqueID != null && 
-				!parentUUID.isEmpty()) {
-			Log.warning("Searching parent with UUID: " + parentUUID + "...");
-			TXMResult retrievedParent = TXMResult.getResult(parentUUID);
+				this.parametersNodePath != null && 
+				!parentNodePath.isEmpty()) {
+			Log.warning("Searching parent with UUID: " + parentNodePath + "...");
+			TXMResult retrievedParent = TXMResult.getResult(parentNodePath);
 			if (retrievedParent != null) {
 				Log.warning("Parent retrieved from UUID: " + retrievedParent + ".");
 				retrievedParent.addChild(this);
 			}
 			else {
-				Log.severe("Warning: no parent was found in project for path=" + parametersNodePath + " and puuid=" + parentUUID + " preferences=" + this.dumpParameters());
+				Log.severe("Warning: no parent was found in project for path=" + parametersNodePath + " and puuid=" + parentNodePath + " preferences=" + this.dumpParameters());
 				// FIXME: commented for now
 				//TBXPreferences.delete(this);
 				return;
@@ -259,13 +256,13 @@
 			this.autoLoadParametersFromAnnotations(); // auto fill from Parameter annotations
 			this.loadParameters();  // subclasses manual settings
 		} catch (Exception e) {
-			Log.severe("Fail to load " + uniqueID + "result: " + e);
+			Log.severe("Fail to load " + parametersNodePath + "result: " + e);
 			Log.printStackTrace(e);
 		}
 
 		// Log
 		if (this.parent == null)	{
-			Log.warning("Warning: the TXMResult of " + this.getClass() + " is attached to no parent. (uuid = " + this.getUUID() + ")");
+			Log.warning("Warning: the TXMResult of " + this.getClass() + " is attached to no parent. (uuid = " + this.parametersNodePath + ")");
 		}
 
 		try {
@@ -294,8 +291,17 @@
 	public static String createUUID() {
 		// FIXME: see if it's useful to put the class name or not, should be better to save it in the .prefs
 		//this.uniqueID = this.getClass().getName() + '@' + ID_TIME_FORMAT.format(new Date(System.currentTimeMillis())) + "_" + UUID.randomUUID();
-		return UUID_PREFIX + ID_TIME_FORMAT.format(new Date(System.currentTimeMillis())) + "_" + UUID.randomUUID();
+		return UUID_PREFIX + ID_TIME_FORMAT.format(new Date(System.currentTimeMillis())) + "_" + nextInt();
 	}
+	
+	private static int next = 0;
+	/**
+	 * 
+	 * @return the next integer in the current session of TXM
+	 */
+	private static synchronized String nextInt() {
+		return String.format("%04d", next++);
+	}
 
 	/**
 	 * Checks if the result at least one child.
@@ -546,9 +552,9 @@
 		if (key.isEmpty()) {
 			return false;
 		}
-//		if (this.isDirty()) {
-//			return true;
-//		}
+		//		if (this.isDirty()) {
+		//			return true;
+		//		}
 
 		Object lastValue = lastParameters.get(key);
 		Object newValue = this.getParameter(key);
@@ -875,10 +881,9 @@
 		this.saveParameter("class", this.getClass().getName()); //$NON-NLS-1$
 
 		this.saveParameter(TXMPreferences.RESULT_PARAMETERS_NODE_PATH, this.parametersNodePath);
-		this.saveParameter(TXMPreferences.RESULT_UUID, this.uniqueID);
 		this.saveParameter(TXMPreferences.BUNDLE_ID, this.commandPreferencesNodePath);
 		if (this.parent != null)	{
-			this.saveParameter(TXMPreferences.PARENT_UUID, this.parent.getUUID());
+			this.saveParameter(TXMPreferences.PARENT_UUID, this.parent.getParametersNodePath());
 		}
 
 		this.lazyName = this.getSimpleName();
@@ -1164,16 +1169,39 @@
 	 * Deletes all non persistent results and saves the results to persist.
 	 */
 	public static void deleteAllNonPersistentResults() {
-		List<TXMResult> results = Toolbox.workspace.getDeepChildren();
-		for (int i = 0; i < results.size(); i++) {
-			TXMResult r = results.get(i);
-			if (r.mustBePersisted())	{ 
-				TXMPreferences.flush(r);
+		File logs = new File(System.getProperty("user.home"), "logs.txt");
+		PrintWriter w = null;
+		try {
+			w = IOUtils.getWriter(logs);
+			List<TXMResult> todo = Toolbox.workspace.getChildren();
+			while (todo.size() > 0) {
+				TXMResult r = null;
+				try {
+					r = todo.remove(0);
+					todo.addAll(0, r.getChildren());
+					w.println("Persisting? "+r);
+					if (r.mustBePersisted())	{ 
+						w.println(" YES");
+						TXMPreferences.flush(r);
+					}
+					else {
+						w.println(" NO");
+						Log.finest("TXMResult.deleteAllNonPersistentResults(): Deleting result " + r.getSimpleName() + " of type " + r.getClass().getSimpleName() + ".");
+						TXMPreferences.delete(r);
+					}
+				} catch (Exception e) {
+					w.println(" Error: "+e+" with "+r);
+				}
+				w.println(" OK: "+r);
 			}
-			else {
-				Log.finest("TXMResult.deleteAllNonPersistentResults(): Deleting result " + r.getSimpleName() + " of type " + r.getClass().getSimpleName() + ".");
-				TXMPreferences.delete(r);
-			}
+		} catch (UnsupportedEncodingException e1) {
+			// TODO Auto-generated catch block
+			e1.printStackTrace();
+		} catch (FileNotFoundException e1) {
+			// TODO Auto-generated catch block
+			e1.printStackTrace();
+		} finally {
+			if (w != null) w.close();
 		}
 	}
 
@@ -1290,7 +1318,7 @@
 	}
 
 	/**
-	 * Gets all the children results (nor a clone).
+	 * Gets all the children results (not a clone).
 	 * 
 	 * @return
 	 */
@@ -1400,15 +1428,15 @@
 	 * @param UUID
 	 * @return
 	 */
-	public static TXMResult getResult(TXMResult root, String UUID)	{
+	public static TXMResult getResult(TXMResult root, String nodePath)	{
 		TXMResult result = null;
-		if(root.getUUID().equals(UUID))	{
+		if(root.getParametersNodePath().equals(nodePath))	{
 			result = root;
 		}
 		else	{
 			List<TXMResult> results = root.getDeepChildren();
 			for (int i = 0; i < results.size(); i++) {
-				if(results.get(i).getUUID().equals(UUID))	{
+				if(results.get(i).getParametersNodePath().equals(nodePath))	{
 					result = results.get(i);
 					break;
 				}
@@ -1422,8 +1450,8 @@
 	 * @param UUID
 	 * @return
 	 */
-	public static TXMResult getResult(String UUID)	{
-		return getResult(Toolbox.workspace, UUID);
+	public static TXMResult getResult(String nodePath)	{
+		return getResult(Toolbox.workspace, nodePath);
 	}
 
 	/**
@@ -1643,14 +1671,14 @@
 		return "..."; //$NON-NLS-1$
 	}
 
-	/**
-	 * Returns a string representation of an unique ID for the result.
-	 * 
-	 * @return
-	 */
-	public String getUUID() {
-		return this.uniqueID;
-	}
+//	/**
+//	 * Returns a string representation of an unique ID for the result.
+//	 * 
+//	 * @return
+//	 */
+//	public String getUUID() {
+//		return this.uniqueID;
+//	}
 
 	/**
 	 * Gets a string representing the result that can be used as a file name (eg. for exporting in file).
@@ -1714,7 +1742,7 @@
 		TXMResult clone = null;
 		try {
 			clone = (TXMResult) super.clone();
-			clone.uniqueID = createUUID();
+			clone.parametersNodePath = this.getProject().getParametersNodeRootPath()+ createUUID() + "_" + this.getClass().getSimpleName(); //$NON-NLS-1$;
 			this.parent.addChild(clone);
 			TXMPreferences.cloneNode(this, clone);
 			clone.dirty = true;
@@ -1973,13 +2001,13 @@
 	 * Checks if the result must be persisted according to the persistence global preference or the user persistable state.
 	 * @return
 	 */
-//	public boolean mustBePersisted()	{
-//		if (this.internalPersistable
-//				|| this.userPersistable)	{
-//			return true;
-//		}
-//		return false;
-//	}
+	//	public boolean mustBePersisted()	{
+	//		if (this.internalPersistable
+	//				|| this.userPersistable)	{
+	//			return true;
+	//		}
+	//		return false;
+	//	}
 
 	// FIXME: need to prove this code
 	public boolean mustBePersisted()	{
@@ -2153,7 +2181,7 @@
 		if (e1 == null && e2 == null) return 0;
 		if (e1 == null) return 1;
 
-		return e1.getUUID().compareTo(e2.getUUID());
+		return e1.getParametersNodePath().compareTo(e2.getParametersNodePath());
 	}
 
 	/**
Index: tmp/org.txm.core/src/java/org/txm/objects/Project.java
===================================================================
--- tmp/org.txm.core/src/java/org/txm/objects/Project.java	(revision 1180)
+++ tmp/org.txm.core/src/java/org/txm/objects/Project.java	(revision 1181)
@@ -399,8 +399,10 @@
 				Log.finest("\nProject.loadResults(): loading from result node qualifier " + parametersNodePath);
 				//Log.finest("Toolbox.initialize(): class = " + TXMPreferences.getString("class", nodeQualifier));
 				//TXMPreferences.dump();
-
-
+				TXMResult result = TXMResult.getResult(this, parametersNodePath);
+				if (result != null) { // result already restored
+					continue;
+				}
 				Log.finest("Project.loadResults(): class = " + className); //$NON-NLS-1$
 				//					Log.finest("Toolbox.initialize(): parent_uuid = " + TXMPreferences.getString(TXMPreferences.PARENT_UUID, nodeQualifier));
 				Log.finest("Project.loadResults(): parent_uuid = " + TXMPreferences.preferencesRootNode.node(parametersNodePath).get(TXMPreferences.PARENT_UUID, "")); //$NON-NLS-1$
@@ -414,7 +416,7 @@
 
 				Class<?> cl = bundle.loadClass(className);
 				Constructor<?> cons = cl.getConstructor(String.class);
-				TXMResult result = (TXMResult) cons.newInstance(parametersNodePath);
+				result = (TXMResult) cons.newInstance(parametersNodePath);
 
 				// not an internal persistence (eg. corpus or partition)
 				if (!result.isInternalPersistable())	{
@@ -1241,4 +1243,8 @@
 	public IProject getRCPProject() {
 		return rcpProject;
 	}
+	
+	public String toString() {
+		return this.userName+" "+this.rcpProject.getLocation();
+	}
 }
Index: tmp/org.txm.core/src/java/org/txm/objects/Text.java
===================================================================
--- tmp/org.txm.core/src/java/org/txm/objects/Text.java	(revision 1180)
+++ tmp/org.txm.core/src/java/org/txm/objects/Text.java	(revision 1181)
@@ -297,4 +297,8 @@
 	public String getResultype() {
 		return "Text";
 	}
+	
+	public String toString() {
+		return userName+" "+pTXMFile;
+	}
 }
Index: tmp/org.txm.core/src/java/org/txm/objects/Edition.java
===================================================================
--- tmp/org.txm.core/src/java/org/txm/objects/Edition.java	(revision 1180)
+++ tmp/org.txm.core/src/java/org/txm/objects/Edition.java	(revision 1181)
@@ -319,7 +319,7 @@
 	@Override
 	public String toString() {
 		try {
-			return "Edition [name="+userName+" index=" + pIndex + ", \npages=" //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+			return "Edition [name="+userName+" index=" + pIndex + ", pages=" //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
 					+ pages.size() + "]"; //$NON-NLS-1$
 		}
 		catch (Exception e) {
