Index: tmp/org.txm.rcp/src/main/java/org/txm/rcp/editors/RCPCommand.java
===================================================================
--- tmp/org.txm.rcp/src/main/java/org/txm/rcp/editors/RCPCommand.java	(revision 437)
+++ tmp/org.txm.rcp/src/main/java/org/txm/rcp/editors/RCPCommand.java	(revision 438)
@@ -1,7 +1,7 @@
 package org.txm.rcp.editors;
 
-import org.txm.core.results.TXMResult;
 import org.txm.functions.Command;
+import org.txm.functions.TXMCommand;
 
 /**
  * A command that opens an editor (which will computes the result).
@@ -15,12 +15,12 @@
 
 	public final String editor_id;
 	
-	public RCPCommand(Class<TXMResult> clazz, String editor_id) {
+	public RCPCommand(Class<TXMCommand> clazz, String editor_id) {
 		super(clazz);
 		this.editor_id = editor_id;
 	}
 
-	public RCPCommand(String cmd, Class<TXMResult> clazz, String editor_id) {
+	public RCPCommand(String cmd, Class<TXMCommand> clazz, String editor_id) {
 		super(cmd, clazz);
 		this.editor_id = editor_id;
 	}
Index: tmp/org.txm.rcp/src/main/java/org/txm/rcp/editors/TXMResultEditorInput.java
===================================================================
--- tmp/org.txm.rcp/src/main/java/org/txm/rcp/editors/TXMResultEditorInput.java	(revision 437)
+++ tmp/org.txm.rcp/src/main/java/org/txm/rcp/editors/TXMResultEditorInput.java	(revision 438)
@@ -1,12 +1,9 @@
 package org.txm.rcp.editors;
 
-import java.util.HashMap;
-import java.util.Properties;
-
 import org.eclipse.jface.resource.ImageDescriptor;
 import org.eclipse.ui.IEditorInput;
 import org.eclipse.ui.IPersistableElement;
-import org.txm.core.results.ITXMResult;
+import org.txm.core.results.TXMResult;
 
 /**
  * Base class of all TXM results <code>IEditorInput</code>.
@@ -26,44 +23,25 @@
 	/**
 	 * TXM result object.
 	 */
-	protected ITXMResult result; 
+	protected TXMResult result; 
 	
+
 	
-	
-	//FIXME: parameters tests
-	protected HashMap<String, Object> params;
-	protected ITXMResult source;
-	
-	
 	/**
-	 * Creates an editor input with no linked TXM result.
+	 * Creates an editor input and stores the specified TXM result as source object for further result computing.
+	 * @param sourceResult
+	 * @param preferencesNodeQualifier
 	 */
