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 860)
+++ tmp/org.txm.specificities.core/src/org/txm/specificities/core/functions/Specificities.java	(revision 861)
@@ -133,26 +133,55 @@
 	
 	
 	
+	/**
+	 * Creates a not computed Specificities.
+	 * @param parent
+	 */
+	public Specificities(LexicalTable parent) {
+		super(parent);
+	}
+
+
 	
+	/**
+	 * Creates a not computed Specificities.
+	 * @param uuid
+	 */
+	public Specificities(String uuid)	{
+		this(uuid, null);
+	}
 	
-	
-	
 	/**
-	 * Specificities.
+	 * Creates a not computed Specificities.
 	 *
-	 * @param lexicalTable the table
+	 * @param parent the table
 	 * @return the specificities result
 	 * @throws CqiClientException the cqi client exception
 	 * @throws StatException the stat exception
 	 */
-	public Specificities(LexicalTable lexicalTable)	throws CqiClientException, StatException {
-		super(lexicalTable);
-		this.lexicalTable = lexicalTable;
+	public Specificities(String uuid, LexicalTable parent) {
+		super(uuid, parent);
+	}
+	
+	
+	
+	@Override
+	public boolean loadParameters() {
+		this.lexicalTable = (LexicalTable) this.parent;
 		this.unitProperty = this.lexicalTable.getProperty();
 		this.lexicalTable.setVMaxFilter(Integer.MAX_VALUE);
+		return true;
 	}
+
+	@Override
+	public boolean saveParameters() {
+		// nothing to do
+		return true;
+	}
 	
 
+	
+
 	@Override
 	protected boolean _compute() throws Exception {
 		
@@ -696,19 +725,7 @@
 		return true;
 	}
 
-	@Override
-	public boolean loadParameters() {
-		// nothing to do
-		return true;
-	}
-
-	@Override
-	public boolean saveParameters() {
-		// nothing to do
-		return true;
-	}
 	
-	
 	/**
 	 * @return the maxScore
 	 */
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 860)
+++ tmp/org.txm.specificities.core/src/org/txm/specificities/core/functions/SpecificitiesSelection.java	(revision 861)
@@ -9,6 +9,7 @@
 import org.txm.chartsengine.core.results.ChartResult;
 import org.txm.core.results.Parameter;
 import org.txm.core.results.TXMParameters;
