diff --git a/lib/procalign.jar b/lib/procalign.jar
index f56133e0a2a9f63b751ab9c8d932b0cd6683490a..fd3e519aa903acdb385062c1b24f5338fa7c9902 100644
Binary files a/lib/procalign.jar and b/lib/procalign.jar differ
diff --git a/src/fr/inrialpes/exmo/align/impl/BasicParameters.java b/src/fr/inrialpes/exmo/align/impl/BasicParameters.java
index 5aafb7f63dbed9d15908ab0892d0cd3fe0deaa05..2cd41c23240b47f34beb827f9f0bb3f8ebf83b37 100644
--- a/src/fr/inrialpes/exmo/align/impl/BasicParameters.java
+++ b/src/fr/inrialpes/exmo/align/impl/BasicParameters.java
@@ -58,4 +58,21 @@ public class BasicParameters implements Parameters {
     return parameters.keys();
   }
 
+    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>");
+	}
+	System.out.println("</Parameters>");
+    }
+
+    public static Parameters read(){
+	Parameters p = new BasicParameters();
+	// open the stream
+	// parse it
+	// fill the structure
+	return p;
+    }
 }
diff --git a/src/fr/inrialpes/exmo/align/util/Procalign.java b/src/fr/inrialpes/exmo/align/util/Procalign.java
index a049345a85c0cb6c371615a9e67a3f5c849f06f6..0475e2707f5a792eec60105270ce3da05abe6d5c 100644
--- a/src/fr/inrialpes/exmo/align/util/Procalign.java
+++ b/src/fr/inrialpes/exmo/align/util/Procalign.java
@@ -115,7 +115,6 @@ public class Procalign {
     }
 
     public static Alignment run(String[] args) throws Exception {
-	Parameters params = null;
 	OWLOntology onto1 = null;
 	OWLOntology onto2 = null;
 	AlignmentProcess result = null;
@@ -130,8 +129,9 @@ public class Procalign {
 	AlignmentVisitor renderer = null;
 	int debug = 0;
 	double threshold = 0;
+	Parameters params = new BasicParameters();
 
-	LongOpt[] longopts = new LongOpt[8];
+	LongOpt[] longopts = new LongOpt[9];
 
 	longopts[0] = new LongOpt("help", LongOpt.NO_ARGUMENT, null, 'h');
 	longopts[1] = new LongOpt("output", LongOpt.REQUIRED_ARGUMENT, null, 'o');
@@ -141,8 +141,10 @@ public class Procalign {
 	longopts[5] = new LongOpt("impl", LongOpt.REQUIRED_ARGUMENT, null, 'i');
 	longopts[6] = new LongOpt("threshold", LongOpt.REQUIRED_ARGUMENT, null, 't');
 	longopts[7] = new LongOpt("cutmethod", LongOpt.REQUIRED_ARGUMENT, null, 'T');
+	// Is there a way for that in LongOpt ???
+	longopts[8] = new LongOpt("D", LongOpt.REQUIRED_ARGUMENT, null, 'D');
 
-	Getopt g = new Getopt("", args, "ho:a:d::r:t:T:i:", longopts);
+	Getopt g = new Getopt("", args, "ho:a:d::r:t:T:i:D::", longopts);
 	int c;
 	String arg;
 
@@ -181,13 +183,26 @@ public class Procalign {
 		if ( arg != null ) debug = Integer.parseInt(arg.trim());
 		else debug = 4;
 		break;
+	    case 'D' :
+		/* Parameter definition */
+		arg = g.getOptarg();
+		int index = arg.indexOf('=');
+		if ( index != -1 ) {
+		    params.setParameter( arg.substring( 0, index), 
+					 arg.substring(index+1));
+		} else {
+		    System.err.println("Bad parameter syntax: "+g);
+		    usage();
+		    System.exit(0);
+		    
+		}
+		break;
 	    }
 	}
 	
 	int i = g.getOptind();
 
 	loadedOntologies = new Hashtable();
-	params = new BasicParameters();
 	if (debug > 0) params.setParameter("debug", new Integer(debug));
 	// debug = ((Integer)params.getParameter("debug")).intValue();
 	
@@ -202,7 +217,7 @@ public class Procalign {
 		uri1 = new URI(args[i++]);
 		uri2 = new URI(args[i]);
 	    } else if (initName == null) {
-		System.out.println("Two URIs required");
+		System.err.println("Two URIs required");
 		usage();
 		System.exit(0);
 	    }
@@ -313,6 +328,7 @@ public class Procalign {
 	System.out.println("\t--threshold=double -t double\tFilters the similarities under threshold");
 	System.out.println("\t--cutmethod=hard|perc|prop|best|span -T hard|perc|prop|best|span\tmethod for computing the threshold");
 	System.out.println("\t--debug[=n] -d [n]\t\tReport debug info at level n");
+	System.out.println("\t-Dparam=value\t\t\tSet parameter");
 	System.out.println("\t--help -h\t\t\tPrint this message");
     }
 }
diff --git a/src/org/semanticweb/owl/align/Parameters.java b/src/org/semanticweb/owl/align/Parameters.java
index b0d8902f4ec3b1fede9874f5fe43bf8c8db566cf..383c2c297d6ddb1b4d6ce761aaaf58da309a1d99 100644
--- a/src/org/semanticweb/owl/align/Parameters.java
+++ b/src/org/semanticweb/owl/align/Parameters.java
@@ -42,4 +42,6 @@ public interface Parameters {
     public Object getParameter(String name);
     public Enumeration getNames();
 
+    public void write();
+    //public static Parameters read();
 }