diff --git a/src/fr/inrialpes/exmo/align/impl/BasicAlignment.java b/src/fr/inrialpes/exmo/align/impl/BasicAlignment.java
index 13e340d039e873cb11727ea33fc6b89d09cc31b5..9a0b1efa3c62398cce4733d12b2211842c906d86 100644
--- a/src/fr/inrialpes/exmo/align/impl/BasicAlignment.java
+++ b/src/fr/inrialpes/exmo/align/impl/BasicAlignment.java
@@ -27,6 +27,7 @@ import java.util.HashSet;
 import java.util.Enumeration;
 import java.util.Iterator;
 import java.util.Collections;
+import java.util.Collection;
 import java.util.List;
 import java.util.Set;
 import java.util.ArrayList;
@@ -77,14 +78,14 @@ public class BasicAlignment implements Alignment {
 
     protected long time = 0;
 
-    protected Parameters extensions = null;
+    protected Extensions extensions = null;
 
-    protected Parameters namespaces = null;
+    protected BasicParameters namespaces = null;
 
     public BasicAlignment() {
 	hash1 = new Hashtable<Object,Set<Cell>>();
 	hash2 = new Hashtable<Object,Set<Cell>>();
-	extensions = new BasicParameters();
+	extensions = new Extensions();
 	namespaces = new BasicParameters();
 	if ( this instanceof AlignmentProcess ) setExtension( Namespace.ALIGNMENT.uri, Annotations.METHOD, getClass().getName() );
 	onto1 = new BasicOntology<Object>();
@@ -173,16 +174,16 @@ public class BasicAlignment implements Alignment {
 
     public void setFile2(URI u) { onto2.setFile( u ); };
 
-    public Parameters getExtensions(){ return extensions; }
+    public Collection<String[]> getExtensions(){ return extensions.getValues(); }
+
+    public void setExtensions( Extensions ext ){ extensions = ext; }
 
     public void setExtension( String uri, String label, String value ) {
-	final String[] ext = { uri, label, value };
-	extensions.setParameter( uri+label, ext);
+	extensions.setExtension( uri, label, value );
     };
 
     public String getExtension( String uri, String label ) {
-	String [] ext = (String [])extensions.getParameter( uri+label );
-	return (ext==null)?(String)null:ext[2];
+	return extensions.getExtension( uri, label );
     };
 
     public Parameters getXNamespaces(){ return namespaces; }
@@ -212,9 +213,9 @@ public class BasicAlignment implements Alignment {
     }
 
     /** Cell methods **/
-    public Cell addAlignCell( String id, Object ob1, Object ob2, Relation relation, double measure, Parameters extensions ) throws AlignmentException {
+    public Cell addAlignCell( String id, Object ob1, Object ob2, Relation relation, double measure, Extensions extensions ) throws AlignmentException {
 	Cell cell = createCell( id, ob1, ob2, relation, measure);
-	cell.setExtensions( extensions );
+	((BasicCell)cell).setExtensions( extensions );
 	addCell( cell );
 	return cell;
     }
@@ -637,21 +638,20 @@ public class BasicAlignment implements Alignment {
 	result.setType( getType() );
 	result.setLevel( getLevel() );
 	// Must add an inverse to the method extension
-	for ( Object ext : ((BasicParameters)extensions).getValues() ){
-	    result.setExtension( ((String[])ext)[0], ((String[])ext)[1], ((String[])ext)[2] );
-	}
-	String oldid = result.getExtension( Namespace.ALIGNMENT.uri, Annotations.ID );
+	Extensions newext = (Extensions)extensions.clone();
+	String oldid = extensions.getExtension( Namespace.ALIGNMENT.uri, Annotations.ID );
 	if ( oldid != null && !oldid.equals("") ) {
-	    result.setExtension( Namespace.ALIGNMENT.uri, Annotations.DERIVEDFROM, oldid );
-	    result.getExtensions().unsetParameter( Namespace.ALIGNMENT.uri+Annotations.ID );
+	    newext.setExtension( Namespace.ALIGNMENT.uri, Annotations.DERIVEDFROM, oldid );
+	    newext.unsetExtension( Namespace.ALIGNMENT.uri, Annotations.ID );
 	}
 	String pretty = result.getExtension( Namespace.ALIGNMENT.uri, Annotations.PRETTY );
 	if ( pretty != null ){
-	    result.setExtension( Namespace.ALIGNMENT.uri, Annotations.PRETTY, pretty+"/inverted" );
+	    newext.setExtension( Namespace.ALIGNMENT.uri, Annotations.PRETTY, pretty+"/inverted" );
 	};
-	result.setExtension( Namespace.ALIGNMENT.uri, Annotations.PROVENANCE,
-			     result.getExtension( Namespace.ALIGNMENT.uri, Annotations.PROVENANCE )+"" );
-	result.setExtension( Namespace.ALIGNMENT.uri, Annotations.METHOD, "http://exmo.inrialpes.fr/align/impl/BasicAlignment#inverse" );
+	newext.setExtension( Namespace.ALIGNMENT.uri, Annotations.PROVENANCE,
+			     extensions.getExtension( Namespace.ALIGNMENT.uri, Annotations.PROVENANCE )+"" );
+	newext.setExtension( Namespace.ALIGNMENT.uri, Annotations.METHOD, "http://exmo.inrialpes.fr/align/impl/BasicAlignment#inverse" );
+	result.setExtensions( newext );
 	for ( Enumeration e = namespaces.getNames() ; e.hasMoreElements(); ){
 	    String label = (String)e.nextElement();
 	    result.setXNamespace( label, getXNamespace( label ) );
@@ -691,15 +691,14 @@ public class BasicAlignment implements Alignment {
 	align.setLevel( getLevel() );
 	align.setFile1( getFile1() );
 	align.setFile2( getFile2() );
-	for ( Object ext : ((BasicParameters)extensions).getValues() ){
-	    align.setExtension( ((String[])ext)[0], ((String[])ext)[1], ((String[])ext)[2] );
-	}
+	Extensions newext = (Extensions)extensions.clone();
 	String oldid = align.getExtension( Namespace.ALIGNMENT.uri, Annotations.ID );
 	if ( oldid != null && !oldid.equals("") ) {
-	    align.setExtension( Namespace.ALIGNMENT.uri, Annotations.DERIVEDFROM, oldid );
-	    align.getExtensions().unsetParameter( Namespace.ALIGNMENT.getUriPrefix()+Annotations.ID );
+	    newext.setExtension( Namespace.ALIGNMENT.uri, Annotations.DERIVEDFROM, oldid );
+	    newext.unsetExtension( Namespace.ALIGNMENT.getUriPrefix(), Annotations.ID );
 	}
-	align.setExtension( Namespace.ALIGNMENT.uri, Annotations.METHOD, this.getClass().getName()+"#clone" );
+	newext.setExtension( Namespace.ALIGNMENT.uri, Annotations.METHOD, this.getClass().getName()+"#clone" );
+	align.setExtensions( newext );
 	for ( Enumeration e = namespaces.getNames() ; e.hasMoreElements(); ){
 	    String label = (String)e.nextElement();
 	    align.setXNamespace( label, getXNamespace( label ) );
diff --git a/src/fr/inrialpes/exmo/align/impl/BasicCell.java b/src/fr/inrialpes/exmo/align/impl/BasicCell.java
index 32eba83cc9df0316b9fa53841981a6c7e4661ea9..c791004635555a886a8cd8aca5919ae47a48fab4 100644
--- a/src/fr/inrialpes/exmo/align/impl/BasicCell.java
+++ b/src/fr/inrialpes/exmo/align/impl/BasicCell.java
@@ -1,7 +1,7 @@
 /*
  * $Id$
  *
- * Copyright (C) INRIA, 2003-2005, 2007-2008
+ * Copyright (C) INRIA, 2003-2005, 2007-2009
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public License
@@ -22,7 +22,7 @@
 package fr.inrialpes.exmo.align.impl;
 
 import java.net.URI;
-import java.util.Enumeration;
+import java.util.Collection;
 
 import org.xml.sax.ContentHandler;
 
@@ -31,7 +31,6 @@ import org.semanticweb.owl.align.AlignmentException;
 import org.semanticweb.owl.align.AlignmentVisitor;
 import org.semanticweb.owl.align.Cell;
 import org.semanticweb.owl.align.Relation;
-import org.semanticweb.owl.align.Parameters;
 
 /**
  * Represents an ontology alignment correspondence.
@@ -51,7 +50,7 @@ public class BasicCell implements Cell, Comparable<Cell> {
     protected Object object2 = null;
     protected Relation relation = null;
     protected double strength = 0;
-    protected Parameters extensions = null;
+    protected Extensions extensions = null;
 
     /** Creation **/
     public BasicCell( String id, Object ob1, Object ob2, Relation rel, double m ) throws AlignmentException {
@@ -138,33 +137,33 @@ public class BasicCell implements Cell, Comparable<Cell> {
     public double getStrength(){ return strength; };
     public void setStrength( double m ){ strength = m; };
 
-    public Parameters getExtensions(){ return extensions; }
-    public void setExtensions( Parameters p ){
+    public Collection<String[]> getExtensions(){ 
+	if ( extensions != null ) return extensions.getValues();
+	else return null;
+    }
+    public void setExtensions( Extensions p ){
 	extensions = p;
     }
 
     public void setExtension( String uri, String label, String value ) {
-	if ( extensions == null )
-	    extensions = new BasicParameters();
-	String [] ext = { uri, label, value };
-	extensions.setParameter( uri+label, ext );
+	if ( extensions == null ) extensions = new Extensions();
+	extensions.setExtension( uri, label, value );
     };
 
     public String getExtension( String uri, String label ) {
 	if ( extensions != null ) {
-	    return ((String [])extensions.getParameter( uri+label ))[2];
+	    return extensions.getExtension( uri, label );
 	} else {
 	    return (String)null;
 	}
     };
 
     public Cell inverse() throws AlignmentException {
-	Cell result = (Cell)new BasicCell( (String)null, object2, object1, relation.inverse(), strength );
+	BasicCell result = new BasicCell( (String)null, object2, object1, relation.inverse(), strength );
 	if ( extensions != null ) {
-	    for ( Object ext : ((BasicParameters)extensions).getValues() ){
-		result.setExtension( ((String[])ext)[0], ((String[])ext)[1], ((String[])ext)[2] );
-	    }
-	    result.getExtensions().unsetParameter( Namespace.ALIGNMENT.getUriPrefix()+Annotations.ID );
+	    Extensions newext = (Extensions)extensions.clone();
+	    newext.unsetExtension( Namespace.ALIGNMENT.getUriPrefix(), Annotations.ID );
+	    result.setExtensions( newext );
 	}
 	// The sae should be done for the measure
 	return result;
diff --git a/src/fr/inrialpes/exmo/align/impl/BasicParameters.java b/src/fr/inrialpes/exmo/align/impl/BasicParameters.java
index a64e3b12dc7a91b741ed6b122443207998e3c8bc..e65a5f80e8e1855753a3690d6376024287eb1a72 100644
--- a/src/fr/inrialpes/exmo/align/impl/BasicParameters.java
+++ b/src/fr/inrialpes/exmo/align/impl/BasicParameters.java
@@ -1,7 +1,7 @@
 /*
  * $Id$
  *
- * Copyright (C) INRIA Rh�ne-Alpes, 2004-2005, 2008
+ * Copyright (C) INRIA, 2004-2005, 2008-2009
  * Copyright (C) University of Montr�al, 2004
  *
  * This program is free software; you can redistribute it and/or
@@ -26,6 +26,7 @@ package fr.inrialpes.exmo.align.impl;
 import java.util.Hashtable;
 import java.util.Enumeration;
 import java.util.Collection;
+import java.util.Properties;
 import java.io.PrintStream;
 import java.io.File;
 
@@ -52,41 +53,51 @@ import org.semanticweb.owl.align.Parameters;
   * @version $Id$ 
  */
 
-public class BasicParameters implements Parameters {
+public class BasicParameters extends Properties implements Parameters, Cloneable {
  
-  /** The list of unlinked out  XML_Port */
-  Hashtable<String,Object> parameters = null;
+    /** The list of unlinked out  XML_Port */
+    //Hashtable<String,Object> parameters = null;
     
-  public BasicParameters() {
-      parameters = new Hashtable<String,Object>();
-  }
+    public BasicParameters() {}
   
-  public void setParameter(String name, Object value){
-    parameters.put(name,value);
-  }
-
-  public void unsetParameter(String name){
-    parameters.remove(name);
-  }
+    public BasicParameters( Properties prop ) {
+	for ( Enumeration<String> e = (Enumeration<String>)prop.propertyNames(); e.hasMoreElements(); ) {
+	    String k = e.nextElement();
+	    setProperty( k, prop.getProperty(k) );
+	}
+    }
+  
+    public void setParameter( String name, String value ){
+	//parameters.put(name,value);
+	setProperty( name, value );
+    }
 
-  public Object getParameter(String name){
-    return parameters.get(name);
-  }
+    public void unsetParameter( String name ){
+	//parameters.remove(name);
+	setProperty( name, (String)null );
+    }
 
-  public Enumeration<String> getNames(){
-    return parameters.keys();
-  }
+    // JE2009: returns a string...
+    public String getParameter( String name ){
+	//return parameters.get(name);
+	return getProperty( name );
+    }
+    
+    public Enumeration<String> getNames(){
+	//return parameters.keys();
+	return (Enumeration<String>)propertyNames();
+    }
 
-  public Collection getValues(){
-    return parameters.values();
-  }
+    public Collection getValues(){
+	return values();
+    }
 
     public void write(){
 	System.out.println("<?xml version='1.0' ?>");
 	System.out.println("<Parameters>");
-	for (Enumeration e = parameters.keys(); e.hasMoreElements();) {
-	    String k = (String)e.nextElement();
-	    System.out.println("  <param name='"+k+"'>"+parameters.get(k)+"</param>");
+	for ( Enumeration<String> e = (Enumeration<String>)propertyNames(); e.hasMoreElements(); ) {
+	    String k = e.nextElement();
+	    System.out.println("  <param name='"+k+"'>"+getProperty(k)+"</param>");
 	}
 	System.out.println("</Parameters>");
     }
@@ -96,17 +107,17 @@ public class BasicParameters implements Parameters {
      */
     public void displayParameters( PrintStream stream ){
 	stream.println("Parameters:");
-	for (Enumeration e = parameters.keys(); e.hasMoreElements();) {
-	    String k = (String)e.nextElement();
-	    stream.println("  "+k+" = "+parameters.get(k));
+	for ( Enumeration<String> e = (Enumeration<String>)propertyNames(); e.hasMoreElements();) {
+	    String k = e.nextElement();
+	    stream.println("  "+k+" = "+getProperty(k));
 	}
     }
 
-    public static Parameters read(String filename){
+    public static Parameters read( String filename ){
 	return read(new BasicParameters(), filename);
     }
 
-    public static Parameters read(Parameters p, String filename){
+    public static Parameters read( Parameters p, String filename ){
 	try {
 	    // open the stream
 	    DocumentBuilderFactory docBuilderFactory =
@@ -137,4 +148,8 @@ public class BasicParameters implements Parameters {
 
 	return p;
     }
+
+    public Object clone() {
+	return super.clone();
+    }    
 }
diff --git a/src/fr/inrialpes/exmo/align/impl/DistanceAlignment.java b/src/fr/inrialpes/exmo/align/impl/DistanceAlignment.java
index 7e01e26b7a771ba459bf407a80b4c062c30dbdbd..aeca8c62442b9ba5f0e72591ab909d72bc9e9730 100644
--- a/src/fr/inrialpes/exmo/align/impl/DistanceAlignment.java
+++ b/src/fr/inrialpes/exmo/align/impl/DistanceAlignment.java
@@ -26,12 +26,12 @@ import java.util.Iterator;
 import java.util.TreeSet;
 import java.util.SortedSet;
 import java.util.Comparator;
+import java.util.Properties;
 
 import org.semanticweb.owl.align.Alignment;
 import org.semanticweb.owl.align.AlignmentProcess;
 import org.semanticweb.owl.align.AlignmentException;
 import org.semanticweb.owl.align.Cell;
-import org.semanticweb.owl.align.Parameters;
 
 import fr.inrialpes.exmo.align.onto.LoadedOntology;
 
@@ -75,10 +75,10 @@ public class DistanceAlignment extends ObjectAlignment implements AlignmentProce
      * - compute distance or similarity
      * - extract alignment
      **/
-    public void align( Alignment alignment, Parameters params ) throws AlignmentException {
+    public void align( Alignment alignment, Properties params ) throws AlignmentException {
 	loadInit( alignment );
-	if (  params.getParameter("type") != null ) 
-	    setType((String)params.getParameter("type"));
+	if (  params.getProperty("type") != null ) 
+	    setType( params.getProperty("type") );
 	// This is a 1:1 alignment in fact
 	else setType("11");
 	if ( sim == null )
@@ -86,36 +86,30 @@ public class DistanceAlignment extends ObjectAlignment implements AlignmentProce
 
 	sim.initialize( ontology1(), ontology2(), init );
 	sim.compute( params );
-	if ( params.getParameter("printMatrix") != null ) printDistanceMatrix(params);
+	if ( params.getProperty("printMatrix") != null ) printDistanceMatrix(params);
 	extract( getType(), params );
     }
 
-    public static Parameters getParameters() {
-	Parameters p = new BasicParameters();
-	p.setParameter("type","11");
-	return p;
-    }
-
     /**
      * Prints the distance matrix
      */
-    public void printDistanceMatrix( Parameters params ){
+    public void printDistanceMatrix( Properties params ){
 	System.out.println("\\documentclass{article}\n");
 	System.out.println("\\usepackage{graphics}\n");
 	System.out.println("\\begin{document}\n");
 	System.out.println("\\begin{table}");
 	sim.printClassSimilarityMatrix("tex");
-	System.out.println("\\caption{Class distance with measure "+(String)params.getParameter("stringFunction")+"}");
+	System.out.println("\\caption{Class distance with measure "+params.getProperty("stringFunction")+"}");
 	System.out.println("\\end{table}");
 	System.out.println();
 	System.out.println("\\begin{table}");
 	sim.printPropertySimilarityMatrix("tex");
-	System.out.println("\\caption{Property distance with measure "+(String)params.getParameter("stringFunction")+"}");
+	System.out.println("\\caption{Property distance with measure "+params.getProperty("stringFunction")+"}");
 	System.out.println("\\end{table}");
 	System.out.println();
 	System.out.println("\\begin{table}");
 	sim.printIndividualSimilarityMatrix("tex");
-	System.out.println("\\caption{Individual distance with measure "+(String)params.getParameter("stringFunction")+"}");
+	System.out.println("\\caption{Individual distance with measure "+params.getProperty("stringFunction")+"}");
 	System.out.println("\\end{table}");
 	System.out.println("\n\\end{document}");
     }
@@ -141,10 +135,10 @@ public class DistanceAlignment extends ObjectAlignment implements AlignmentProce
      * ?* (covering 1*, 1+ and ?+)
      * *? (covering +?, *1 and +1)
      */
-    public Alignment extract(String type, Parameters params) throws AlignmentException {
+    public Alignment extract(String type, Properties params) throws AlignmentException {
 	double threshold = 0.;
-	if (  params.getParameter("threshold") != null )
-	    threshold = ((Double) params.getParameter("threshold")).doubleValue();
+	if (  params.getProperty("threshold") != null )
+	    threshold = Double.parseDouble( params.getProperty("threshold") );
 
 	//System.err.println("The type is "+type+" with length = "+type.length());
 	if ( type.equals("?*") || type.equals("1*") || type.equals("?+") || type.equals("1+") ) return extractqs( threshold, params );
@@ -162,7 +156,7 @@ public class DistanceAlignment extends ObjectAlignment implements AlignmentProce
      * Extract the alignment of a ?* type
      * Complexity: O(n^2)
      */
-    public Alignment extractqs( double threshold, Parameters params) {
+    public Alignment extractqs( double threshold, Properties params) {
       double max = 0.;
       boolean found = false;
       double val = 0;
@@ -199,7 +193,7 @@ public class DistanceAlignment extends ObjectAlignment implements AlignmentProce
 	      if ( found ) addAlignCell(class1, class2, "=", max);
 	  }
 	  // Extract for individuals
-	  if (  params.getParameter("noinst") == null ){
+	  if (  params.getProperty("noinst") == null ){
 	      for ( Object ind1 : ontology1().getIndividuals() ) {
 		  if ( ontology1().getEntityURI( ind1 ) != null ) {
 		      found = false; max = threshold; val = 0;
@@ -225,7 +219,7 @@ public class DistanceAlignment extends ObjectAlignment implements AlignmentProce
      * 
      * exact algorithm using the Hungarian method
      */
-    public Alignment extractqq( double threshold, Parameters params) {
+    public Alignment extractqq( double threshold, Properties params) {
 	try {
 	    // A STRAIGHTFORWARD IMPLEMENTATION
 	    // (redoing the matrix instead of getting it)
@@ -300,7 +294,7 @@ public class DistanceAlignment extends ObjectAlignment implements AlignmentProce
 	    }
 	} catch (AlignmentException alex) { alex.printStackTrace(); }
 	// For individuals
-	if (  params.getParameter("noinst") == null ){
+	if (  params.getProperty("noinst") == null ){
 	try{
 	    // Create individual lists
 	    Object[] ind1 = new Object[ontology1().nbIndividuals()];
@@ -358,7 +352,7 @@ public class DistanceAlignment extends ObjectAlignment implements AlignmentProce
      * overall similarity 1.1, while the optimum is the second solution
      * with overall of 1.8.
      */
-    public Alignment extractqqgreedy( double threshold, Parameters params) {
+    public Alignment extractqqgreedy( double threshold, Properties params) {
 	double val = 0;
 	//TreeSet could be replaced by something else
 	//The comparator must always tell that things are different!
@@ -420,7 +414,7 @@ public class DistanceAlignment extends ObjectAlignment implements AlignmentProce
 	      }
 	  }
 	  // for individuals
-	  if (  params.getParameter("noinst") == null ){
+	  if (  params.getProperty("noinst") == null ){
 	      for( Object ent1: ontology1().getIndividuals() ) {
 		  if ( ontology1().getEntityURI( ent1 ) != null ) {
 
diff --git a/src/fr/inrialpes/exmo/align/impl/Extensions.java b/src/fr/inrialpes/exmo/align/impl/Extensions.java
new file mode 100644
index 0000000000000000000000000000000000000000..e0e9a3ddbe7c5cd8104425c7b7b7e906b645cbcf
--- /dev/null
+++ b/src/fr/inrialpes/exmo/align/impl/Extensions.java
@@ -0,0 +1,79 @@
+/*
+ * $Id$
+ *
+ * Copyright (C) INRIA, 2009
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ * USA.
+ */
+
+package fr.inrialpes.exmo.align.impl; 
+
+// import java classes
+import java.util.Hashtable;
+import java.util.Collection;
+import java.util.Set;
+
+/**
+ * This contains the metadata extensions
+ * They are indexed by namespace + local name.
+ * Unfortunatelly there is no way to deal with this in a simple hastable with a pair as key.
+ * So it is implemented the old way with concatenation... unfortunately
+ */
+
+public class Extensions {
+
+    private Hashtable<String,String[]> table;
+ 
+    public Extensions() {
+	table = new Hashtable<String,String[]>();
+    }
+  
+    public Extensions( Hashtable<String,String[]> ht ) {
+	table = ht;
+    }
+  
+    public void setExtension( String ns, String label, String value ){
+	final String[] ext = { ns, label, value };
+	table.put( ns+label, ext );
+    }
+
+    public void unsetExtension( String ns, String label ){
+	table.put( ns+label, (String[])null );
+    }
+
+    public String getExtension( String ns, String label ){
+	String[] ext = table.get( ns+label );
+	if ( ext != null ) return ext[2];
+	else return (String)null;
+    }
+    
+    public String[] getExtensionCell( String ns, String label ){
+	return table.get( ns+label );
+    }
+    
+    // JE: why can't I type this Set<String>
+    public Set keySet() {
+	return table.keySet();
+    }
+
+    public Collection<String[]> getValues() {
+	return table.values();
+    }
+
+    public Object clone() {
+	return new Extensions( (Hashtable<String,String[]>)table.clone() );
+    }    
+}
diff --git a/src/fr/inrialpes/exmo/align/impl/MatrixMeasure.java b/src/fr/inrialpes/exmo/align/impl/MatrixMeasure.java
index cd560543a840b44d5f45a5a71ac65f4c67b86bc5..f22bfee2f9c7d3ec083247676dbe78f9c14c8ccb 100644
--- a/src/fr/inrialpes/exmo/align/impl/MatrixMeasure.java
+++ b/src/fr/inrialpes/exmo/align/impl/MatrixMeasure.java
@@ -22,13 +22,13 @@ package fr.inrialpes.exmo.align.impl;
 
 import java.util.Iterator;
 import java.util.HashMap;
+import java.util.Properties;
 import java.util.Set;
 import java.text.NumberFormat;
 
 import org.semanticweb.owl.align.Alignment;
 import org.semanticweb.owl.align.AlignmentProcess;
 import org.semanticweb.owl.align.AlignmentException;
-import org.semanticweb.owl.align.Parameters;
 import org.semanticweb.owl.align.Cell;
 
 import fr.inrialpes.exmo.align.onto.LoadedOntology;
@@ -162,7 +162,7 @@ public abstract class MatrixMeasure implements Similarity {
 	} catch (AlignmentException e) { e.printStackTrace(); };
     }
 
-    public void compute( Parameters params ){
+    public void compute( Properties params ){
 	try {
 	    // Compute distances on classes
 	    for ( Object cl2: onto2.getClasses() ){
diff --git a/src/fr/inrialpes/exmo/align/impl/ObjectAlignment.java b/src/fr/inrialpes/exmo/align/impl/ObjectAlignment.java
index fd81b2752caafd9b7dd74905d4133edcd1cd997c..56a11fb5bc428e3e89ac5ef9b29daf2580e413d0 100644
--- a/src/fr/inrialpes/exmo/align/impl/ObjectAlignment.java
+++ b/src/fr/inrialpes/exmo/align/impl/ObjectAlignment.java
@@ -1,7 +1,7 @@
 /*
  * $Id$
  *
- * Copyright (C) INRIA, 2003-2008
+ * Copyright (C) INRIA, 2003-2009
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU Lesser General Public License as published by
@@ -25,6 +25,7 @@ import java.util.HashSet;
 import java.util.Iterator;
 import java.util.Enumeration;
 import java.util.Set;
+import java.util.Collection;
 import java.net.URI;
 
 import org.apache.log4j.Logger;
@@ -115,8 +116,8 @@ public class ObjectAlignment extends BasicAlignment {
 	align.setLevel( getLevel() );
 	align.setFile1( getFile1() );
 	align.setFile2( getFile2() );
-	for ( Object ext : ((BasicParameters)extensions).getValues() ){
-	    align.setExtension( ((String[])ext)[0], ((String[])ext)[1], ((String[])ext)[2] );
+	for ( String[] ext : extensions.getValues() ) {
+	    align.setExtension( ext[0], ext[1], ext[2] );
 	}
 	for (Enumeration e = getElements(); e.hasMoreElements();) {
 	    Cell c = (Cell)e.nextElement();
@@ -134,19 +135,23 @@ public class ObjectAlignment extends BasicAlignment {
 	alignment.init( al.getFile1(), al.getFile2() );
 	alignment.setType( al.getType() );
 	alignment.setLevel( al.getLevel() );
-	for ( Object ext : ((BasicParameters)al.getExtensions()).getValues() ){
-	    alignment.setExtension( ((String[])ext)[0], ((String[])ext)[1], ((String[])ext)[2] );
+	for ( String[] ext : al.getExtensions() ) {
+	    alignment.setExtension( ext[0], ext[1], ext[2] );
 	}
 	LoadedOntology<Object> o1 = (LoadedOntology<Object>)alignment.getOntologyObject1(); // [W:unchecked]
 	LoadedOntology<Object> o2 = (LoadedOntology<Object>)alignment.getOntologyObject2(); // [W:unchecked]
-	for (Enumeration e = al.getElements(); e.hasMoreElements();) {
-	    Cell c = (Cell)e.nextElement();
-	    alignment.addAlignCell( c.getId(), 
-				    o1.getEntity( c.getObject1AsURI(alignment) ),
-				    o2.getEntity( c.getObject2AsURI(alignment) ),
-				    c.getRelation(), 
-				    c.getStrength(),
-				    c.getExtensions() );
+	for ( Cell c : al ) {
+	    Cell newc = alignment.addAlignCell( c.getId(), 
+						o1.getEntity( c.getObject1AsURI(alignment) ),
+						o2.getEntity( c.getObject2AsURI(alignment) ),
+						c.getRelation(), 
+						c.getStrength() );
+	    Collection<String[]> exts = c.getExtensions();
+	    if ( exts != null ) {
+		for ( String[] ext : exts ){
+		    newc.setExtension( ext[0], ext[1], ext[2] );
+		}
+	    }
 	};
 	return alignment;
     }
diff --git a/src/fr/inrialpes/exmo/align/impl/ObjectCell.java b/src/fr/inrialpes/exmo/align/impl/ObjectCell.java
index c334748edde9331a192e297db68402104a447f0e..21ecd26162cfc54e99360cc34f3c3c197cb1cbbc 100644
--- a/src/fr/inrialpes/exmo/align/impl/ObjectCell.java
+++ b/src/fr/inrialpes/exmo/align/impl/ObjectCell.java
@@ -1,7 +1,7 @@
 /*
  * $Id$
  *
- * Copyright (C) INRIA Rh�ne-Alpes, 2003-2005, 2007-2008
+ * Copyright (C) INRIA, 2003-2005, 2007-2009
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public License
@@ -105,10 +105,10 @@ public class ObjectCell extends BasicCell {
     public Cell inverse() throws AlignmentException {
 	Cell result = (Cell)new ObjectCell( (String)null, object2, object1, relation.inverse(), strength );
 	if ( extensions != null ) {
-	    for ( Object ext : ((BasicParameters)extensions).getValues() ){
-		result.setExtension( ((String[])ext)[0], ((String[])ext)[1], ((String[])ext)[2] );
+	    for ( String[] ext : extensions.getValues() ){
+		result.setExtension( ext[0], ext[1], ext[2] );
 	    }
-	    result.getExtensions().unsetParameter( Namespace.ALIGNMENT.getUriPrefix()+Annotations.ID );
+	    result.setExtension( Namespace.ALIGNMENT.getUriPrefix(), Annotations.ID, (String)null );
 	}
 	// The sae should be done for the measure
 	return result;
diff --git a/src/fr/inrialpes/exmo/align/impl/Similarity.java b/src/fr/inrialpes/exmo/align/impl/Similarity.java
index d7538f640ef10a4c3ec128cc10c4a3234cb9c754..17e6cca8511e31c19915d09dc2dbed1f354ee31d 100644
--- a/src/fr/inrialpes/exmo/align/impl/Similarity.java
+++ b/src/fr/inrialpes/exmo/align/impl/Similarity.java
@@ -1,7 +1,7 @@
 /*
  * $Id$
  *
- * Copyright (C) INRIA, 2004, 2006-2008
+ * Copyright (C) INRIA, 2004, 2006-2009
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU Lesser General Public License as published by
@@ -20,9 +20,10 @@
 
 package fr.inrialpes.exmo.align.impl;
 
-import org.semanticweb.owl.align.Parameters;
 import org.semanticweb.owl.align.Alignment;
 
+import java.util.Properties;
+
 import fr.inrialpes.exmo.align.onto.LoadedOntology;
 
 /**
@@ -42,7 +43,7 @@ public interface Similarity
     // JE: OntoRewr: This should not be in init
     public void initialize( LoadedOntology<Object> onto1, LoadedOntology<Object> onto2 );
     public void initialize( LoadedOntology<Object> onto1, LoadedOntology<Object> onto2, Alignment align );
-    public void compute( Parameters p );
+    public void compute( Properties p );
     public double getClassSimilarity( Object c1, Object c2 );
     public double getPropertySimilarity( Object p1, Object p2);
     public double getIndividualSimilarity( Object i1, Object i2 );
diff --git a/src/fr/inrialpes/exmo/align/impl/eval/ExtPREvaluator.java b/src/fr/inrialpes/exmo/align/impl/eval/ExtPREvaluator.java
index 15a81331f293a3450a1ed7c61b23dd48ff02f274..03d1a3c2fc8082d2c73467ad530678be21fbc69f 100644
--- a/src/fr/inrialpes/exmo/align/impl/eval/ExtPREvaluator.java
+++ b/src/fr/inrialpes/exmo/align/impl/eval/ExtPREvaluator.java
@@ -23,7 +23,6 @@ package fr.inrialpes.exmo.align.impl.eval;
 import org.semanticweb.owl.align.Alignment;
 import org.semanticweb.owl.align.AlignmentException;
 import org.semanticweb.owl.align.Cell;
-import org.semanticweb.owl.align.Parameters;
 
 import fr.inrialpes.exmo.align.impl.BasicEvaluator;
 import fr.inrialpes.exmo.align.impl.ObjectAlignment;
@@ -32,6 +31,7 @@ import fr.inrialpes.exmo.align.onto.LoadedOntology;
 import fr.inrialpes.exmo.align.onto.OntologyFactory;
 
 import java.util.Enumeration;
+import java.util.Properties;
 import java.util.Iterator;
 import java.util.HashSet;
 import java.util.Set;
@@ -97,10 +97,10 @@ public class ExtPREvaluator extends BasicEvaluator {
      * because the relations are not taken into account
      * (they are supposed to be always =) 
      */
-    public double eval(Parameters params) throws AlignmentException {
+    public double eval( Properties params ) throws AlignmentException {
 	return eval( params, (Object)null );
     }
-    public double eval(Parameters params, Object cache) throws AlignmentException {
+    public double eval( Properties params, Object cache ) throws AlignmentException {
 	// Better to transform them instead...
 	if ( !( align1 instanceof ObjectAlignment ) || !( align2 instanceof ObjectAlignment ) )
 	    throw new AlignmentException( "ExtPREvaluation: requires ObjectAlignments" );
diff --git a/src/fr/inrialpes/exmo/align/impl/eval/PRecEvaluator.java b/src/fr/inrialpes/exmo/align/impl/eval/PRecEvaluator.java
index 48817f2449084a26e56e0b81e881071396a7a041..4b239f90bd9349659ee282ab1e09245708622291 100644
--- a/src/fr/inrialpes/exmo/align/impl/eval/PRecEvaluator.java
+++ b/src/fr/inrialpes/exmo/align/impl/eval/PRecEvaluator.java
@@ -23,7 +23,6 @@ package fr.inrialpes.exmo.align.impl.eval;
 import org.semanticweb.owl.align.Alignment;
 import org.semanticweb.owl.align.AlignmentException;
 import org.semanticweb.owl.align.Cell;
-import org.semanticweb.owl.align.Parameters;
 import org.semanticweb.owl.align.Evaluator;
 
 import fr.inrialpes.exmo.align.impl.BasicEvaluator;
@@ -32,6 +31,7 @@ import fr.inrialpes.exmo.align.impl.Annotations;
 import fr.inrialpes.exmo.align.impl.Namespace;
 
 import java.util.Enumeration;
+import java.util.Properties;
 import java.util.Iterator;
 import java.util.Set;
 import java.io.PrintWriter;
@@ -102,10 +102,10 @@ public class PRecEvaluator extends BasicEvaluator implements Evaluator {
      *
      * In the implementation |B|=nbfound, |A|=nbexpected and |A inter B|=nbcorrect.
      */
-    public double eval(Parameters params) throws AlignmentException {
+    public double eval( Properties params ) throws AlignmentException {
 	return eval( params, (Object)null );
     }
-    public double eval(Parameters params, Object cache) throws AlignmentException {
+    public double eval( Properties params, Object cache ) throws AlignmentException {
 	init();
 	nbfound = align2.nbCells();
 
diff --git a/src/fr/inrialpes/exmo/align/impl/eval/SymMeanEvaluator.java b/src/fr/inrialpes/exmo/align/impl/eval/SymMeanEvaluator.java
index 1ab842643190d4deb543907e121ed68fa32faa79..e2335d6c19f9b23af411dbfd0701b593d5eb493e 100644
--- a/src/fr/inrialpes/exmo/align/impl/eval/SymMeanEvaluator.java
+++ b/src/fr/inrialpes/exmo/align/impl/eval/SymMeanEvaluator.java
@@ -23,7 +23,6 @@ package fr.inrialpes.exmo.align.impl.eval;
 import org.semanticweb.owl.align.Alignment;
 import org.semanticweb.owl.align.AlignmentException;
 import org.semanticweb.owl.align.Cell;
-import org.semanticweb.owl.align.Parameters;
 
 import fr.inrialpes.exmo.align.impl.BasicEvaluator;
 import fr.inrialpes.exmo.align.impl.ObjectAlignment;
@@ -31,6 +30,7 @@ import fr.inrialpes.exmo.align.onto.LoadedOntology;
 
 import java.lang.Math;
 import java.util.Enumeration;
+import java.util.Properties;
 import java.util.Iterator;
 import java.util.Set;
 import java.io.PrintWriter;
@@ -63,10 +63,10 @@ public class SymMeanEvaluator extends BasicEvaluator {
 	    throw new AlignmentException( "Alignments should be ObjectAlignments, try to " );
     }
 
-    public double eval(Parameters params) throws AlignmentException {
+    public double eval( Properties params ) throws AlignmentException {
 	return eval( params, (Object)null );
     }
-    public double eval(Parameters params, Object cache) throws AlignmentException {
+    public double eval( Properties params, Object cache ) throws AlignmentException {
 	int nbClassCell = 0;
 	int nbPropCell = 0;
 	int nbIndCell = 0;
diff --git a/src/fr/inrialpes/exmo/align/impl/method/ClassStructAlignment.java b/src/fr/inrialpes/exmo/align/impl/method/ClassStructAlignment.java
index 7ba4dc5e1d1e206088e7821236862f148af38d79..59fe7bc8e010f1d53b204c49f654eacf1545ce47 100644
--- a/src/fr/inrialpes/exmo/align/impl/method/ClassStructAlignment.java
+++ b/src/fr/inrialpes/exmo/align/impl/method/ClassStructAlignment.java
@@ -22,12 +22,12 @@ package fr.inrialpes.exmo.align.impl.method;
 
 import java.util.Vector;
 import java.util.Set;
+import java.util.Properties;
 
 import org.semanticweb.owl.align.Alignment;
 import org.semanticweb.owl.align.AlignmentProcess;
 import org.semanticweb.owl.align.Cell;
 import org.semanticweb.owl.align.AlignmentException;
-import org.semanticweb.owl.align.Parameters;
 
 import fr.inrialpes.exmo.align.impl.DistanceAlignment;
 import fr.inrialpes.exmo.align.onto.HeavyLoadedOntology;
@@ -72,7 +72,7 @@ public class ClassStructAlignment extends DistanceAlignment implements Alignment
     }
 
     /** Processing **/
-    public void align( Alignment alignment, Parameters params ) throws AlignmentException {
+    public void align( Alignment alignment, Properties params ) throws AlignmentException {
 	loadInit( alignment );
 	honto1 = (HeavyLoadedOntology<Object>)getOntologyObject1();
 	honto2 = (HeavyLoadedOntology<Object>)getOntologyObject2();
diff --git a/src/fr/inrialpes/exmo/align/impl/method/NameAndPropertyAlignment.java b/src/fr/inrialpes/exmo/align/impl/method/NameAndPropertyAlignment.java
index 91df0124f8c56de56dca728a7bde60b8704e076c..4acd3388011fbfb537e479521bc8f6251a1a3c0e 100644
--- a/src/fr/inrialpes/exmo/align/impl/method/NameAndPropertyAlignment.java
+++ b/src/fr/inrialpes/exmo/align/impl/method/NameAndPropertyAlignment.java
@@ -24,11 +24,11 @@ package fr.inrialpes.exmo.align.impl.method;
 import java.lang.Integer;
 import java.util.Vector;
 import java.util.Set;
+import java.util.Properties;
 
 import org.semanticweb.owl.align.Alignment;
 import org.semanticweb.owl.align.AlignmentProcess;
 import org.semanticweb.owl.align.AlignmentException;
-import org.semanticweb.owl.align.Parameters;
 
 import fr.inrialpes.exmo.align.impl.DistanceAlignment;
 import fr.inrialpes.exmo.align.onto.HeavyLoadedOntology;
@@ -75,7 +75,7 @@ public class NameAndPropertyAlignment extends DistanceAlignment implements Align
     }
 
     /** Processing **/
-    public void align( Alignment alignment, Parameters params ) throws AlignmentException {
+    public void align( Alignment alignment, Properties params ) throws AlignmentException {
 	loadInit( alignment );
 	honto1 = (HeavyLoadedOntology<Object>)getOntologyObject1();
 	honto2 = (HeavyLoadedOntology<Object>)getOntologyObject2();
@@ -95,8 +95,8 @@ public class NameAndPropertyAlignment extends DistanceAlignment implements Align
 	double pia1 = 1.; // relation weight for name
 	double epsillon = 0.05; // stoping condition 
        	
-	if ( params.getParameter("debug") != null )
-	    debug = ((Integer)params.getParameter("debug")).intValue();
+	if ( params.getProperty("debug") != null )
+	    debug = Integer.parseInt( params.getProperty("debug") );
 
 	    // Create property lists and matrix
 	    for ( Object prop : honto1.getObjectProperties() ){
diff --git a/src/fr/inrialpes/exmo/align/impl/method/SMOANameAlignment.java b/src/fr/inrialpes/exmo/align/impl/method/SMOANameAlignment.java
index 0ce23cb601f77881ce8f8be1ff25aaa4f9947e8f..c55fb7f68a32862cab7ca7bbc4af641cdf7add3c 100644
--- a/src/fr/inrialpes/exmo/align/impl/method/SMOANameAlignment.java
+++ b/src/fr/inrialpes/exmo/align/impl/method/SMOANameAlignment.java
@@ -1,7 +1,7 @@
 /*
  * $Id$
  *
- * Copyright (C) INRIA Rh�ne-Alpes, 2003-2008
+ * Copyright (C) INRIA, 2003-2008
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU Lesser General Public License as published by
diff --git a/src/fr/inrialpes/exmo/align/impl/method/StringDistAlignment.java b/src/fr/inrialpes/exmo/align/impl/method/StringDistAlignment.java
index 32691469b5e3d5a8ffd24f49fc3857937b848735..c13d7078be0669df15c09609f140def068d79ca2 100644
--- a/src/fr/inrialpes/exmo/align/impl/method/StringDistAlignment.java
+++ b/src/fr/inrialpes/exmo/align/impl/method/StringDistAlignment.java
@@ -21,16 +21,15 @@
 package fr.inrialpes.exmo.align.impl.method; 
 
 import java.net.URI;
+import java.util.Properties;
 import java.lang.reflect.Method;
 
 import org.semanticweb.owl.align.Alignment;
 import org.semanticweb.owl.align.AlignmentProcess;
 import org.semanticweb.owl.align.AlignmentException;
-import org.semanticweb.owl.align.Parameters;
 
 import fr.inrialpes.exmo.align.impl.DistanceAlignment;
 import fr.inrialpes.exmo.align.impl.MatrixMeasure;
-import fr.inrialpes.exmo.align.impl.BasicParameters;
 
 /**
  * Represents an OWL ontology alignment. An ontology comprises a number of
@@ -77,11 +76,11 @@ public class StringDistAlignment extends DistanceAlignment implements AlignmentP
     }
 
     /* Processing */
-    public void align( Alignment alignment, Parameters params ) throws AlignmentException {
+    public void align( Alignment alignment, Properties params ) throws AlignmentException {
 	loadInit( alignment );
 
 	// Get function from params
-	String f = (String)params.getParameter("stringFunction");
+	String f = (String)params.getProperty("stringFunction");
 	try {
 	    if ( f != null ) methodName = f.trim();
 	    Class sClass = Class.forName("java.lang.String");
@@ -90,7 +89,7 @@ public class StringDistAlignment extends DistanceAlignment implements AlignmentP
 	} catch (ClassNotFoundException e) {
 	    e.printStackTrace(); // never happens
 	} catch (NoSuchMethodException e) {
-	    throw new AlignmentException( "Unknown method for StringDistAlignment : "+(String)params.getParameter("stringFunction"), e );
+	    throw new AlignmentException( "Unknown method for StringDistAlignment : "+(String)params.getProperty("stringFunction"), e );
 	}
 
 	// Initialize matrix
@@ -100,18 +99,10 @@ public class StringDistAlignment extends DistanceAlignment implements AlignmentP
 	getSimilarity().compute( params );
 
 	// Print matrix if asked
-	if ( params.getParameter("printMatrix") != null ) printDistanceMatrix( params );
+	if ( params.getProperty("printMatrix") != null ) printDistanceMatrix( params );
 
 	// Extract alignment
 	extract( type, params );
     }
 
-    public static Parameters getParameters() {
-	Parameters p = new BasicParameters();
-	p.setParameter("type","11");
-	p.setParameter("printMatrix",null);
-	p.setParameter("stringFunction","equalDistance");
-	return p;
-    }
-
 }
diff --git a/src/fr/inrialpes/exmo/align/impl/method/StrucSubsDistAlignment.java b/src/fr/inrialpes/exmo/align/impl/method/StrucSubsDistAlignment.java
index 3ab0c171364e7d9de67609be253ebe0dd194cc16..d22f0ca17c6ba7c78ef2792557e8088c4fc09ad8 100644
--- a/src/fr/inrialpes/exmo/align/impl/method/StrucSubsDistAlignment.java
+++ b/src/fr/inrialpes/exmo/align/impl/method/StrucSubsDistAlignment.java
@@ -23,13 +23,13 @@ package fr.inrialpes.exmo.align.impl.method;
 
 import java.util.Vector;
 import java.util.Set;
+import java.util.Properties;
 import java.lang.Integer;
 
 import org.semanticweb.owl.align.Alignment;
 import org.semanticweb.owl.align.AlignmentProcess;
 import org.semanticweb.owl.align.Cell;
 import org.semanticweb.owl.align.AlignmentException;
-import org.semanticweb.owl.align.Parameters;
 
 import fr.inrialpes.exmo.align.impl.DistanceAlignment;
 import fr.inrialpes.exmo.align.onto.HeavyLoadedOntology;
@@ -76,7 +76,7 @@ public class StrucSubsDistAlignment extends DistanceAlignment implements Alignme
     }
 
     /** Processing **/
-    public void align( Alignment alignment, Parameters params ) throws AlignmentException {
+    public void align( Alignment alignment, Properties params ) throws AlignmentException {
 	loadInit( alignment );
 	honto1 = (HeavyLoadedOntology<Object>)getOntologyObject1();
 	honto2 = (HeavyLoadedOntology<Object>)getOntologyObject2();
@@ -97,8 +97,8 @@ public class StrucSubsDistAlignment extends DistanceAlignment implements Alignme
 	double pia1 = 1.; // relation weight for name
 	double epsillon = 0.05; // stoping condition
 
-	if ( params.getParameter("debug") != null )
-	    debug = ((Integer)params.getParameter("debug")).intValue();
+	if ( params.getProperty("debug") != null )
+	    debug = Integer.parseInt( params.getProperty("debug") );
 
 	// Create property lists and matrix
 	for ( Object prop : honto1.getObjectProperties() ){
diff --git a/src/fr/inrialpes/exmo/align/impl/renderer/COWLMappingRendererVisitor.java b/src/fr/inrialpes/exmo/align/impl/renderer/COWLMappingRendererVisitor.java
index d03b49942ee36d161ea2901c25f22442c3cf5214..6018ac0c58ed8894af81086be20eab1bb307414e 100644
--- a/src/fr/inrialpes/exmo/align/impl/renderer/COWLMappingRendererVisitor.java
+++ b/src/fr/inrialpes/exmo/align/impl/renderer/COWLMappingRendererVisitor.java
@@ -22,6 +22,7 @@ package fr.inrialpes.exmo.align.impl.renderer;
 
 import java.net.URI;
 import java.util.Enumeration;
+import java.util.Properties;
 import java.io.PrintWriter;
 import java.lang.reflect.Method;
 import java.lang.reflect.InvocationTargetException;
@@ -30,11 +31,9 @@ import org.semanticweb.owl.align.Visitable;
 import org.semanticweb.owl.align.Alignment;
 import org.semanticweb.owl.align.AlignmentVisitor;
 import org.semanticweb.owl.align.AlignmentException;
-import org.semanticweb.owl.align.Parameters;
 import org.semanticweb.owl.align.Cell;
 import org.semanticweb.owl.align.Relation;
 
-import fr.inrialpes.exmo.align.impl.BasicParameters;
 import fr.inrialpes.exmo.align.impl.ObjectAlignment;
 import fr.inrialpes.exmo.align.impl.rel.*;
 import fr.inrialpes.exmo.align.onto.LoadedOntology;
@@ -59,7 +58,7 @@ public class COWLMappingRendererVisitor implements AlignmentVisitor
 	this.writer = writer;
     }
 
-    public void init( Parameters p ) {}
+    public void init( Properties p ) {}
 
     public void visit( Visitable o ) throws AlignmentException {
 	if ( o instanceof Alignment ) visit( (Alignment)o );
@@ -82,9 +81,8 @@ public class COWLMappingRendererVisitor implements AlignmentVisitor
 	writer.print("    xmlns:xsd=\"http://www.w3.org/2001/XMLSchema#\">\n\n");	
 	writer.print("  <cowl:Mapping rdf:ID=\"\">\n");
 	writer.print("    <rdfs:comment>Generated by fr.inrialpes.exmo.impl.renderer.COWLMappingRendererVisitor</rdfs:comment>\n");
-	for ( Object ext : ((BasicParameters)align.getExtensions()).getValues() ){
-	    String name = ((String[])ext)[1];
-	    writer.print("    <rdfs:comment>"+name+": "+((String[])ext)[2]+"</rdfs:comment>\n");
+	for ( String[] ext : align.getExtensions() ){
+	    writer.print("    <rdfs:comment>"+ext[1]+": "+ext[2]+"</rdfs:comment>\n");
 	}
 	writer.print("\n");
 
diff --git a/src/fr/inrialpes/exmo/align/impl/renderer/HTMLMetadataRendererVisitor.java b/src/fr/inrialpes/exmo/align/impl/renderer/HTMLMetadataRendererVisitor.java
index 7f4d8abdb12d264e26611d7b154f1c688a6705c2..28f973700c6abe3aea37d8e3c2b06efdd49d2563 100644
--- a/src/fr/inrialpes/exmo/align/impl/renderer/HTMLMetadataRendererVisitor.java
+++ b/src/fr/inrialpes/exmo/align/impl/renderer/HTMLMetadataRendererVisitor.java
@@ -22,6 +22,7 @@ package fr.inrialpes.exmo.align.impl.renderer;
 
 import java.util.Enumeration;
 import java.util.Hashtable;
+import java.util.Properties;
 import java.io.PrintWriter;
 import java.net.URI;
 
@@ -60,9 +61,9 @@ public class HTMLMetadataRendererVisitor implements AlignmentVisitor
 	this.writer = writer;
     }
 
-    public void init( Parameters p ) {
-	if ( p.getParameter( "embedded" ) != null 
-	     && !p.getParameter( "embedded" ).equals("") ) embedded = true;
+    public void init( Properties p ) {
+	if ( p.getProperty( "embedded" ) != null 
+	     && !p.getProperty( "embedded" ).equals("") ) embedded = true;
     };
 
     public void visit( Visitable o ) throws AlignmentException {
@@ -78,9 +79,9 @@ public class HTMLMetadataRendererVisitor implements AlignmentVisitor
 	//nslist.put("http://www.omwg.org/TR/d7/ontology/alignment","omwg");
 	// Get the keys of the parameter
 	int gen = 0;
-	for ( Object ext : ((BasicParameters)align.getExtensions()).getValues() ){
-	    String prefix = ((String[])ext)[0];
-	    String name = ((String[])ext)[1];
+	for ( String[] ext : align.getExtensions() ){
+	    String prefix = ext[0];
+	    String name = ext[1];
 	    String tag = (String)nslist.get(prefix);
 	    if ( tag == null ) {
 		tag = "ns"+gen++;
@@ -123,8 +124,8 @@ public class HTMLMetadataRendererVisitor implements AlignmentVisitor
 	writer.print("<tr><td>level</td><td property=\"align:level\">"+align.getLevel()+"</td></tr>\n" );
 	writer.print("<tr><td>type</td><td property=\"align:type\">"+align.getType()+"</td></tr>\n" );
 	// RDFa: Get the keys of the parameter (to test)
-	for ( Object ext : ((BasicParameters)align.getExtensions()).getValues() ){
-	    writer.print("<tr><td>"+((String[])ext)[0]+" : "+((String[])ext)[1]+"</td><td property=\""+nslist.get(((String[])ext)[0])+":"+((String[])ext)[1]+"\">"+((String[])ext)[2]+"</td></tr>\n");
+	for ( String[] ext : align.getExtensions() ){
+	    writer.print("<tr><td>"+ext[0]+" : "+ext[1]+"</td><td property=\""+nslist.get(ext[0])+":"+ext[1]+"\">"+ext[2]+"</td></tr>\n");
 	}
 	writer.print("</table>\n");
 	writer.print("</div>\n");
diff --git a/src/fr/inrialpes/exmo/align/impl/renderer/HTMLRendererVisitor.java b/src/fr/inrialpes/exmo/align/impl/renderer/HTMLRendererVisitor.java
index 8882e17885b868c98c2701cf93dbca52bbc04059..9356e4b80ab3906348efebc10d0b0ce33b857772 100644
--- a/src/fr/inrialpes/exmo/align/impl/renderer/HTMLRendererVisitor.java
+++ b/src/fr/inrialpes/exmo/align/impl/renderer/HTMLRendererVisitor.java
@@ -21,6 +21,7 @@
 package fr.inrialpes.exmo.align.impl.renderer; 
 
 import java.util.Enumeration;
+import java.util.Properties;
 import java.util.Hashtable;
 import java.io.PrintWriter;
 import java.net.URI;
@@ -29,13 +30,11 @@ import org.semanticweb.owl.align.Visitable;
 import org.semanticweb.owl.align.Alignment;
 import org.semanticweb.owl.align.AlignmentVisitor;
 import org.semanticweb.owl.align.AlignmentException;
-import org.semanticweb.owl.align.Parameters;
 import org.semanticweb.owl.align.Cell;
 import org.semanticweb.owl.align.Relation;
 
 import fr.inrialpes.exmo.align.impl.Annotations;
 import fr.inrialpes.exmo.align.impl.Namespace;
-import fr.inrialpes.exmo.align.impl.BasicParameters;
 import fr.inrialpes.exmo.align.impl.BasicAlignment;
 import fr.inrialpes.exmo.align.impl.ObjectCell;
 import fr.inrialpes.exmo.align.onto.LoadedOntology;
@@ -64,9 +63,9 @@ public class HTMLRendererVisitor implements AlignmentVisitor {
 	this.writer = writer;
     }
 
-    public void init( Parameters p ) {
-	if ( p.getParameter( "embedded" ) != null 
-	     && !p.getParameter( "embedded" ).equals("") ) embedded = true;
+    public void init( Properties p ) {
+	if ( p.getProperty( "embedded" ) != null 
+	     && !p.getProperty( "embedded" ).equals("") ) embedded = true;
     };
 
     public void visit( Visitable o ) throws AlignmentException {
@@ -84,9 +83,9 @@ public class HTMLRendererVisitor implements AlignmentVisitor {
 	//nslist.put("http://www.omwg.org/TR/d7/ontology/alignment","omwg");
 	// Get the keys of the parameter
 	int gen = 0;
-	for ( Object ext : ((BasicParameters)align.getExtensions()).getValues() ){
-	    String prefix = ((String[])ext)[0];
-	    String name = ((String[])ext)[1];
+	for ( String[] ext : align.getExtensions() ){
+	    String prefix = ext[0];
+	    String name = ext[1];
 	    String tag = (String)nslist.get(prefix);
 	    if ( tag == null ) {
 		tag = "ns"+gen++;
@@ -94,7 +93,7 @@ public class HTMLRendererVisitor implements AlignmentVisitor {
 	    }
 	    if ( tag.equals("align") ) { tag = name; }
 	    else { tag += ":"+name; }
-	    //extensionString += "  <"+tag+">"+((String[])ext)[2]+"</"+tag+">\n";
+	    //extensionString += "  <"+tag+">"+ext[2]+"</"+tag+">\n";
 	}
 	if ( embedded == false ) {
 	    writer.print("<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n");
@@ -136,8 +135,8 @@ public class HTMLRendererVisitor implements AlignmentVisitor {
 	writer.print("<tr><td>level</td><td property=\"align:level\">"+align.getLevel()+"</td></tr>\n" );
 	writer.print("<tr><td>type</td><td property=\"align:type\">"+align.getType()+"</td></tr>\n" );
 	// RDFa: Get the keys of the parameter (to test)
-	for ( Object ext : ((BasicParameters)align.getExtensions()).getValues() ){
-	    writer.print("<tr><td>"+((String[])ext)[0]+" : "+((String[])ext)[1]+"</td><td property=\""+nslist.get(((String[])ext)[0])+":"+((String[])ext)[1]+"\">"+((String[])ext)[2]+"</td></tr>\n");
+	for ( String[] ext : align.getExtensions() ){
+	    writer.print("<tr><td>"+ext[0]+" : "+ext[1]+"</td><td property=\""+nslist.get(ext[0])+":"+ext[1]+"\">"+ext[2]+"</td></tr>\n");
 	}
 	writer.print("</table>\n");
 	writer.print("<h2>Correspondences</h2>\n");
diff --git a/src/fr/inrialpes/exmo/align/impl/renderer/OWLAxiomsRendererVisitor.java b/src/fr/inrialpes/exmo/align/impl/renderer/OWLAxiomsRendererVisitor.java
index 2ef977b082d52798e2845a49c604d668acc35d7d..f2515ed4691cda30f9e55d77102635a3f4d3b6da 100644
--- a/src/fr/inrialpes/exmo/align/impl/renderer/OWLAxiomsRendererVisitor.java
+++ b/src/fr/inrialpes/exmo/align/impl/renderer/OWLAxiomsRendererVisitor.java
@@ -21,6 +21,7 @@
 package fr.inrialpes.exmo.align.impl.renderer; 
 
 import java.util.Enumeration;
+import java.util.Properties;
 import java.io.PrintWriter;
 import java.net.URI;
 import java.lang.reflect.Method;
@@ -30,12 +31,10 @@ import org.semanticweb.owl.align.Visitable;
 import org.semanticweb.owl.align.Alignment;
 import org.semanticweb.owl.align.AlignmentVisitor;
 import org.semanticweb.owl.align.AlignmentException;
-import org.semanticweb.owl.align.Parameters;
 import org.semanticweb.owl.align.Cell;
 import org.semanticweb.owl.align.Relation;
 
 import fr.inrialpes.exmo.align.impl.ObjectAlignment;
-import fr.inrialpes.exmo.align.impl.BasicParameters;
 import fr.inrialpes.exmo.align.impl.BasicRelation;
 import fr.inrialpes.exmo.align.onto.LoadedOntology;
 import fr.inrialpes.exmo.align.impl.rel.*;
@@ -59,8 +58,8 @@ public class OWLAxiomsRendererVisitor implements AlignmentVisitor {
 	this.writer = writer;
     }
 
-    public void init( Parameters p ) {
-	if ( p.getParameter("heterogeneous") != null ) heterogeneous = true;
+    public void init( Properties p ) {
+	if ( p.getProperty("heterogeneous") != null ) heterogeneous = true;
     };
 
     public void visit( Visitable o ) throws AlignmentException {
@@ -86,9 +85,8 @@ public class OWLAxiomsRendererVisitor implements AlignmentVisitor {
 	writer.print("  <owl:Ontology rdf:about=\"\">\n");
 	writer.print("    <rdfs:comment>Matched ontologies</rdfs:comment>\n");
 	writer.print("    <rdfs:comment>Generated by fr.inrialpes.exmo.align.renderer.OWLAxiomsRendererVisitor</rdfs:comment>\n");
-	for ( Object ext : ((BasicParameters)align.getExtensions()).getValues() ){
-	    String name = ((String[])ext)[1];
-	    writer.print("    <rdfs:comment>"+name+": "+((String[])ext)[2]+"</rdfs:comment>\n");
+	for ( String[] ext : align.getExtensions() ){
+	    writer.print("    <rdfs:comment>"+ext[1]+": "+ext[2]+"</rdfs:comment>\n");
 	}
 	writer.print("    <owl:imports rdf:resource=\""+align.getOntology1URI().toString()+"\"/>\n");
 	writer.print("    <owl:imports rdf:resource=\""+align.getOntology2URI().toString()+"\"/>\n");
diff --git a/src/fr/inrialpes/exmo/align/impl/renderer/SEKTMappingRendererVisitor.java b/src/fr/inrialpes/exmo/align/impl/renderer/SEKTMappingRendererVisitor.java
index fb4519b628d295f98ee7c0a83990b1cf1ccc03c3..5c45aba2644f6998278f68332a8512e74d312680 100644
--- a/src/fr/inrialpes/exmo/align/impl/renderer/SEKTMappingRendererVisitor.java
+++ b/src/fr/inrialpes/exmo/align/impl/renderer/SEKTMappingRendererVisitor.java
@@ -21,6 +21,7 @@
 package fr.inrialpes.exmo.align.impl.renderer; 
 
 import java.util.Enumeration;
+import java.util.Properties;
 import java.util.Random;
 import java.io.PrintWriter;
 import java.net.URI;
@@ -31,7 +32,6 @@ import org.semanticweb.owl.align.Visitable;
 import org.semanticweb.owl.align.Alignment;
 import org.semanticweb.owl.align.AlignmentVisitor;
 import org.semanticweb.owl.align.AlignmentException;
-import org.semanticweb.owl.align.Parameters;
 import org.semanticweb.owl.align.Cell;
 import org.semanticweb.owl.align.Relation;
 
@@ -60,7 +60,7 @@ public class SEKTMappingRendererVisitor implements AlignmentVisitor {
 	generator = new Random();
     }
 
-    public void init( Parameters p ) {};
+    public void init( Properties p ) {};
 
     public void visit( Visitable o ) throws AlignmentException {
 	if ( o instanceof Alignment ) visit( (Alignment)o );
diff --git a/src/fr/inrialpes/exmo/align/impl/renderer/SKOSRendererVisitor.java b/src/fr/inrialpes/exmo/align/impl/renderer/SKOSRendererVisitor.java
index 633ca9145e22233ac2be2a321c1a9e58bb1294ac..ed5aa14879a47f666272b876cd1b0a43d9cc9ccd 100644
--- a/src/fr/inrialpes/exmo/align/impl/renderer/SKOSRendererVisitor.java
+++ b/src/fr/inrialpes/exmo/align/impl/renderer/SKOSRendererVisitor.java
@@ -22,6 +22,7 @@
 package fr.inrialpes.exmo.align.impl.renderer; 
 
 import java.util.Enumeration;
+import java.util.Properties;
 import java.io.PrintWriter;
 import java.net.URI;
 import java.lang.reflect.Method;
@@ -31,12 +32,10 @@ import org.semanticweb.owl.align.Visitable;
 import org.semanticweb.owl.align.Alignment;
 import org.semanticweb.owl.align.AlignmentVisitor;
 import org.semanticweb.owl.align.AlignmentException;
-import org.semanticweb.owl.align.Parameters;
 import org.semanticweb.owl.align.Cell;
 import org.semanticweb.owl.align.Relation;
 
 import fr.inrialpes.exmo.align.impl.rel.*;
-import fr.inrialpes.exmo.align.impl.BasicParameters;
 import fr.inrialpes.exmo.align.impl.ObjectAlignment;
 import fr.inrialpes.exmo.align.onto.LoadedOntology;
 
@@ -60,11 +59,11 @@ public class SKOSRendererVisitor implements AlignmentVisitor {
 	this.writer = writer;
     }
 
-    public void init( Parameters p ) {
-	if ( p.getParameter( "embedded" ) != null 
-	     && !p.getParameter( "embedded" ).equals("") ) embedded = true;
-	if ( p.getParameter( "pre2008" ) != null 
-	     && !p.getParameter( "pre2008" ).equals("") ) pre2008 = true;
+    public void init( Properties p ) {
+	if ( p.getProperty( "embedded" ) != null 
+	     && !p.getProperty( "embedded" ).equals("") ) embedded = true;
+	if ( p.getProperty( "pre2008" ) != null 
+	     && !p.getProperty( "pre2008" ).equals("") ) pre2008 = true;
     };
 
     // This must be considered
@@ -93,9 +92,8 @@ public class SKOSRendererVisitor implements AlignmentVisitor {
 	    writer.print("  xmlns:skos=\"http://www.w3.org/2008/05/skos#\">\n\n");
 	}
 	writer.print("  <!-- Generated by fr.inrialpes.exmo.impl.renderer.SKOSRendererVisitor -->\n");
-	for ( Object ext : ((BasicParameters)align.getExtensions()).getValues() ){
-	    String name = ((String[])ext)[1];
-	    writer.print("  <!-- "+name+": "+((String[])ext)[2]+" -->\n");
+	for ( String[] ext : align.getExtensions() ){
+	    writer.print("  <!-- "+ext[1]+": "+ext[2]+" -->\n");
 	}
 	writer.print("\n");
 	for( Cell c : align ){
diff --git a/src/fr/inrialpes/exmo/align/impl/renderer/SWRLRendererVisitor.java b/src/fr/inrialpes/exmo/align/impl/renderer/SWRLRendererVisitor.java
index 91f1981d13047169f9af7280228f940890d7ea93..86888057406369c4b94b252fc5ca24dd7cd7044e 100644
--- a/src/fr/inrialpes/exmo/align/impl/renderer/SWRLRendererVisitor.java
+++ b/src/fr/inrialpes/exmo/align/impl/renderer/SWRLRendererVisitor.java
@@ -21,6 +21,7 @@
 package fr.inrialpes.exmo.align.impl.renderer; 
 
 import java.util.Enumeration;
+import java.util.Properties;
 import java.io.PrintWriter;
 import java.net.URI;
 
@@ -31,12 +32,10 @@ import org.semanticweb.owl.align.Visitable;
 import org.semanticweb.owl.align.Alignment;
 import org.semanticweb.owl.align.AlignmentVisitor;
 import org.semanticweb.owl.align.AlignmentException;
-import org.semanticweb.owl.align.Parameters;
 import org.semanticweb.owl.align.Cell;
 import org.semanticweb.owl.align.Relation;
 
 import fr.inrialpes.exmo.align.impl.ObjectAlignment;
-import fr.inrialpes.exmo.align.impl.BasicParameters;
 import fr.inrialpes.exmo.align.impl.rel.*;
 import fr.inrialpes.exmo.align.onto.LoadedOntology;
 
@@ -60,9 +59,9 @@ public class SWRLRendererVisitor implements AlignmentVisitor {
 	this.writer = writer;
     }
 
-    public void init( Parameters p ) {
-	if ( p.getParameter( "embedded" ) != null 
-	     && !p.getParameter( "embedded" ).equals("") ) embedded = true;
+    public void init( Properties p ) {
+	if ( p.getProperty( "embedded" ) != null 
+	     && !p.getProperty( "embedded" ).equals("") ) embedded = true;
    };
 
     public void visit( Visitable o ) throws AlignmentException {
@@ -85,9 +84,8 @@ public class SWRLRendererVisitor implements AlignmentVisitor {
 	writer.println("                xmlns:owlx=\"http://www.w3.org/2003/05/owl-xml\"");
 	writer.println("                xmlns:ruleml=\"http://www.w3.org/2003/11/ruleml#\">");
 	writer.print("\n  <!-- Generated by fr.inrialpes.exmo.impl.renderer.SWRLRendererVisitor -->\n");
-	for ( Object ext : ((BasicParameters)align.getExtensions()).getValues() ){
-	    String name = ((String[])ext)[1];
-	    writer.print("  <owlx:Annotation><owlx:Documentation>"+name+": "+((String[])ext)[2]+"</owlx:Documentation></owlx:Annotation>\n");
+	for ( String[] ext : align.getExtensions() ){
+	    writer.print("  <owlx:Annotation><owlx:Documentation>"+ext[1]+": "+ext[2]+"</owlx:Documentation></owlx:Annotation>\n");
 	}
 	writer.print("\n");
 	writer.println("  <owlx:Imports rdf:resource=\""+onto1.getURI()+"\"/>\n");
diff --git a/src/fr/inrialpes/exmo/align/impl/renderer/XMLMetadataRendererVisitor.java b/src/fr/inrialpes/exmo/align/impl/renderer/XMLMetadataRendererVisitor.java
index 6ae9aea600d4f00cf000c391bd7e8f52b2d1235b..55014c0136dee390325ddfa24bfd054ccd7c6f66 100644
--- a/src/fr/inrialpes/exmo/align/impl/renderer/XMLMetadataRendererVisitor.java
+++ b/src/fr/inrialpes/exmo/align/impl/renderer/XMLMetadataRendererVisitor.java
@@ -22,18 +22,17 @@ package fr.inrialpes.exmo.align.impl.renderer;
 
 import java.util.Enumeration;
 import java.util.Hashtable;
+import java.util.Properties;
 import java.io.PrintWriter;
 
 import org.semanticweb.owl.align.Visitable;
 import org.semanticweb.owl.align.Alignment;
 import org.semanticweb.owl.align.AlignmentException;
 import org.semanticweb.owl.align.AlignmentVisitor;
-import org.semanticweb.owl.align.Parameters;
 
 import fr.inrialpes.exmo.align.impl.Annotations;
 import fr.inrialpes.exmo.align.impl.Namespace;
 import fr.inrialpes.exmo.align.impl.BasicAlignment;
-import fr.inrialpes.exmo.align.impl.BasicParameters;
 
 /**
  * Renders an alignment in its RDF format
@@ -54,9 +53,9 @@ public class XMLMetadataRendererVisitor implements AlignmentVisitor {
 	this.writer = writer;
     }
 
-    public void init( Parameters p ) {
-	if ( p.getParameter( "embedded" ) != null 
-	     && !p.getParameter( "embedded" ).equals("") ) embedded = true;
+    public void init( Properties p ) {
+	if ( p.getProperty( "embedded" ) != null 
+	     && !p.getProperty( "embedded" ).equals("") ) embedded = true;
     };
 
     public void visit( Visitable o ) throws AlignmentException {
@@ -73,9 +72,9 @@ public class XMLMetadataRendererVisitor implements AlignmentVisitor {
 	//nslist.put("http://www.omwg.org/TR/d7/ontology/alignment","omwg");
 	// Get the keys of the parameter
 	int gen = 0;
-	for ( Object ext : ((BasicParameters)align.getExtensions()).getValues() ){
-	    String prefix = ((String[])ext)[0];
-	    String name = ((String[])ext)[1];
+	for ( String[] ext : align.getExtensions() ){
+	    String prefix = ext[0];
+	    String name = ext[1];
 	    String tag = (String)nslist.get(prefix);
 	    if ( tag == null ) {
 		tag = "ns"+gen++;
@@ -83,7 +82,7 @@ public class XMLMetadataRendererVisitor implements AlignmentVisitor {
 	    }
 	    if ( tag.equals("align") ) { tag = name; }
 	    else { tag += ":"+name; }
-	    extensionString += "  <"+tag+">"+((String[])ext)[2]+"</"+tag+">\n";
+	    extensionString += "  <"+tag+">"+ext[2]+"</"+tag+">\n";
 	}
 	if ( embedded == false ) {
 	    writer.print("<?xml version='1.0' encoding='utf-8");
diff --git a/src/fr/inrialpes/exmo/align/impl/renderer/XSLTRendererVisitor.java b/src/fr/inrialpes/exmo/align/impl/renderer/XSLTRendererVisitor.java
index c88a87aa2006b3187d3144607a5c35fa0a5118be..7a422ae4ee7f8a30c28062584bee31569b07a70e 100644
--- a/src/fr/inrialpes/exmo/align/impl/renderer/XSLTRendererVisitor.java
+++ b/src/fr/inrialpes/exmo/align/impl/renderer/XSLTRendererVisitor.java
@@ -22,6 +22,7 @@ package fr.inrialpes.exmo.align.impl.renderer;
 
 import java.util.Hashtable;
 import java.util.Enumeration;
+import java.util.Properties;
 import java.io.PrintWriter;
 
 import java.lang.reflect.Method;
@@ -31,12 +32,10 @@ import org.semanticweb.owl.align.Visitable;
 import org.semanticweb.owl.align.Alignment;
 import org.semanticweb.owl.align.AlignmentVisitor;
 import org.semanticweb.owl.align.AlignmentException;
-import org.semanticweb.owl.align.Parameters;
 import org.semanticweb.owl.align.Cell;
 import org.semanticweb.owl.align.Relation;
 
 import fr.inrialpes.exmo.align.impl.rel.*;
-import fr.inrialpes.exmo.align.impl.BasicParameters;
 import fr.inrialpes.exmo.align.impl.ObjectAlignment;
 import fr.inrialpes.exmo.align.onto.LoadedOntology;
 
@@ -67,9 +66,9 @@ public class XSLTRendererVisitor implements AlignmentVisitor {
 	namespaces.put( "http://www.w3.org/2000/01/rdf-schema#", "rdfs" );
     }
 
-    public void init( Parameters p ) {
-	if ( p.getParameter( "embedded" ) != null 
-	     && !p.getParameter( "embedded" ).equals("") ) embedded = true;
+    public void init( Properties p ) {
+	if ( p.getProperty( "embedded" ) != null 
+	     && !p.getProperty( "embedded" ).equals("") ) embedded = true;
     };
 
     public void visit( Visitable o ) throws AlignmentException {
@@ -98,9 +97,9 @@ public class XSLTRendererVisitor implements AlignmentVisitor {
 	writer.println("  >\n");
 
 	writer.print("  <!-- Generated by fr.inrialpes.exmo.impl.renderer.XSLTRendererVisitor -->\n");
-	for ( Object ext : ((BasicParameters)align.getExtensions()).getValues() ){
-	    String name = ((String[])ext)[1];
-	    writer.print("  <!-- "+name+": "+((String[])ext)[2]+" -->\n");
+	for ( String[] ext : align.getExtensions() ){
+	    String name = ext[1];
+	    writer.print("  <!-- "+name+": "+ext[2]+" -->\n");
 	}
 	writer.print("\n");
 
diff --git a/src/fr/inrialpes/exmo/align/ling/JWNLAlignment.java b/src/fr/inrialpes/exmo/align/ling/JWNLAlignment.java
index 1d73d50089c5d7eea5273ce9e2217893452be94c..7e3a0510c2a7860d0cbda082738eb68e6f9abf9d 100644
--- a/src/fr/inrialpes/exmo/align/ling/JWNLAlignment.java
+++ b/src/fr/inrialpes/exmo/align/ling/JWNLAlignment.java
@@ -28,13 +28,12 @@ import fr.inrialpes.exmo.ontosim.string.JWNLDistances;
 import org.semanticweb.owl.align.Alignment;
 import org.semanticweb.owl.align.AlignmentProcess;
 import org.semanticweb.owl.align.AlignmentException;
-import org.semanticweb.owl.align.Parameters;
 
+import java.util.Properties;
 import java.net.URI;
 
 /**
  * This Class uses JWNLDistances to align two ontologies.
- * @author  Jerome Pierson
  * @version $Id$
  */
 
@@ -95,22 +94,22 @@ public class JWNLAlignment extends DistanceAlignment implements AlignmentProcess
     };
 
     /** Processing **/
-    public void align( Alignment alignment, Parameters params ) throws AlignmentException {
+    public void align( Alignment alignment, Properties prop ) throws AlignmentException {
 	int method = 0;
 	loadInit( alignment );
 	WordNetMatrixMeasure sim = (WordNetMatrixMeasure)getSimilarity();
-	String wnvers = (String)params.getParameter("wnvers");
+	String wnvers = prop.getProperty("wnvers");
 	if ( wnvers == null ) wnvers = WNVERS;
-	String function = (String)params.getParameter("wnfunction");
+	String function = prop.getProperty("wnfunction");
 	if ( function != null ) {
 	    if ( function.equals("cosynonymySimilarity") ) method = 1;
 	    else if ( function.equals("basicSynonymySimilarity") ) method = 2;
 	}
-	sim.init( (String)params.getParameter("wndict"), wnvers, method );
+	sim.init( prop.getProperty("wndict"), wnvers, method );
 	sim.initialize( ontology1(), ontology2(), alignment );
-	sim.compute( params );
-	if ( params.getParameter("printMatrix") != null ) printDistanceMatrix(params);
-	extract( type, params );
+	sim.compute( prop );
+	if ( prop.getProperty("printMatrix") != null ) printDistanceMatrix( prop );
+	extract( type, prop );
     }
 }
 	
diff --git a/src/fr/inrialpes/exmo/align/parser/XMLParser.java b/src/fr/inrialpes/exmo/align/parser/XMLParser.java
index 96d86114aa08a27b3b29493b58c4b0e7ec825086..2d267b52ef6e3bcc03c0f443ded438b019ec94f6 100644
--- a/src/fr/inrialpes/exmo/align/parser/XMLParser.java
+++ b/src/fr/inrialpes/exmo/align/parser/XMLParser.java
@@ -51,9 +51,11 @@ import fr.inrialpes.exmo.align.onto.Ontology;
 import fr.inrialpes.exmo.align.onto.LoadedOntology;
 import fr.inrialpes.exmo.align.onto.BasicOntology;
 import fr.inrialpes.exmo.align.impl.URIAlignment;
+import fr.inrialpes.exmo.align.impl.BasicCell;
 import fr.inrialpes.exmo.align.impl.BasicParameters;
 import fr.inrialpes.exmo.align.impl.Annotations;
 import fr.inrialpes.exmo.align.impl.Namespace;
+import fr.inrialpes.exmo.align.impl.Extensions;
 
 /**
  * This class allows the creation of a parser for an Alignment file.
@@ -135,7 +137,7 @@ public class XMLParser extends DefaultHandler {
     /**
      * Cell extensions (default null)
      */
-    protected Parameters extensions = null;
+    protected Extensions extensions = null;
 
     /**
      * the measure content as text...
@@ -425,7 +427,7 @@ public class XMLParser extends DefaultHandler {
 			cell = alignment.addAlignCell( cl1, cl2, relation, Double.parseDouble(measure) );}
 		    if ( id != null ) cell.setId( id );
 		    if ( sem != null ) cell.setSemantics( sem );
-		    if ( extensions != null ) cell.setExtensions( extensions );
+		    if ( extensions != null ) ((BasicCell)cell).setExtensions( extensions );
 		} else if (pName.equals("map")) {
 		} else if (pName.equals("uri1")) {
 		    if ( onto1.getURI() == null ){//JE: Onto
@@ -484,8 +486,7 @@ public class XMLParser extends DefaultHandler {
 		    if ( parseLevel == 3 ){
 			alignment.setExtension( namespaceURI, pName, content );
 		    } else if ( parseLevel == 5 ) {
-			String[] ext = {namespaceURI, pName, content};
-			extensions.setParameter( namespaceURI+pName, ext );
+			extensions.setExtension( namespaceURI, pName, content );
 		    } else //if ( debugMode > 0 )
 			System.err.println("[XMLParser("+parseLevel+")] Unknown element name : "+pName);
 		    //throw new SAXException("[XMLParser] Unknown element name : "+pName);
@@ -502,9 +503,8 @@ public class XMLParser extends DefaultHandler {
 	    if ( parseLevel == 3 && alignLevel != -1 ){
 		alignment.setExtension( namespaceURI, pName, content );
 	    } else if ( parseLevel == 5 && alignLevel != -1 ) {
-		if ( extensions == null ) extensions = new BasicParameters();
-		String[] ext = {namespaceURI, pName, content};
-		extensions.setParameter( namespaceURI+pName, ext );
+		if ( extensions == null ) extensions = new Extensions();
+		extensions.setExtension( namespaceURI, pName, content );
 	    } else if (  !embedded ) throw new SAXException("[XMLParser] Unknown namespace : "+namespaceURI);
 	}
 	parseLevel--;
diff --git a/src/fr/inrialpes/exmo/align/service/AlignmentId.java b/src/fr/inrialpes/exmo/align/service/AlignmentId.java
index 80fe7cad2f93045b2fc6a9cf9016607a478b7f75..9427b5a4175eaaf411321d1ebcede864d2fbee79 100644
--- a/src/fr/inrialpes/exmo/align/service/AlignmentId.java
+++ b/src/fr/inrialpes/exmo/align/service/AlignmentId.java
@@ -20,7 +20,7 @@
 
 package fr.inrialpes.exmo.align.service;
 
-import org.semanticweb.owl.align.Parameters;
+import java.util.Properties;
 
 /**
  * Contains the messages that should be sent according to the protocol
@@ -30,10 +30,10 @@ public class AlignmentId extends Success {
 
     String pretty = null;
 
-    public AlignmentId ( int surr, Message rep, String from, String to, String cont, Parameters param ) {
+    public AlignmentId ( int surr, Message rep, String from, String to, String cont, Properties param ) {
 	super( surr, rep, from, to, cont, param );
     }
-    public AlignmentId ( int surr, Message rep, String from, String to, String cont, Parameters param, String pretty ) {
+    public AlignmentId ( int surr, Message rep, String from, String to, String cont, Properties param, String pretty ) {
 	super( surr, rep, from, to, cont, param );
 	this.pretty = pretty;
     }
diff --git a/src/fr/inrialpes/exmo/align/service/AlignmentIds.java b/src/fr/inrialpes/exmo/align/service/AlignmentIds.java
index f646059852fbd75109f1b315f8654738185b92b3..d9848813ffd35c2fce643e9c042990bbd8b3d782 100644
--- a/src/fr/inrialpes/exmo/align/service/AlignmentIds.java
+++ b/src/fr/inrialpes/exmo/align/service/AlignmentIds.java
@@ -20,7 +20,7 @@
 
 package fr.inrialpes.exmo.align.service;
 
-import org.semanticweb.owl.align.Parameters;
+import java.util.Properties;
 
 /**
  * Contains the messages that should be sent according to the protocol
@@ -30,10 +30,10 @@ public class AlignmentIds extends Success {
 
     String pretty = null;
 
-    public AlignmentIds ( int surr, Message rep, String from, String to, String cont, Parameters param ) {
+    public AlignmentIds ( int surr, Message rep, String from, String to, String cont, Properties param ) {
 	super( surr, rep, from, to, cont, param );
     }
-    public AlignmentIds ( int surr, Message rep, String from, String to, String cont, Parameters param, String pretty ) {
+    public AlignmentIds ( int surr, Message rep, String from, String to, String cont, Properties param, String pretty ) {
 	super( surr, rep, from, to, cont, param );
 	this.pretty = pretty;
     }
diff --git a/src/fr/inrialpes/exmo/align/service/AlignmentMetadata.java b/src/fr/inrialpes/exmo/align/service/AlignmentMetadata.java
index ebe23f97467b8898cc435b8da96365553891c066..62a99e345528b88136c3653b62c9ff83f95563d6 100644
--- a/src/fr/inrialpes/exmo/align/service/AlignmentMetadata.java
+++ b/src/fr/inrialpes/exmo/align/service/AlignmentMetadata.java
@@ -1,7 +1,7 @@
 /*
  * $Id$
  *
- * Copyright (C) INRIA, 2006-2008
+ * Copyright (C) INRIA, 2006-2009
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public License
@@ -20,7 +20,7 @@
 
 package fr.inrialpes.exmo.align.service;
 
-import org.semanticweb.owl.align.Parameters;
+import java.util.Properties;
 
 /**
  * Contains the messages that should be sent according to the protocol
@@ -28,7 +28,7 @@ import org.semanticweb.owl.align.Parameters;
 
 public class AlignmentMetadata extends Success {
 
-    public AlignmentMetadata ( int surr, Message rep, String from, String to, String cont, Parameters param ) {
+    public AlignmentMetadata ( int surr, Message rep, String from, String to, String cont, Properties param ) {
 	super( surr, rep, from, to, cont, param );
     }
 
diff --git a/src/fr/inrialpes/exmo/align/service/AlignmentService.java b/src/fr/inrialpes/exmo/align/service/AlignmentService.java
index a99d758fa2008794ec433ef4180f848c7e5d079e..b364a409c54d92fc5e4e8b1862903ac787e6a559 100644
--- a/src/fr/inrialpes/exmo/align/service/AlignmentService.java
+++ b/src/fr/inrialpes/exmo/align/service/AlignmentService.java
@@ -27,13 +27,12 @@ import fr.inrialpes.exmo.queryprocessor.Type;
 import fr.inrialpes.exmo.align.impl.BasicParameters;
 import fr.inrialpes.exmo.align.util.NullStream;
 
-import org.semanticweb.owl.align.Parameters;
-
 import gnu.getopt.LongOpt;
 import gnu.getopt.Getopt;
 
 import java.util.Hashtable;
 import java.util.Enumeration;
+import java.util.Properties;
 import java.io.PrintStream;
 import java.io.File;
 
@@ -100,7 +99,7 @@ public class AlignmentService {
 	services = new Hashtable<String,AlignmentServiceProfile>();
 	directories = new Hashtable<String,Directory>();
 	// Read parameters
-	Parameters params = readParameters( args );
+	Properties params = readParameters( args );
 	if ( outfile != null ) {
 	    // This redirects error outout to log file given by -o
 	    System.setErr( new PrintStream( outfile ) );
@@ -125,7 +124,6 @@ public class AlignmentService {
 	    connection = new DBServiceImpl( "com.mysql.jdbc.Driver" ,  "jdbc:mysql", DBPORT );
 	}	
 	
-	//connection = new DBServiceImpl();
 	connection.init();
 	connection.connect( DBHOST, DBPORT, DBUSER, DBPASS, DBBASE );
 	if ( debug > 0 ) System.err.println("Database connected");
@@ -139,9 +137,9 @@ public class AlignmentService {
 	for ( AlignmentServiceProfile serv : services.values() ) {
 	    try {
 		serv.init( params, manager );
-		if ( debug > 0 ) System.err.println(serv+" launched on http://"+params.getParameter( "host" )+":"+params.getParameter( "http" )+"/html/");
+		if ( debug > 0 ) System.err.println(serv+" launched on http://"+params.getProperty( "host" )+":"+params.getProperty( "http" )+"/html/");
 	    } catch ( AServException ex ) {
-		System.err.println( "Couldn't start "+serv+" server on http://"+params.getParameter( "host" )+":"+params.getParameter( "http" )+"/html/:\n");
+		System.err.println( "Couldn't start "+serv+" server on http://"+params.getProperty( "host" )+":"+params.getProperty( "http" )+"/html/:\n");
 		// Ideally remove the service
 		ex.printStackTrace();
 	    }
@@ -204,10 +202,10 @@ public class AlignmentService {
     }
 
 
-    public Parameters readParameters( String[] args ) {
-	Parameters params = new BasicParameters();
+    public Properties readParameters( String[] args ) {
+	Properties params = new Properties();
 	// Default values
-	params.setParameter( "host", HOST );
+	params.setProperty( "host", HOST );
 
 	// Read parameters
 
@@ -262,7 +260,7 @@ public class AlignmentService {
 	    case 'd' :
 		/* Debug level  */
 		arg = g.getOptarg();
-		if ( arg != null ) debug = Integer.parseInt(arg.trim());
+		if ( arg != null ) debug = Integer.parseInt( arg.trim() );
 		else debug = 4;
 		break;
 	    case 'i' :
@@ -279,9 +277,9 @@ public class AlignmentService {
 		/* HTTP Server + port */
 		arg = g.getOptarg();
 		if ( arg != null ) {
-		    params.setParameter( "http", arg );
+		    params.setProperty( "http", arg );
 		} else {
-		    params.setParameter( "http", HTML );
+		    params.setProperty( "http", HTML );
 		}
 		// This shows that it does not work
 		try {
@@ -295,9 +293,9 @@ public class AlignmentService {
 		/* JADE Server + port */
 		arg = g.getOptarg();
 		if ( arg != null ) {
-		    params.setParameter( "jade", arg );
+		    params.setProperty( "jade", arg );
 		} else {
-		    params.setParameter( "jade", JADE );
+		    params.setProperty( "jade", JADE );
 		}		    
 		try {
 		    services.put( "fr.inrialpes.exmo.align.service.jade.JadeFIPAAServProfile", (AlignmentServiceProfile)loadInstance( "fr.inrialpes.exmo.align.service.jade.JadeFIPAAServProfile" ) );
@@ -310,14 +308,14 @@ public class AlignmentService {
 		/* Web service + port */
 		arg = g.getOptarg();
 		if ( arg != null ) {
-		    params.setParameter( "wsdl", arg );
+		    params.setProperty( "wsdl", arg );
 		} else {
-		    params.setParameter( "wsdl", WSDL );
+		    params.setProperty( "wsdl", WSDL );
 		};
 		// The WSDL extension requires HTTP server (and the same one).
 		// Put the default port, may be overriden
-		if ( params.getParameter( "http" ) == null )
-		    params.setParameter( "http", HTML );
+		if ( params.getProperty( "http" ) == null )
+		    params.setProperty( "http", HTML );
 		try {
 		    services.put( "fr.inrialpes.exmo.align.service.HTMLAServProfile", (AlignmentServiceProfile)loadInstance( "fr.inrialpes.exmo.align.service.HTMLAServProfile" ) );
 		} catch (Exception ex) {
@@ -329,22 +327,22 @@ public class AlignmentService {
 		/* JXTA Server + port */
 		arg = g.getOptarg();
 		if ( arg != null ) {
-		    params.setParameter( "jxta", arg );
+		    params.setProperty( "jxta", arg );
 		} else {
-		    params.setParameter( "jxta", JXTA );
+		    params.setProperty( "jxta", JXTA );
 		}		    
 		break;
 	    case 'S' :
 		/* Server */
-		params.setParameter( "host", g.getOptarg() );
+		params.setProperty( "host", g.getOptarg() );
 		break;
 	    case 'O' :
 		/* [JE: Currently not working]: Oyster directory + port */
 		arg = g.getOptarg();
 		if ( arg != null ) {
-		    params.setParameter( "oyster", arg );
+		    params.setProperty( "oyster", arg );
 		} else {
-		    params.setParameter( "oyster", JADE );
+		    params.setProperty( "oyster", JADE );
 		}
 		try {
 		    directories.put( "fr.inrialpes.exmo.align.service.OysterDirectory", (Directory)loadInstance( "fr.inrialpes.exmo.align.service.OysterDirectory" ) );
@@ -357,9 +355,9 @@ public class AlignmentService {
 		/* [JE: Currently not working]: UDDI directory + port */
 		arg = g.getOptarg();
 		if ( arg != null ) {
-		    params.setParameter( "uddi", arg );
+		    params.setProperty( "uddi", arg );
 		} else {
-		    params.setParameter( "uddi", JADE );
+		    params.setProperty( "uddi", JADE );
 		}		    
 		try {
 		    directories.put( "fr.inrialpes.exmo.align.service.UDDIDirectory", (Directory)loadInstance( "fr.inrialpes.exmo.align.service.UDDIDirectory" ) );
@@ -386,10 +384,10 @@ public class AlignmentService {
 	    case 'B' :
 		arg   = g.getOptarg();
 		if ( arg != null ) {
-		    params.setParameter( "DBMS", arg );
+		    params.setProperty( "DBMS", arg );
 		    DBMS = arg;
 		} else {
-		    params.setParameter( "DBMS", "mysql" );
+		    params.setProperty( "DBMS", "mysql" );
 		    DBMS = "mysql";
 		}
 		break;
@@ -398,7 +396,7 @@ public class AlignmentService {
 		arg = g.getOptarg();
 		int index = arg.indexOf('=');
 		if ( index != -1 ) {
-		    params.setParameter( arg.substring( 0, index), 
+		    params.setProperty( arg.substring( 0, index), 
 					 arg.substring(index+1));
 		} else {
 		    System.err.println("Bad parameter syntax: "+g);
@@ -411,9 +409,9 @@ public class AlignmentService {
 	}
 	
 	if (debug > 0) {
-	    params.setParameter("debug", new Integer(debug));
-	} else if ( params.getParameter("debug") != null ) {
-	    debug = Integer.parseInt((String)params.getParameter("debug"));
+	    params.setProperty( "debug", Integer.toString( debug ) );
+	} else if ( params.getProperty( "debug" ) != null ) {
+	    debug = Integer.parseInt( params.getProperty( "debug" ) );
 	}
 
 	return params;
diff --git a/src/fr/inrialpes/exmo/align/service/AlignmentServiceProfile.java b/src/fr/inrialpes/exmo/align/service/AlignmentServiceProfile.java
index eea3440a8faaeb8ca00cbbf6554b144faad884c7..bb67a374166c5389ba281d26426dee3ba32391fc 100644
--- a/src/fr/inrialpes/exmo/align/service/AlignmentServiceProfile.java
+++ b/src/fr/inrialpes/exmo/align/service/AlignmentServiceProfile.java
@@ -20,7 +20,7 @@
 
 package fr.inrialpes.exmo.align.service;
 
-import org.semanticweb.owl.align.Parameters;
+import java.util.Properties;
 
 public interface AlignmentServiceProfile {
 
@@ -28,7 +28,7 @@ public interface AlignmentServiceProfile {
      * Creates the Service object and declares it after any
      * required registery
      */
-    public void init( Parameters p, AServProtocolManager m ) throws AServException;
+    public void init( Properties p, AServProtocolManager m ) throws AServException;
 
     /**
      * Shutdown the Service and undeclare it from any registery
diff --git a/src/fr/inrialpes/exmo/align/service/CannotRenderAlignment.java b/src/fr/inrialpes/exmo/align/service/CannotRenderAlignment.java
index 5b9c7848b71e6f1a9b52143c683719cc97f86930..fab8771c01c1dc2ff5768ad6bb56e1f529d3d51f 100644
--- a/src/fr/inrialpes/exmo/align/service/CannotRenderAlignment.java
+++ b/src/fr/inrialpes/exmo/align/service/CannotRenderAlignment.java
@@ -20,14 +20,14 @@
 
 package fr.inrialpes.exmo.align.service;
 
-import org.semanticweb.owl.align.Parameters;
+import java.util.Properties;
 
 /**
  * Contains the messages that should be sent according to the protocol
  */
 
 public class CannotRenderAlignment extends ErrorMsg {
-    public CannotRenderAlignment ( int surr, Message rep, String from, String to, String cont, Parameters param ) {
+    public CannotRenderAlignment ( int surr, Message rep, String from, String to, String cont, Properties param ) {
 	super( surr, rep, from, to, cont, param );
     }
     public String HTMLString(){
diff --git a/src/fr/inrialpes/exmo/align/service/Directory.java b/src/fr/inrialpes/exmo/align/service/Directory.java
index 67234c60b233d6f0f3ef8408904d7c22a5103326..9f71ccbf49b454250d78b863d8fb746ef2a56750 100644
--- a/src/fr/inrialpes/exmo/align/service/Directory.java
+++ b/src/fr/inrialpes/exmo/align/service/Directory.java
@@ -1,7 +1,7 @@
 /*
  * $Id$
  *
- * Copyright (C) INRIA Rh�ne-Alpes, 2007
+ * Copyright (C) INRIA, 2007, 2009
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public License
@@ -20,9 +20,10 @@
 
 package fr.inrialpes.exmo.align.service;
 
-import org.semanticweb.owl.align.Parameters;
 import org.semanticweb.owl.align.Alignment;
 
+import java.util.Properties;
+
 public interface Directory {
 
     /**
@@ -31,7 +32,7 @@ public interface Directory {
      * - the directory address
      * - the declaration of the current service
      */
-    public void open( Parameters p ) throws AServException;
+    public void open( Properties p ) throws AServException;
 
     /**
      * Register an alignment to the directory (if necessary)
diff --git a/src/fr/inrialpes/exmo/align/service/ErrorMsg.java b/src/fr/inrialpes/exmo/align/service/ErrorMsg.java
index b5eeec2777aa7502985d3b294da12abc011b9167..455468e7caed670b61667b402902299311148561 100644
--- a/src/fr/inrialpes/exmo/align/service/ErrorMsg.java
+++ b/src/fr/inrialpes/exmo/align/service/ErrorMsg.java
@@ -20,7 +20,7 @@
 
 package fr.inrialpes.exmo.align.service;
 
-import org.semanticweb.owl.align.Parameters;
+import java.util.Properties;
 
 /**
  * Contains the messages that should be sent according to the protocol
@@ -28,7 +28,7 @@ import org.semanticweb.owl.align.Parameters;
 
 public class ErrorMsg extends Message {
 
-    public ErrorMsg ( int surr, Message rep, String from, String to, String cont, Parameters param ) {
+    public ErrorMsg ( int surr, Message rep, String from, String to, String cont, Properties param ) {
 	super( surr, rep, from, to, cont, param );
     }
     public String HTMLString(){
diff --git a/src/fr/inrialpes/exmo/align/service/EvalResult.java b/src/fr/inrialpes/exmo/align/service/EvalResult.java
index 72019c92cbb456fbcbb67aef2f2ba9533c826d98..7aa90f324ef66379fcd3c5b8fd5ea55cb33ff1b9 100644
--- a/src/fr/inrialpes/exmo/align/service/EvalResult.java
+++ b/src/fr/inrialpes/exmo/align/service/EvalResult.java
@@ -1,7 +1,7 @@
 /*
  * $Id$
  *
- * Copyright (C) INRIA, 2006-2008
+ * Copyright (C) INRIA, 2006-2009
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public License
@@ -20,7 +20,7 @@
 
 package fr.inrialpes.exmo.align.service;
 
-import org.semanticweb.owl.align.Parameters;
+import java.util.Properties;
 
 /**
  * Contains the messages that should be sent according to the protocol
@@ -28,7 +28,7 @@ import org.semanticweb.owl.align.Parameters;
 
 public class EvalResult extends Success {
 
-    public EvalResult ( int surr, Message rep, String from, String to, String cont, Parameters param ) {
+    public EvalResult ( int surr, Message rep, String from, String to, String cont, Properties param ) {
 	super( surr, rep, from, to, cont, param );
     }
     public String HTMLString(){
diff --git a/src/fr/inrialpes/exmo/align/service/EvaluationId.java b/src/fr/inrialpes/exmo/align/service/EvaluationId.java
index d14d78946052c84e50c62c41e1ca432463c63071..e16344cfb63c83abb04bc773602cddd60c9cbab5 100644
--- a/src/fr/inrialpes/exmo/align/service/EvaluationId.java
+++ b/src/fr/inrialpes/exmo/align/service/EvaluationId.java
@@ -20,7 +20,7 @@
 
 package fr.inrialpes.exmo.align.service;
 
-import org.semanticweb.owl.align.Parameters;
+import java.util.Properties;
 
 /**
  * Contains the messages that should be sent according to the protocol
@@ -30,7 +30,7 @@ public class EvaluationId extends Success {
 
     String pretty = null;
 
-    public EvaluationId ( int surr, Message rep, String from, String to, String cont, Parameters param ) {
+    public EvaluationId ( int surr, Message rep, String from, String to, String cont, Properties param ) {
 	super( surr, rep, from, to, cont, param );
     }
     public String getPretty( String alid ) {
diff --git a/src/fr/inrialpes/exmo/align/service/Message.java b/src/fr/inrialpes/exmo/align/service/Message.java
index e3d4dcf248a6ae424bdcf6a7fe86745176dd8a29..07c64bec90c9611f487b1669a205a5a542b4337a 100644
--- a/src/fr/inrialpes/exmo/align/service/Message.java
+++ b/src/fr/inrialpes/exmo/align/service/Message.java
@@ -1,7 +1,7 @@
 /*
  * $Id$
  *
- * Copyright (C) INRIA, 2006-2007
+ * Copyright (C) INRIA, 2006-2007, 2009
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public License
@@ -20,7 +20,7 @@
 
 package fr.inrialpes.exmo.align.service;
 
-import org.semanticweb.owl.align.Parameters;
+import java.util.Properties;
 
 /**
  * Contains the messages that should be sent according to the protocol
@@ -33,9 +33,9 @@ public class Message {
     String receiver = "";
     String sender = "";
     String content = "";
-    Parameters parameters = null;
+    Properties parameters = null;
 
-    public Message ( int surr, Message rep, String from, String to, String cont, Parameters param ) {
+    public Message ( int surr, Message rep, String from, String to, String cont, Properties param ) {
 	surrogate = surr;
 	inReplyTo = rep;
 	receiver = to;
@@ -80,7 +80,7 @@ public class Message {
 	return sender;
     }
 
-    public Parameters getParameters() {
+    public Properties getParameters() {
 	return parameters;
     }
 
diff --git a/src/fr/inrialpes/exmo/align/service/NonConformParameters.java b/src/fr/inrialpes/exmo/align/service/NonConformParameters.java
index 2b131f52d533b525bb52dda14efa72085fba912c..7e8a33bab8218be1367d2346acf8370cfc284944 100644
--- a/src/fr/inrialpes/exmo/align/service/NonConformParameters.java
+++ b/src/fr/inrialpes/exmo/align/service/NonConformParameters.java
@@ -20,14 +20,14 @@
 
 package fr.inrialpes.exmo.align.service;
 
-import org.semanticweb.owl.align.Parameters;
+import java.util.Properties;
 
 /**
  * Contains the messages that should be sent according to the protocol
  */
 
 public class NonConformParameters extends ErrorMsg {
-    public NonConformParameters ( int surr, Message rep, String from, String to, String cont, Parameters param ) {
+    public NonConformParameters ( int surr, Message rep, String from, String to, String cont, Properties param ) {
 	super( surr, rep, from, to, cont, param );
     }
 
diff --git a/src/fr/inrialpes/exmo/align/service/OntologyURI.java b/src/fr/inrialpes/exmo/align/service/OntologyURI.java
index 98df94ff5a91c26a16bc5b5556d712b16242e136..af7d3e667274ce03432f4a5863b29fd4549902d0 100644
--- a/src/fr/inrialpes/exmo/align/service/OntologyURI.java
+++ b/src/fr/inrialpes/exmo/align/service/OntologyURI.java
@@ -1,7 +1,7 @@
 /*
  * $Id$
  *
- * Copyright (C) INRIA, 2006-2008
+ * Copyright (C) INRIA, 2006-2009
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public License
@@ -20,7 +20,7 @@
 
 package fr.inrialpes.exmo.align.service;
 
-import org.semanticweb.owl.align.Parameters;
+import java.util.Properties;
 
 /**
  * Contains the messages that should be sent according to the protocol
@@ -28,7 +28,7 @@ import org.semanticweb.owl.align.Parameters;
 
 public class OntologyURI extends Success {
 
-    public OntologyURI ( int surr, Message rep, String from, String to, String cont, Parameters param ) {
+    public OntologyURI ( int surr, Message rep, String from, String to, String cont, Properties param ) {
 	super( surr, rep, from, to, cont, param );
     }
     public String HTMLString(){
diff --git a/src/fr/inrialpes/exmo/align/service/OysterDirectory.java b/src/fr/inrialpes/exmo/align/service/OysterDirectory.java
index 4ffb9e33488301261eac33a6e7b169467624de1a..4e4d767be103b26be6d9b9203b41e30ccbf8644d 100644
--- a/src/fr/inrialpes/exmo/align/service/OysterDirectory.java
+++ b/src/fr/inrialpes/exmo/align/service/OysterDirectory.java
@@ -1,7 +1,7 @@
 /*
  * $Id$
  *
- * Copyright (C) INRIA Rh�ne-Alpes, 2007-2008
+ * Copyright (C) INRIA, 2007-2009
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public License
@@ -21,8 +21,8 @@
 package fr.inrialpes.exmo.align.service;
 
 import java.lang.Double;
+import java.util.Properties;
 
-import org.semanticweb.owl.align.Parameters;
 import org.semanticweb.owl.align.Alignment;
 import org.semanticweb.owl.align.AlignmentException;
 
@@ -49,7 +49,7 @@ public class OysterDirectory implements Directory {
      * - the directory address
      * - the declaration of the current service
      */
-    public void open( Parameters p ) throws AServException {
+    public void open( Properties p ) throws AServException {
 	System.err.println("Attempt to connect to Oyster" );
 	//oyster2Conn = Oyster2Manager.newConnection("new store","lib/kaon2.jar","totokaon","");
 	oyster2Conn = Oyster2Manager.newConnection(false);
diff --git a/src/fr/inrialpes/exmo/align/service/RenderedAlignment.java b/src/fr/inrialpes/exmo/align/service/RenderedAlignment.java
index 024e246f5ab4e2bb0b19a1b25ee0834faf7d4826..022bb720c660ea43e151fc5110197247101f71f4 100644
--- a/src/fr/inrialpes/exmo/align/service/RenderedAlignment.java
+++ b/src/fr/inrialpes/exmo/align/service/RenderedAlignment.java
@@ -1,7 +1,7 @@
 /*
  * $Id$
  *
- * Copyright (C) INRIA, 2006, 2008
+ * Copyright (C) INRIA, 2006, 2008-2009
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public License
@@ -20,7 +20,7 @@
 
 package fr.inrialpes.exmo.align.service;
 
-import org.semanticweb.owl.align.Parameters;
+import java.util.Properties;
 
 /**
  * Contains the messages that should be sent according to the protocol
@@ -28,7 +28,7 @@ import org.semanticweb.owl.align.Parameters;
 
 public class RenderedAlignment extends Success {
 
-    public RenderedAlignment ( int surr, Message rep, String from, String to, String cont, Parameters param ) {
+    public RenderedAlignment ( int surr, Message rep, String from, String to, String cont, Properties param ) {
 	super( surr, rep, from, to, cont, param );
     }
     public String RESTString(){
diff --git a/src/fr/inrialpes/exmo/align/service/RunTimeError.java b/src/fr/inrialpes/exmo/align/service/RunTimeError.java
index 64ace3f6db4d35c0eb99325448c1868123f4dd09..96c7a8277da4711ee8de03d0a583699ded79474e 100644
--- a/src/fr/inrialpes/exmo/align/service/RunTimeError.java
+++ b/src/fr/inrialpes/exmo/align/service/RunTimeError.java
@@ -1,7 +1,7 @@
 /*
  * $Id$
  *
- * Copyright (C) INRIA, 2006-2008
+ * Copyright (C) INRIA, 2006-2009
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public License
@@ -20,14 +20,14 @@
 
 package fr.inrialpes.exmo.align.service;
 
-import org.semanticweb.owl.align.Parameters;
+import java.util.Properties;
 
 /**
  * Contains the messages that should be sent according to the protocol
  */
 
 public class RunTimeError extends ErrorMsg {
-    public RunTimeError ( int surr, Message rep, String from, String to, String cont, Parameters param ) {
+    public RunTimeError ( int surr, Message rep, String from, String to, String cont, Properties param ) {
 	super( surr, rep, from, to, cont, param );
     }
     public String RESTString(){
diff --git a/src/fr/inrialpes/exmo/align/service/Success.java b/src/fr/inrialpes/exmo/align/service/Success.java
index 16ecd8ad66dcffe10d8e848e58b596042ecd1bf9..6a849e44dd2e44402b25365689725da42deee24a 100644
--- a/src/fr/inrialpes/exmo/align/service/Success.java
+++ b/src/fr/inrialpes/exmo/align/service/Success.java
@@ -20,7 +20,7 @@
 
 package fr.inrialpes.exmo.align.service;
 
-import org.semanticweb.owl.align.Parameters;
+import java.util.Properties;
 
 /**
  * Contains the messages that should be sent according to the protocol
@@ -28,7 +28,7 @@ import org.semanticweb.owl.align.Parameters;
 
 public class Success extends Message {
 
-    public Success ( int surr, Message rep, String from, String to, String cont, Parameters param ) {
+    public Success ( int surr, Message rep, String from, String to, String cont, Properties param ) {
 	super( surr, rep, from, to, cont, param );
     }
     public String RESTString(){
diff --git a/src/fr/inrialpes/exmo/align/service/TranslatedMessage.java b/src/fr/inrialpes/exmo/align/service/TranslatedMessage.java
index 22c736000593fea30fdab67877dfb38cbbfdd5e5..c2d66ecaad7cee37081283b620068107c5013eb3 100644
--- a/src/fr/inrialpes/exmo/align/service/TranslatedMessage.java
+++ b/src/fr/inrialpes/exmo/align/service/TranslatedMessage.java
@@ -1,7 +1,7 @@
 /*
  * $Id$
  *
- * Copyright (C) INRIA, 2006-2008
+ * Copyright (C) INRIA, 2006-2009
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public License
@@ -20,7 +20,7 @@
 
 package fr.inrialpes.exmo.align.service;
 
-import org.semanticweb.owl.align.Parameters;
+import java.util.Properties;
 
 /**
  * Contains the messages that should be sent according to the protocol
@@ -28,7 +28,7 @@ import org.semanticweb.owl.align.Parameters;
 
 public class TranslatedMessage extends Success {
 
-    public TranslatedMessage ( int surr, Message rep, String from, String to, String cont, Parameters param ) {
+    public TranslatedMessage ( int surr, Message rep, String from, String to, String cont, Properties param ) {
 	super( surr, rep, from, to, cont, param );
     }
     public String HTMLString() {
diff --git a/src/fr/inrialpes/exmo/align/service/UnknownAlignment.java b/src/fr/inrialpes/exmo/align/service/UnknownAlignment.java
index 5953603be9cefa95047bac934b0aabc9281828eb..8ae8fe00e4c1de4636ad9f6ca845a612e1cb9074 100644
--- a/src/fr/inrialpes/exmo/align/service/UnknownAlignment.java
+++ b/src/fr/inrialpes/exmo/align/service/UnknownAlignment.java
@@ -1,7 +1,7 @@
 /*
  * $Id$
  *
- * Copyright (C) INRIA, 2006-2008
+ * Copyright (C) INRIA, 2006-2009
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public License
@@ -20,14 +20,14 @@
 
 package fr.inrialpes.exmo.align.service;
 
-import org.semanticweb.owl.align.Parameters;
+import java.util.Properties;
 
 /**
  * Contains the messages that should be sent according to the protocol
  */
 
 public class UnknownAlignment extends ErrorMsg {
-    public UnknownAlignment ( int surr, Message rep, String from, String to, String cont, Parameters param ) {
+    public UnknownAlignment ( int surr, Message rep, String from, String to, String cont, Properties param ) {
 	super( surr, rep, from, to, cont, param );
     }
     public String RESTString(){
diff --git a/src/fr/inrialpes/exmo/align/service/UnknownMethod.java b/src/fr/inrialpes/exmo/align/service/UnknownMethod.java
index 805ce3a69458255f07fd037c081ec04074c2a556..3f119a2837cf59d954fe92c28bbedbbdbe278866 100644
--- a/src/fr/inrialpes/exmo/align/service/UnknownMethod.java
+++ b/src/fr/inrialpes/exmo/align/service/UnknownMethod.java
@@ -1,7 +1,7 @@
 /*
  * $Id$
  *
- * Copyright (C) INRIA, 2006-2008
+ * Copyright (C) INRIA, 2006-2009
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public License
@@ -20,14 +20,14 @@
 
 package fr.inrialpes.exmo.align.service;
 
-import org.semanticweb.owl.align.Parameters;
+import java.util.Properties;
 
 /**
  * Contains the messages that should be sent according to the protocol
  */
 
 public class UnknownMethod extends ErrorMsg {
-    public UnknownMethod ( int surr, Message rep, String from, String to, String cont, Parameters param ) {
+    public UnknownMethod ( int surr, Message rep, String from, String to, String cont, Properties param ) {
 	super( surr, rep, from, to, cont, param );
     }
     public String HTMLString() {
diff --git a/src/fr/inrialpes/exmo/align/service/UnreachableAlignment.java b/src/fr/inrialpes/exmo/align/service/UnreachableAlignment.java
index 360ec5ac682211a138b1f194b1947eed1b3802a5..d2216bb5c85abb4a6c6960d8ca138b4c7f6c3cbf 100644
--- a/src/fr/inrialpes/exmo/align/service/UnreachableAlignment.java
+++ b/src/fr/inrialpes/exmo/align/service/UnreachableAlignment.java
@@ -1,7 +1,7 @@
 /*
  * $Id$
  *
- * Copyright (C) INRIA, 2006-2008
+ * Copyright (C) INRIA, 2006-2009
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public License
@@ -20,14 +20,14 @@
 
 package fr.inrialpes.exmo.align.service;
 
-import org.semanticweb.owl.align.Parameters;
+import java.util.Properties;
 
 /**
  * Contains the messages that should be sent according to the protocol
  */
 
 public class UnreachableAlignment extends ErrorMsg {
-    public UnreachableAlignment ( int surr, Message rep, String from, String to, String cont, Parameters param ) {
+    public UnreachableAlignment ( int surr, Message rep, String from, String to, String cont, Properties param ) {
 	super( surr, rep, from, to, cont, param );
     }
     public String RESTString() {
diff --git a/src/fr/inrialpes/exmo/align/service/UnreachableOntology.java b/src/fr/inrialpes/exmo/align/service/UnreachableOntology.java
index 86fcb6a3967a711c243203d6e81ae89e4a7ea2e1..ee8c15f5e7f232d8c39c8fd9b879af237e4d12c7 100644
--- a/src/fr/inrialpes/exmo/align/service/UnreachableOntology.java
+++ b/src/fr/inrialpes/exmo/align/service/UnreachableOntology.java
@@ -1,7 +1,7 @@
 /*
  * $Id$
  *
- * Copyright (C) INRIA, 2006-2008
+ * Copyright (C) INRIA, 2006-2009
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public License
@@ -20,14 +20,14 @@
 
 package fr.inrialpes.exmo.align.service;
 
-import org.semanticweb.owl.align.Parameters;
+import java.util.Properties;
 
 /**
  * Contains the messages that should be sent according to the protocol
  */
 
 public class UnreachableOntology extends ErrorMsg {
-    public UnreachableOntology ( int surr, Message rep, String from, String to, String cont, Parameters param ) {
+    public UnreachableOntology ( int surr, Message rep, String from, String to, String cont, Properties param ) {
 	super( surr, rep, from, to, cont, param );
     }
     public String RESTString() {
diff --git a/src/fr/inrialpes/exmo/align/service/WSAServProfile.java b/src/fr/inrialpes/exmo/align/service/WSAServProfile.java
index f0858ffd5b7ef21a2af27494a5ecc30e078c079f..7ae54bcd88a552096337a31862f685f42fed80d4 100644
--- a/src/fr/inrialpes/exmo/align/service/WSAServProfile.java
+++ b/src/fr/inrialpes/exmo/align/service/WSAServProfile.java
@@ -25,7 +25,6 @@ import fr.inrialpes.exmo.align.impl.Annotations;
 import fr.inrialpes.exmo.align.impl.Namespace;
 
 import org.semanticweb.owl.align.Alignment;
-import org.semanticweb.owl.align.Parameters;
 
 import java.io.File;
 import java.io.FileReader;
@@ -96,7 +95,7 @@ public class WSAServProfile implements AlignmentServiceProfile {
     // Socket & server code
     // ==================================================
 
-    public void init( Parameters params, AServProtocolManager manager ) throws AServException {
+    public void init( Properties params, AServProtocolManager manager ) throws AServException {
 	this.manager = manager;
 	// This may register the WSDL file to some directory
 	serverURL = manager.serverURL()+"/aserv/";
@@ -124,7 +123,7 @@ public class WSAServProfile implements AlignmentServiceProfile {
 		// Iterate on Classpath
 		while ( tk2 != null && tk2.hasMoreTokens() ) {
 		    File file = new File( tk2.nextToken() );
-		    if ( file.isDirectory() ) {
+		    if ( file.isDirectory() ) { // Do nothing, it is in a jar...
 		    } else if ( file.toString().endsWith(".jar") &&
 				!visited.contains( file.toString() ) &&
 				file.exists() ) {
@@ -152,7 +151,7 @@ public class WSAServProfile implements AlignmentServiceProfile {
 				    classPath = "";
 				}
 			    }
-			    if ( wsdlSpec == null ){
+			    if ( wsdlSpec.equals("") ){
 				// Iterate on needed Jarfiles
 				// JE(caveat): this deals naively with Jar files,
 				// in particular it does not deal with section'ed MANISFESTs
@@ -195,12 +194,12 @@ public class WSAServProfile implements AlignmentServiceProfile {
      * Not implemented yet
      * but reserved if appears useful
      */
-    public String protocolAnswer( String uri, String perf, Properties header, Parameters param ) {
+    public String protocolAnswer( String uri, String perf, Properties header, Properties param ) {
 	String method = null;
 	String message = null;
-	Parameters newparameters = null;
+	Properties newparameters = null;
 	Message answer = null;
-	boolean restful = (param.getParameter("restful")==null)?false:true;
+	boolean restful = (param.getProperty("restful")==null)?false:true;
 	String msg="";
 
 	// Set parameters if necessary
@@ -209,27 +208,27 @@ public class WSAServProfile implements AlignmentServiceProfile {
 	    newparameters = param;
 	} else {
 	    method = header.getProperty("SOAPAction");
-	    if ( param.getParameter( "filename" ) == null ) {
+	    if ( param.getProperty( "filename" ) == null ) {
 		// NOTE: we currently pass the file in place of a SOAP message
 		// hence there is no message and no parameters to parse
 		// However, there is a way to pass SOAP messages with attachments
 		// It would be better to implement this. See:
 		// http://www.oracle.com/technology/sample_code/tech/java/codesnippet/webservices/attachment/index.html
-		message = ((String)param.getParameter("content")).trim();
+		message = ((String)param.getProperty("content")).trim();
 		// Create the DOM tree for the SOAP message
 		Document domMessage = null;
 		try {
 		    domMessage = BUILDER.parse( new ByteArrayInputStream( message.getBytes()) );
 		} catch  ( IOException ioex ) {
 		    ioex.printStackTrace();
-		    answer = new NonConformParameters(0,(Message)null,myId,"Cannot Parse SOAP message",message,(Parameters)null);
+		    answer = new NonConformParameters(0,(Message)null,myId,"Cannot Parse SOAP message",message,(Properties)null);
 		} catch  ( SAXException saxex ) {
 		    saxex.printStackTrace();
-		    answer = new NonConformParameters(0,(Message)null,myId,"Cannot Parse SOAP message",message,(Parameters)null);
+		    answer = new NonConformParameters(0,(Message)null,myId,"Cannot Parse SOAP message",message,(Properties)null);
 		}
 		newparameters = getParameters( domMessage );
 	    } else {
-		newparameters = new BasicParameters();
+		newparameters = new Properties();
 	    }
 	}
 
@@ -238,8 +237,8 @@ public class WSAServProfile implements AlignmentServiceProfile {
 	    msg += wsdlAnswer( !restful );
 	} else if ( method.equals("listalignmentsRequest") || method.equals("listalignments") ) {
 	    msg += "    <listalignmentsResponse>\n      <alignmentList>\n";
-	    if ( newparameters.getParameter("msgid") != null ) {
-		msg += "        <in-reply-to>"+newparameters.getParameter("msgid")+"</in-reply-to>\n";
+	    if ( newparameters.getProperty("msgid") != null ) {
+		msg += "        <in-reply-to>"+newparameters.getProperty("msgid")+"</in-reply-to>\n";
 	    }
 	    for( Alignment al: manager.alignments() ){
 		String id = al.getExtension(Namespace.ALIGNMENT.uri, Annotations.ID);
@@ -256,64 +255,64 @@ public class WSAServProfile implements AlignmentServiceProfile {
 	} else if ( method.equals("listevaluatorsRequest") || method.equals("listevaluators") ) { // -> List of String
 	    msg += getClasses( "listevaluatorsResponse", manager.listevaluators(), newparameters );
 	} else if ( method.equals("storeRequest") || method.equals("store") ) { // URI -> URI
-	    if ( newparameters.getParameter( "id" ) == null ) {
-		answer = new NonConformParameters(0,(Message)null,myId,"",message,(Parameters)null);
+	    if ( newparameters.getProperty( "id" ) == null ) {
+		answer = new NonConformParameters(0,(Message)null,myId,"",message,(Properties)null);
 	    } else {
-		answer = manager.store( new Message(newId(),(Message)null,myId,serverURL,(String)newparameters.getParameter( "id" ), newparameters) );
+		answer = manager.store( new Message(newId(),(Message)null,myId,serverURL,(String)newparameters.getProperty( "id" ), newparameters) );
 	    }
 	    msg += "    <storeResponse>\n"+answer.SOAPString()+"    </storeResponse>\n";
 	} else if ( method.equals("invertRequest") || method.equals("invert") ) { // URI -> URI
-	    if ( newparameters.getParameter( "id" ) == null ) {
-		answer = new NonConformParameters(0,(Message)null,myId,"",message,(Parameters)null);
+	    if ( newparameters.getProperty( "id" ) == null ) {
+		answer = new NonConformParameters(0,(Message)null,myId,"",message,(Properties)null);
 	    } else {
-		answer = manager.inverse( new Message(newId(),(Message)null,myId,serverURL, (String)newparameters.getParameter( "id" ), newparameters) );
+		answer = manager.inverse( new Message(newId(),(Message)null,myId,serverURL, (String)newparameters.getProperty( "id" ), newparameters) );
 	    }
 	    msg += "    <invertResponse>\n"+answer.SOAPString()+"    </invertResponse>\n";
 	} else if ( method.equals("trimRequest") || method.equals("trim") ) { // URI * string * float -> URI
-	    if ( newparameters.getParameter( "id" ) == null ) {
-		answer = new NonConformParameters(0,(Message)null,myId,"",message,(Parameters)null);
-	    } else if ( newparameters.getParameter( "threshold" ) == null ) {
-		answer = new NonConformParameters(0,(Message)null,myId,"",message,(Parameters)null);
+	    if ( newparameters.getProperty( "id" ) == null ) {
+		answer = new NonConformParameters(0,(Message)null,myId,"",message,(Properties)null);
+	    } else if ( newparameters.getProperty( "threshold" ) == null ) {
+		answer = new NonConformParameters(0,(Message)null,myId,"",message,(Properties)null);
 	    } else {
-		if ( newparameters.getParameter( "type" ) == null ) {
-		    newparameters.setParameter( "type", "hard" );
+		if ( newparameters.getProperty( "type" ) == null ) {
+		    newparameters.setProperty( "type", "hard" );
 		}
-		answer = manager.trim( new Message(newId(),(Message)null,myId,serverURL,(String)newparameters.getParameter( "id" ), newparameters) );
+		answer = manager.trim( new Message(newId(),(Message)null,myId,serverURL,(String)newparameters.getProperty( "id" ), newparameters) );
 	    }
 	    msg += "    <trimResponse>\n"+answer.SOAPString()+"    </trimResponse>\n";
 	} else if ( method.equals("matchRequest") || method.equals("match") ) { // URL * URL * URI * String * boolean * (newparameters) -> URI
-	    if ( newparameters.getParameter( "onto1" ) == null ) {
-		answer = new NonConformParameters(0,(Message)null,myId,"",message,(Parameters)null);
-	    } else if ( newparameters.getParameter( "onto2" ) == null ) {
-		answer = new NonConformParameters(0,(Message)null,myId,"",message,(Parameters)null);
+	    if ( newparameters.getProperty( "onto1" ) == null ) {
+		answer = new NonConformParameters(0,(Message)null,myId,"",message,(Properties)null);
+	    } else if ( newparameters.getProperty( "onto2" ) == null ) {
+		answer = new NonConformParameters(0,(Message)null,myId,"",message,(Properties)null);
 	    } else {
 		answer = manager.align( new Message(newId(),(Message)null,myId,serverURL,"", newparameters) );
 	    }
 	    msg += "    <matchResponse>\n"+answer.SOAPString()+"</matchResponse>\n";
 	} else if ( method.equals("align") ) { // URL * URL * (newparameters) -> URI
 	    // This is a dummy method for emulating a WSAlignement service
-	    if ( newparameters.getParameter( "onto1" ) == null ) {
-		answer = new NonConformParameters(0,(Message)null,myId,"",message,(Parameters)null);
-	    } else if ( newparameters.getParameter( "onto2" ) == null ) {
-		answer = new NonConformParameters(0,(Message)null,myId,"",message,(Parameters)null);
+	    if ( newparameters.getProperty( "onto1" ) == null ) {
+		answer = new NonConformParameters(0,(Message)null,myId,"",message,(Properties)null);
+	    } else if ( newparameters.getProperty( "onto2" ) == null ) {
+		answer = new NonConformParameters(0,(Message)null,myId,"",message,(Properties)null);
 	    } else { // Use the required method if it exists
-		if ( newparameters.getParameter( "wsmethod" ) == null ) {
-		    newparameters.setParameter( "method", "fr.inrialpes.exmo.align.impl.method.StringDistAlignment" );
+		if ( newparameters.getProperty( "wsmethod" ) == null ) {
+		    newparameters.setProperty( "method", "fr.inrialpes.exmo.align.impl.method.StringDistAlignment" );
 		} else {
-		    newparameters.setParameter( "method", newparameters.getParameter( "wsmethod" ) );
+		    newparameters.setProperty( "method", (String)newparameters.getProperty( "wsmethod" ) );
 	    	} // Match the two ontologies
 		Message result = manager.align( new Message(newId(),(Message)null,myId,serverURL,"", newparameters) );
 		if ( result instanceof ErrorMsg ) {
 		    answer = result;
 		} else {
 		    // I got an answer so ask the manager to return it as RDF/XML
-		    newparameters = new BasicParameters();
-		    newparameters.setParameter( "id",  result.getContent() );
-		    if ( newparameters.getParameter( "id" ) == null ) {
-			answer = new NonConformParameters(0,(Message)null,myId,"",message,(Parameters)null);
+		    newparameters = new Properties();
+		    newparameters.setProperty( "id",  result.getContent() );
+		    if ( newparameters.getProperty( "id" ) == null ) {
+			answer = new NonConformParameters(0,(Message)null,myId,"",message,(Properties)null);
 		    } else {
-			newparameters.setParameter( "method",  "fr.inrialpes.exmo.align.impl.renderer.RDFRendererVisitor" );
-			newparameters.setParameter( "embedded", "true" );
+			newparameters.setProperty( "method",  "fr.inrialpes.exmo.align.impl.renderer.RDFRendererVisitor" );
+			newparameters.setProperty( "embedded", "true" );
 			answer = manager.render( new Message(newId(),(Message)null,myId,serverURL, "", newparameters) );
 		    }
 		}
@@ -328,21 +327,21 @@ public class WSAServProfile implements AlignmentServiceProfile {
 	    }
 	    msg += "    </alignResponse>\n";
 	} else if ( method.equals("findRequest") || method.equals("find") ) { // URI * URI -> List of URI
-	    if ( newparameters.getParameter( "onto1" ) == null ) {
-		answer = new NonConformParameters(0,(Message)null,myId,"",message,(Parameters)null);
-	    } else if ( newparameters.getParameter( "onto2" ) == null ) {
-		answer = new NonConformParameters(0,(Message)null,myId,"",message,(Parameters)null);
+	    if ( newparameters.getProperty( "onto1" ) == null ) {
+		answer = new NonConformParameters(0,(Message)null,myId,"",message,(Properties)null);
+	    } else if ( newparameters.getProperty( "onto2" ) == null ) {
+		answer = new NonConformParameters(0,(Message)null,myId,"",message,(Properties)null);
 	    } else {
 		answer = manager.existingAlignments( new Message(newId(),(Message)null,myId,serverURL,"", newparameters) );
             }
 	    msg += "    <findResponse>\n"+answer.SOAPString()+"    </findResponse>\n";
 	} else if ( method.equals("retrieveRequest") || method.equals("retrieve")) { // URI * method -> XML
-	    if ( newparameters.getParameter( "id" ) == null ) {
-		answer = new NonConformParameters(0,(Message)null,myId,"",message,(Parameters)null);
-	    } else if ( newparameters.getParameter( "method" ) == null ) {
-		answer = new NonConformParameters(0,(Message)null,myId,"",message,(Parameters)null);
+	    if ( newparameters.getProperty( "id" ) == null ) {
+		answer = new NonConformParameters(0,(Message)null,myId,"",message,(Properties)null);
+	    } else if ( newparameters.getProperty( "method" ) == null ) {
+		answer = new NonConformParameters(0,(Message)null,myId,"",message,(Properties)null);
 	    } else {
-		newparameters.setParameter( "embedded", "true" );
+		newparameters.setProperty( "embedded", "true" );
 		answer = manager.render( new Message(newId(),(Message)null,myId,serverURL, "", newparameters) );
 	    }
 	    msg += "    <retrieveResponse>\n";		
@@ -355,30 +354,30 @@ public class WSAServProfile implements AlignmentServiceProfile {
 	    }
 	    msg += "\n    </retrieveResponse>\n";
 	} else if ( method.equals("metadataRequest") || method.equals("metadata") ) { // URI -> XML
-	    if ( newparameters.getParameter( "id" ) == null ) {
-		answer = new NonConformParameters(0,(Message)null,myId,"",message,(Parameters)null);
+	    if ( newparameters.getProperty( "id" ) == null ) {
+		answer = new NonConformParameters(0,(Message)null,myId,"",message,(Properties)null);
 	    } else {
-		newparameters.setParameter( "embedded", "true" );
-		newparameters.setParameter( "method", "fr.inrialpes.exmo.align.impl.renderer.XMLMetadataRendererVisitor");
+		newparameters.setProperty( "embedded", "true" );
+		newparameters.setProperty( "method", "fr.inrialpes.exmo.align.impl.renderer.XMLMetadataRendererVisitor");
 		answer = manager.render( new Message(newId(),(Message)null,myId,serverURL, "", newparameters) );
             }
 	    msg += "    <metadataResponse>\n"+answer.SOAPString()+"\n    </metadataResponse>\n";
 	} else if ( method.equals("loadRequest") || method.equals("load") ) { // URL -> URI
-	    if ( newparameters.getParameter( "url" ) == null &&
-		 param.getParameter( "filename" ) != null ) {
+	    if ( newparameters.getProperty( "url" ) == null &&
+		 param.getProperty( "filename" ) != null ) {
 		// HTTP Server has stored it in filename (HTMLAServProfile)
-		newparameters.setParameter( "url",  "file://"+param.getParameter( "filename" ) );
-	    } else if ( newparameters.getParameter( "url" ) == null &&
-		 param.getParameter( "filename" ) == null ) {
-		answer = new NonConformParameters(0,(Message)null,myId,"",message,(Parameters)null);
+		newparameters.setProperty( "url",  "file://"+param.getProperty( "filename" ) );
+	    } else if ( newparameters.getProperty( "url" ) == null &&
+		 param.getProperty( "filename" ) == null ) {
+		answer = new NonConformParameters(0,(Message)null,myId,"",message,(Properties)null);
 	    }
 	    answer = manager.load( new Message(newId(),(Message)null,myId,serverURL,"", newparameters) );
 	    msg += "    <loadResponse>\n"+answer.SOAPString()+"    </loadResponse>\n";
 	    /*
 	      // JE2009: This has never been in use.
 	} else if ( method.equals("loadfileRequest") ) { // XML -> URI
-	    if ( newparameters.getParameter( "url" ) == null ) {
-		answer = new NonConformParameters(0,(Message)null,myId,"",message,(Parameters)null);
+	    if ( newparameters.getProperty( "url" ) == null ) {
+		answer = new NonConformParameters(0,(Message)null,myId,"",message,(Properties)null);
 	    } else {
 		answer = manager.load( new Message(newId(),(Message)null,myId,serverURL,"", newparameters) );
 	    }
@@ -394,7 +393,7 @@ public class WSAServProfile implements AlignmentServiceProfile {
 	if ( restful ) {
 	    return msg;
 	} else {
-	    return "<SOAP-ENV:Envelope\n   xmlns='http://exmo.inrialpes.fr/align/service'\n   xml:base='http://exmo.inrialpes.fr/align/service'\n   xmlns:SOAP-ENV='http://schemas.xmlsoap.org/soap/envelope/'\n   xmlns:xsi='http://www.w3.org/1999/XMLSchema-instance'\n   xmlns:xsd='http://www.w3.org/1999/XMLSchema'>\n  <SOAP-ENV:Body>\n"+msg+"</SOAP-ENV:Body>\n</SOAP-ENV:Envelope>\n";
+	    return "<SOAP-ENV:Envelope\n   xmlns='http://exmo.inrialpes.fr/align/service'\n   xml:base='http://exmo.inrialpes.fr/align/service'\n   xmlns:SOAP-ENV='http://schemas.xmlsoap.org/soap/envelope/'\n   xmlns:xsi='http://www.w3.org/1999/XMLSchema-instance'\n   xmlns:xsd='http://www.w3.org/1999/XMLSchema'>\n  <SOAP-ENV:Body>\n"+msg+"  </SOAP-ENV:Body>\n</SOAP-ENV:Envelope>\n";
 	}
     }
 
@@ -406,8 +405,8 @@ public class WSAServProfile implements AlignmentServiceProfile {
     /**
      * Extract parameters from a DOM document resulting from parsing a SOAP messgae
      */
-    private Parameters getParameters( Document doc ) {
-	Parameters params = new BasicParameters();
+    private Properties getParameters( Document doc ) {
+	Properties params = new Properties();
 	XPath path = XPathFactory.newInstance().newXPath();
 	try {
 	    XPathExpression expr = path.compile("//Envelope/Body/*");
@@ -419,10 +418,11 @@ public class WSAServProfile implements AlignmentServiceProfile {
 		String key = item.getNodeName();
 		if ( key != null ) {
 		    String val = item.getTextContent().trim();
+		    // This is for <param name="k">value</param>
 		    if ( key.equals("param") ) {
 			key = item.getAttributes().getNamedItem("name").getNodeValue();
 		    }
-		    params.setParameter( key, val );
+		    params.setProperty( key, val );
 		}
 	    }
 	} catch (XPathExpressionException e) {
@@ -435,20 +435,20 @@ public class WSAServProfile implements AlignmentServiceProfile {
 
     private int newId() { return localId++; }
 
-    private String buildAnswer( String tag, Message answer, Parameters param ){
+    private String buildAnswer( String tag, Message answer, Properties param ){
 	String res = "    <"+tag+">\n";
-	if ( param.getParameter("msgid") != null ) {
-	    res += "      <in-reply-to>"+param.getParameter("msgid")+"</in-reply-to>\n";
+	if ( param.getProperty("msgid") != null ) {
+	    res += "      <in-reply-to>"+param.getProperty("msgid")+"</in-reply-to>\n";
 	}
 	res += answer.SOAPString();
 	res += "    </"+tag+">\n";
 	return res;
     }
 
-    private String getClasses( String tag, Set<String> classlist, Parameters param ){
+    private String getClasses( String tag, Set<String> classlist, Properties param ){
 	String res = "    <"+tag+">\n      <classList>\n";
-	if ( param.getParameter("msgid") != null ) {
-	    res += "        <in-reply-to>"+param.getParameter("msgid")+"</in-reply-to>\n";
+	if ( param.getProperty("msgid") != null ) {
+	    res += "        <in-reply-to>"+param.getProperty("msgid")+"</in-reply-to>\n";
 	}
 	for( String mt: classlist ) {
 	    res += "        <classname>"+mt+"</classname>\n";
diff --git a/src/fr/inrialpes/exmo/align/service/WSAlignment.java b/src/fr/inrialpes/exmo/align/service/WSAlignment.java
index e5234d4426e014b5d769b5daee212f9973c9c19e..d1ddf12b8db30194cc58c3140df958c023eeea92 100644
--- a/src/fr/inrialpes/exmo/align/service/WSAlignment.java
+++ b/src/fr/inrialpes/exmo/align/service/WSAlignment.java
@@ -29,6 +29,7 @@ import java.util.Collections;
 import java.util.List;
 import java.util.Set;
 import java.util.ArrayList;
+import java.util.Properties;
 import java.io.File;
 import java.io.FileWriter;
 import java.io.PrintStream;
@@ -53,7 +54,6 @@ import org.semanticweb.owl.align.AlignmentException;
 import org.semanticweb.owl.align.AlignmentVisitor;
 import org.semanticweb.owl.align.Cell;
 import org.semanticweb.owl.align.Relation;
-import org.semanticweb.owl.align.Parameters;
 
 import fr.inrialpes.exmo.align.onto.Ontology;
 import fr.inrialpes.exmo.align.impl.URIAlignment;
@@ -83,10 +83,10 @@ public class WSAlignment extends URIAlignment implements AlignmentProcess {
       * Process matching
       * This does not work with regular AServ web service because it returns an URL
       **/
-     public void align( Alignment alignment, Parameters params ) throws AlignmentException {
+     public void align( Alignment alignment, Properties params ) throws AlignmentException {
 	 // Create the invokation message
-	 if ( params.getParameter("wserver") != null ) {
-	     serviceAddress = (String)params.getParameter("wserver");
+	 if ( params.getProperty("wserver") != null ) {
+	     serviceAddress = (String)params.getProperty("wserver");
 	 } else {
 	     throw new AlignmentException( "WSAlignment: required parameter : wserver" );
 	 }
@@ -107,10 +107,10 @@ public class WSAlignment extends URIAlignment implements AlignmentProcess {
 	 }
 	 message += "    <url1>"+uri1+"</url1>\n    <url2>"+uri2+"</url2>\n";
 	 // Parameter encoding
-	 for (Enumeration e = params.getNames(); e.hasMoreElements();) {
+	 for (Enumeration e = params.propertyNames(); e.hasMoreElements();) {
 	     String k = (String)e.nextElement();
              if ( k != null && !k.equals("") )
-	        message += "    <param name=\""+k+"\">"+params.getParameter(k)+"</param>\n";
+	        message += "    <param name=\""+k+"\">"+params.getProperty(k)+"</param>\n";
 	 }
 
 	 message += "  </SOAP-ENV:Body>\n</SOAP-ENV:Envelope>\n";
@@ -191,13 +191,13 @@ public class WSAlignment extends URIAlignment implements AlignmentProcess {
 	align.setLevel( getLevel() );
 	align.setFile1( getFile1() );
 	align.setFile2( getFile2() );
-	for ( Object ext : ((BasicParameters)extensions).getValues() ){
-	    align.setExtension( ((String[])ext)[0], ((String[])ext)[1], ((String[])ext)[2] );
+	for ( String[] ext : extensions.getValues() ){
+	    align.setExtension( ext[0], ext[1], ext[2] );
 	    }
 	String oldid = align.getExtension( Namespace.ALIGNMENT.uri, "id" );
 	if ( oldid != null && !oldid.equals("") ) {
 	    align.setExtension( Namespace.ALIGNMENT.uri, "derivedFrom", oldid );
-	    align.getExtensions().unsetParameter( Namespace.ALIGNMENT.uri+"id" );
+	    align.setExtension( Namespace.ALIGNMENT.uri, "id", (String)null );
 	}
 	align.setExtension( Namespace.ALIGNMENT.uri, "method", "http://exmo.inrialpes.fr/align/impl/URIAlignment#clone" );
 	try {
diff --git a/src/fr/inrialpes/exmo/align/service/jade/JadeFIPAAServProfile.java b/src/fr/inrialpes/exmo/align/service/jade/JadeFIPAAServProfile.java
index 43b28279cddd1a005830fc36aa9e83cab5aa766e..d2c6cad3b55efaea1cc219db6211ea24cabd616d 100755
--- a/src/fr/inrialpes/exmo/align/service/jade/JadeFIPAAServProfile.java
+++ b/src/fr/inrialpes/exmo/align/service/jade/JadeFIPAAServProfile.java
@@ -2,7 +2,7 @@
  * $Id$
  *
  * Copyright (C) Orange R&D, 2006-2007
- * Copyright (C) INRIA Rh�ne-Alpes, 2006-2007
+ * Copyright (C) INRIA, 2006-2007, 2009
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public License
@@ -36,6 +36,7 @@ import fr.inrialpes.exmo.align.service.AServProtocolManager;
 import fr.inrialpes.exmo.align.service.AlignmentServiceProfile;
 
 import java.io.File;
+import java.util.Properties;
 
 public class JadeFIPAAServProfile implements AlignmentServiceProfile {
 
@@ -44,7 +45,7 @@ public class JadeFIPAAServProfile implements AlignmentServiceProfile {
 	private AgentController algagentcontroller;
 	private Logger myLogger = Logger.getMyLogger(getClass().getName());
 
-	public void init( Parameters params, AServProtocolManager manager ) throws AServException {
+	public void init( Properties params, AServProtocolManager manager ) throws AServException {
 		int port = 8888;
 		int debug = 0;
 		Object args[] = new Object[2];
@@ -55,10 +56,10 @@ public class JadeFIPAAServProfile implements AlignmentServiceProfile {
 		// set up the Parameters as an argument to pass to the JADEFIPAServiceAgent
 		args[1]=params;
 		
-		if ( params.getParameter( "jade" ) != null )
-			port = Integer.parseInt( (String)params.getParameter( "jade" ) );
-		if ( params.getParameter( "debug" ) != null )
-			debug = ((Integer)params.getParameter( "debug" )).intValue() - 1;
+		if ( params.getProperty( "jade" ) != null )
+			port = Integer.parseInt( params.getProperty( "jade" ) );
+		if ( params.getProperty( "debug" ) != null )
+		    debug = Integer.parseInt( params.getProperty( "debug" ) ) - 1;
 
 		/**		
 	Properties props = new Properties();
diff --git a/src/fr/inrialpes/exmo/align/service/jade/JadeFIPAAServiceAgent.java b/src/fr/inrialpes/exmo/align/service/jade/JadeFIPAAServiceAgent.java
index e8c7fd39167df15016df4e7b575aaf43c2fce188..032434cb97ee7e1afb412bbbb21883ed8d43309e 100755
--- a/src/fr/inrialpes/exmo/align/service/jade/JadeFIPAAServiceAgent.java
+++ b/src/fr/inrialpes/exmo/align/service/jade/JadeFIPAAServiceAgent.java
@@ -42,8 +42,7 @@ import jade.lang.acl.ACLMessage;
 import jade.lang.acl.MessageTemplate;
 import jade.util.Logger;
 
-import org.semanticweb.owl.align.Parameters;
-
+import fr.inrialpes.exmo.align.impl.BasicParameters;
 import fr.inrialpes.exmo.align.service.AServProtocolManager;
 import fr.inrialpes.exmo.align.service.ErrorMsg;
 import fr.inrialpes.exmo.align.service.Message;
@@ -70,7 +69,7 @@ public class JadeFIPAAServiceAgent extends Agent {
 	private String serverId;
 	private AServProtocolManager manager;
 	private int localId=0;
-	private Parameters initialParameters;
+	private BasicParameters initialParameters;
 
 	//	FIPA ACL stuff
 
@@ -100,8 +99,8 @@ public class JadeFIPAAServiceAgent extends Agent {
 				myLogger.log(Logger.INFO, "Arg-"+i+" = "+args[i]);
 			}**/
 
-			manager=(AServProtocolManager) args[0];
-			initialParameters = (Parameters) args[1];
+		    manager=(AServProtocolManager) args[0];
+		    initialParameters = (BasicParameters) args[1];
 		}
 
 		myId = "LocalJADEInterface";
@@ -115,7 +114,7 @@ public class JadeFIPAAServiceAgent extends Agent {
 
 				String perf; // performative
 				String info; //parameters
-				Parameters params = initialParameters;
+				BasicParameters params = initialParameters;
 
 				MessageTemplate tpl =MessageTemplate.and(MessageTemplate.and(
 						MessageTemplate.MatchLanguage( codec.getName()),
@@ -259,16 +258,15 @@ public class JadeFIPAAServiceAgent extends Agent {
 
 	private int newId(){return localId++;}
 
-	private Parameters decodeMessage(ContentElement ce, Parameters param){
-
-		Parameters toReturn = param;
-		Action action=(Action) ce;
-		for(Iterator<Parameter> iter=action.getAllHasParameter();iter.hasNext();){
-			Parameter OntoParam = (Parameter)iter.next();
-			toReturn.setParameter(OntoParam.getName(), OntoParam.getValue()); 
-		}
-		return toReturn;
+    private BasicParameters decodeMessage(ContentElement ce, BasicParameters param){
+	BasicParameters toReturn = param;
+	Action action= (Action)ce;
+	for( Iterator<Parameter> iter = action.getAllHasParameter(); iter.hasNext(); ){
+	    Parameter OntoParam = (Parameter)iter.next();
+	    toReturn.setParameter( OntoParam.getName(), OntoParam.getValue() ); 
 	}
+	return toReturn;
+    }
 
 
 }
diff --git a/src/fr/inrialpes/exmo/align/util/EvalAlign.java b/src/fr/inrialpes/exmo/align/util/EvalAlign.java
index 385924f55a8a3e940f003ac6e82741f568923aab..3ce6deb68c81c24bcf7612d622b3df48af9ee65f 100644
--- a/src/fr/inrialpes/exmo/align/util/EvalAlign.java
+++ b/src/fr/inrialpes/exmo/align/util/EvalAlign.java
@@ -25,7 +25,6 @@ package fr.inrialpes.exmo.align.util;
 import org.semanticweb.owl.align.Alignment;
 import org.semanticweb.owl.align.AlignmentException;
 import org.semanticweb.owl.align.Evaluator;
-import org.semanticweb.owl.align.Parameters;
 
 import fr.inrialpes.exmo.align.parser.AlignmentParser;
 import fr.inrialpes.exmo.align.impl.eval.PRecEvaluator;
@@ -84,7 +83,7 @@ public class EvalAlign {
 
 
     public void run(String[] args) {
-	Parameters params = new BasicParameters();
+	BasicParameters params = new BasicParameters();
 	Evaluator eval = null;
 	String alignName1 = null;
 	String alignName2 = null;
@@ -130,8 +129,8 @@ public class EvalAlign {
 	
 	int i = g.getOptind();
 
-	params.setParameter("debug",new Integer(debug));
-	// debug = ((Integer)params.getParameter("debug")).intValue();
+	params.setParameter( "debug", Integer.toString( debug ) );
+	// debug = Integer.parseInt( params.getParameter("debug") );
 	
 	if (args.length > i+1 ) {
 	    alignName1 = args[i];
diff --git a/src/fr/inrialpes/exmo/align/util/ExtGroupEval.java b/src/fr/inrialpes/exmo/align/util/ExtGroupEval.java
index fe0dd1ea5c5373d019c9eb61f44f69fc1b68692d..7553a7309be94e804035e84509fac979ec392709 100644
--- a/src/fr/inrialpes/exmo/align/util/ExtGroupEval.java
+++ b/src/fr/inrialpes/exmo/align/util/ExtGroupEval.java
@@ -29,7 +29,6 @@
 package fr.inrialpes.exmo.align.util;
 
 import org.semanticweb.owl.align.Alignment;
-import org.semanticweb.owl.align.Parameters;
 import org.semanticweb.owl.align.Evaluator;
 
 import fr.inrialpes.exmo.align.impl.BasicParameters;
@@ -93,7 +92,7 @@ $Id$
 
 public class ExtGroupEval {
 
-    Parameters params = null;
+    BasicParameters params = null;
     String filename = null;
     String reference = "refalign.rdf";
     String format = "s";
@@ -187,7 +186,7 @@ public class ExtGroupEval {
 	}
 
 	params = new BasicParameters();
-	if (debug > 0) params.setParameter("debug", new Integer(debug-1));
+	if (debug > 0) params.setParameter( "debug", Integer.toString( debug-1 ) );
 
 	print( iterateDirectories() );
     }
@@ -265,7 +264,7 @@ public class ExtGroupEval {
 	    eval = new ExtPREvaluator(ObjectAlignment.toObjectAlignment( (URIAlignment)align1 ), 
 				      ObjectAlignment.toObjectAlignment( (URIAlignment)align2 ) );
 	    // Compare
-	    params.setParameter( "debug", new Integer( nextdebug ) );
+	    params.setParameter( "debug", Integer.toString( nextdebug ) );
 	    eval.eval( params ) ;
 	} catch (Exception ex) {
 	    if ( debug > 1 ) {
diff --git a/src/fr/inrialpes/exmo/align/util/GroupAlign.java b/src/fr/inrialpes/exmo/align/util/GroupAlign.java
index dddcedae49c26fa0dec71c0c8aaca054769e95a9..1e9ce5d7456ea9aa0db2ffadee1aa6efa62065c0 100644
--- a/src/fr/inrialpes/exmo/align/util/GroupAlign.java
+++ b/src/fr/inrialpes/exmo/align/util/GroupAlign.java
@@ -34,7 +34,6 @@ package fr.inrialpes.exmo.align.util;
 import org.semanticweb.owl.align.Alignment;
 import org.semanticweb.owl.align.AlignmentProcess;
 import org.semanticweb.owl.align.AlignmentVisitor;
-import org.semanticweb.owl.align.Parameters;
 
 import fr.inrialpes.exmo.align.impl.Annotations;
 import fr.inrialpes.exmo.align.impl.Namespace;
@@ -88,7 +87,7 @@ $Id$
 
 public class GroupAlign {
 
-    Parameters params = null;
+    BasicParameters params = null;
     String filename = "align";
     String paramfile = null;
     String urlprefix = null;
@@ -210,8 +209,7 @@ public class GroupAlign {
 	if (debug == 0 && params.getParameter("debug") != null) {
 	    debug = Integer.parseInt((String)params.getParameter("debug"));
 	}
-	// Exception to the parameter as string rule
-	if (debug > 0) params.setParameter("debug", new Integer(debug-1));
+	if (debug > 0) params.setParameter( "debug", Integer.toString( debug-1 ) );
 
 	iterateDirectories();
     }
diff --git a/src/fr/inrialpes/exmo/align/util/GroupEval.java b/src/fr/inrialpes/exmo/align/util/GroupEval.java
index e7803bce8cf03b0915ef9d67ad054bc68a67a185..3b626350b3acd7198519a3c6373b56ca3cd48435 100644
--- a/src/fr/inrialpes/exmo/align/util/GroupEval.java
+++ b/src/fr/inrialpes/exmo/align/util/GroupEval.java
@@ -27,7 +27,6 @@
 package fr.inrialpes.exmo.align.util;
 
 import org.semanticweb.owl.align.Alignment;
-import org.semanticweb.owl.align.Parameters;
 import org.semanticweb.owl.align.Evaluator;
 
 import fr.inrialpes.exmo.align.impl.BasicParameters;
@@ -88,7 +87,7 @@ $Id$
 
 public class GroupEval {
 
-    Parameters params = null;
+    BasicParameters params = null;
     String filename = null;
     String reference = "refalign.rdf";
     String format = "pr";
@@ -184,7 +183,7 @@ public class GroupEval {
 	}
 
 	params = new BasicParameters();
-	if (debug > 0) params.setParameter("debug", new Integer(debug-1));
+	if (debug > 0) params.setParameter( "debug", Integer.toString( debug-1 ) );
 
 	print( iterateDirectories() );
     }
@@ -261,7 +260,7 @@ public class GroupEval {
 	    // Create evaluator object
 	    eval = new PRecEvaluator( align1, align2 );
 	    // Compare
-	    params.setParameter( "debug", new Integer( nextdebug ) );
+	    params.setParameter( "debug", Integer.toString( nextdebug ) );
 	    eval.eval( params ) ;
 	} catch (Exception ex) {
 	    if ( debug > 1 ) {
diff --git a/src/fr/inrialpes/exmo/align/util/GroupOutput.java b/src/fr/inrialpes/exmo/align/util/GroupOutput.java
index 11f27109e49fb4de1ee0f931b28c05f0fe3421c5..027d80ad44707d62d40cb013aee5e0a4e70727d5 100644
--- a/src/fr/inrialpes/exmo/align/util/GroupOutput.java
+++ b/src/fr/inrialpes/exmo/align/util/GroupOutput.java
@@ -29,7 +29,6 @@ package fr.inrialpes.exmo.align.util;
 
 import org.semanticweb.owl.align.Alignment;
 import org.semanticweb.owl.align.AlignmentException;
-import org.semanticweb.owl.align.Parameters;
 import org.semanticweb.owl.align.Evaluator;
 
 import fr.inrialpes.exmo.align.impl.BasicParameters;
@@ -108,7 +107,7 @@ public class GroupOutput {
 			    {257},//h=13
 			    {254,260,261},//i=14
 			    {262,265,266} };//emptyset=15
-    Parameters params = null;
+    BasicParameters params = null;
     Vector<String> listAlgo;
     String fileNames = "";
     String outFile = null;
@@ -177,9 +176,9 @@ public class GroupOutput {
 	}
 
 	params = new BasicParameters();
-	if (debug > 0) params.setParameter("debug", new Integer(debug-1));
+	if (debug > 0) params.setParameter( "debug", Integer.toString(debug-1) );
 
-	params.setParameter("step", new Integer(SIZE));
+	params.setParameter( "step", Integer.toString(SIZE) );
 
 	// Set output file
 	OutputStream stream;
@@ -271,7 +270,7 @@ public class GroupOutput {
 	// Create evaluator object
 	eval = new PRecEvaluator( align1, align2 );
 	// Compare
-	params.setParameter( "debug", new Integer( nextdebug ) );
+	params.setParameter( "debug", Integer.toString( nextdebug ) );
 	eval.eval( params ) ;
 	return eval;
     }
diff --git a/src/fr/inrialpes/exmo/align/util/Procalign.java b/src/fr/inrialpes/exmo/align/util/Procalign.java
index e09e56caf566d54885ce85389b9330ce1c9455e2..5ff9847e1c11b2bc3afcf2edba6869a4d6a6db8d 100644
--- a/src/fr/inrialpes/exmo/align/util/Procalign.java
+++ b/src/fr/inrialpes/exmo/align/util/Procalign.java
@@ -30,7 +30,6 @@ package fr.inrialpes.exmo.align.util;
 import org.semanticweb.owl.align.Alignment;
 import org.semanticweb.owl.align.AlignmentProcess;
 import org.semanticweb.owl.align.AlignmentVisitor;
-import org.semanticweb.owl.align.Parameters;
 
 import fr.inrialpes.exmo.align.impl.Annotations;
 import fr.inrialpes.exmo.align.impl.Namespace;
@@ -114,7 +113,7 @@ public class Procalign {
 	AlignmentVisitor renderer = null;
 	int debug = 0;
 	double threshold = 0;
-	Parameters params = new BasicParameters();
+	BasicParameters params = new BasicParameters();
 
 	LongOpt[] longopts = new LongOpt[10];
 
@@ -194,7 +193,7 @@ public class Procalign {
 	int i = g.getOptind();
 
 	if (debug > 0) {
-	    params.setParameter("debug", new Integer(debug));
+	    params.setParameter( "debug", Integer.toString(debug) );
 	} else if ( params.getParameter("debug") != null ) {
 	    debug = Integer.parseInt((String)params.getParameter("debug"));
 	}
diff --git a/src/org/semanticweb/owl/align/Alignment.java b/src/org/semanticweb/owl/align/Alignment.java
index a7a969a4b565083cdc5c170cab350e23bdd3d806..40db049de502db465d5d30cd16c6528b23d51712 100644
--- a/src/org/semanticweb/owl/align/Alignment.java
+++ b/src/org/semanticweb/owl/align/Alignment.java
@@ -24,6 +24,7 @@ import java.lang.Cloneable;
 import java.lang.Iterable;
 import java.util.Enumeration;
 import java.util.Iterator;
+import java.util.Collection;
 import java.util.Set;
 import java.net.URI;
 
@@ -154,8 +155,10 @@ public interface Alignment extends Cloneable, Iterable<Cell>, Visitable {
     /**
      * Extensions are a way to read and add other information (metadata)
      * to the alignment structure itself.
+     * getExtensions returns a set of tripes: uri*label*value
+     * all three being String
      */
-    public Parameters getExtensions();
+    public Collection<String[]> getExtensions();
     public String getExtension( String uri, String label );
     public void setExtension( String uri, String label, String value );
 
diff --git a/src/org/semanticweb/owl/align/AlignmentProcess.java b/src/org/semanticweb/owl/align/AlignmentProcess.java
index 4b1b3b23e6a8b8f5369afaf3b7261d5480304e8a..55c27d6231573895a0c488d5ae80bcd4c5ae08cc 100644
--- a/src/org/semanticweb/owl/align/AlignmentProcess.java
+++ b/src/org/semanticweb/owl/align/AlignmentProcess.java
@@ -1,7 +1,7 @@
 /*
  * $Id$
  *
- * Copyright (C) INRIA Rh�ne-Alpes, 2003-2004, 2007
+ * Copyright (C) INRIA, 2003-2004, 2007, 2009
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU Lesser General Public License as published by
@@ -20,6 +20,8 @@
 
 package org.semanticweb.owl.align; 
 
+import java.util.Properties;
+
 /**
  * Represents an executable alignment
  *
@@ -37,7 +39,7 @@ public interface AlignmentProcess extends Alignment
      * TODO: a set of parameters should better be passed to the alignment
      * method.
      */
-    public void align( Alignment alignment, Parameters param ) throws AlignmentException;
+    public void align( Alignment alignment, Properties param ) throws AlignmentException;
 
     /**
      * Returns the parameters that the align() method is able to process.
diff --git a/src/org/semanticweb/owl/align/AlignmentVisitor.java b/src/org/semanticweb/owl/align/AlignmentVisitor.java
index b14138ac9a6478f4c5cc11a0dc1ef1ff93b794e1..7ed680aa9cea168edecfd33b31358a28317ed65e 100644
--- a/src/org/semanticweb/owl/align/AlignmentVisitor.java
+++ b/src/org/semanticweb/owl/align/AlignmentVisitor.java
@@ -1,7 +1,7 @@
 /*
  * $Id$
  *
- * Copyright (C) INRIA Rh�ne-Alpes, 2004, 2008
+ * Copyright (C) INRIA, 2004, 2008-2009
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU Lesser General Public License as published by
@@ -20,6 +20,8 @@
 
 package org.semanticweb.owl.align;
 
+import java.util.Properties;
+
 /**
  *
  *
@@ -28,6 +30,6 @@ package org.semanticweb.owl.align;
  */
 
 public interface AlignmentVisitor {
-    public void init( Parameters p );
+    public void init( Properties p );
     public void visit( Visitable o ) throws AlignmentException;
  }
diff --git a/src/org/semanticweb/owl/align/Cell.java b/src/org/semanticweb/owl/align/Cell.java
index 6933d4ffe9ae3c0466f37fc51ea932cf89b5aff5..9450c3a65b7a303b05f742a01223f073637bd52a 100644
--- a/src/org/semanticweb/owl/align/Cell.java
+++ b/src/org/semanticweb/owl/align/Cell.java
@@ -24,6 +24,7 @@ import java.io.PrintStream;
 import java.io.PrintWriter;
 import java.io.IOException;
 import java.net.URI;
+import java.util.Collection;
 
 import org.xml.sax.ContentHandler;
 import org.xml.sax.SAXException;
@@ -73,9 +74,12 @@ public interface Cell extends Comparable<Cell>, Visitable {
     /**
      * Extensions are a way to read and add other information (metadata)
      * to the Cell structure itself.
+     * getExtensions returns a set of tripes: uri*label*value
+     * all three being String
      */
-    public Parameters getExtensions();
-    public void setExtensions( Parameters param );
+    public Collection<String[]> getExtensions();
+    //public Parameters getExtensions();
+    //public void setExtensions( Parameters param );
     public String getExtension( String uri, String label );
     public void setExtension( String uri, String label, String value );
 
diff --git a/src/org/semanticweb/owl/align/Evaluator.java b/src/org/semanticweb/owl/align/Evaluator.java
index 29b1a44609c64c3c8469a82ad291297c395a688b..b75fe38ac30c566bb7531dfd3f6859bff9ec7cb3 100644
--- a/src/org/semanticweb/owl/align/Evaluator.java
+++ b/src/org/semanticweb/owl/align/Evaluator.java
@@ -1,7 +1,7 @@
 /*
  * $Id$
  *
- * Copyright (C) INRIA, 2004, 2007-2008
+ * Copyright (C) INRIA, 2004, 2007-2009
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU Lesser General Public License as published by
@@ -21,6 +21,7 @@
 package org.semanticweb.owl.align; 
 
 import java.io.PrintWriter;
+import java.util.Properties;
 
 /**
  * Assess the closeness between two ontology alignments.
@@ -39,7 +40,7 @@ public interface Evaluator {
      * Returns a double (between 0 and 1) providing an idea of the
      * proximity
      */
-    public double eval( Parameters param ) throws AlignmentException;
+    public double eval( Properties param ) throws AlignmentException;
 
     /**
      * Run the evaluation between the two ontologies.
@@ -49,7 +50,7 @@ public interface Evaluator {
      * //@deprecated The OntologyCache is now internal, use eval( params ) instead
      **/
     //@Deprecated
-    public double eval( Parameters param, Object cache ) throws AlignmentException;
+    public double eval( Properties param, Object cache ) throws AlignmentException;
 
     /** Housekeeping **/
     /**
diff --git a/src/org/semanticweb/owl/align/Parameters.java b/src/org/semanticweb/owl/align/Parameters.java
index 609fb56e2ed459d2f24486816952ede71705db2b..ffd443100fe5539174014bf7031f561e144e8ee7 100644
--- a/src/org/semanticweb/owl/align/Parameters.java
+++ b/src/org/semanticweb/owl/align/Parameters.java
@@ -1,7 +1,7 @@
 /*
  * $Id$
  *
- * Copyright (C) INRIA Rh�ne-Alpes, 2004, 2008
+ * Copyright (C) INRIA, 2004, 2008, 2009
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public License
@@ -40,9 +40,10 @@ import java.util.Enumeration;
 
 public interface Parameters {
  
-    public void setParameter(String name, Object value);
+    //public void setParameter(String name, Object value);
+    public void setParameter(String name, String value);
     public void unsetParameter(String name);
-    public Object getParameter(String name);
+    public String getParameter(String name);
     public Enumeration<String> getNames();
 
     public void write();