+import org.txm.core.results.TXMResult;
 import org.txm.specificities.core.preferences.SpecificitiesPreferences;
 
 /**
@@ -63,6 +64,7 @@
 
 	
 	
+
 	
 	/**
 	 * Creates an empty SpecificitiesSelection.
@@ -72,8 +74,20 @@
 		super(parent);
 	}
 
+
 	
+	public SpecificitiesSelection(String uuid)	{
+		this(uuid, null);
+	}
+	
+	public SpecificitiesSelection(String uuid, Specificities parent)	{
+		super(uuid, parent);
+	}
 
+	
+	
+	
+
 	@Override
 	public boolean loadParameters() {
 		// nothing to do
Index: tmp/org.txm.core/src/java/org/txm/Toolbox.java
===================================================================
--- tmp/org.txm.core/src/java/org/txm/Toolbox.java	(revision 860)
+++ tmp/org.txm.core/src/java/org/txm/Toolbox.java	(revision 861)
@@ -498,7 +498,10 @@
 		try {
 			
 			
-			// remove result local nodes if persistence preference is disabled
+			// FIXME: tmp solution before IProject: remove all not persistable result nodes
+			TXMPreferences.deleteAllNotPersistableResultsNodes();
+			
+			// FIXME: tmp solution before IProject: remove result local nodes if persistence preference is disabled
 			if (!TBXPreferences.getBoolean(TBXPreferences.AUTO_SAVE_RESULTS, TBXPreferences.PREFERENCES_NODE)) {
 				TXMPreferences.deleteAllResultsNodes();
 			}
@@ -520,7 +523,7 @@
 			//			}
 			//		}
 		} catch(Exception e) {
-			Log.severe("Error while saving preferences.");
+			Log.severe("Error while saving preferences and session results.");
 			e.printStackTrace();
 		}
 	}
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 860)
+++ tmp/org.txm.core/src/java/org/txm/core/preferences/TXMPreferences.java	(revision 861)
@@ -989,7 +989,7 @@
 			String[] keys = preferences.keys();
 			Arrays.sort(keys);
 			for(int i = 0; i < keys.length; i++) {
-				str.put(keys[i],preferences.get(keys[i], ""));
+				str.put(keys[i],preferences.get(keys[i], "")); //$NON-NLS-1$
 			}
 		}
 		catch(BackingStoreException e) {
@@ -1006,13 +1006,13 @@
 		
 		IEclipsePreferences preferences = scope.getNode(nodeQualifier);
 		
-		str.append("Path = " +  preferences.absolutePath() + "\n");
+		str.append("Path = " +  preferences.absolutePath() + "\n"); //$NON-NLS-1$  //$NON-NLS-2$
 		
 		try {
 			String[] keys = preferences.keys();
 			Arrays.sort(keys);
 			for(int i = 0; i < keys.length; i++) {
-				str.append(keys[i] + " = " + preferences.get(keys[i], "") + "\n");
+				str.append(keys[i] + " = " + preferences.get(keys[i], "") + "\n"); //$NON-NLS-1$  //$NON-NLS-2$
 			}
 		}
 		catch(BackingStoreException e) {
@@ -1036,25 +1036,25 @@
 		// result scope node
 		if(result != null)	{
 			if(resultScopeNodeExists(result))	{
-				System.out.println("TXMPreferences.dump(): Result scope preferences for node " + result.getUUID() + ":");
+				Log.finest("TXMPreferences.dump(): Result scope preferences for node " + result.getUUID() + ":");
 				dump(result.getUUID());
 			}
 			else	{
-				System.out.println("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.getUUID() + ".");
 			}
 		}
 		// command scope node
 		if(nodeQualifier != null)	{
-			System.out.println("TXMPreferences.dump(): Command scope preferences for node " + nodeQualifier + ":");
+			Log.finest("TXMPreferences.dump(): Command scope preferences for node " + nodeQualifier + ":");
 			dump(nodeQualifier);
 		}
 		else	{
-			System.out.println("TXMPreferences.dump(): No Command scope was asked to dump.");
+			Log.finest("TXMPreferences.dump(): No Command scope was asked to dump.");
 		}
 
 		// alternative global scope nodes
 		for(int i = 0; i < alternativeNodesQualifiers.size(); i++) {
-			System.out.println("TXMPreferences.dump(): Alternative global scope preferences for node " + alternativeNodesQualifiers.get(i) + ":");
+			Log.finest("TXMPreferences.dump(): Alternative global scope preferences for node " + alternativeNodesQualifiers.get(i) + ":");
 			dump(alternativeNodesQualifiers.get(i));
 		}
 	}
@@ -1066,7 +1066,7 @@
 	 */
 	public static void flush(TXMResult result)	{
 		try {
-			System.err.println("TXMPreferences.flush(): Local preferences for object " + result.getUUID() + " saved to file.");
+			Log.finest("TXMPreferences.flush(): Local preferences for object " + result.getUUID() + " saved to file.");
 			// FIXME: useless?
 			//scope.getNode(result.getUUID()).sync();
 			scope.getNode(result.getUUID()).flush();
@@ -1102,20 +1102,35 @@
 			e.printStackTrace();
 		}
 	}
