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 1111)
+++ tmp/org.txm.lexicaltable.core/src/org/txm/lexicaltable/core/functions/LexicalTable.java	(revision 1112)
@@ -164,8 +164,8 @@
 
 
 
-	public LexicalTable(String uuid)	{
-		super(uuid);
+	public LexicalTable(String parametersNodePath)	{
+		super(parametersNodePath);
 	}
 
 
Index: tmp/org.txm.partition.core/src/org/txm/partition/core/functions/PartitionDimensions.java
===================================================================
--- tmp/org.txm.partition.core/src/org/txm/partition/core/functions/PartitionDimensions.java	(revision 1111)
+++ tmp/org.txm.partition.core/src/org/txm/partition/core/functions/PartitionDimensions.java	(revision 1112)
@@ -65,10 +65,10 @@
 
 	/**
 	 * Creates a not computed partition dimensions.
-	 * @param UUID
+	 * @param parametersNodePath
 	 */
-	public PartitionDimensions(String UUID) {
-		super(UUID);
+	public PartitionDimensions(String parametersNodePath) {
+		super(parametersNodePath);
 	}
 	
 
Index: tmp/org.txm.statsengine.r.core/src/org/txm/statsengine/r/core/StartRserve.java
===================================================================
--- tmp/org.txm.statsengine.r.core/src/org/txm/statsengine/r/core/StartRserve.java	(revision 1111)
+++ tmp/org.txm.statsengine.r.core/src/org/txm/statsengine/r/core/StartRserve.java	(revision 1112)
@@ -88,8 +88,7 @@
 	 * @return <code>true</code> if Rserve is running or was successfully
 	 * started, <code>false</code> otherwise.
 	 */
-	protected static boolean launchRserve(String cmd, String rargs,
-			String rsrvargs, int port, boolean debug) {
+	protected static boolean launchRserve(String cmd, String rargs, String rsrvargs, int port, boolean debug) {
 		//System.out.println("LAUNCH R SERVER "+cmd+" "+port+" "+debug);
 		try {
 			String[] cmdline = null;
@@ -165,8 +164,7 @@
 		int attempts = 10;
 		while (attempts > 0) {
 			try {
-				//System.out.print("."); //$NON-NLS-1$
-				Log.info(".");
+				System.out.print("."); //$NON-NLS-1$
 				RConnection c = new RConnection("127.0.0.1", port); //$NON-NLS-1$
 				c.close();
 				return true;
Index: tmp/org.txm.groovy.core/src/java/org/txm/groovy/core/GroovyScriptedImportEngine.java
===================================================================
--- tmp/org.txm.groovy.core/src/java/org/txm/groovy/core/GroovyScriptedImportEngine.java	(revision 1111)
+++ tmp/org.txm.groovy.core/src/java/org/txm/groovy/core/GroovyScriptedImportEngine.java	(revision 1112)
@@ -76,7 +76,7 @@
 			//System.out.println("script="+script);
 
 			TokenizerClasses.reset();
-			if (!TokenizerClasses.loadFromProject(project.getPreferences())) {
+			if (!TokenizerClasses.loadFromProject(project.getPreferencesScope())) {
 				Log.severe("Error: failed to load tokenizer parameters");
 				monitor.done();
 //				if (basedir.exists()) basedir.renameTo(errorBinDirectory);
Index: tmp/org.txm.wordcloud.core/src/org/txm/wordcloud/core/functions/WordCloud.java
===================================================================
--- tmp/org.txm.wordcloud.core/src/org/txm/wordcloud/core/functions/WordCloud.java	(revision 1111)
+++ tmp/org.txm.wordcloud.core/src/org/txm/wordcloud/core/functions/WordCloud.java	(revision 1112)
@@ -63,10 +63,10 @@
 
 	/**
 	 * Creates a not computed words cloud
-	 * @param uuid
+	 * @param parametersNodePath
 	 */
-	public WordCloud(String uuid)	{
-		super(uuid);
+	public WordCloud(String parametersNodePath)	{
+		super(parametersNodePath);
 	}
 	
 		
Index: tmp/org.txm.internalview.core/src/org/txm/internalview/core/functions/InternalView.java
===================================================================
--- tmp/org.txm.internalview.core/src/org/txm/internalview/core/functions/InternalView.java	(revision 1111)
+++ tmp/org.txm.internalview.core/src/org/txm/internalview/core/functions/InternalView.java	(revision 1112)
@@ -75,10 +75,10 @@
 	
 	/**
 	 * 
-	 * @param UUID
+	 * @param parametersNodePath
 	 */
-	public InternalView(String UUID) {
-		super(UUID);
+	public InternalView(String parametersNodePath) {
+		super(parametersNodePath);
 	}
 
 	
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 1111)
+++ tmp/org.txm.links.rcp/src/org/txm/links/rcp/handlers/SendSelectionToQueryable.java	(revision 1112)
@@ -80,13 +80,13 @@
 				return null;
 			}
 			
-			// create local result node, store in some parameters and call the linked command
-			String uuid = TXMResult.createUUID();
-			TXMPreferences.put(uuid, TXMPreferences.PARENT_UUID, this.getResultParent(event).getUUID());
-			TXMPreferences.put(uuid, TXMPreferences.QUERY, query);
-			TXMPreferences.put(uuid, TXMPreferences.QUERIES, queries);
+			// 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();
+			TXMPreferences.put(resultParametersNodePath, TXMPreferences.PARENT_UUID, this.getResultParent(event).getUUID());
+			TXMPreferences.put(resultParametersNodePath, TXMPreferences.QUERY, query);
+			TXMPreferences.put(resultParametersNodePath, TXMPreferences.QUERIES, queries);
 			
-			BaseAbstractHandler.executeSendToCommand(event.getCommand().getId(), uuid);
+			BaseAbstractHandler.executeSendToCommand(event.getCommand().getId(), resultParametersNodePath);
 			
 		}
 		else	{
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 1111)
+++ tmp/org.txm.links.rcp/src/org/txm/links/rcp/handlers/SendSelectionToMatchable.java	(revision 1112)
@@ -70,12 +70,12 @@
 				return null;
 			}
 			
-			// create local result node, store in some parameters and call the linked command
-			String uuid = TXMResult.createUUID();
-			TXMPreferences.put(uuid, TXMPreferences.PARENT_UUID, this.getResultParent(event).getUUID());
-			TXMPreferences.put(uuid, TXMPreferences.MATCHES, matches.toString());
+			// 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();
+			TXMPreferences.put(resultParametersNodePath, TXMPreferences.PARENT_UUID, this.getResultParent(event).getUUID());
+			TXMPreferences.put(resultParametersNodePath, TXMPreferences.MATCHES, matches.toString());
 			
-			BaseAbstractHandler.executeSendToCommand(event.getCommand().getId(), uuid);
+			BaseAbstractHandler.executeSendToCommand(event.getCommand().getId(), resultParametersNodePath);
 		}
 		else	{
 			this.logCanNotExecuteCommand(selection);
Index: tmp/org.txm.links.rcp/src/org/txm/links/rcp/messages/Messages.java
===================================================================
--- tmp/org.txm.links.rcp/src/org/txm/links/rcp/messages/Messages.java	(revision 1111)
+++ tmp/org.txm.links.rcp/src/org/txm/links/rcp/messages/Messages.java	(revision 1112)
@@ -5,7 +5,7 @@
 
 public class Messages extends NLS {
 	
-	private static final String BUNDLE_NAME = "org.txm.links.rcp.handlers.messages"; //$NON-NLS-1$
+	private static final String BUNDLE_NAME = "org.txm.links.rcp.messages.messages"; //$NON-NLS-1$
 	
 	public static String link_error_no_match;
 	public static String link_error_no_query;
Index: tmp/org.txm.textsbalance.core/src/org/txm/textsbalance/core/functions/TextsBalance.java
===================================================================
--- tmp/org.txm.textsbalance.core/src/org/txm/textsbalance/core/functions/TextsBalance.java	(revision 1111)
+++ tmp/org.txm.textsbalance.core/src/org/txm/textsbalance/core/functions/TextsBalance.java	(revision 1112)
@@ -75,10 +75,10 @@
 
 	/**
 	 * Creates a not computed texts balance.
-	 * @param UUID
+	 * @param parametersNodePath
 	 */
-	public TextsBalance(String UUID) {
-		super(UUID);
+	public TextsBalance(String parametersNodePath) {
+		super(parametersNodePath);
 	}
 
 	
Index: tmp/org.txm.annotation.kr.core/src/org/txm/annotation/kr/core/KRAnnotationEngine.java
===================================================================
--- tmp/org.txm.annotation.kr.core/src/org/txm/annotation/kr/core/KRAnnotationEngine.java	(revision 1111)
+++ tmp/org.txm.annotation.kr.core/src/org/txm/annotation/kr/core/KRAnnotationEngine.java	(revision 1112)
@@ -216,7 +216,7 @@
 		if (base == null) return new ArrayList<String>();
 		String[] names;
 		try {
-			names = base.getPreferences().getNode("KnowledgeRepository").node("names").keys();
+			names = base.getPreferencesScope().getNode("KnowledgeRepository").node("names").keys();
 			return Arrays.asList(names); // getKnowledgeRepositoryNames(params);
 		} catch (BackingStoreException e) {
 			e.printStackTrace();
Index: tmp/org.txm.properties.core/src/org/txm/properties/core/functions/Properties.java
===================================================================
--- tmp/org.txm.properties.core/src/org/txm/properties/core/functions/Properties.java	(revision 1111)
+++ tmp/org.txm.properties.core/src/org/txm/properties/core/functions/Properties.java	(revision 1112)
@@ -39,8 +39,6 @@
 
 import org.eclipse.osgi.util.NLS;
 import org.txm.Toolbox;
-import org.txm.core.preferences.TBXPreferences;
-import org.txm.core.preferences.TXMPreferences;
 import org.txm.core.results.Parameter;
 import org.txm.core.results.TXMParameters;
 import org.txm.core.results.TXMResult;
@@ -122,8 +120,11 @@
 	@Parameter(key=PropertiesPreferences.MAX_PROPERTIES_TO_DISPLAY)
 	protected int pMaxPropertiesToDisplay;
 	
+	
+	
+	
 	/**
-	 * Instantiates a new Information.
+	 * Instantiates a new corpus Properties.
 	 *
 	 * @param corpus a MainCorpus or a SubCorpus
 	 */
@@ -131,8 +132,12 @@
 		super(corpus);
 	}
 
-	public Properties(String uuid) {
-		super(uuid);
+	/**
+	 * 
+	 * @param parametersNodePath
+	 */
+	public Properties(String parametersNodePath) {
+		super(parametersNodePath);
 	}
 
 	
Index: tmp/org.txm.core/src/java/org/txm/importer/xtz/ImportModule.java
===================================================================
--- tmp/org.txm.core/src/java/org/txm/importer/xtz/ImportModule.java	(revision 1111)
+++ tmp/org.txm.core/src/java/org/txm/importer/xtz/ImportModule.java	(revision 1112)
@@ -69,8 +69,8 @@
 		if (Log.getLevel().intValue() < Level.WARNING.intValue()) {
 			debug = true;
 		}
-		this.multithread = project.getPreferences().getNode("import").getBoolean(ImportKeys.MULTITHREAD, false);
-		this.updateCorpus = project.getPreferences().getNode("import").getBoolean(ImportKeys.UPDATECORPUS, false);
+		this.multithread = project.getPreferencesScope().getNode("import").getBoolean(ImportKeys.MULTITHREAD, false);
+		this.updateCorpus = project.getPreferencesScope().getNode("import").getBoolean(ImportKeys.UPDATECORPUS, false);
 
 		
 		this.sourceDirectory = project.getSrcdir();
Index: tmp/org.txm.core/src/java/org/txm/Toolbox.java
===================================================================
--- tmp/org.txm.core/src/java/org/txm/Toolbox.java	(revision 1111)
+++ tmp/org.txm.core/src/java/org/txm/Toolbox.java	(revision 1112)
@@ -45,6 +45,10 @@
 import java.util.logging.Level;
 
 import org.apache.commons.lang.StringUtils;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IWorkspace;
+import org.eclipse.core.resources.ProjectScope;
+import org.eclipse.core.resources.ResourcesPlugin;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IConfigurationElement;
 import org.eclipse.core.runtime.IProgressMonitor;
@@ -52,7 +56,7 @@
 import org.eclipse.core.runtime.Platform;
 import org.eclipse.core.runtime.RegistryFactory;
 import org.eclipse.core.runtime.SafeRunner;
-import org.eclipse.core.runtime.preferences.IPreferencesService;
+import org.eclipse.core.runtime.preferences.IScopeContext;
 import org.eclipse.osgi.util.NLS;
 import org.osgi.framework.Bundle;
 import org.osgi.framework.Version;
@@ -64,6 +68,7 @@
 import org.txm.core.preferences.TBXPreferences;
 import org.txm.core.preferences.TXMPreferences;
 import org.txm.core.results.TXMResult;
+import org.txm.objects.Project;
 import org.txm.objects.Workspace;
 import org.txm.utils.BundleUtils;
 import org.txm.utils.DeleteDir;
@@ -275,39 +280,83 @@
 
 		// FIXME: tmp persistence tests: Reload saved results
 		//		if (TBXPreferences.getInstance().getBoolean(TBXPreferences.AUTO_PERSISTENCE_ENABLED)) {
-		Log.info("Toolbox.initialize(): reloading persitent results...");
-		ArrayList<String> resultsNodesQualifiers = TXMPreferences.getAllResultsNodesQualifiers();
-		for (String nodeQualifier : resultsNodesQualifiers) {
+		Log.severe("*** Toolbox.initialize(): reloading projects...");
+		
+		IWorkspace rcpWorkspace = ResourcesPlugin.getWorkspace();
+		IProject projects[] = rcpWorkspace.getRoot().getProjects();
+		
+		Log.info("Toolbox.initialize(): " + projects.length + " project(s) found in workspace.");
+		
+		for (int i = 0; i < projects.length; i++) {
+			
+			//IScopeContext projectScope = new ProjectScope(projects[i]);
 
-			// skip non-TXMResult preference node
-			if (TXMPreferences.getString(TXMPreferences.BUNDLE_ID, nodeQualifier).isEmpty())	{
-				continue;
-			}
+			//System.out.println("*************** Toolbox.initialize(): scope = " + projectScope.getName());
+			
+			ArrayList<String> resultNodePaths = TXMPreferences.getAllResultsNodePaths("project/" + projects[i].getName() + "/");
+			
+			Log.info("Toolbox.initialize(): loading project " + projects[i].getName() + "...");
+			Log.info("Toolbox.initialize(): " + resultNodePaths.size() + " node(s) found in project " + projects[i].getName() + "...");
+			
+			
+			for (String parametersNodePath : resultNodePaths) {
 
-			try {
-				Log.finest("Toolbox.initialize(): loading from result node qualifier " + nodeQualifier);
-				Log.finest("Toolbox.initialize(): class = " + TXMPreferences.getString("class", nodeQualifier));
-				Log.finest("Toolbox.initialize(): parent_uuid = " + TXMPreferences.getString(TXMPreferences.PARENT_UUID, nodeQualifier));
-				Log.finest("Toolbox.initialize(): bundle_id = " + TXMPreferences.getString(TXMPreferences.BUNDLE_ID, nodeQualifier));
-				Bundle bundle = Platform.getBundle(TXMPreferences.getString(TXMPreferences.BUNDLE_ID, nodeQualifier));
-				if (bundle == null) {
-					Log.finest("Warning: can not restore object with bundle name " + TXMPreferences.getString(TXMPreferences.BUNDLE_ID, nodeQualifier));
-					continue;
+				// skip non-TXMResult preference node
+//				if (TXMPreferences.getString(TXMPreferences.BUNDLE_ID, nodeQualifier).isEmpty())	{
+//					continue;
+//				}
+
+				try {
+
+					Log.finest("Toolbox.initialize(): checking result type linked to node path " + parametersNodePath);
+
+					
+					String className = TXMPreferences.preferencesRootNode.node(parametersNodePath).get("class", ""); //$NON-NLS-1$
+					
+					if(!className.equals(Project.class.getName()))	{
+						Log.finest("Toolbox.initialize(): not a project, result skipped (classame = " + className + ").");
+						continue;
+					}
+
+					
+					Log.finest("Toolbox.initialize(): loading from result node path " + parametersNodePath);
+					//Log.finest("Toolbox.initialize(): class = " + TXMPreferences.getString("class", nodeQualifier));
+					//TXMPreferences.dump();
+					
+
+					
+					Log.finest("Toolbox.initialize(): class = " + className); //$NON-NLS-1$
+//					Log.finest("Toolbox.initialize(): parent_uuid = " + TXMPreferences.getString(TXMPreferences.PARENT_UUID, nodeQualifier));
+					Log.finest("Toolbox.initialize(): parent_uuid = " + TXMPreferences.preferencesRootNode.node(parametersNodePath).get(TXMPreferences.PARENT_UUID, "")); //$NON-NLS-1$
+					String bundleId = TXMPreferences.preferencesRootNode.node(parametersNodePath).get(TXMPreferences.BUNDLE_ID, ""); //$NON-NLS-1$
+					Log.finest("Toolbox.initialize(): bundle_id = " + bundleId); //$NON-NLS-1$
+					Bundle bundle = Platform.getBundle(bundleId);
+					if (bundle == null) {
+						Log.finest("Warning: can not restore object with bundle name " + bundleId); //$NON-NLS-1$
+						continue;
+					}
+
+					
+					Log.info("Toolbox.initialize(): creating project " + projects[i].getName() + ".");
+					Class<?> cl = bundle.loadClass(className);
+					Constructor<?> cons = cl.getConstructor(String.class);
+					TXMResult result = (TXMResult) cons.newInstance(parametersNodePath);
+					
+					// not an internal persistence (eg. corpus or partition)
+					if (!result.isPersistable())	{
+						result.setUserPersistable(true);	
+					}
+				} catch (Exception e) {
+					// TODO Auto-generated catch block
+					e.printStackTrace();
 				}
-				String className = TXMPreferences.getString("class", nodeQualifier); //$NON-NLS-1$
-				Class<?> cl = bundle.loadClass(className);
-				Constructor<?> cons = cl.getConstructor(String.class);
-				TXMResult result = (TXMResult) cons.newInstance(nodeQualifier);
-				// not an internal persistence (eg. corpus or partition)
-				if (!result.isPersistable())	{
-					result.setUserPersistable(true);	
-				}
-			} catch (Exception e) {
-				// TODO Auto-generated catch block
-				e.printStackTrace();
 			}
+			//		}
+
 		}
-		//		}
+		
+		
+		
 
 
 
@@ -781,6 +830,7 @@
 		} catch (Exception e) {
 			Log.severe(NLS.bind(TXMCoreMessages.ApplicationWorkbenchAdvisor_40, e.getLocalizedMessage()));
 			System.err.println(NLS.bind(TXMCoreMessages.ApplicationWorkbenchAdvisor_40, e.getLocalizedMessage()));
+			e.printStackTrace();
 			return null;
 		}
 	}
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 1111)
+++ tmp/org.txm.core/src/java/org/txm/core/preferences/TXMPreferences.java	(revision 1112)
@@ -10,19 +10,17 @@
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.HashMap;
-import java.util.Iterator;
 import java.util.Map;
-import java.util.Set;
 
 import org.eclipse.core.runtime.Platform;
 import org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer;
 import org.eclipse.core.runtime.preferences.DefaultScope;
 import org.eclipse.core.runtime.preferences.IEclipsePreferences;
-import org.eclipse.core.runtime.preferences.IPreferencesService;
 import org.eclipse.core.runtime.preferences.IScopeContext;
 import org.eclipse.core.runtime.preferences.InstanceScope;
 import org.osgi.framework.FrameworkUtil;
 import org.osgi.service.prefs.BackingStoreException;
+import org.osgi.service.prefs.Preferences;
 import org.txm.core.results.TXMParameters;
 import org.txm.core.results.TXMResult;
 import org.txm.utils.logger.Log;
@@ -55,10 +53,14 @@
 public abstract class TXMPreferences extends AbstractPreferenceInitializer {
 
 
+	/**
+	 * Scope used for storing the command preferences.
+	 */
+	//public static IScopeContext scope = InstanceScope.INSTANCE;
 
-	// FIXME: here we must use a ProjectScope when we'll use IProject for TXM corpora 
-	public static IScopeContext scope = InstanceScope.INSTANCE;
-
+	
+	public static IEclipsePreferences preferencesRootNode = Platform.getPreferencesService().getRootNode();
+	
 	/**
 	 * Alternative nodes to look up when getting a preference.
 	 */
@@ -86,6 +88,7 @@
 
 
 	// 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 BUNDLE_ID = "bundle_id"; //$NON-NLS-1$
@@ -166,7 +169,7 @@
 	/**
 	 * Preferences node qualifier of the instance. 
 	 */
-	protected String preferencesNode;
+	protected String commandPreferencesNodeQualifier;
 	
 	/**
 	 * Instances map.
@@ -181,8 +184,8 @@
 	public TXMPreferences() {
 		super();
 		TXMPreferences.instances.put(this.getClass(), this);
-		this.preferencesNode = FrameworkUtil.getBundle(this.getClass()).getSymbolicName();
-		Log.info("TXMPreferences.TXMPreferences(): preferences node = " + this.preferencesNode);
+		this.commandPreferencesNodeQualifier = FrameworkUtil.getBundle(this.getClass()).getSymbolicName();
+		Log.finest("TXMPreferences.TXMPreferences(): initializing preferences for node = " + this.commandPreferencesNodeQualifier + " (" + this.getClass() +")");
 	}
 
 
@@ -192,7 +195,7 @@
 	 * @return
 	 */
 	public double getDouble(String key)	{
-		return getDouble(key, this.preferencesNode);
+		return getDouble(key, this.commandPreferencesNodeQualifier);
 	}
 
 	/**
@@ -201,7 +204,7 @@
 	 * @return
 	 */
 	public boolean getBoolean(String key)	{
-		return getBoolean(key, this.preferencesNode);
+		return getBoolean(key, this.commandPreferencesNodeQualifier);
 	}
 
 	/**
@@ -210,7 +213,7 @@
 	 * @return
 	 */
 	public int getInt(String key)	{
-		return getInt(key, this.preferencesNode);
+		return getInt(key, this.commandPreferencesNodeQualifier);
 	}
 
 	/**
@@ -219,7 +222,7 @@
 	 * @return
 	 */
 	public long getLong(String key)	{
-		return getLong(key, this.preferencesNode);
+		return getLong(key, this.commandPreferencesNodeQualifier);
 	}
 	
 	/**
@@ -228,7 +231,7 @@
 	 * @return
 	 */
 	public String getString(String key)	{
-		return getString(key, this.preferencesNode);
+		return getString(key, this.commandPreferencesNodeQualifier);
 	}
 	
 
@@ -238,7 +241,7 @@
 	 * @return
 	 */
 	public float getFloat(String key)	{
-		return getFloat(key, this.preferencesNode);
+		return getFloat(key, this.commandPreferencesNodeQualifier);
 	}
 
 
@@ -247,21 +250,21 @@
 	 * @return the preferencesNode
 	 */
 	public String getPreferencesNodeQualifier() {
-		return preferencesNode;
+		return commandPreferencesNodeQualifier;
 	}
 
 	
 	
 	
-	/**
-	 * Stores a pairs of key / value in a local node dedicated to the specified result. The node qualifier is generated by the <code>Object.toString()</code> method.
-	 * 
-	 * @param key
-	 * @param pValue
-	 */
-	public static void remove(String key, String node)	{
-		scope.getNode(node).remove(key);
-	}
+//	/**
+//	 * Stores a pairs of key / value in a local node dedicated to the specified result. The node qualifier is generated by the <code>Object.toString()</code> method.
+//	 * 
+//	 * @param key
+//	 * @param pValue
+//	 */
+//	public static void remove(String key, String node)	{
+//		scope.getNode(node).remove(key);
+//	}
 
 	/**
 	 * Saves all preferences and session results in the default app directory.
@@ -270,9 +273,8 @@
 		
 		Log.info("Saving preferences and session results.");
 		
-		IPreferencesService service = Platform.getPreferencesService();
 		try {
-			service.getRootNode().flush();
+			preferencesRootNode.flush();
 		} catch(Exception e) {
 			Log.severe("Error while saving preferences and session results.");
 			e.printStackTrace();
@@ -287,21 +289,21 @@
 	 * Otherwise try to get it from the specified alternative node qualifiers defined in the list <code>TXMPreferences.alternativeNodesQualifiers</code>.
 	 * Returns <code>false</code> if no value has been found for the specified key.
 	 * @param commandParameters
-	 * @param nodeQualifier
+	 * @param nodePath
 	 * @param result
 	 * @param key
 	 * @return
 	 */
-	public static Serializable getSerializable(String key, TXMParameters commandParameters, TXMResult result, String nodeQualifier)	{
+	public static Serializable getSerializable(String key, TXMParameters commandParameters, TXMResult result, String nodePath)	{
 		if(commandParameters != null && commandParameters.get(key) != null)	{
 			return (Serializable) commandParameters.get(key);
 		}
-		return getSerializable(key, result, nodeQualifier);
+		return getSerializable(key, result, nodePath);
 	}
 
 
 	public static Serializable getSerializable(String key, TXMParameters commandParameters, TXMResult result)	{
-		return getSerializable(key, commandParameters, result, result.getPreferencesNodeQualifier());
+		return getSerializable(key, commandParameters, result, result.getCommandPreferencesNodePath());
 	}
 
 	/**
@@ -310,16 +312,16 @@
 	 * Otherwise try to get it from the specified node qualifier if exists.
 	 * Otherwise try to get it from the specified alternative node qualifiers defined in the list <code>TXMPreferences.alternativeNodesQualifiers</code>.
 	 * Returns defaultValue if no value has been found for the specified key.
-	 * @param nodeQualifier
+	 * @param nodePath
 	 * @param result
 	 * @param key
 	 * @return
 	 */
-	public static Serializable getSerializable(String key, TXMResult result, String nodeQualifier, Serializable defaultValue)	{
+	public static Serializable getSerializable(String key, TXMResult result, String nodePath, Serializable defaultValue)	{
 
-		nodeQualifier = findNodeQualifier(nodeQualifier, result, key);
+		nodePath = findNodePath(nodePath, result, key);
 
-		String data_default = DefaultScope.INSTANCE.getNode(nodeQualifier).get(key, "");
+		String data_default = DefaultScope.INSTANCE.getNode(nodePath).get(key, "");
 		if (data_default.length() == 0) {
 			return null;
 		}
@@ -330,7 +332,7 @@
 			Log.printStackTrace(e);
 		}
 
-		String data_return = scope.getNode(nodeQualifier).get(key, "");
+		String data_return = preferencesRootNode.node(nodePath).get(key, "");
 		if (data_return.length() == 0) {
 			return defaultValue;
 		}
@@ -349,23 +351,23 @@
 	 * Otherwise try to get it from the specified node qualifier if exists.
 	 * Otherwise try to get it from the specified alternative node qualifiers defined in the list <code>TXMPreferences.alternativeNodesQualifiers</code>.
 	 * Returns <code>false</code> if no value has been found for the specified key.
-	 * @param nodeQualifier
+	 * @param nodePath
 	 * @param result
 	 * @param key
 	 * @return
 	 */
-	public static Serializable getSerializable(String key, TXMResult result, String nodeQualifier)	{
-		return getSerializable(key, result, nodeQualifier, false);
+	public static Serializable getSerializable(String key, TXMResult result, String nodePath)	{
+		return getSerializable(key, result, nodePath, false);
 	}
 
 	/**
 	 *
-	 * @param nodeQualifier
+	 * @param nodePath
 	 * @param key
 	 * @return
 	 */
-	public static Serializable getSerializable(String key, String nodeQualifier)	{
-		return getSerializable(key, null, nodeQualifier);
+	public static Serializable getSerializable(String key, String nodePath)	{
+		return getSerializable(key, null, nodePath);
 	}
 
 	/**
@@ -386,21 +388,21 @@
 	 * Otherwise try to get it from the specified alternative node qualifiers defined in the list <code>TXMPreferences.alternativeNodesQualifiers</code>.
 	 * Returns <code>false</code> if no value has been found for the specified key.
 	 * @param commandParameters
-	 * @param nodeQualifier
+	 * @param nodePath
 	 * @param result
 	 * @param key
 	 * @return
 	 */
-	public static boolean getBoolean(String key, TXMParameters commandParameters, TXMResult result, String nodeQualifier)	{
+	public static boolean getBoolean(String key, TXMParameters commandParameters, TXMResult result, String nodePath)	{
 		if(commandParameters != null && commandParameters.get(key) != null)	{
 			return (Boolean) commandParameters.get(key);
 		}
-		return getBoolean(key, result, nodeQualifier);
+		return getBoolean(key, result, nodePath);
 	}
 
 
 	public static boolean getBoolean(String key, TXMParameters commandParameters, TXMResult result)	{
-		return getBoolean(key, commandParameters, result, result.getPreferencesNodeQualifier());
+		return getBoolean(key, commandParameters, result, result.getCommandPreferencesNodePath());
 	}
 
 	/**
@@ -409,17 +411,17 @@
 	 * Otherwise try to get it from the specified node qualifier if exists.
 	 * Otherwise try to get it from the specified alternative node qualifiers defined in the list <code>TXMPreferences.alternativeNodesQualifiers</code>.
 	 * Returns defaultValue if no value has been found for the specified key.
-	 * @param nodeQualifier
+	 * @param nodePath
 	 * @param result
 	 * @param key
 	 * @return
 	 */
-	public static boolean getBoolean(String key, TXMResult result, String nodeQualifier, boolean defaultValue)	{
+	public static boolean getBoolean(String key, TXMResult result, String nodePath, boolean defaultValue)	{
 
-		nodeQualifier = findNodeQualifier(nodeQualifier, result, key);
+		nodePath = findNodePath(nodePath, result, key);
 
-		defaultValue = DefaultScope.INSTANCE.getNode(nodeQualifier).getBoolean(key, defaultValue);
-		return scope.getNode(nodeQualifier).getBoolean(key, defaultValue);
+		defaultValue = DefaultScope.INSTANCE.getNode(nodePath).getBoolean(key, defaultValue);
+		return preferencesRootNode.node(nodePath).getBoolean(key, defaultValue);
 	}
 
 	/**
@@ -428,23 +430,23 @@
 	 * Otherwise try to get it from the specified node qualifier if exists.
 	 * Otherwise try to get it from the specified alternative node qualifiers defined in the list <code>TXMPreferences.alternativeNodesQualifiers</code>.
 	 * Returns <code>false</code> if no value has been found for the specified key.
-	 * @param nodeQualifier
+	 * @param nodePath
 	 * @param result
 	 * @param key
 	 * @return
 	 */
-	public static boolean getBoolean(String key, TXMResult result, String nodeQualifier)	{
-		return getBoolean(key, result, nodeQualifier, false);
+	public static boolean getBoolean(String key, TXMResult result, String nodePath)	{
+		return getBoolean(key, result, nodePath, false);
 	}
 
 	/**
 	 *
-	 * @param nodeQualifier
+	 * @param nodePath
 	 * @param key
 	 * @return
 	 */
-	public static boolean getBoolean(String key, String nodeQualifier)	{
-		return getBoolean(key, null, nodeQualifier);
+	public static boolean getBoolean(String key, String nodePath)	{
+		return getBoolean(key, null, nodePath);
 	}
 
 	/**
@@ -463,21 +465,21 @@
 	 * Try to cast and create a typed object from the String value of the key.
 	 * @param commandParameters
 	 * @param result
-	 * @param nodeQualifier
+	 * @param nodePath
 	 * @param key
 	 * @return
 	 */
 	//FIXME: does not work, need to test furthermore
-	//	public static Object get(TXMResultParameters commandParameters, TXMResult result, String nodeQualifier, String key)	{
+	//	public static Object get(TXMResultParameters commandParameters, TXMResult result, String nodePath, String key)	{
 	//
 	//
 	//		if(commandParameters != null && commandParameters.get(key) != null)	{
 	//			return commandParameters.get(key);
 	//		}
 	//
-	//		nodeQualifier = findNodeQualifier(nodeQualifier, result, key);
+	//		nodePath = findNodeQualifier(nodePath, result, key);
 	//
-	//		String stringValue = getString(nodeQualifier, key);
+	//		String stringValue = getString(nodePath, key);
 	//
 	//		try {
 	//			// double
@@ -527,47 +529,61 @@
 
 
 
-	/**
-	 * Looks for the value of the specified <code>key</code> in the specified parameters and preference nodes.
-	 * Returns the value of a key in the specified parameters if exists.
-	 * Otherwise try to get it from the local result node if exists.
-	 * Otherwise try to get it from the specified node qualifier if exists.
-	 * Otherwise try to get it from the specified alternative node qualifiers defined in the list <code>TXMPreferences.alternativeNodesQualifiers</code>.
-	 * Returns an empty <code>String</code> if no value has been found for the specified key.
-	 * @param commandParameters
-	 * @param nodeQualifier
-	 * @param result
-	 * @param key
-	 * @return
-	 */
-	public static String getString(String key, TXMParameters commandParameters, TXMResult result, String nodeQualifier)	{
-		if(commandParameters != null && commandParameters.get(key) != null)	{
-			return (String) commandParameters.get(key);
-		}
-		return getString(key, result, nodeQualifier);
-	}
+//	/**
+//	 * Looks for the value of the specified <code>key</code> in the specified parameters and preference nodes.
+//	 * Returns the value of a key in the specified parameters if exists.
+//	 * Otherwise try to get it from the local result node if exists.
+//	 * Otherwise try to get it from the specified node qualifier if exists.
+//	 * Otherwise try to get it from the specified alternative node qualifiers defined in the list <code>TXMPreferences.alternativeNodesQualifiers</code>.
+//	 * Returns an empty <code>String</code> if no value has been found for the specified key.
+//	 * @param commandParameters
+//	 * @param nodePath
+//	 * @param result
+//	 * @param key
+//	 * @return
+//	 */
+//	public static String getString(String key, TXMParameters commandParameters, TXMResult result, String nodePath)	{
+//		if(commandParameters != null && commandParameters.get(key) != null)	{
+//			return (String) commandParameters.get(key);
+//		}
+//		return getString(key, result, nodePath);
+//	}
+//
+//	public static String getString(String key, TXMParameters commandParameters, TXMResult result)	{
+//		return getString(key, commandParameters, result, result.getCommandPreferencesNodePath());
+//	}
 
-	public static String getString(String key, TXMParameters commandParameters, TXMResult result)	{
-		return getString(key, commandParameters, result, result.getPreferencesNodeQualifier());
-	}
 
-
 	/**
 	 * Looks for the value of the specified <code>key</code> in preference nodes.
 	 * Returns the value of the local result node if exists.
 	 * Otherwise try to get it from the specified node qualifier if exists.
 	 * Otherwise try to get it from the specified alternative node qualifiers defined in the list <code>TXMPreferences.alternativeNodesQualifiers</code>.
 	 * Returns defaultValue if no value has been found for the specified key.
-	 * @param nodeQualifier
+	 * @param nodePath
 	 * @param result
 	 * @param key
 	 * @return
 	 */
-	public static String getString(String key, TXMResult result, String nodeQualifier, String defaultValue) {
-		nodeQualifier = findNodeQualifier(nodeQualifier, result, key);
+	public static String getString(String key, TXMResult result, String nodePath, String defaultValue) {
 
-		defaultValue = DefaultScope.INSTANCE.getNode(nodeQualifier).get(key, defaultValue);
-		return scope.getNode(nodeQualifier).get(key, defaultValue);
+//		if(result instanceof Project)	{
+//			//TXMPreferences.dump();
+//			return preferencesService.getRootNode().node(result.getParametersNodePath()).get(key, defaultValue);
+//		}
+
+		
+//		if(result != null && result.getProject() != null && result.getProject().getPreferencesScope().getNode(result.getUUID()) != null)	{
+//			return result.getProject().getPreferencesScope().getNode(result.getUUID()).get(key, defaultValue);
+//		}
+
+		nodePath = findNodePath(nodePath, result, key);
+
+		//System.out.println("--- TXMPreferences.getString() node path = " + nodePath);
+		
+		
+		defaultValue = DefaultScope.INSTANCE.getNode(nodePath).get(key, defaultValue);
+		return preferencesRootNode.node(nodePath).get(key, defaultValue);
 	}
 
 
@@ -577,24 +593,24 @@
 	 * Otherwise try to get it from the specified node qualifier if exists.
 	 * Otherwise try to get it from the specified alternative node qualifiers defined in the list <code>TXMPreferences.alternativeNodesQualifiers</code>.
 	 * Returns an empty <code>String</code> if no value has been found for the specified key.
-	 * @param nodeQualifier
+	 * @param nodePath
 	 * @param result
 	 * @param key
 	 * @return
 	 */
-	public static String getString(String key, TXMResult result, String nodeQualifier)	{
-		return getString(key, result, nodeQualifier, "");
+	public static String getString(String key, TXMResult result, String nodePath)	{
+		return getString(key, result, nodePath, ""); //$NON-NLS-1$
 	}
 
 
 	/**
 	 *
-	 * @param nodeQualifier
+	 * @param nodePath
 	 * @param key
 	 * @return
 	 */
-	public static String getString(String key, String nodeQualifier)	{
-		return getString(key, null, nodeQualifier);
+	public static String getString(String key, String nodePath)	{
+		return getString(key, null, nodePath);
 	}
 
 
@@ -619,21 +635,21 @@
 	 * Otherwise try to get it from the specified alternative node qualifiers defined in the list <code>TXMPreferences.alternativeNodesQualifiers</code>.
 	 * Returns 0 if no value has been found for the specified key.
 	 * @param commandParameters
-	 * @param nodeQualifier
+	 * @param nodePath
 	 * @param result
 	 * @param key
 	 * @return
 	 */
-	public static int getInt(String key, TXMParameters commandParameters, TXMResult result, String nodeQualifier)	{
+	public static int getInt(String key, TXMParameters commandParameters, TXMResult result, String nodePath)	{
 		if(commandParameters != null && commandParameters.get(key) != null)	{
 			return (Integer) commandParameters.get(key);
 		}
-		return getInt(key, result, nodeQualifier);
+		return getInt(key, result, nodePath);
 	}
 
 
 	public static int getInt(String key, TXMParameters commandParameters, TXMResult result)	{
-		return getInt(key, commandParameters, result, result.getPreferencesNodeQualifier());
+		return getInt(key, commandParameters, result, result.getCommandPreferencesNodePath());
 	}
 
 	/**
@@ -642,27 +658,27 @@
 	 * Otherwise try to get it from the specified node qualifier if exists.
 	 * Otherwise try to get it from the specified alternative node qualifiers defined in the list <code>TXMPreferences.alternativeNodesQualifiers</code>.
 	 * Returns defaultValue if no value has been found for the specified key.
-	 * @param nodeQualifier
+	 * @param nodePath
 	 * @param result
 	 * @param key
 	 * @return
 	 */
-	public static int getInt(String key, TXMResult result, String nodeQualifier)	{
-		nodeQualifier = findNodeQualifier(nodeQualifier, result, key);
+	public static int getInt(String key, TXMResult result, String nodePath)	{
+		nodePath = findNodePath(nodePath, result, key);
 
-		Integer defaultValue = DefaultScope.INSTANCE.getNode(nodeQualifier).getInt(key, 0);
-		return scope.getNode(nodeQualifier).getInt(key, defaultValue);
+		int defaultValue = DefaultScope.INSTANCE.getNode(nodePath).getInt(key, 0);
+		return preferencesRootNode.node(nodePath).getInt(key, defaultValue);
 
 	}
 
 	/**
 	 *
-	 * @param nodeQualifier
+	 * @param nodePath
 	 * @param key
 	 * @return
 	 */
-	public static int getInt(String key, String nodeQualifier)	{
-		return getInt(key, null, nodeQualifier);
+	public static int getInt(String key, String nodePath)	{
+		return getInt(key, null, nodePath);
 	}
 
 	/**
@@ -684,20 +700,20 @@
 	 * Otherwise try to get it from the specified alternative node qualifiers defined in the list <code>TXMPreferences.alternativeNodesQualifiers</code>.
 	 * Returns 0L if no value has been found for the specified key.
 	 * @param commandParameters
-	 * @param nodeQualifier
+	 * @param nodePath
 	 * @param result
 	 * @param key
 	 * @return
 	 */
-	public static long getLong(String key, TXMParameters commandParameters, TXMResult result, String nodeQualifier)	{
+	public static long getLong(String key, TXMParameters commandParameters, TXMResult result, String nodePath)	{
 		if(commandParameters != null && commandParameters.get(key) != null)	{
 			return (Long) commandParameters.get(key);
 		}
-		return getLong(key, result, nodeQualifier);
+		return getLong(key, result, nodePath);
 	}
 
 	public static long getLong(String key, TXMParameters commandParameters, TXMResult result)	{
-		return getLong(key, commandParameters, result, result.getPreferencesNodeQualifier());
+		return getLong(key, commandParameters, result, result.getCommandPreferencesNodePath());
 	}
 
 
@@ -708,17 +724,17 @@
 	 * Otherwise try to get it from the specified node qualifier if exists.
 	 * Otherwise try to get it from the specified alternative node qualifiers defined in the list <code>TXMPreferences.alternativeNodesQualifiers</code>.
 	 * Returns defaultValue if no value has been found for the specified key.
-	 * @param nodeQualifier
+	 * @param nodePath
 	 * @param result
 	 * @param key
 	 * @param defaultValue
 	 * @return
 	 */
-	public static long getLong(String key, TXMResult result, String nodeQualifier, long defaultValue)	{
-		nodeQualifier = findNodeQualifier(nodeQualifier, result, key);
+	public static long getLong(String key, TXMResult result, String nodePath, long defaultValue)	{
+		nodePath = findNodePath(nodePath, result, key);
 
-		defaultValue = DefaultScope.INSTANCE.getNode(nodeQualifier).getLong(key, defaultValue);
-		return scope.getNode(nodeQualifier).getLong(key, defaultValue);
+		defaultValue = DefaultScope.INSTANCE.getNode(nodePath).getLong(key, defaultValue);
+		return preferencesRootNode.node(nodePath).getLong(key, defaultValue);
 
 	}
 
@@ -728,24 +744,24 @@
 	 * Otherwise try to get it from the specified node qualifier if exists.
 	 * Otherwise try to get it from the specified alternative node qualifiers defined in the list <code>TXMPreferences.alternativeNodesQualifiers</code>.
 	 * Returns 0L if no value has been found for the specified key.
-	 * @param nodeQualifier
+	 * @param nodePath
 	 * @param result
 	 * @param key
 	 * @param defaultValue
 	 * @return
 	 */
-	public static long getLong(String key, TXMResult result, String nodeQualifier)	{
-		return getLong(key, result, nodeQualifier, 0L);
+	public static long getLong(String key, TXMResult result, String nodePath)	{
+		return getLong(key, result, nodePath, 0L);
 	}
 
 	/**
 	 *
-	 * @param nodeQualifier
+	 * @param nodePath
 	 * @param key
 	 * @return
 	 */
-	public static long getLong(String key, String nodeQualifier)	{
-		return getLong(key, null, nodeQualifier);
+	public static long getLong(String key, String nodePath)	{
+		return getLong(key, null, nodePath);
 	}
 
 	/**
@@ -767,20 +783,20 @@
 	 * Otherwise try to get it from the specified alternative node qualifiers defined in the list <code>TXMPreferences.alternativeNodesQualifiers</code>.
 	 * Returns 0.0d if no value has been found for the specified key.
 	 * @param commandParameters
-	 * @param nodeQualifier
+	 * @param nodePath
 	 * @param result
 	 * @param key
 	 * @return
 	 */
-	public static double getDouble(String key, TXMParameters commandParameters, TXMResult result, String nodeQualifier)	{
+	public static double getDouble(String key, TXMParameters commandParameters, TXMResult result, String nodePath)	{
 		if(commandParameters != null && commandParameters.get(key) != null)	{
 			return (Double) commandParameters.get(key);
 		}
-		return getDouble(key, result, nodeQualifier);
+		return getDouble(key, result, nodePath);
 	}
 
 	public static double getDouble(String key, TXMParameters commandParameters, TXMResult result)	{
-		return getDouble(key, commandParameters, result, result.getPreferencesNodeQualifier());
+		return getDouble(key, commandParameters, result, result.getCommandPreferencesNodePath());
 	}
 
 
@@ -790,16 +806,16 @@
 	 * Otherwise try to get it from the specified node qualifier if exists.
 	 * Otherwise try to get it from the specified alternative node qualifiers defined in the list <code>TXMPreferences.alternativeNodesQualifiers</code>.
 	 * Returns defaultValue if no value has been found for the specified key.
-	 * @param nodeQualifier
+	 * @param nodePath
 	 * @param result
 	 * @param key
 	 * @return
 	 */
-	public static double getDouble(String key, String nodeQualifier, TXMResult result, double defaultValue)	{
-		nodeQualifier = findNodeQualifier(nodeQualifier, result, key);
+	public static double getDouble(String key, String nodePath, TXMResult result, double defaultValue)	{
+		nodePath = findNodePath(nodePath, result, key);
 
-		defaultValue = DefaultScope.INSTANCE.getNode(nodeQualifier).getDouble(key, defaultValue);
-		return scope.getNode(nodeQualifier).getDouble(key, defaultValue);
+		defaultValue = DefaultScope.INSTANCE.getNode(nodePath).getDouble(key, defaultValue);
+		return preferencesRootNode.node(nodePath).getDouble(key, defaultValue);
 	}
 
 	/**
@@ -808,24 +824,24 @@
 	 * Otherwise try to get it from the specified node qualifier if exists.
 	 * Otherwise try to get it from the specified alternative node qualifiers defined in the list <code>TXMPreferences.alternativeNodesQualifiers</code>.
 	 * Returns 0.0d if no value has been found for the specified key.
-	 * @param nodeQualifier
+	 * @param nodePath
 	 * @param result
 	 * @param key
 	 * @return
 	 */
-	public static double getDouble(String key, TXMResult result, String nodeQualifier)	{
-		return getDouble(key, nodeQualifier, result, 0.0d);
+	public static double getDouble(String key, TXMResult result, String nodePath)	{
+		return getDouble(key, nodePath, result, 0.0d);
 	}
 
 
 	/**
 	 *
-	 * @param nodeQualifier
+	 * @param nodePath
 	 * @param key
 	 * @return
 	 */
-	public static double getDouble(String key, String nodeQualifier)	{
-		return getDouble(key, null, nodeQualifier);
+	public static double getDouble(String key, String nodePath)	{
+		return getDouble(key, null, nodePath);
 	}
 
 
@@ -850,20 +866,20 @@
 	 * Otherwise try to get it from the specified alternative node qualifiers defined in the list <code>TXMPreferences.alternativeNodesQualifiers</code>.
 	 * Returns 0f if no value has been found for the specified key.
 	 * @param commandParameters
-	 * @param nodeQualifier
+	 * @param nodePath
 	 * @param result
 	 * @param key
 	 * @return
 	 */
-	public static float getFloat(String key, TXMParameters commandParameters, TXMResult result, String nodeQualifier)	{
+	public static float getFloat(String key, TXMParameters commandParameters, TXMResult result, String nodePath)	{
 		if(commandParameters != null && commandParameters.get(key) != null)	{
 			return (Float) commandParameters.get(key);
 		}
-		return getFloat(key, result, nodeQualifier);
+		return getFloat(key, result, nodePath);
 	}
 
 	public static float getFloat(String key, TXMParameters commandParameters, TXMResult result)	{
-		return getFloat(key, commandParameters, result, result.getPreferencesNodeQualifier());
+		return getFloat(key, commandParameters, result, result.getCommandPreferencesNodePath());
 	}
 
 	/**
@@ -872,16 +888,16 @@
 	 * Otherwise try to get it from the specified node qualifier if exists.
 	 * Otherwise try to get it from the specified alternative node qualifiers defined in the list <code>TXMPreferences.alternativeNodesQualifiers</code>.
 	 * Returns defaultValue if no value has been found for the specified key.
-	 * @param nodeQualifier
+	 * @param nodePath
 	 * @param result
 	 * @param key
 	 * @return
 	 */
-	public static float getFloat(String key, String nodeQualifier, TXMResult result, float defaultValue)	{
-		nodeQualifier = findNodeQualifier(nodeQualifier, result, key);
+	public static float getFloat(String key, String nodePath, TXMResult result, float defaultValue)	{
+		nodePath = findNodePath(nodePath, result, key);
 
-		defaultValue = DefaultScope.INSTANCE.getNode(nodeQualifier).getFloat(key, defaultValue);
-		return scope.getNode(nodeQualifier).getFloat(key, defaultValue);
+		defaultValue = DefaultScope.INSTANCE.getNode(nodePath).getFloat(key, defaultValue);
+		return preferencesRootNode.node(nodePath).getFloat(key, defaultValue);
 	}
 
 
@@ -902,15 +918,15 @@
 		return null;
 	}
 
-	public static Serializable getSerializable(String key, String nodeQualifier, TXMResult result, Serializable defaultValue) {
+	public static Serializable getSerializable(String key, String nodePath, TXMResult result, Serializable defaultValue) {
 
 		try {
 			byte[] defaultBytes = toByteArray(defaultValue);
 
-			nodeQualifier = findNodeQualifier(nodeQualifier, result, key);
+			nodePath = findNodePath(nodePath, result, key);
 
-			defaultBytes = DefaultScope.INSTANCE.getNode(nodeQualifier).getByteArray(key, defaultBytes);
-			byte[] bytes = scope.getNode(nodeQualifier).getByteArray(key, defaultBytes);
+			defaultBytes = DefaultScope.INSTANCE.getNode(nodePath).getByteArray(key, defaultBytes);
+			byte[] bytes = preferencesRootNode.node(nodePath).getByteArray(key, defaultBytes);
 
 			return toSerializable(bytes);
 		} catch (Exception e) {
@@ -927,24 +943,24 @@
 	 * Otherwise try to get it from the specified node qualifier if exists.
 	 * Otherwise try to get it from the specified alternative node qualifiers defined in the list <code>TXMPreferences.alternativeNodesQualifiers</code>.
 	 * Returns 0f if no value has been found for the specified key.
-	 * @param nodeQualifier
+	 * @param nodePath
 	 * @param result
 	 * @param key
 	 * @return
 	 */
-	public static float getFloat(String key, TXMResult result, String nodeQualifier)	{
-		return getFloat(key, nodeQualifier, result, 0f);
+	public static float getFloat(String key, TXMResult result, String nodePath)	{
+		return getFloat(key, nodePath, result, 0f);
 	}
 
 
 	/**
 	 *
-	 * @param nodeQualifier
+	 * @param nodePath
 	 * @param key
 	 * @return
 	 */
-	public static float getFloat(String key, String nodeQualifier)	{
-		return getFloat(key, null, nodeQualifier);
+	public static float getFloat(String key, String nodePath)	{
+		return getFloat(key, null, nodePath);
 	}
 
 	/**
@@ -964,32 +980,21 @@
 	 * @return <code>true</code> if the node exists, otherwise <code>false</code>
 	 */
 	public static boolean resultScopeNodeExists(TXMResult result)	{
-		if(result == null)	{
-			return false;
-		}
-		return scope.getNode(result.getUUID()) != null;
+		return preferencesRootNode.node(result.getParametersNodePath()) != null;
 	}
 
 	/**
-	 * Checks if a key exists in the local node for the specified TXM result.
-	 * @param result
+	 * 
+	 * @param scope
+	 * @param nodePath
 	 * @param key
-	 * @return <code>true</code> if the node and the key exist, otherwise <code>false</code>
+	 * @return
 	 */
-	public static boolean resultScopeKeyExists(TXMResult result, String key)	{
-		return keyExists(result.getUUID(), key);
-	}
-
-	/**
-	 * Checks if a key exists in a node.
-	 * @param nodeQualifier
-	 * @param key
-	 * @return <code>true</code> if the node and the key exist, otherwise <code>false</code>
-	 */
-	public static boolean keyExists(String nodeQualifier, String key)	{
-		if(scope.getNode(nodeQualifier) != null)	{
+	public static boolean keyExists(String nodePath, String key)	{
+		
+		if(preferencesRootNode.node(nodePath) != null)	{
 			try {
-				return Arrays.asList(scope.getNode(nodeQualifier).keys()).contains(key);
+				return Arrays.asList(preferencesRootNode.node(nodePath).keys()).contains(key);
 			}
 			catch(BackingStoreException e) {
 				e.printStackTrace();
@@ -998,17 +1003,16 @@
 		return false;
 	}
 
-
 	/**
 	 * Checks if a preference is defined as empty.
 	 * Can be used to determine whatever a functionality is available or not by overriding the preference as empty.
 	 * Essentially used for UI purpose, eg. to hide or disable a button that modify a preference.
-	 * @param nodeQualifier
+	 * @param nodePath
 	 * @param key
 	 * @return
 	 */
-	public static boolean isEmpty(String nodeQualifier, String key)	{
-		return getString(key, nodeQualifier).equals("");
+	public static boolean isEmpty(String nodePath, String key)	{
+		return getString(key, nodePath).equals("");
 	}
 
 
@@ -1016,11 +1020,11 @@
 	 * Sets a preference as empty.
 	 * Can be used to determine whatever a functionality is available or not by overriding the preference as empty.
 	 * Essentially used for UI purpose, eg. to hide or disable a button that modify a preference.
-	 * @param nodeQualifier
+	 * @param nodePath
 	 * @param key
 	 */
-	public static void setEmpty(String nodeQualifier, String key)	{
-		scope.getNode(nodeQualifier).put(key, "");
+	public static void setEmpty(String nodePath, String key)	{
+		preferencesRootNode.node(nodePath).put(key, "");
 	}
 
 	/**
@@ -1028,15 +1032,15 @@
 	 * @return
 	 */
 	public IEclipsePreferences getDefaultPreferencesNode()	{
-		return DefaultScope.INSTANCE.getNode(this.preferencesNode);
+		return DefaultScope.INSTANCE.getNode(this.commandPreferencesNodeQualifier);
 	}
 	
 	/**
 	 * print TxmPreferences in the console.
 	 */
-	public static String dumpToString(String nodeQualifier) {
+	public static String dumpToString(String nodePath) {
 		StringBuilder sb = new StringBuilder();
-		IEclipsePreferences preferences = scope.getNode(nodeQualifier);
+		Preferences preferences = preferencesRootNode.node(nodePath);
 
 		try {
 			String[] keys = preferences.keys();
@@ -1056,19 +1060,18 @@
 	 */
 	public static void dump() {
 		try {
-			IPreferencesService service = Platform.getPreferencesService();
 			System.out.println("root:"); //$NON-NLS-1$
-			for (String children : service.getRootNode().childrenNames()) {
+			for (String children : preferencesRootNode.childrenNames()) {
 				System.out.println("********************************************************************************************************"); //$NON-NLS-1$
 				System.out.println(" scope: " + children); //$NON-NLS-1$
-				String[] subchildren = service.getRootNode().node(children).childrenNames();
+				String[] subchildren = preferencesRootNode.node(children).childrenNames();
 				Arrays.sort(subchildren);
 				for (String children2 : subchildren) {
-					System.out.println("  node: "+ children2); //$NON-NLS-1$
-					String[] keys = service.getRootNode().node(children).node(children2).keys();
+					System.out.println(" scope: " + children + "  node: "+ children2); //$NON-NLS-1$
+					String[] keys = preferencesRootNode.node(children).node(children2).keys();
 					Arrays.sort(keys);
 					for (String key2 : keys) {
-						System.out.println("          " + key2 + " = " + service.getRootNode().node(children).node(children2).get(key2, null)); //$NON-NLS-1$ //$NON-NLS-2$
+						System.out.println("          " + key2 + " = " + preferencesRootNode.node(children).node(children2).get(key2, null)); //$NON-NLS-1$ //$NON-NLS-2$
 					}
 				}
 			}
@@ -1079,12 +1082,12 @@
 
 	/**
 	 * Dumps the keys and values of the specified node of the specified scope.
-	 * @param nodeQualifier
+	 * @param nodePath
 	 */
-	public static void dump(IScopeContext scope, String nodeQualifier)	{
-		IEclipsePreferences preferences = scope.getNode(nodeQualifier);
+	public static void dump(IScopeContext scope, String nodePath)	{
+		IEclipsePreferences preferences = scope.getNode(nodePath);
 		System.out.println("TXMPreferences.dump(): ***************************************************************");
-		System.out.println("TXMPreferences.dump(): node qualifier = " + nodeQualifier);
+		System.out.println("TXMPreferences.dump(): node qualifier = " + nodePath);
 		System.out.println("TXMPreferences.dump():" + preferences.absolutePath());
 		try {
 			String[] keys = preferences.keys();
@@ -1101,37 +1104,37 @@
 
 	/**
 	 * Dumps the keys and values of the specified node of the instance and default scopes.
-	 * @param nodeQualifier
+	 * @param nodePath
 	 */
-	public static void dump(String nodeQualifier)	{
-		dump(DefaultScope.INSTANCE, nodeQualifier);
-		dump(scope, nodeQualifier);
+	public static void dump(String nodePath)	{
+		dump(DefaultScope.INSTANCE, nodePath);
+		dump(InstanceScope.INSTANCE, nodePath);
 	}
 
 
 	/**
 	 * 
-	 * @param nodeQualifier
+	 * @param nodePath
 	 * @throws BackingStoreException 
 	 */
-	public static String[] getKeys(IScopeContext scope, String nodeQualifier) throws BackingStoreException	{
-		IEclipsePreferences preferences = scope.getNode(nodeQualifier);
+	public static String[] getKeys(IScopeContext scope, String nodePath) throws BackingStoreException	{
+		IEclipsePreferences preferences = scope.getNode(nodePath);
 		return preferences.keys();
 	}
 
-	public static String[] getCommandScopeKeys(String nodeQualifier) throws BackingStoreException	{
-		return getKeys(scope, nodeQualifier);
+	public static String[] getCommandScopeKeys(String nodePath) throws BackingStoreException	{
+		return getKeys(InstanceScope.INSTANCE, nodePath);
 	}
 
-	public static String[] getDefaultScopeKeys(String nodeQualifier) throws BackingStoreException	{
-		return getKeys(DefaultScope.INSTANCE, nodeQualifier);
+	public static String[] getDefaultScopeKeys(String nodePath) throws BackingStoreException	{
+		return getKeys(DefaultScope.INSTANCE, nodePath);
 	}
 
-	public static HashMap<String, Object> getKeysAndValuesAsMap(IScopeContext scope, String nodeQualifier)	{
+	public static HashMap<String, Object> getKeysAndValuesAsMap(IScopeContext scope, String nodePath)	{
 
 		HashMap<String, Object> str = new HashMap<String, Object>();
 
-		IEclipsePreferences preferences = scope.getNode(nodeQualifier);
+		IEclipsePreferences preferences = scope.getNode(nodePath);
 
 		try {
 			String[] keys = preferences.keys();
@@ -1148,11 +1151,11 @@
 		return str;
 	}
 
-	public static String getKeysAndValues(IScopeContext scope, String nodeQualifier)	{
+	public static String getKeysAndValues(String nodePath)	{
 
 		StringBuilder str = new StringBuilder();
 
-		IEclipsePreferences preferences = scope.getNode(nodeQualifier);
+		Preferences preferences = preferencesRootNode.node(nodePath);
 
 		str.append("Path = " +  preferences.absolutePath() + "\n"); //$NON-NLS-1$  //$NON-NLS-2$		
 		str.append("Name = " +  preferences.name() + "\n"); //$NON-NLS-1$  //$NON-NLS-2$
@@ -1177,25 +1180,25 @@
 
 	/**
 	 * Dumps the keys and values of the specified node, of the specified result node and also of the alternative nodes.
-	 * @param nodeQualifier
+	 * @param nodePath
 	 * @param result
 	 */
-	public static void dump(String nodeQualifier, TXMResult result)	{
+	public static void dump(String nodePath, TXMResult result)	{
 
 		// result scope node
 		if(result != null)	{
 			if(resultScopeNodeExists(result))	{
-				Log.finest("TXMPreferences.dump(): Result scope preferences for node " + result.getUUID() + ":");
-				dump(result.getUUID());
+				Log.finest("TXMPreferences.dump(): Result scope preferences for node " + result.getParametersNodePath() + ":");
+				dump(result.getParametersNodePath());
 			}
 			else	{
-				Log.severe("TXMPreferences.dump(): No result scope preferences was found for node" + result.getUUID() + ".");
+				Log.severe("TXMPreferences.dump(): No result scope preferences was found for node" + result.getParametersNodePath() + ".");
 			}
 		}
 		// command scope node
-		if(nodeQualifier != null)	{
-			Log.finest("TXMPreferences.dump(): Command scope preferences for node " + nodeQualifier + ":");
-			dump(nodeQualifier);
+		if(nodePath != null)	{
+			Log.finest("TXMPreferences.dump(): Command scope preferences for node " + nodePath + ":");
+			dump(nodePath);
 		}
 		else	{
 			Log.finest("TXMPreferences.dump(): No Command scope was asked to dump.");
@@ -1215,28 +1218,33 @@
 	 */
 	public static void flush(TXMResult result)	{
 		Log.finest("TXMPreferences.flush(): Local preferences for object " + result.getUUID() + " saved to file.");
-		flush(result.getUUID());
+		flush(result.getParametersNodePath());
 	}
 	
 	/**
 	 * Saves the local preferences to file.
 	 * @param result
 	 */
-	public static void flush(String qualifier)	{
+	public static void flush(String nodePath)	{
 		try {
-			scope.getNode(qualifier).flush();
+			preferencesRootNode.node(nodePath).flush();
 		}
 		catch(BackingStoreException e) {
 			e.printStackTrace();
 		}
 	}
 
+	public void flush() {
+		TXMPreferences.flush(this.commandPreferencesNodeQualifier);
+	}
+
+	
 	/**
 	 * Deletes the local node if exists and the associated .prefs persistence file.
 	 * @param result
 	 */
 	public static void delete(TXMResult result)	{
-		delete(scope.getNode(result.getUUID()));
+		delete(preferencesRootNode.node(result.getParametersNodePath()));
 		Log.finest("TXMPreferences.delete(): Local preferences node for object " + result.getUUID() + " deleted.");
 	}
 
@@ -1245,7 +1253,7 @@
 	 * Deletes the specified node if exists and the associated .prefs file.
 	 * @param node
 	 */
-	public static void delete(IEclipsePreferences node)	{
+	public static void delete(Preferences node)	{
 		try {
 			node.clear();
 			node.flush();
@@ -1258,94 +1266,166 @@
 	}
 
 
+
+
 	/**
-	 * Deletes all the result nodes from the preferences and files that are not set as persistable.
+	 * Gets all the result nodes qualifiers (from scope or *.prefs files starting with TXMResult.UUID_PREFIX, eg.: "txm_res_").
+	 * @return
 	 */
-	public static void deleteAllNotPersistableResultsNodes()	{
-		ArrayList<String> resultsNodesQualifier = getAllResultsNodesQualifiers();
-		for (int i = 0; i < resultsNodesQualifier.size(); i++) {
-			TXMResult result = TXMResult.getResult(resultsNodesQualifier.get(i)); 
-			if(result != null && !result.isPersistable())	{
-				delete(scope.getNode(resultsNodesQualifier.get(i)));
+	// FIXME: old method, from Instance scope
+//	public static ArrayList<String> getAllResultsNodesQualifiers()	{
+//		ArrayList<String> resultsNodesQualifiers = new ArrayList<String>();
+//		try {
+//			IPreferencesService service = Platform.getPreferencesService();
+//			for (String scopeName : service.getRootNode().childrenNames()) {
+//				if(scopeName != TXMPreferences.scope.getName())	{
+//					continue;
+//				}
+//
+//				String[] nodesNames = service.getRootNode().node(scopeName).childrenNames();
+//				Arrays.sort(nodesNames);
+//				for (String nodeName : nodesNames) {
+//					if(nodeName.startsWith(TXMResult.UUID_PREFIX))	{
+//						resultsNodesQualifiers.add(nodeName);
+//					}
+//				}
+//			}
+//		} catch (Exception e) {
+//			e.printStackTrace();
+//		}
+//		Collections.sort(resultsNodesQualifiers);
+//		return resultsNodesQualifiers;
+//	}
+
+	/**
+	 * Gets all the result nodes qualifiers from the specified node path (from the scope or *.prefs files starting with TXMResult.UUID_PREFIX, eg.: "txm_res_").
+	 * @return
+	 */
+	// FIXME: try to use the scope directly and not pass through the reference service
+	public static ArrayList<String> getAllResultsNodePaths(String rootPath)	{
+//		ArrayList<String> resultsNodesQualifiers = new ArrayList<String>();
+//		try {
+//			IPreferencesService service = Platform.getPreferencesService();
+//			for (String scopeName : service.getRootNode().childrenNames()) {
+//				System.out.println("TXMPreferences.getAllResultsNodesQualifiers(): scope = " + scopeName);
+//				if(!scopeName.equals(scope.getName()))	{
+//					System.out.println("TXMPreferences.getAllResultsNodesQualifiersProjects(): skipping scope.");
+//					continue;
+//				}
+//
+//				String[] nodesNames = service.getRootNode().node(scopeName).node(nodePath).childrenNames();
+//				
+//				System.out.println("TXMPreferences.getAllResultsNodesQualifiers(): nodes found = " + nodesNames.length);
+//				
+//				
+//				Arrays.sort(nodesNames);
+//				for (String nodeName : nodesNames) {
+//					System.out.println("TXMPreferences.getAllResultsNodesQualifiers(): node name = " + nodeName);
+//					
+//					if(nodeName.startsWith(TXMResult.UUID_PREFIX))	{
+//						resultsNodesQualifiers.add(nodeName);
+//					}
+//				}
+//			}
+//		} catch (Exception e) {
+//			e.printStackTrace();
+//		}
+//		Collections.sort(resultsNodesQualifiers);
+//		return resultsNodesQualifiers;
+		
+		
+		Log.finest("TXMPreferences.getAllResultsNodePaths(): looking for nodes in path \"" + preferencesRootNode.node(rootPath) + "\".");
+		
+		ArrayList<String> nodePaths = new ArrayList<String>();
+		
+		try {
+			String[] nodesNames = preferencesRootNode.node(rootPath).childrenNames();
+			
+			Log.finest("TXMPreferences.getAllResultsNodePaths(): " + nodesNames.length + " node(s) found.");
+		
+			Arrays.sort(nodesNames);
+			for (String nodeName : nodesNames) {
+				Log.finest("TXMPreferences.getAllResultsNodePaths(): node name = " + nodeName);
+				
+				if(nodeName.startsWith(TXMResult.UUID_PREFIX))	{
+					Log.finest("TXMPreferences.getAllResultsNodePaths(): node path = " + rootPath + nodeName);
+					nodePaths.add(rootPath + nodeName);
+				}
 			}
+			
+			Collections.sort(nodePaths);
 		}
+		catch (BackingStoreException e) {
+			e.printStackTrace();
+		}
+		return nodePaths;
+		
 	}
 
 
+
 	/**
-	 * Deletes all the result nodes from the preferences and files.
+	 * Deletes all the result nodes from the preferences and files that are not set as persistable.
 	 */
-	public static void deleteAllResultsNodes()	{
-		ArrayList<String> resultsNodesQualifier = getAllResultsNodesQualifiers();
+	public static void deleteAllNotPersistableResultsNodes(String path)	{
+		
+		ArrayList<String> resultsNodesQualifier = getAllResultsNodePaths(path);
 		for (int i = 0; i < resultsNodesQualifier.size(); i++) {
-			delete(scope.getNode(resultsNodesQualifier.get(i)));
+			TXMResult result = TXMResult.getResult(resultsNodesQualifier.get(i)); 
+			if(result != null && !result.isPersistable())	{
+				delete(preferencesRootNode.node(path).node(resultsNodesQualifier.get(i)));
+			}
 		}
 	}
 
 
 	/**
-	 * Gets all the result nodes qualifiers (from scope or *.prefs files starting with TXMResult.UUID_PREFIX, eg.: "txm_res_").
-	 * @return
+	 * Deletes all the result nodes from the preferences and files.
 	 */
-	public static ArrayList<String> getAllResultsNodesQualifiers()	{
-		ArrayList<String> resultsNodesQualifiers = new ArrayList<String>();
-		try {
-			IPreferencesService service = Platform.getPreferencesService();
-			for (String scopeName : service.getRootNode().childrenNames()) {
-				if(scopeName != TXMPreferences.scope.getName())	{
-					continue;
-				}
-
-				String[] nodesNames = service.getRootNode().node(scopeName).childrenNames();
-				Arrays.sort(nodesNames);
-				for (String nodeName : nodesNames) {
-					if(nodeName.startsWith(TXMResult.UUID_PREFIX))	{
-						resultsNodesQualifiers.add(nodeName);
-					}
-				}
-			}
-		} catch (Exception e) {
-			e.printStackTrace();
+	public static void deleteAllResultsNodes(String path)	{
+		
+		ArrayList<String> resultsNodesQualifier = getAllResultsNodePaths(path);
+		for (int i = 0; i < resultsNodesQualifier.size(); i++) {
+			delete(preferencesRootNode.node(path).node(resultsNodesQualifier.get(i)));
 		}
-		Collections.sort(resultsNodesQualifiers);
-		return resultsNodesQualifiers;
 	}
+	
 
-
-
-
 	/**
-	 * Internal method to find the node qualifier of a result otherwise look in instance, default scopes and in alternatives nodes qualifiers.
+	 * Internal method to find the preference node path of a result otherwise look in instance, default scopes and in alternatives nodes qualifiers.
 	 * @param result
 	 * @param key
 	 */
-	public static String findNodeQualifier(String nodeQualifier, TXMResult result, String key)	{
+	public static String findNodePath(String nodePath, TXMResult result, String key)	{
 
-		boolean keyExists = (result != null && resultScopeKeyExists(result, key));
+		boolean keyExists = (result != null && keyExists(result.getParametersNodePath(), key));
 
 		// get the result scope preference
 		if(keyExists)	{
-			nodeQualifier = result.getUUID();
+			nodePath = result.getParametersNodePath();
 		}
-
 		// look in the global alternative preferences nodes
-		else if(!keyExists(nodeQualifier, key))	{
+		else if(!keyExists("instance/" + nodePath, key))	{
 			for(int i = 0; i < alternativeNodesQualifiers.size(); i++) {
 				if(keyExists(alternativeNodesQualifiers.get(i), key))	{
-					nodeQualifier = alternativeNodesQualifiers.get(i);
+					nodePath = alternativeNodesQualifiers.get(i);
 					break;
 				}
 			}
 		}
+		else	{
+			nodePath = "instance/" + nodePath;
+		}
 
-		if (nodeQualifier == null)	{
+		if (nodePath == null)	{
 			try {
-				Log.severe("TXMPreferences.findNodeQualifier(): no node qualifier has been founded (key = " + key + ", TXMResult = " + result + ").");
+				Log.severe("TXMPreferences.findNodePath(): no node qualifier has been founded (key = " + key + ", TXMResult = " + result + ").");
 			}
 			catch(Exception e) {
+				e.printStackTrace();
 			}
 		}
-		return nodeQualifier;
+		return nodePath;
 	}
 
 
@@ -1355,49 +1435,49 @@
 	 * @param result
 	 * @param parameters
 	 */
-	public static void putLocalParameters(TXMResult result, TXMParameters parameters)	{
-		Set keys = parameters.keySet();
-		Iterator it = keys.iterator();
-		while (it.hasNext()){
-			Object key = it.next();
-			Object value = parameters.get(key);
-			if(value != null)	{
-				putLocal(result, (String) key, value);
-			}
-		}
-	}
+	// FIXME: became useless?
+//	public static void putLocalParameters(TXMResult result, TXMParameters parameters)	{
+//		Set keys = parameters.keySet();
+//		Iterator it = keys.iterator();
+//		while (it.hasNext()){
+//			Object key = it.next();
+//			Object value = parameters.get(key);
+//			if(value != null)	{
+//				putLocal(result, (String) key, value);
+//			}
+//		}
+//	}
 
-
-
 	/**
-	 *
-	 * @param nodeQualifier
+	 * Puts a preference in the specified node.
+	 * @param scope
+	 * @param nodePath
 	 * @param key
 	 * @param value
 	 */
-	public static void put(String nodeQualifier, String key, Object value) {
+	public static void put(String nodePath, String key, Object value) {
 
 		if (Integer.class.isInstance(value))	{
-			scope.getNode(nodeQualifier).putInt(key, (Integer) value);
+			preferencesRootNode.node(nodePath).putInt(key, (Integer) value);
 		}
 		else if (Double.class.isInstance(value))	{
-			scope.getNode(nodeQualifier).putDouble(key, (Double) value);
+			preferencesRootNode.node(nodePath).putDouble(key, (Double) value);
 		}
 		else if (Float.class.isInstance(value))	{
-			scope.getNode(nodeQualifier).putFloat(key, (Float) value);
+			preferencesRootNode.node(nodePath).putFloat(key, (Float) value);
 		}
 		else if (Long.class.isInstance(value))	{
-			scope.getNode(nodeQualifier).putLong(key, (Long) value);
+			preferencesRootNode.node(nodePath).putLong(key, (Long) value);
 		}
 		else if (String.class.isInstance(value))	{
-			scope.getNode(nodeQualifier).put(key, (String) value);
+			preferencesRootNode.node(nodePath).put(key, (String) value);
 		}
 		else if (Boolean.class.isInstance(value))	{
-			scope.getNode(nodeQualifier).putBoolean(key, (Boolean) value);
+			preferencesRootNode.node(nodePath).putBoolean(key, (Boolean) value);
 		}
 		else if (Serializable.class.isInstance(value))	{
 			try {
-				scope.getNode(nodeQualifier).put(key, toString((Serializable)value));
+				preferencesRootNode.node(nodePath).put(key, toString((Serializable)value));
 			} catch (IOException e) {
 				// TODO Auto-generated catch block
 				e.printStackTrace();
@@ -1407,10 +1487,10 @@
 		//		// FIXME: SJ: need to prove/validate this method
 		//		else if (byte.class.isAssignableFrom(value.getClass().getComponentType()))	{
 		//			System.err.println("TXMPreferences.put(): byte array -> need to prove/validate this method.");
-		//			scope.getNode(nodeQualifier).putByteArray(key, (byte[]) value);
+		//			scope.getNode(nodePath).putByteArray(key, (byte[]) value);
 		//		}
 		else if(value != null) {
-			scope.getNode(nodeQualifier).put(key, value.toString());
+			preferencesRootNode.node(nodePath).put(key, value.toString());
 
 
 			// FIXME: to do if needed
@@ -1418,32 +1498,35 @@
 			//System.err.println("TXMPreferences.put(): error, can't find a put method that matches the value type: " + value.getClass() + "=" + value + ".");
 		}
 	}
+	
 
+
+
 	/**
 	 * 
 	 * @param key
 	 * @param value
 	 */
 	public void put(String key, Object value) {
-		put(this.preferencesNode, key, value);
+		put(this.commandPreferencesNodeQualifier, key, value);
 	}
 
 
 	/**
-	 * Stores the specified parameters pairs of key/value in a local node dedicated to the specified result. The node qualifier is generated by the <code>TXMResult.getUUID</code> method.
+	 * Stores the specified parameters pairs of key/value in a local node dedicated to the specified result.
 	 * @param result
 	 * @param key
 	 * @param value
 	 */
 	public static void putLocal(TXMResult result, String key, Object value)	{
-		put(result.getUUID(), key, value);;
+		put(result.getParametersNodePath(), key, value);
 	}
 
 
 	// FIXME: TO do if needed
 	private static void putLocalSerializable(TXMResult result, String key, Serializable value) {
 		byte[] b = toByteArray(value);
-		scope.getNode(result.getUUID()).putByteArray(key, b);
+		preferencesRootNode.node(result.getParametersNodePath()).putByteArray(key, b);
 	}
 
 
@@ -1475,12 +1558,12 @@
 	//
 	//	/**
 	//	 *
-	//	 * @param nodeQualifier
+	//	 * @param nodePath
 	//	 * @param key
 	//	 * @param value
 	//	 */
-	//	public static void putByteArray(String nodeQualifier, String key, byte[] value) {
-	//		scope.getNode(nodeQualifier).putByteArray(key, value);
+	//	public static void putByteArray(String nodePath, String key, byte[] value) {
+	//		scope.getNode(nodePath).putByteArray(key, value);
 	//	}
 
 
@@ -1506,7 +1589,7 @@
 	 * @param dstResult
 	 */
 	public static void cloneNode(TXMResult srcResult, TXMResult dstResult)	{
-		IEclipsePreferences preferences = scope.getNode(srcResult.getUUID());
+		Preferences preferences = preferencesRootNode.node(srcResult.getParametersNodePath());
 		if(preferences != null)	{
 			try {
 				String[] keys = preferences.keys();
@@ -1522,9 +1605,6 @@
 	}
 
 
-	public void flush() {
-		TXMPreferences.flush(preferencesNode);
-	}
 
 	//FIXME: this code is dedicated to dynamically retrieve the static field PREFERENCES_NODE of the runtime subclass and use it super class to avoid to pass it to all methods.
 	// eg. to use ProgressionPreferences.getBoolean("test") instead of TXMPreferences.getBoolean(ProgressionPreferences.PREFERENCES_NODE, "test")
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 1111)
+++ tmp/org.txm.core/src/java/org/txm/core/results/TXMResult.java	(revision 1112)
@@ -2,7 +2,6 @@
 
 import java.io.File;
 import java.io.IOException;
-import java.io.Serializable;
 import java.lang.reflect.Field;
 import java.text.DateFormat;
 import java.text.SimpleDateFormat;
@@ -23,9 +22,7 @@
 import org.txm.Toolbox;
 import org.txm.core.preferences.TBXPreferences;
 import org.txm.core.preferences.TXMPreferences;
-import org.txm.objects.CorpusBuild;
 import org.txm.objects.Project;
-import org.txm.objects.Workspace;
 import org.txm.utils.logger.Log;
 
 // FIXME: At this moment, an empty list is created for children, to not return
@@ -115,19 +112,19 @@
 	 */
 	protected String lazyName;
 
-	protected void computeForTheVeryFirstTime() throws Exception {
-		if (!this.hasBeenComputedOnce) {
-			this.compute();
-		}
-	}
 
 	/**
-	 * The command preferences node qualifier.
+	 * Command preferences node path.
 	 */
-	protected String preferencesNodeQualifier;
+	protected String commandPreferencesNodePath;
 	//protected IEclipsePreferences preferencesNode;
 
 	/**
+	 * Parameters node path. Concatenation of the Project scope path + the result uuid
+	 */
+	protected String parametersNodePath;
+	
+	/**
 	 * If set, allows the command to notify its progress.
 	 */
 	protected IProgressMonitor monitor;
@@ -167,64 +164,89 @@
 	 * If a local node exist with the parent_uuid, the parent will be retrieved and this result will be added to it. 
 	 * @param uuid
 	 */
-	public TXMResult(String uuid) {
-		this(uuid, null);
+	public TXMResult(String parametersNodePath) {
+		this(parametersNodePath, null);
 	}
 
+	
+	
 	/**
 	 * Creates a new TXMResult, child of the specified parent.
-	 * If UUID is null, a new UUID is generated.
+	 * If the parameters node path is null, a new path is generated from the project root path ending by a new generated UUID.
 	 * 
 	 * @param uuid
 	 * @param parent
 	 */
-	public TXMResult(String uuid, TXMResult parent) {
+	public TXMResult(String parametersNodePath, TXMResult parent) {
 		if (parent == this) {
 			throw new IllegalArgumentException("A result can not be parent of itself.");
 		}
-		if (uuid == null)	{
-			uuid = createUUID() + "_" + this.getClass().getSimpleName();
+		if (parametersNodePath == null)	{
+			this.uniqueID = createUUID() + "_" + this.getClass().getSimpleName(); //$NON-NLS-1$
+			if(this.getProject() != null)	{
+				parametersNodePath = this.getProject().getParametersNodeRootPath();
+			}
+			this.parametersNodePath = parametersNodePath + this.uniqueID;
 		}
-		this.uniqueID = uuid;
+		else	{
+			try {
+				this.uniqueID = parametersNodePath.substring(parametersNodePath.lastIndexOf("/") + 1);
+			}
+			// FIXME: essentially for the UUID "ROOT" defined in the Workspace class, see if we can do 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.visible = true;
 		if (parent != null) {
 			parent.addChild(this);
 		}
 
-
 		this.children = new ArrayList<TXMResult>(1);
-		//		Base binaryCorpus = this.getBinaryCorpus();
-		//		if (binaryCorpus != null && this.getClass() != Base.class) {
-		//			this.preferencesNode = binaryCorpus.getPreferenceScope().getNode(FrameworkUtil.getBundle(getClass()).getSymbolicName());
-		this.preferencesNodeQualifier = FrameworkUtil.getBundle(getClass()).getSymbolicName();
-		//		}
 
-		// always return false
-		// FIXME: Debug
-		// System.out.println("TXMResult.TXMResult(): default preferences node qualifier = "
-		// + this.preferencesNodeQualifier + ", class = " + getClass());
+		this.commandPreferencesNodePath = FrameworkUtil.getBundle(getClass()).getSymbolicName(); //$NON-NLS-1$
+//		if(parametersNodePath == null)	{
+//			//parametersNodeRootPath = "instance/"; //$NON-NLS-1$
+//			if(this.getProject() != null)	{
+//				parametersNodePath = "project/" + this.getProject().getName() + "/";
+//			}
+//		}
+//		String uuid = createUUID() + "_" + this.getClass().getSimpleName(); //$NON-NLS-1$
+		//this.parametersNodePath = parametersNodePath + this.uniqueID; //$NON-NLS-1$
+		Log.finest("TXMResult.TXMResult(): command preferences node path: " + this.commandPreferencesNodePath);
 
+		
+		
 		this.dirty = true;
 		this.persistable = false;
 		this.userPersistable = TBXPreferences.getInstance().getBoolean(TBXPreferences.AUTO_PERSISTENCE_ENABLED);
-		
 
+
 		// retrieving parent from UUID
-		String puuid = this.getStringParameterValue(TXMPreferences.PARENT_UUID);
-		if ( !("ROOT".equals(uuid)) && // search for parent only if uuid != "ROOT"
+		String parentUUID = 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"
 				parent == null && 
-				uuid != null && 
-				!puuid.isEmpty()) {
-			Log.warning("Searching parent with UUID: " + puuid + "...");
-			TXMResult retrievedParent = TXMResult.getResult(puuid);
+				this.uniqueID != null && 
+				!parentUUID.isEmpty()) {
+			Log.warning("Searching parent with UUID: " + parentUUID + "...");
+			TXMResult retrievedParent = TXMResult.getResult(parentUUID);
 			if (retrievedParent != null) {
 				Log.warning("Parent retrieved from UUID: " + retrievedParent + ".");
 				retrievedParent.addChild(this);
-			} else {
-				Log.severe("Warning: no parent was found in workspace for uuid="+uniqueID+" and puuid="+puuid+" preferences="+this.dumpParameters());
-				TBXPreferences.delete(this);
+			}
+			else {
+				Log.severe("Warning: no parent was found in workspace for uuid=" + uniqueID + " and puuid=" + parentUUID + " preferences=" + this.dumpParameters());
+				// FIXME: commented for now
+				//TBXPreferences.delete(this);
 				return;
 			}
 		}
@@ -245,7 +267,7 @@
 			this.autoLoadParametersFromAnnotations(); // auto fill from Parameter annotations
 			this.loadParameters();  // subclasses manual settings
 		} catch (Exception e) {
-			System.out.println("Fail to load "+uniqueID+"result: "+e);
+			Log.severe("Fail to load " + uniqueID + "result: " + e);
 			Log.printStackTrace(e);
 		}
 		
@@ -280,7 +302,28 @@
 		return this.children.size() > 0;
 	}
 
+	
 	/**
+	 * Gets the preferences node path of the result command.
+	 * 
+	 * @return
+	 */
+	public String getCommandPreferencesNodePath() {
+		return this.commandPreferencesNodePath;
+	}
+
+	
+	public String[] getCommandPreferencesKeys() throws BackingStoreException {
+		return TXMPreferences.getCommandScopeKeys(this.commandPreferencesNodePath);
+	}
+
+	public String[] getDefaultPreferencesKeys() throws BackingStoreException {
+		return TXMPreferences.getDefaultScopeKeys(this.commandPreferencesNodePath);
+	}
+
+
+	
+	/**
 	 * Gets a current parameter specified by its annotation "key" attribute and its annotation "type" attribute.
 	 * @param key
 	 * @param parameterType
@@ -475,14 +518,14 @@
 
 		if(TXMPreferences.resultScopeNodeExists(this))	{
 			str.append("\nResult local node preferences\n"); //$NON-NLS-1$
-			str.append(TXMPreferences.getKeysAndValues(TXMPreferences.scope, this.getUUID()));
+			str.append(TXMPreferences.getKeysAndValues(this.getParametersNodePath()));
 		}
 
 		str.append("\nCommand preferences\n"); //$NON-NLS-1$
-		str.append(TXMPreferences.getKeysAndValues(TXMPreferences.scope, this.preferencesNodeQualifier));
+		str.append(TXMPreferences.getKeysAndValues(this.commandPreferencesNodePath));
 
 		str.append("\nDefault command preferences\n"); //$NON-NLS-1$
-		str.append(TXMPreferences.getKeysAndValues(DefaultScope.INSTANCE, this.preferencesNodeQualifier));
+		str.append(TXMPreferences.getKeysAndValues(DefaultScope.INSTANCE + "/" + this.commandPreferencesNodePath));
 
 
 
@@ -638,24 +681,7 @@
 		this.dirty = true;
 	}
 
-	/**
-	 * Gets the preferences node qualifier of the result command.
-	 * 
-	 * @return
-	 */
-	public String getPreferencesNodeQualifier() {
-		return this.preferencesNodeQualifier;
-	}
 
-	public String[] getCommandPreferencesKeys() throws BackingStoreException {
-		return TXMPreferences.getCommandScopeKeys(this.preferencesNodeQualifier);
-	}
-
-	public String[] getDefaultPreferencesKeys() throws BackingStoreException {
-		return TXMPreferences.getDefaultScopeKeys(this.preferencesNodeQualifier);
-	}
-
-
 	/**
 	 * Gets the value of the specified key in parameters, local result node or
 	 * default preferences nodes.
@@ -664,7 +690,7 @@
 	 * @return
 	 */
 	public int getIntParameterValue(String key) {
-		return TXMPreferences.getInt(key, this, this.preferencesNodeQualifier);
+		return TXMPreferences.getInt(key, this, this.commandPreferencesNodePath);
 	}
 
 	/**
@@ -675,7 +701,7 @@
 	 * @return
 	 */
 	public float getFloatParameterValue(String key) {
-		return TXMPreferences.getFloat(key, this, this.preferencesNodeQualifier);
+		return TXMPreferences.getFloat(key, this, this.commandPreferencesNodePath);
 	}
 
 	/**
@@ -686,7 +712,7 @@
 	 * @return
 	 */
 	public double getDoubleParameterValue(String key) {
-		return TXMPreferences.getDouble(key, this, this.preferencesNodeQualifier);
+		return TXMPreferences.getDouble(key, this, this.commandPreferencesNodePath);
 	}
 
 	/**
@@ -697,7 +723,7 @@
 	 * @return
 	 */
 	public boolean getBooleanParameterValue(String key) {
-		return TXMPreferences.getBoolean(key, this, this.preferencesNodeQualifier);
+		return TXMPreferences.getBoolean(key, this, this.commandPreferencesNodePath);
 	}
 
 	/**
@@ -708,7 +734,7 @@
 	 * @return
 	 */
 	public long getLongParameterValue(String key) {
-		return TXMPreferences.getLong(key, this, this.preferencesNodeQualifier);
+		return TXMPreferences.getLong(key, this, this.commandPreferencesNodePath);
 	}
 
 	/**
@@ -719,7 +745,7 @@
 	 * @return
 	 */
 	public String getStringParameterValue(String key) {
-		return TXMPreferences.getString(key, this, this.preferencesNodeQualifier);
+		return TXMPreferences.getString(key, this, this.commandPreferencesNodePath);
 	}
 
 
@@ -767,9 +793,9 @@
 		}
 		this.saveParameter(TXMPreferences.LAZY_NAME, this.getSimpleName());	
 
-
+		this.saveParameter(TXMPreferences.RESULT_PARAMETERS_NODE_PATH, this.parametersNodePath);
 		this.saveParameter(TXMPreferences.RESULT_UUID, this.uniqueID);
-		this.saveParameter(TXMPreferences.BUNDLE_ID, this.preferencesNodeQualifier);
+		this.saveParameter(TXMPreferences.BUNDLE_ID, this.commandPreferencesNodePath);
 		if(this.parent != null)	{
 			this.saveParameter(TXMPreferences.PARENT_UUID, this.parent.getUUID());
 		}
@@ -885,7 +911,7 @@
 				f.set(this, value);
 
 				// FIXME: Debug
-				Log.finest("TXMResult.autoLoadParametersFromAnnotations(): setting parameter " + key + " = " + value + " for " + this.getClass());
+				Log.finest("TXMResult.autoLoadParametersFromAnnotations(): setting parameter " + key + " = " + value + "\t[" + this.getClass() + "]");
 
 			} catch (Exception e) {
 				e.printStackTrace();
@@ -1314,7 +1340,6 @@
 
 	/**
 	 * Gets the first parent of the specified class, eg. this.getFirstParent(Partition.class);
-	 * Returns the object itself if it is of the specified class.
 	 * @param type
 	 * @return
 	 */
@@ -1322,16 +1347,19 @@
 		TXMResult node = null;
 		TXMResult parent = this.parent;
 		do {
-			if(parent.getClass().equals(type)) {
-				node = parent;	
+			if(parent != null)	{
+				if(parent.getClass().equals(type)) {
+					node = parent;	
+				}
+	
+				parent = parent.getParent();
 			}
-
-			parent = parent.getParent();
 		} while (parent != null && node == null);
 
 		return node;
 	}
 
+	
 
 	//	/**
 	//	 * Gets the first parent of the specified class, eg. this.getFirstParent(Partition.class);
@@ -2019,7 +2047,19 @@
 		this.setUserPersistable(!this.userPersistable);
 	}
 	
+	/**
+	 * Gets the project of the result.
+	 * @return the project of the result
+	 */
 	public final Project getProject() {
 		return (Project) this.getFirstParent(Project.class);
 	}
+
+	/**
+	 * Gets the parameters node path.
+	 * @return the parametersNodePath
+	 */
+	public String getParametersNodePath() {
+		return parametersNodePath;
+	}
 }
Index: tmp/org.txm.core/src/java/org/txm/objects/Partition.java
===================================================================
--- tmp/org.txm.core/src/java/org/txm/objects/Partition.java	(revision 1111)
+++ tmp/org.txm.core/src/java/org/txm/objects/Partition.java	(revision 1112)
@@ -30,20 +30,32 @@
 import org.txm.core.results.TXMResult;
 
 /**
- * Partition abstract representation
+ * Partition abstract representation.
  */
 public abstract class Partition extends TXMResult {
 
+	/**
+	 * 
+	 * @param parent
+	 */
 	public Partition(CorpusBuild parent) {
 		super(parent);
 		this.persistable = true;
 	}
 	
-	public Partition(String uuid) {
-		super(uuid);
+	/**
+	 * 
+	 * @param parametersNodePath
+	 */
+	public Partition(String parametersNodePath) {
+		super(parametersNodePath);
 		this.persistable = true;
 	}
 	
+	/**
+	 * 
+	 * @return
+	 */
 	public CorpusBuild getCorpus() {
 		return (CorpusBuild) this.getParent();
 	}
Index: tmp/org.txm.core/src/java/org/txm/objects/Text.java
===================================================================
--- tmp/org.txm.core/src/java/org/txm/objects/Text.java	(revision 1111)
+++ tmp/org.txm.core/src/java/org/txm/objects/Text.java	(revision 1112)
@@ -73,12 +73,13 @@
 	 * @param corpus the base
 	 * @param text the text
 	 */
-	public Text(String uuid) {
-		super(uuid);
+	public Text(String parametersNodePath) {
+		super(parametersNodePath);
 		this.setVisible(false);
 		this.persistable = true;
 	}
 
+	
 	/* 
      * Retro compatiblity to load Editions from a XML Element 
 	 */
Index: tmp/org.txm.core/src/java/org/txm/objects/CorpusBuild.java
===================================================================
--- tmp/org.txm.core/src/java/org/txm/objects/CorpusBuild.java	(revision 1111)
+++ tmp/org.txm.core/src/java/org/txm/objects/CorpusBuild.java	(revision 1112)
@@ -154,8 +154,12 @@
 		this.persistable = true;
 	}
 
-	public CorpusBuild(String uuid) {
-		super(uuid);
+	/**
+	 * 
+	 * @param parametersNodePath
+	 */
+	public CorpusBuild(String parametersNodePath) {
+		super(parametersNodePath);
 		this.persistable = true;
 	}
 	
Index: tmp/org.txm.core/src/java/org/txm/objects/Edition.java
===================================================================
--- tmp/org.txm.core/src/java/org/txm/objects/Edition.java	(revision 1111)
+++ tmp/org.txm.core/src/java/org/txm/objects/Edition.java	(revision 1112)
@@ -85,8 +85,8 @@
 	 *
 	 * @param text the text
 	 */
-	public Edition(String uuid) {
-		super(uuid);
+	public Edition(String parametersNodePath) {
+		super(parametersNodePath);
 		this.visible = false;
 		this.persistable = true;
 	}
Index: tmp/org.txm.core/src/java/org/txm/objects/EditionDefinition.java
===================================================================
--- tmp/org.txm.core/src/java/org/txm/objects/EditionDefinition.java	(revision 1111)
+++ tmp/org.txm.core/src/java/org/txm/objects/EditionDefinition.java	(revision 1112)
@@ -14,7 +14,7 @@
 	Preferences node;
 	
 	public EditionDefinition(Project project, String name) {
-		this.node = project.getPreferences().getNode(EditionDefinition.class.getSimpleName()).node(name);
+		this.node = project.getPreferencesScope().getNode(EditionDefinition.class.getSimpleName()).node(name);
 	}
 
 	public String getName() {
Index: tmp/org.txm.core/src/java/org/txm/objects/Project.java
===================================================================
--- tmp/org.txm.core/src/java/org/txm/objects/Project.java	(revision 1111)
+++ tmp/org.txm.core/src/java/org/txm/objects/Project.java	(revision 1112)
@@ -30,6 +30,7 @@
 
 import java.io.File;
 import java.io.IOException;
+import java.lang.reflect.Constructor;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.HashMap;
@@ -47,7 +48,9 @@
 import org.eclipse.core.runtime.IPath;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.Platform;
 import org.eclipse.core.runtime.preferences.IEclipsePreferences;
+import org.osgi.framework.Bundle;
 import org.osgi.service.prefs.BackingStoreException;
 import org.osgi.service.prefs.Preferences;
 import org.txm.Toolbox;
@@ -55,10 +58,12 @@
 import org.txm.core.engines.ImportEngines;
 import org.txm.core.messages.TXMCoreMessages;
 import org.txm.core.preferences.TBXPreferences;
+import org.txm.core.preferences.TXMPreferences;
 import org.txm.core.results.Parameter;
 import org.txm.core.results.TXMParameters;
 import org.txm.core.results.TXMResult;
 import org.txm.stat.utils.ConsoleProgressBar;
+import org.txm.utils.logger.Log;
 import org.txm.utils.zip.Zip;
 import org.w3c.dom.Element;
 import org.xml.sax.SAXException;
@@ -120,10 +125,11 @@
 	private Date pCreationDate;
 
 	/**
-	 * Instantiates a new base.
-	 *
-	 * @param project the project
-	 * @throws Exception 
+	 * Instantiates a new project.
+	 * 
+	 * @param workspace
+	 * @param name
+	 * @throws Exception
 	 */
 	public Project(Workspace workspace, String name) throws Exception {
 		super(workspace);
@@ -135,6 +141,37 @@
 		initRCPStuffs();
 	}
 
+	/**
+	 * 
+	 * @param nodePath
+	 * @throws CoreException
+	 */
+	public Project(String parametersNodePath) throws CoreException {
+		super(parametersNodePath);
+		initRCPStuffs();
+		
+		this.dirty = false;
+		this.hasBeenComputedOnce = true;
+		//		
+		//		this.setPath(project.getPath() + getName());
+		//		params = parameters;
+		//		setSelfElement(params.root);
+		//		this.project = project;
+		//		//load();
+		//		this.pName = params.name;
+		//		if (!pName.equals(pName.toUpperCase())) {
+		//			System.out.println("Warning in Base.init: binary corpus name contains lower case letters: "+this.pName);
+		//		}
+		//		
+		//		this.scope = new BasePreferenceScope(this);
+		
+		
+		// loading corpus
+		this.loadResults();
+		
+	}
+
+	
 	private void initRCPStuffs() throws CoreException {
 		IWorkspace rcpWorkspace = ResourcesPlugin.getWorkspace();
 		if (this.rcpProject == null) {
@@ -170,25 +207,69 @@
 		}
 	}
 
-	public Project(String uuid) throws CoreException {
-		super(uuid);
-		initRCPStuffs();
+	/**
+	 * Loads and create the persisted results from the preferences service.
+	 */
+	protected void loadResults()	{
+		//		if (TBXPreferences.getInstance().getBoolean(TBXPreferences.AUTO_PERSISTENCE_ENABLED)) {
+		Log.finest("*** Project.loadResults(): reloading persitent results...");
 		
-		this.dirty = false;
-		this.hasBeenComputedOnce = true;
-		//		
-		//		this.setPath(project.getPath() + getName());
-		//		params = parameters;
-		//		setSelfElement(params.root);
-		//		this.project = project;
-		//		//load();
-		//		this.pName = params.name;
-		//		if (!pName.equals(pName.toUpperCase())) {
-		//			System.out.println("Warning in Base.init: binary corpus name contains lower case letters: "+this.pName);
-		//		}
-		//		
-		//		this.scope = new BasePreferenceScope(this);
+		IWorkspace rcpWorkspace = ResourcesPlugin.getWorkspace();
+	//	IProject projects[] = rcpWorkspace.getRoot().getProjects();
+		
+//		Log.info("Toolbox.initialize(): " + projects.length + " project(s) found in workspace.");
+		
+			ArrayList<String> resultNodePaths = TXMPreferences.getAllResultsNodePaths(this.getParametersNodeRootPath());
+			
+			Log.info("Project.loadResults(): loading " + resultNodePaths.size() + " result(s) from project " + this.getName() + "...");
+
+			for (String parametersNodePath : resultNodePaths) {
+
+				// skip non-TXMResult preference node
+//				if (TXMPreferences.getString(TXMPreferences.BUNDLE_ID, nodeQualifier).isEmpty())	{
+//					continue;
+//				}
+
+				try {
+					
+					String className = TXMPreferences.preferencesRootNode.node(parametersNodePath).get("class", ""); //$NON-NLS-1$
+
+					// Skip Project object
+					if(className.equals(Project.class.getName()))	{
+						continue;
+					}
+
+					Log.finest("\nProject.loadResults(): loading from result node qualifier " + parametersNodePath);
+					//Log.finest("Toolbox.initialize(): class = " + TXMPreferences.getString("class", nodeQualifier));
+					//TXMPreferences.dump();
+
+					
+					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$
+					String bundleId = TXMPreferences.preferencesRootNode.node(parametersNodePath).get(TXMPreferences.BUNDLE_ID, ""); //$NON-NLS-1$
+					Log.finest("Project.loadResults(): bundle_id = " + bundleId); //$NON-NLS-1$
+					Bundle bundle = Platform.getBundle(bundleId);
+					if (bundle == null) {
+						Log.finest("Warning: can not restore object with bundle name " + bundleId); //$NON-NLS-1$
+						continue;
+					}
+					
+					Class<?> cl = bundle.loadClass(className);
+					Constructor<?> cons = cl.getConstructor(String.class);
+					TXMResult result = (TXMResult) cons.newInstance(parametersNodePath);
+					
+					// not an internal persistence (eg. corpus or partition)
+					if (!result.isPersistable())	{
+						result.setUserPersistable(true);	
+					}
+				} catch (Exception e) {
+					// TODO Auto-generated catch block
+					e.printStackTrace();
+				}
+			}
 	}
+	
 
 	//	public BasePreferenceScope getPreferenceScope() {
 	//		return scope;
@@ -710,7 +791,7 @@
 
 	public boolean save() {
 		//System.out.println("SAVE PROJECT PREFERENSCOPE");
-		if (this.getPreferences() != null) {
+		if (this.getPreferencesScope() != null) {
 			//	this.rcpProject.
 		}
 		return true;
@@ -801,11 +882,11 @@
 	}
 
 	public void setXsltParameter(String name, String value) {
-		this.getPreferences().getNode("xsl").node(TBXPreferences.FRONT_XSL_PARAMETERS).put(name, value);
+		this.getPreferencesScope().getNode("xsl").node(TBXPreferences.FRONT_XSL_PARAMETERS).put(name, value);
 	}
 
 	public HashMap<String, String> getXsltParameters() {
-		Preferences params = this.getPreferences().getNode("xsl").node(TBXPreferences.FRONT_XSL_PARAMETERS);
+		Preferences params = this.getPreferencesScope().getNode("xsl").node(TBXPreferences.FRONT_XSL_PARAMETERS);
 		HashMap<String, String> hparams = new HashMap<>();
 		try {
 			for (String k : params.childrenNames()) {
@@ -819,15 +900,15 @@
 	}
 
 	public void removeXsltParameter(String name) {
-		this.getPreferences().getNode("xsl").node(TBXPreferences.FRONT_XSL_PARAMETERS).remove(name);
+		this.getPreferencesScope().getNode("xsl").node(TBXPreferences.FRONT_XSL_PARAMETERS).remove(name);
 	}
 
 	public String getFrontXSL() {
-		return this.getPreferences().getNode("xsl").get(TBXPreferences.FRONT_XSL, null);
+		return this.getPreferencesScope().getNode("xsl").get(TBXPreferences.FRONT_XSL, null);
 	}
 
 	public void setXslt(String xslpath) {
-		this.getPreferences().getNode("xsl").put(TBXPreferences.FRONT_XSL, xslpath);
+		this.getPreferencesScope().getNode("xsl").put(TBXPreferences.FRONT_XSL, xslpath);
 	}
 
 	public void setAnnotate(boolean b) {
@@ -847,17 +928,17 @@
 	}
 
 	public void addTokenizerParameter(String name, String value) {
-		IEclipsePreferences params = this.getPreferences().getNode("Tokenizer");
+		IEclipsePreferences params = this.getPreferencesScope().getNode("Tokenizer");
 		params.put(name, value);
 	}
 	
 	public String getTokenizerParameter(String name, String defaultvalue) {
-		IEclipsePreferences params = this.getPreferences().getNode("Tokenizer");
+		IEclipsePreferences params = this.getPreferencesScope().getNode("Tokenizer");
 		return params.get(name, defaultvalue);
 	}
 	
 	public boolean getDoTokenizerStep() {
-		IEclipsePreferences params = this.getPreferences().getNode("Tokenizer");
+		IEclipsePreferences params = this.getPreferencesScope().getNode("Tokenizer");
 		return params.getBoolean("doTokenizeStep", true);
 	}
 
@@ -865,7 +946,7 @@
 		return new EditionDefinition(this, name);
 	}
 
-	public ProjectScope getPreferences() {
+	public ProjectScope getPreferencesScope() {
 		return this.preferenceScope;
 	}
 
@@ -897,11 +978,20 @@
 
 	public boolean hasEditionDefinition(String name) {
 		try {
-			return getPreferences().getNode("EditionDefinition").nodeExists(name);
+			return getPreferencesScope().getNode("EditionDefinition").nodeExists(name);
 		} catch (BackingStoreException e) {
 			// TODO Auto-generated catch block
 			e.printStackTrace();
 			return false;
 		}
 	}
+	
+	/**
+	 * Gets the project parameters root path ("project/[project name]/")
+	 * @return
+	 */
+	public String getParametersNodeRootPath()	{
+		return "project/" + this.rcpProject.getName() + "/";
+	}
+	
 }
Index: tmp/org.txm.chartsengine.core/src/org/txm/chartsengine/core/results/ChartResult.java
===================================================================
--- tmp/org.txm.chartsengine.core/src/org/txm/chartsengine/core/results/ChartResult.java	(revision 1111)
+++ tmp/org.txm.chartsengine.core/src/org/txm/chartsengine/core/results/ChartResult.java	(revision 1112)
@@ -111,10 +111,10 @@
 	/**
 	 * Creates a new ChartResult with no parent.
 	 * If a local node exist with the parent_uuid, the parent will be retrieved and this result will be added to it. 
-	 * @param uuid
+	 * @param parametersNodePath
 	 */
-	public ChartResult(String uuid) {
-		this(uuid, null);
+	public ChartResult(String parametersNodePath) {
+		this(parametersNodePath, null);
 	}
 	
 	/**
@@ -122,8 +122,8 @@
 	 * @param uuid
 	 * @param parent
 	 */
-	public ChartResult(String uuid, TXMResult parent) {
-		super(uuid, parent);
+	public ChartResult(String parametersNodePath, TXMResult parent) {
+		super(parametersNodePath, parent);
 		this.chartsEngine = ChartsEngine.getCurrent();
 		this.chartDirty = true;
 		this.needsToResetView = false;
@@ -520,7 +520,7 @@
 	 * @return
 	 */
 	public boolean isEmptyPreference(String key)	{
-		return TXMPreferences.isEmpty(this.preferencesNodeQualifier, key);
+		return TXMPreferences.isEmpty(this.commandPreferencesNodePath, key);
 	}
 
 	
Index: tmp/org.txm.concordance.core/src/org/txm/concordance/core/functions/Concordance.java
===================================================================
--- tmp/org.txm.concordance.core/src/org/txm/concordance/core/functions/Concordance.java	(revision 1111)
+++ tmp/org.txm.concordance.core/src/org/txm/concordance/core/functions/Concordance.java	(revision 1112)
@@ -183,10 +183,10 @@
 
 	/**
 	 * 
-	 * @param uuid
+	 * @param parametersNodePath
 	 */
-	public Concordance(String uuid)	{
-		super(uuid);
+	public Concordance(String parametersNodePath)	{
+		super(parametersNodePath);
 	}
 	
 
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 1111)
+++ tmp/org.txm.ahc.core/src/org/txm/ahc/core/functions/AHC.java	(revision 1112)
@@ -154,8 +154,8 @@
 	 * @param numberOfClusters the n cluster
 	 * @param display2D the display mode
 	 */
-	public AHC(String uuid)	{
-		this(uuid, null);
+	public AHC(String parametersNodePath)	{
+		this(parametersNodePath, null);
 	}
 	
 	/**
@@ -182,8 +182,8 @@
 	 * @param numberOfClusters the n cluster
 	 * @param display2D the display mode
 	 */
-	public AHC(String uuid, CA ca)	{
-		super(uuid, ca);
+	public AHC(String parametersNodePath, CA ca)	{
+		super(parametersNodePath, ca);
 	}
 
 	@Override
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 1111)
+++ tmp/org.txm.rcp/src/main/java/org/txm/rcp/views/debug/TXMResultDebugView.java	(revision 1112)
@@ -104,6 +104,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("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$
 		buffer.append("Lazy name: " + this.currentResult.getLazyName() + "\n"); //$NON-NLS-1$ //$NON-NLS-2$
Index: tmp/org.txm.rcp/src/main/java/org/txm/rcp/commands/workspace/UpdateCorpus.java
===================================================================
--- tmp/org.txm.rcp/src/main/java/org/txm/rcp/commands/workspace/UpdateCorpus.java	(revision 1111)
+++ tmp/org.txm.rcp/src/main/java/org/txm/rcp/commands/workspace/UpdateCorpus.java	(revision 1112)
@@ -47,9 +47,9 @@
 			System.out.println("Can't update a corpus not imprted with XTZ import module.");
 			return null;
 		}
-		project.getPreferences().getNode("import").put(ImportKeys.MULTITHREAD, "false"); //too soon
-		project.getPreferences().getNode("import").putBoolean(ImportKeys.DEBUG, Log.getLevel().intValue() < Level.WARNING.intValue()); // need debug for experimental stuff
-		project.getPreferences().getNode("import").put(ImportKeys.UPDATECORPUS, "true");
+		project.getPreferencesScope().getNode("import").put(ImportKeys.MULTITHREAD, "false"); //too soon
+		project.getPreferencesScope().getNode("import").putBoolean(ImportKeys.DEBUG, Log.getLevel().intValue() < Level.WARNING.intValue()); // need debug for experimental stuff
+		project.getPreferencesScope().getNode("import").put(ImportKeys.UPDATECORPUS, "true");
 		
 //		String txmhome = Toolbox.getTxmHomePath();
 //		File scriptDir = new File(txmhome, "scripts/groovy/user/org/txm/scripts/importer/xtz");
Index: tmp/org.txm.rcp/src/main/java/org/txm/rcp/handlers/BaseAbstractHandler.java
===================================================================
--- tmp/org.txm.rcp/src/main/java/org/txm/rcp/handlers/BaseAbstractHandler.java	(revision 1111)
+++ tmp/org.txm.rcp/src/main/java/org/txm/rcp/handlers/BaseAbstractHandler.java	(revision 1112)
@@ -200,7 +200,7 @@
 		Command cmd = cmdService.getCommand(commandId);
 		IHandlerService handlerService = (IHandlerService)window.getService(IHandlerService.class);
 		
-		// Redefine the command supported parameters, without that each command must define the parameter "result_uuid" in each plugin.xml...
+		// Redefine the command supported parameters, without that each command must define the parameter "result_parameters_node_path" in each plugin.xml...
 		if(resultUUID != null)	{
 			Log.info("BaseAbstractHandler.executeCommand(): preparing the send of result UUID: " + resultUUID + ".");
 			try {
@@ -218,12 +218,12 @@
 					
 					@Override
 					public String getName() {
-						return TXMPreferences.RESULT_UUID;
+						return TXMPreferences.RESULT_PARAMETERS_NODE_PATH;
 					}
 					
 					@Override
 					public String getId() {
-						return TXMPreferences.RESULT_UUID;
+						return TXMPreferences.RESULT_PARAMETERS_NODE_PATH;
 					}
 				}};
 				cmd.define(cmd.getName(), cmd.getDescription(), cmd.getCategory(), parameters);
@@ -232,7 +232,7 @@
 				e.printStackTrace();
 			}
 			// pass the parameter value
-			params = Collections.singletonMap(TXMPreferences.RESULT_UUID, resultUUID);
+			params = Collections.singletonMap(TXMPreferences.RESULT_PARAMETERS_NODE_PATH, resultUUID);
 		}
 		
 		// Call the command with parameters
@@ -272,12 +272,12 @@
 	/**
 	 * Executes a command handler specified by its id and activates/deactivates the "send selection context".
 	 * @param commandId
-	 * @param resultUUID
+	 * @param resultParametersNodePath
 	 */
-	public static void executeSendToCommand(String commandId, String resultUUID) {
+	public static void executeSendToCommand(String commandId, String resultParametersNodePath) {
 		IContextService contextService = (IContextService) PlatformUI.getWorkbench().getAdapter(IContextService.class);
 		IContextActivation activationToken = contextService.activateContext(SEND_SELECTION_TO_COMMAND_CONTEXT_ID);
-		executeCommand(commandId, resultUUID);
+		executeCommand(commandId, resultParametersNodePath);
 		contextService.deactivateContext(activationToken);
 	}
 }
Index: tmp/org.txm.index.core/src/org/txm/index/core/functions/___Lexicon2.java
===================================================================
--- tmp/org.txm.index.core/src/org/txm/index/core/functions/___Lexicon2.java	(revision 1111)
+++ tmp/org.txm.index.core/src/org/txm/index/core/functions/___Lexicon2.java	(revision 1112)
@@ -109,21 +109,13 @@
 	}
 
 	/**
-	 * Creates a not computed lexicon from the specified uuid node name.
-	 * @param uuid
+	 * Creates a not computed lexicon from the specified parametersNodePath node name.
+	 * @param parametersNodePath
 	 */
-	public ___Lexicon2(String uuid)	{
-		super(uuid);
+	public ___Lexicon2(String parametersNodePath)	{
+		super(parametersNodePath);
 	}
 	
-	/**
-	 * 
-	 * @param uuid
-	 * @param parent
-	 */
-	public ___Lexicon2(String uuid, TXMResult parent)	{
-		super(uuid, parent);
-	}
 
 	
 	@Override
Index: tmp/org.txm.index.core/src/org/txm/index/core/functions/Lexicon.java
===================================================================
--- tmp/org.txm.index.core/src/org/txm/index/core/functions/Lexicon.java	(revision 1111)
+++ tmp/org.txm.index.core/src/org/txm/index/core/functions/Lexicon.java	(revision 1112)
@@ -110,20 +110,20 @@
 	}
 
 	/**
-	 * Creates a not computed lexicon from the specified uuid node name.
-	 * @param uuid
+	 * Creates a not computed lexicon from the specified parameters node.
+	 * @param parametersNodePath
 	 */
-	public Lexicon(String uuid)	{
-		this(uuid, null);
+	public Lexicon(String parametersNodePath)	{
+		this(parametersNodePath, null);
 	}
 	
 	/**
 	 * 
-	 * @param uuid
+	 * @param parametersNodePath
 	 * @param parent
 	 */
-	public Lexicon(String uuid, TXMResult parent)	{
-		super(uuid, parent);
+	public Lexicon(String parametersNodePath, TXMResult parent)	{
+		super(parametersNodePath, parent);
 	}
 
 	@Override
Index: tmp/org.txm.index.core/src/org/txm/index/core/functions/Index.java
===================================================================
--- tmp/org.txm.index.core/src/org/txm/index/core/functions/Index.java	(revision 1111)
+++ tmp/org.txm.index.core/src/org/txm/index/core/functions/Index.java	(revision 1112)
@@ -158,27 +158,18 @@
 	 * @param parent
 	 */
 	public Index(TXMResult parent) {
-		this(null, parent);
+		super(parent);
 	}
 
 	/**
 	 * 
-	 * @param uuid
+	 * @param parametersNodePath
 	 */
-	public Index(String uuid)	{
-		this(uuid, null);
+	public Index(String parametersNodePath)	{
+		super(parametersNodePath);
 	}
 	
-	/**
-	 * 
-	 * @param uuid
-	 * @param parent
-	 */
-	public Index(String uuid, TXMResult parent)	{
-		super(uuid, parent);
-	}
 
-
 	@Override
 	protected boolean _compute() throws Exception {
 		lines.clear();
Index: tmp/org.txm.referencer.core/src/org/txm/referencer/core/functions/Referencer.java
===================================================================
--- tmp/org.txm.referencer.core/src/org/txm/referencer/core/functions/Referencer.java	(revision 1111)
+++ tmp/org.txm.referencer.core/src/org/txm/referencer/core/functions/Referencer.java	(revision 1112)
@@ -154,10 +154,10 @@
 	
 	/**
 	 * Creates a not computed referencer.
-	 * @param uuid
+	 * @param parametersNodePath
 	 */
-	public Referencer(String uuid) {
-		super(uuid);
+	public Referencer(String parametersNodePath) {
+		super(parametersNodePath);
 	}
 
 	
Index: tmp/org.txm.cooccurrence.chartsengine/src/org/txm/cooccurrence/functions/CooccurrenceGraph.java
===================================================================
--- tmp/org.txm.cooccurrence.chartsengine/src/org/txm/cooccurrence/functions/CooccurrenceGraph.java	(revision 1111)
+++ tmp/org.txm.cooccurrence.chartsengine/src/org/txm/cooccurrence/functions/CooccurrenceGraph.java	(revision 1112)
@@ -25,10 +25,10 @@
 	}
 
 	/**
-	 * @param uuid
+	 * @param parametersNodePath
 	 */
-	public CooccurrenceGraph(String uuid) {
-		super(uuid);
+	public CooccurrenceGraph(String parametersNodePath) {
+		super(parametersNodePath);
 		// TODO Auto-generated constructor stub
 	}
 
Index: tmp/org.txm.cooccurrence.core/src/org/txm/cooccurrence/core/functions/Cooccurrence.java
===================================================================
--- tmp/org.txm.cooccurrence.core/src/org/txm/cooccurrence/core/functions/Cooccurrence.java	(revision 1111)
+++ tmp/org.txm.cooccurrence.core/src/org/txm/cooccurrence/core/functions/Cooccurrence.java	(revision 1112)
@@ -239,11 +239,11 @@
 	}
 
 	/**
-	 * Creates a not computed cooccurrence from the uuid node.
-	 * @param uuid
+	 * Creates a not computed cooccurrence from a parameters node.
+	 * @param parametersNodePath
 	 */
-	public Cooccurrence(String uuid)	{
-		super(uuid);
+	public Cooccurrence(String parametersNodePath)	{
+		super(parametersNodePath);
 	}
 
 
Index: tmp/org.txm.specificities.core/src/org/txm/specificities/core/functions/Specificities.java
===================================================================
--- tmp/org.txm.specificities.core/src/org/txm/specificities/core/functions/Specificities.java	(revision 1111)
+++ tmp/org.txm.specificities.core/src/org/txm/specificities/core/functions/Specificities.java	(revision 1112)
@@ -146,10 +146,10 @@
 	
 	/**
 	 * Creates a not computed Specificities.
-	 * @param uuid
+	 * @param parametersNodePath
 	 */
-	public Specificities(String uuid)	{
-		this(uuid, null);
+	public Specificities(String parametersNodePath)	{
+		this(parametersNodePath, null);
 	}
 	
 	/**
@@ -160,8 +160,8 @@
 	 * @throws CqiClientException the cqi client exception
 	 * @throws StatException the stat exception
 	 */
-	public Specificities(String uuid, LexicalTable parent) {
-		super(uuid, parent);
+	public Specificities(String parametersNodePath, LexicalTable parent) {
+		super(parametersNodePath, parent);
 	}
 	
 	
Index: tmp/org.txm.specificities.core/src/org/txm/specificities/core/functions/SpecificitiesSelection.java
===================================================================
--- tmp/org.txm.specificities.core/src/org/txm/specificities/core/functions/SpecificitiesSelection.java	(revision 1111)
+++ tmp/org.txm.specificities.core/src/org/txm/specificities/core/functions/SpecificitiesSelection.java	(revision 1112)
@@ -58,6 +58,8 @@
 	 */
 	protected double[][] selectedSpecificitiesIndex;
 
+	
+	
 	/**
 	 * Creates an empty SpecificitiesSelection.
 	 * @param parent
@@ -66,14 +68,25 @@
 		super(parent);
 	}
 
-	public SpecificitiesSelection(String uuid)	{
-		this(uuid, null);
+	/**
+	 * 
+	 * @param parametersNodePath
+	 */
+	public SpecificitiesSelection(String parametersNodePath)	{
+		this(parametersNodePath, null);
 	}
 
-	public SpecificitiesSelection(String uuid, Specificities parent)	{
-		super(uuid, parent);
+	/**
+	 * 
+	 * @param parametersNodePath
+	 * @param parent
+	 */
+	public SpecificitiesSelection(String parametersNodePath, Specificities parent)	{
+		super(parametersNodePath, parent);
 	}
 
+	// FIXME: SJ: why?!
+	@Override
 	public Specificities getParent() {
 		return (Specificities)super.getParent();
 	}
Index: tmp/org.txm.index.rcp/src/org/txm/index/rcp/handlers/ComputeIndex.java
===================================================================
--- tmp/org.txm.index.rcp/src/org/txm/index/rcp/handlers/ComputeIndex.java	(revision 1111)
+++ tmp/org.txm.index.rcp/src/org/txm/index/rcp/handlers/ComputeIndex.java	(revision 1112)
@@ -57,10 +57,10 @@
 
 		Index index = null;
 		
-		// From link: creating from UUID and preferences nodes
-		String uuid = event.getParameter(TXMPreferences.RESULT_UUID);
-		if (uuid != null && !uuid.isEmpty()) {
-			index = new Index(uuid);
+		// From link: creating from parameters node
+		String parametersNodePath = event.getParameter(TXMPreferences.RESULT_PARAMETERS_NODE_PATH);
+		if (parametersNodePath != null && !parametersNodePath.isEmpty()) {
+			index = new Index(parametersNodePath);
 		}
 		// From view result node
 		else	{
Index: tmp/org.txm.progression.core/src/org/txm/progression/core/functions/Progression.java
===================================================================
--- tmp/org.txm.progression.core/src/org/txm/progression/core/functions/Progression.java	(revision 1111)
+++ tmp/org.txm.progression.core/src/org/txm/progression/core/functions/Progression.java	(revision 1112)
@@ -155,10 +155,10 @@
 
 	/**
 	 * 
-	 * @param uuid
+	 * @param parametersNodePath
 	 */
-	public Progression(String uuid)	{
-		super(uuid);
+	public Progression(String parametersNodePath)	{
+		super(parametersNodePath);
 	}
 	
 	
Index: tmp/org.txm.searchengine.cqp.core/src/org/txm/searchengine/cqp/corpus/Part.java
===================================================================
--- tmp/org.txm.searchengine.cqp.core/src/org/txm/searchengine/cqp/corpus/Part.java	(revision 1111)
+++ tmp/org.txm.searchengine.cqp.core/src/org/txm/searchengine/cqp/corpus/Part.java	(revision 1112)
@@ -49,8 +49,8 @@
 		this.userPersistable = false;
 	}
 	
-	public Part(String uuid) {
-		super(uuid); // build the subcorpus part
+	public Part(String parametersNodePath) {
+		super(parametersNodePath); // build the subcorpus part
 		
 		this.setVisible(false);
 		this.persistable = true;
Index: tmp/org.txm.searchengine.cqp.core/src/org/txm/searchengine/cqp/corpus/Partition.java
===================================================================
--- tmp/org.txm.searchengine.cqp.core/src/org/txm/searchengine/cqp/corpus/Partition.java	(revision 1111)
+++ tmp/org.txm.searchengine.cqp.core/src/org/txm/searchengine/cqp/corpus/Partition.java	(revision 1112)
@@ -129,10 +129,10 @@
 
 	/**
 	 * 
-	 * @param uuid
+	 * @param parametersNodePath
 	 */
-	public Partition(String uuid)	{
-		super(uuid);
+	public Partition(String parametersNodePath)	{
+		super(parametersNodePath);
 	}
 	
 	/**
Index: tmp/org.txm.searchengine.cqp.core/src/org/txm/searchengine/cqp/corpus/CQPCorpus.java
===================================================================
--- tmp/org.txm.searchengine.cqp.core/src/org/txm/searchengine/cqp/corpus/CQPCorpus.java	(revision 1111)
+++ tmp/org.txm.searchengine.cqp.core/src/org/txm/searchengine/cqp/corpus/CQPCorpus.java	(revision 1112)
@@ -76,10 +76,15 @@
 		super(partition);
 	}
 
-	public CQPCorpus(String uuid) {
-		super(uuid);
+	/**
+	 * 
+	 * @param parametersNodePath
+	 */
+	public CQPCorpus(String parametersNodePath) {
+		super(parametersNodePath);
 	}
 
+	
 	public static String getNextQueryCounter() {
 		QUERY_COUNTER++;
 		return QUERY_COUNTER.toString();
Index: tmp/org.txm.searchengine.cqp.core/src/org/txm/searchengine/cqp/corpus/MainCorpus.java
===================================================================
--- tmp/org.txm.searchengine.cqp.core/src/org/txm/searchengine/cqp/corpus/MainCorpus.java	(revision 1111)
+++ tmp/org.txm.searchengine.cqp.core/src/org/txm/searchengine/cqp/corpus/MainCorpus.java	(revision 1112)
@@ -71,8 +71,7 @@
 	 * @throws CqiClientException
 	 *             the cqi client exception
 	 */
-	public MainCorpus(Project project) throws InvalidCqpIdException,
-	CqiClientException {
+	public MainCorpus(Project project) throws InvalidCqpIdException, CqiClientException {
 		super(project);
 	}
 	
@@ -99,11 +98,11 @@
 	 * @throws CqiClientException
 	 *             the cqi client exception
 	 */
-	public MainCorpus(String uuid) throws InvalidCqpIdException,
-	CqiClientException {
-		super(uuid);
+	public MainCorpus(String parametersNodePath) throws InvalidCqpIdException, CqiClientException {
+		super(parametersNodePath);
 	}
 
+	
 	/**
 	 * Check whether the ID is a valid CQP ID.
 	 * 
Index: tmp/org.txm.searchengine.cqp.core/src/org/txm/searchengine/cqp/corpus/Subcorpus.java
===================================================================
--- tmp/org.txm.searchengine.cqp.core/src/org/txm/searchengine/cqp/corpus/Subcorpus.java	(revision 1111)
+++ tmp/org.txm.searchengine.cqp.core/src/org/txm/searchengine/cqp/corpus/Subcorpus.java	(revision 1112)
@@ -65,16 +65,29 @@
 	private SelectionResult selectionResult;
 	protected QueryResult qresult;
 
+	
+	/**
+	 * 
+	 * @param corpus
+	 */
 	public Subcorpus(CQPCorpus corpus) {
 		super(corpus);
 	}
 
+	/**
+	 * 
+	 * @param partition
+	 */
 	public Subcorpus(Partition partition) {
 		super(partition);
 	}
 
-	public Subcorpus(String uuid) {
-		super(uuid);
+	/**
+	 * 
+	 * @param parametersNodePath
+	 */
+	public Subcorpus(String parametersNodePath) {
+		super(parametersNodePath);
 	}
 
 	/**
Index: tmp/org.txm.annotation.kr.rcp/src/org/txm/annotation/kr/rcp/commands/RecodeCorpus.java
===================================================================
--- tmp/org.txm.annotation.kr.rcp/src/org/txm/annotation/kr/rcp/commands/RecodeCorpus.java	(revision 1111)
+++ tmp/org.txm.annotation.kr.rcp/src/org/txm/annotation/kr/rcp/commands/RecodeCorpus.java	(revision 1112)
@@ -114,9 +114,9 @@
 //		String txmhome = Toolbox.getTxmHomePath();
 
 		
-		project.getPreferences().getNode("import").put(ImportKeys.MULTITHREAD, "false"); //too soon
-		project.getPreferences().getNode("import").putBoolean(ImportKeys.DEBUG, Log.getLevel().intValue() < Level.WARNING.intValue()); // need debug for experimental stuff
-		project.getPreferences().getNode("import").put(ImportKeys.UPDATECORPUS, "true");
+		project.getPreferencesScope().getNode("import").put(ImportKeys.MULTITHREAD, "false"); //too soon
+		project.getPreferencesScope().getNode("import").putBoolean(ImportKeys.DEBUG, Log.getLevel().intValue() < Level.WARNING.intValue()); // need debug for experimental stuff
+		project.getPreferencesScope().getNode("import").put(ImportKeys.UPDATECORPUS, "true");
 
 //		monitor.setTaskName("Updating corpus");
 //		File scriptDir = new File(txmhome, "scripts/groovy/user/org/txm/scripts/importer/xtz");
Index: tmp/org.txm.ca.core/src/org/txm/ca/core/functions/Eigenvalues.java
===================================================================
--- tmp/org.txm.ca.core/src/org/txm/ca/core/functions/Eigenvalues.java	(revision 1111)
+++ tmp/org.txm.ca.core/src/org/txm/ca/core/functions/Eigenvalues.java	(revision 1112)
@@ -28,15 +28,15 @@
 	/**
 	 * @param parent
 	 */
-	public Eigenvalues(String uuid) {
-		this(uuid, null);
+	public Eigenvalues(String parametersNodePath) {
+		this(parametersNodePath, null);
 	}
 
 	/**
 	 * @param parent
 	 */
-	public Eigenvalues(String uuid, TXMResult parent) {
-		super(uuid, parent);
+	public Eigenvalues(String parametersNodePath, TXMResult parent) {
+		super(parametersNodePath, parent);
 		this.setVisible(false);
 	}
 
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 1111)
+++ tmp/org.txm.ca.core/src/org/txm/ca/core/functions/CA.java	(revision 1112)
@@ -138,8 +138,8 @@
 	 * @param lexicalTable the lexical table
 	 * @throws StatException stat exception if the structure can not be created in R statistics engine.
 	 */
-	public CA(String uuid) {
-		this(uuid, null);
+	public CA(String parametersNodePath) {
+		this(parametersNodePath, null);
 	}
 	
 	/**
@@ -148,8 +148,8 @@
 	 * @param lexicalTable the lexical table
 	 * @throws StatException stat exception if the structure can not be created in R statistics engine.
 	 */
-	public CA(String uuid, LexicalTable lexicalTable) {
-		super(uuid, lexicalTable);
+	public CA(String parametersNodePath, LexicalTable lexicalTable) {
+		super(parametersNodePath, lexicalTable);
 	}
 
 	@Override