-	public TXMResultEditorInput() {
-		this(null);
-	}
-	
-	
-	/**
-	 * Creates an editor input and stores it the specified TXM result.
-	 * @param result
-	 */
-	public TXMResultEditorInput(ITXMResult result) {
+	public TXMResultEditorInput(TXMResult result) {
 		this.result = result;
 		this.alwaysRecreateEditor = false;
-		
 	}
-
-	//FIXME: parameters tests
-	public TXMResultEditorInput(ITXMResult source, HashMap<String, Object> parameters) {
-		this.source = source;
-		this.params = parameters;
-	}
 	
 	/**
 	 * Gets the TXM result associated with the editor input.
 	 * @return the linked result
 	 */
-	public ITXMResult getResult() {
+	public TXMResult getResult() {
 		return result;
 	}
 
@@ -71,8 +49,7 @@
 	 * Sets the result data associated with the editor input.
 	 * @param resultData the resultData to set
 	 */
-	//FIXME: this method is only used for CAH, should be removed later
-	public void setResult(ITXMResult resultData) {
+	public void setResult(TXMResult resultData) {
 		this.result = resultData;
 	}
 
@@ -86,6 +63,7 @@
 	}
 
 
+
 	@Override
 	public String getName()	{
 		try {
@@ -156,20 +134,17 @@
 	}
 
 
-	/**
-	 * @return the params
-	 */
-	public HashMap<String, Object> getParams() {
-		return params;
-	}
 
 
 	/**
-	 * @return the source
+	 * Sets and updates the local preferences node qualifier from the result data.
+	 * Synchronizes the local preferences node with the result data type, etc.
 	 */
-	public ITXMResult getSource() {
-		return source;
+	public void syncLocalPreferencesNode()	{
+		System.err.println("TXMResultEditorInput.syncLocalPreferencesNode(): not yet implemented.");
+		// FIXME: persistence test
+//		TXMPreferences.putLocalString(this.result, ChartsEnginePreferences.RESULT_DATA_TYPE, this.result.getClass().getName());
 	}
 
-	
+
 }
Index: tmp/org.txm.rcp/src/main/java/org/txm/rcp/editors/RCPCommandsAPI.java
===================================================================
--- tmp/org.txm.rcp/src/main/java/org/txm/rcp/editors/RCPCommandsAPI.java	(revision 437)
+++ tmp/org.txm.rcp/src/main/java/org/txm/rcp/editors/RCPCommandsAPI.java	(revision 438)
@@ -1,13 +1,10 @@
 package org.txm.rcp.editors;
 
-import java.util.HashMap;
-
-import org.eclipse.ui.PartInitException;
+import org.txm.core.results.TXMParameters;
 import org.txm.core.results.TXMResult;
 import org.txm.functions.Command;
 import org.txm.functions.CommandsAPI;
-import org.txm.rcp.TXMWindows;
-import org.txm.utils.logger.Log;
+import org.txm.functions.TXMCommand;
 
 /**
  * Interface to call commands from a RCP plugin
@@ -19,12 +16,13 @@
 	
 	/**
 	 * @param cmd the command to call or the command to open with the right editor
-	 * @param parent the result parent
+	 * @param source the result parent
 	 * @param parameters the parameters to compute the command or the parameters to set editor parameters with
 	 * 
 	 * @return A result or the editor's result. null if the command failed to compute  or to open editor. 
 	 */
-	public Object call(String cmd, TXMResult parent, HashMap<String, Object> parameters) {
+	//FIXME: the source is not used, see if we decide to put it the TXMParameters or not, otherwise define a method TXMResult.setSource() or maybe better a method TXMResult.compute(TXMResul source)
+	public Object call(String cmd, TXMResult source, TXMParameters parameters) {
 
 		Command command = cmds.get(cmd);
 		if (command == null) {
@@ -33,35 +31,44 @@
 		}
 		
 		if (command instanceof RCPCommand) {
-			
+
 			RCPCommand rcpcommand = (RCPCommand)command;
+			TXMCommand result = null;
 			
 			if (rcpcommand.editor_id == null) {
 				System.out.println("Failed to open editor: no context given.");
 				return null;
 			}
 			
-			// the editor will compute the command
-			TXMResultEditorInput editorInput = new TXMResultEditorInput(parent, parameters);
 			try {
-				TXMEditorPart editor = (TXMEditorPart) TXMWindows.getActiveWindow().getActivePage()
-						.openEditor(editorInput, rcpcommand.editor_id);
-			//	if (editor.isReady()) {
+				// the editor will compute the command
+				result = rcpcommand.clazz.newInstance();
+				result.setParameters(parameters);
+
+				TXMResultEditorInput editorInput = new TXMResultEditorInput(result);
+				TXMEditorPart editor = TXMEditorPart.openEditor(editorInput, rcpcommand.editor_id);
+				if (editor != null) {
 					return editor;
-//				} else {
-//					System.out.println("Failed to open editor: internal error during initialisation.");
-//					return null;
-//				}
-			} catch (PartInitException e) {
-				System.out.println("Failed to open editor with "+cmd+" command and "+parameters+" parameters: "+e.getLocalizedMessage());
-				Log.printStackTrace(e);
+				}
+				else	{
+					System.out.println("Failed to open editor: internal error during initialisation.");
+					System.out.println("Failed to open editor with "+cmd+" command and "+parameters+" parameters.");
+				}
 			}
-			return null;
-			
-		} else {
-			Object result = super.call(cmd, parent, parameters);
-			System.out.println("Done: "+result);
+			catch(InstantiationException e) {
+				// TODO Auto-generated catch block
+				e.printStackTrace();
+			}
+			catch(IllegalAccessException e) {
+				// TODO Auto-generated catch block
+				e.printStackTrace();
+			}
 			return result;
+		} 
+		else {
+			Object result = super.call(cmd, source, parameters);
+			System.out.println("Done: " + result);
+			return result;
 		}
 	}
 	
Index: tmp/org.txm.rcp/src/main/java/org/txm/rcp/editors/TXMEditorPart.java
===================================================================
--- tmp/org.txm.rcp/src/main/java/org/txm/rcp/editors/TXMEditorPart.java	(revision 437)
+++ tmp/org.txm.rcp/src/main/java/org/txm/rcp/editors/TXMEditorPart.java	(revision 438)
@@ -24,8 +24,11 @@
 import org.eclipse.ui.part.EditorPart;
 import org.txm.chartsengine.rcp.editors.ChartEditorInput;
 import org.txm.chartsengine.rcp.editors.ChartEditorPart;
+import org.txm.cooccurrence.core.preferences.CooccurrencePreferences;
 import org.txm.cooccurrence.rcp.editors.CooccurrencesEditor;
-import org.txm.core.results.ITXMResult;
+import org.txm.core.preferences.TXMPreferences;
+import org.txm.core.results.TXMResult;
+import org.txm.core.results.TXMParameters;
 import org.txm.rcp.IImageKeys;
 import org.txm.rcp.Messages;
 import org.txm.rcp.StatusLine;
@@ -67,7 +70,7 @@
 	}
 
 
-
+	
 	@Override
 	public void init(IEditorSite site, IEditorInput input) throws PartInitException {
 		this.setSite(site);
@@ -247,16 +250,82 @@
         return (TXMResultEditorInput) super.getEditorInput();
     }
 	
+	
 	/**
+	 * Returns the preferences node qualifier linked to the result of this editor.
+	 * @return
+	 */
+	public String getPreferencesNodeQualifier() {
+		return this.getResultData().getPreferencesNodeQualifier();
+	}
+
+	
+	/**
 	 * Returns the result object associated with the editor through its editor input.
 	 * @return
 	 */
-	public ITXMResult getResultData()	{
+	public TXMResult getResultData()	{
 		return this.getEditorInput().getResult();
 	}
 
 
 	/**
+	 * Gets the value of the specified key in parameters, local result node or default preferences nodes.
+	 * @param key
+	 * @return
+	 */
+	public int getIntParameterValue(String key)	{
+		return this.getEditorInput().getResult().getIntParameterValue(key);
+	}
+	
+
+	/**
+	 * Gets the value of the specified key in parameters, local result node or default preferences nodes.
+	 * @param key
+	 * @return
+	 */
+	public float getFloatParameterValue(String key)	{
+		return this.getEditorInput().getResult().getFloatParameterValue(key);
+	}
+
+	/**
+	 * Gets the value of the specified key in parameters, local result node or default preferences nodes.
+	 * @param key
+	 * @return
+	 */
+	public double getDoubleParameterValue(String key)	{
+		return this.getEditorInput().getResult().getDoubleParameterValue(key);
+	}
+
+	
+	/**
+	 * Gets the value of the specified key in parameters, local result node or default preferences nodes.
+	 * @param key
+	 * @return
+	 */
+	public boolean getBooleanParameterValue(String key)	{
+		return this.getEditorInput().getResult().getBooleanParameterValue(key);
+	}
+
+	/**
+	 * Gets the value of the specified key in parameters, local result node or default preferences nodes.
+	 * @param key
+	 * @return
+	 */
+	public long getLongParameterValue(String key)	{
+		return this.getEditorInput().getResult().getLongParameterValue(key);
+	}
+	
+	/**
+	 * Gets the value of the specified key in parameters, local result node or default preferences nodes.
+	 * @param key
+	 * @return
+	 */
+	public String getStringParameterValue(String key)	{
+		return this.getEditorInput().getResult().getStringParameterValue(key);
+	}
+
+	/**
 	 * Computes and creates or updates the result (from the linked editor input data).
 	 * @param update set if it's an update on an existing result or a creation of a new result 
 	 */