+
 	
 	/**
+	 * Deletes all the result nodes from the preferences and files that are not set as persistable.
+	 */
+	public static void deleteAllNotPersistableResultsNodes()	{
+		ArrayList<String> resultsNodesQualifier = getAllResultsNodesQualifiers();
+		for (int i = 0; i < resultsNodesQualifier.size(); i++) {
+			if(!TXMResult.getResult(resultsNodesQualifier.get(i)).isPersistable())	{
+				delete(scope.getNode(resultsNodesQualifier.get(i)));
+			}
+		}
+	}
+
+	
+	/**
 	 * Deletes all the result nodes from the preferences and files.
 	 */
 	public static void deleteAllResultsNodes()	{
 		ArrayList<String> resultsNodesQualifier = getAllResultsNodesQualifiers();
 		for (int i = 0; i < resultsNodesQualifier.size(); i++) {
+			TXMResult.getResult(resultsNodesQualifier.get(i)).isPersistable();
 			delete(scope.getNode(resultsNodesQualifier.get(i)));
 		}
 	}
 	
 	
 	/**
-	 * Gets all the result nodes qualifiers (from *.prefs file starting with TXMResult.UUID_PREFIX, eg.: "txm_res_").
+	 * Gets all the result nodes qualifiers (from scope or *.prefs files starting with TXMResult.UUID_PREFIX, eg.: "txm_res_").
 	 * @return
 	 */
 	public static ArrayList<String> getAllResultsNodesQualifiers()	{
@@ -1243,9 +1258,12 @@
 //			scope.getNode(nodeQualifier).putByteArray(key, (byte[]) value);
 //		}
 		else if(value != null) {
+			scope.getNode(nodeQualifier).put(key, value.toString());
+			
+			
 		// FIXME: to do if needed
 			//FIXME: Debug
-			System.err.println("TXMPreferences.putLocal(): error, can't find a put method that matches the value type: " + value.getClass() + "=" + value + ".");
+			//System.err.println("TXMPreferences.put(): error, can't find a put method that matches the value type: " + value.getClass() + "=" + value + ".");
 		}
 	}
 
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 860)
+++ tmp/org.txm.core/src/java/org/txm/core/results/TXMResult.java	(revision 861)
@@ -129,6 +129,11 @@
 	protected HashMap<String, Object> lastParameters = new HashMap<String, Object>();
 
 
+	/**
+	 * Persistable state.
+	 */
+	protected boolean persistable;
+	
 
 	/**
 	 * Creates a new TXMResult, child of the specified parent.
@@ -188,15 +193,20 @@
 		// + this.preferencesNodeQualifier + ", class = " + getClass());
 
 		this.dirty = true;
+		this.persistable = true;
+		
 
-
 		// retrieving parent from UUID
 		if(parent == null && uuid != null && !this.getStringParameterValue(TXMPreferences.PARENT_UUID).isEmpty())	{
+			Log.warning("Searching parent with UUID: " + this.getStringParameterValue(TXMPreferences.PARENT_UUID) + "...");
 			TXMResult retrievedParent = TXMResult.getResult(this.getStringParameterValue(TXMPreferences.PARENT_UUID));
 			if (retrievedParent != null) {
 				Log.warning("Parent retrieved from UUID: " + retrievedParent + ".");
 				retrievedParent.addChild(this);
 			}
+			else	{
+				Log.severe("No parent found in workspace.");
+			}
 		}
 
 		// retrieving user name
@@ -710,7 +720,7 @@
 		System.out.println("TXMResult.autoSaveParametersFromAnnotations(): " + this.getClass().getSimpleName() + ": saving parameters to local node...");
 
 		// internal data to save for unserialization
-		this.saveParameter("class", this.getClass().getName());
+		this.saveParameter("class", this.getClass().getName()); //$NON-NLS-1$
 		// store the user name if exists otherwise the simple name
 		if(this.userName != null)	{
 			this.saveParameter(TXMPreferences.NAME, this.userName);
@@ -827,7 +837,7 @@
 				f.set(this, value);
 
 				// FIXME: Debug
-				System.err.println("TXMResult.autoLoadParametersFromAnnotations(): setting parameter " + key + " = " + value + " for " + this.getClass());
+				Log.finest("TXMResult.autoLoadParametersFromAnnotations(): setting parameter " + key + " = " + value + " for " + this.getClass());
 
 			} catch (Exception e) {
 				e.printStackTrace();
@@ -1615,7 +1625,7 @@
 		}
 
 		// FIXME: file persistence flush tests
-		if (TBXPreferences.getBoolean(TBXPreferences.AUTO_SAVE_RESULTS, TBXPreferences.PREFERENCES_NODE)) {
+		if (this.persistable && TBXPreferences.getBoolean(TBXPreferences.AUTO_SAVE_RESULTS, TBXPreferences.PREFERENCES_NODE)) {
 			Log.finest("TXMResult.compute(): flushing local preferences node in file for persistence tests.");
 			TXMPreferences.flush(this);
 		}
@@ -1796,4 +1806,20 @@
 	public void setHasBeenComputedOnce(boolean hasBeenComputedOnce) {
 		this.hasBeenComputedOnce = hasBeenComputedOnce;
 	}
+
+	/**
+	 * Gets the persistable state. 
+	 * @return the persistable
+	 */
+	public boolean isPersistable() {
+		return persistable;
+	}
+
+	/**
+	 * Sets the persistable state. If set to false, the result will never be saved to file.
+	 * @param persistable the persistable to set
+	 */
+	public void setPersistable(boolean persistable) {
+		this.persistable = persistable;
+	}
 }
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 860)
+++ tmp/org.txm.lexicaltable.core/src/org/txm/lexicaltable/core/functions/LexicalTable.java	(revision 861)
@@ -48,19 +48,19 @@
 	/**
 	 * The property.
 	 */
-	@Parameter(key=LexicalTablePreferences.UNIT_PROPERTY)
+	@Parameter(key=TBXPreferences.UNIT_PROPERTY)
 	private Property property;
 	
 	/**
 	 * Minimum frequency.
 	 */
-	@Parameter(key=LexicalTablePreferences.F_MIN)
+	@Parameter(key=TBXPreferences.F_MIN)
 	private int fMinFilter;
 
 	/**
 	 * Maximum number of lines.
 	 */
-	@Parameter(key=LexicalTablePreferences.V_MAX)
+	@Parameter(key=TBXPreferences.V_MAX)
 	private int vMaxFilter;
 	
 	/**
@@ -170,7 +170,10 @@
 	@Override
 	public boolean loadParameters() {
 		try {
-			this.property = this.getCorpus().getProperty(this.getStringParameterValue(LexicalTablePreferences.UNIT_PROPERTY));
+			// FIXME: debug
+			System.err.println("LexicalTable.loadParameters(): loading unit property...");
+			this.property = this.getCorpus().getProperty(this.getStringParameterValue(TBXPreferences.UNIT_PROPERTY));
+			System.err.println("LexicalTable.loadParameters(): property = " + this.property);
 		}
 		catch (CqiClientException e) {
 			// TODO Auto-generated catch block
@@ -182,9 +185,7 @@
 	
 	@Override
 	public boolean saveParameters() {
-		if(this.property != null)	{
-			this.saveParameter(TBXPreferences.UNIT_PROPERTY, this.property.getName());
-		}
+		this.saveParameter(TBXPreferences.UNIT_PROPERTY, this.property);
 		return true;
 	}
 
Index: tmp/org.txm.index.core/src/org/txm/index/core/messages/messages.properties
===================================================================
--- tmp/org.txm.index.core/src/org/txm/index/core/messages/messages.properties	(revision 860)
+++ tmp/org.txm.index.core/src/org/txm/index/core/messages/messages.properties	(revision 861)
@@ -13,7 +13,7 @@
 
 LexiconDetailsFromPartition = Lexicon:\n\	Partition {0}\n\	query {1}\n\	properties {2}\n\	Fmin {3}\n\	Fmax {4}
 
-Lexicon_0                   = Forms and frequencies tables must be of the same length.
-Lexicon_3                   = Lexicon : 
+Lexicon_0                   = Forms and frequencies tables must have the same size.
+Lexicon_3                   = Lexicon: 
 
 RESULT_TYPE = Index
Index: tmp/org.txm.index.core/src/org/txm/index/core/messages/IndexCoreMessages.java
===================================================================
--- tmp/org.txm.index.core/src/org/txm/index/core/messages/IndexCoreMessages.java	(revision 860)
+++ tmp/org.txm.index.core/src/org/txm/index/core/messages/IndexCoreMessages.java	(revision 861)
@@ -3,8 +3,15 @@
 import org.eclipse.osgi.util.NLS;
 import org.txm.utils.messages.Utf8NLS;
 
+/**
+ * 
+ * @author sjacquot
+ *
+ */
 public class IndexCoreMessages extends NLS {
 
+	private static final String BUNDLE_NAME = "org.txm.index.core.messages.messages"; //$NON-NLS-1$
+	
 	public static String DetailsFromPartition;
 	public static String DetailsFromCorpus;
 	
@@ -24,7 +31,7 @@
 	
 	static {
 		// initialize resource bundle
-		Utf8NLS.initializeMessages(IndexCoreMessages.class);
+		Utf8NLS.initializeMessages(BUNDLE_NAME, IndexCoreMessages.class);
 	}
 
 	private IndexCoreMessages() {
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 860)
+++ tmp/org.txm.index.core/src/org/txm/index/core/functions/Lexicon.java	(revision 861)
@@ -39,6 +39,8 @@
 
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.txm.core.messages.TXMCoreMessages;
+import org.txm.core.preferences.TBXPreferences;
+import org.txm.core.results.Parameter;
 import org.txm.core.results.TXMParameters;
 import org.txm.core.results.TXMResult;
 import org.txm.index.core.messages.IndexCoreMessages;
@@ -83,9 +85,6 @@
 	/** The number of tokens. */
 	int numberOfTokens = -1;
 
-	/** The property. */
-	private Property pProperty;
-
 	/** The symbol. */
 	private String symbol;
 
@@ -95,6 +94,13 @@
 	private Corpus corpus;
 
 	
+
+	/**
+	 * The property.
+	 */
+	@Parameter(key=TBXPreferences.UNIT_PROPERTY)
+	protected Property pProperty;
+
 	
 	
 	
@@ -109,21 +115,32 @@
 	public Lexicon(String uuid, Corpus corpus)	{
 		super(uuid, corpus);
 		this.corpus = (Corpus) this.parent;
+		this.persistable = false; // FIXME: remove that later
 	}
 
 	
+
 	@Override
-	public boolean saveParameters() throws Exception {
-		// TODO Auto-generated method stub
+	public boolean loadParameters() throws Exception {
+		try {
+			this.pProperty = this.getCorpus().getProperty(this.getStringParameterValue(TBXPreferences.UNIT_PROPERTY));
+		}
+		catch (CqiClientException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+			return false;
+		}
 		return true;
 	}
 
+	
 	@Override
-	public boolean loadParameters() throws Exception {
-		// TODO Auto-generated method stub
+	public boolean saveParameters() throws Exception {
+		this.saveParameter(TBXPreferences.UNIT_PROPERTY, this.pProperty);
 		return true;
 	}
 
+	
 	@Override
 	public void clean() {
 		// TODO Auto-generated method stub
@@ -144,7 +161,7 @@
 			return computewithSubCorpus((Subcorpus)corpus, pProperty, monitor);
 		}
 		else {
-			System.out.println("Error: Lexicon parent is neither a Maincorpus nor a Subcorpus.");
+			Log.severe("Error: Lexicon parent is neither a Maincorpus nor a Subcorpus.");
 			return false;
 		}
 	}
@@ -164,7 +181,7 @@
 		// System.out.println("in "+this.getCqpId()+" look for cached lexicon "+property);
 		// System.out.println("not found");
 		this.subTask("Computing lexicon size...");
-		Log.finest(TXMCoreMessages.LEXICON + corpus.getName());
+		Log.finest(IndexCoreMessages.LEXICON_RESULT_TYPE + corpus.getName());
 		int lexiconSize;
 		try {
 			lexiconSize = CorpusManager.getCorpusManager().getCqiClient().lexiconSize(property.getQualifiedName());
@@ -185,7 +202,7 @@
 			throw new CqiClientException(e);
 		}
 
-		init(corpus, property, freqs, ids);
+		this.init(corpus, property, freqs, ids);
 		return true;
 	}
 
@@ -418,6 +435,7 @@
 		return ids;
 	}
 
+	@Override
 	public String getName() {
 		try {
 			return IndexCoreMessages.LEXICON_RESULT_TYPE + ": " + this.corpus.getSimpleName() + ": " + this.getSimpleName();	
@@ -436,6 +454,7 @@
 		return pProperty;
 	}
 
+	@Override
 	public String getSimpleName() {
 		try {
 			return this.getProperty().getName();
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 860)
+++ tmp/org.txm.links.rcp/src/org/txm/links/rcp/handlers/SendSelectionToQueryable.java	(revision 861)
@@ -30,10 +30,6 @@
 import org.eclipse.core.commands.ExecutionEvent;
 import org.eclipse.core.commands.ExecutionException;
 import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.contexts.IContextActivation;
-import org.eclipse.ui.contexts.IContextService;
 import org.eclipse.ui.handlers.HandlerUtil;
 import org.txm.core.preferences.TXMPreferences;
 import org.txm.core.results.TXMResult;
@@ -73,20 +69,8 @@
 	@Override
 	public Object execute(ExecutionEvent event) throws ExecutionException {
 		
-		System.err.println("SendSelectionToQueryable.execute()");
-		
 		IStructuredSelection selection = (IStructuredSelection) HandlerUtil.getCurrentSelection(event);
-		//String commandId = event.getParameter("sendToTargetCommandId"); //$NON-NLS-1$
-		
-		String commandId = event.getCommand().getId();
-		
-		
-		
-		if (
-				selection != null
-				//&& 
-				//commandId != null && !commandId.isEmpty()
-				) {
+		if (selection != null) {
 			
 			String query = this.createQuery(event, selection);
 			String queries = this.createQueries(event, selection);
@@ -102,31 +86,8 @@
 			TXMPreferences.put(uuid, TXMPreferences.QUERY, query);
 			TXMPreferences.put(uuid, TXMPreferences.QUERIES, queries);
 			
+			BaseAbstractHandler.executeSendToCommand(event.getCommand().getId(), uuid);
 			
-			//this.getActiveEditor(event).close();
-
-//			IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
-//			IContextService contextService = (IContextService)window.getService(IContextService.class);
-			
-			
-//			IContextService contextService = (IContextService) PlatformUI.getWorkbench().getAdapter(IContextService.class);
-//			IContextActivation activationToken = contextService.activateContext(SEND_SELECTION_TO_COMMAND_CONTEXT_ID);
-//			
-//			
-////			ICommandService commandManager = (ICommandService) window.getService(ICommandService.class);
-////			IHandlerService handlerService = (IHandlerService)window.getService(IHandlerService.class);
-////			handlerService.activateHandler(commandId, handler)
-//			//event.getCommand().getHandler().dispose();
-//			//event.getCommand().setHandler(handler)
-//			
-//			BaseAbstractHandler.executeCommand(commandId, uuid);
-//			
-//			
-//			contextService.deactivateContext(activationToken);
-
-
-			BaseAbstractHandler.executeSendToCommand(commandId, uuid);
-			
 		}
 		else	{
 			this.logCanNotCompute(selection);
