diff --git a/build.xml b/build.xml
index 6d9bc8f0790b52d9e65c7ee220e80a4ed4bd1fe3..b73ca87fcf4df6ff639bb40b46a8360343ae5a66 100644
--- a/build.xml
+++ b/build.xml
@@ -210,7 +210,7 @@
     <onejar file="ontowrap"
       group="fr.inrialpes.exmo"
       desc="Ontology wrapper"
-      path="jena/arq.jar jena/icu4j.jar jena/iri.jar jena/jena.jar skosapi/skosapi.jar owlapi10/api.jar owlapi10/impl.jar owlapi10/io.jar owlapi10/rdfapi.jar owlapi10/rdfparser.jar owlapi3/owlapi-bin.jar">
+      path="jena/arq.jar jena/iri.jar jena/jena.jar skosapi/skosapi.jar owlapi10/api.jar owlapi10/impl.jar owlapi10/io.jar owlapi10/rdfapi.jar owlapi10/rdfparser.jar owlapi3/owlapi-bin.jar">
       <files>
 	<fileset dir="classes">
 	  <include name="fr/inrialpes/exmo/ontowrap/**/*.class" />
@@ -224,7 +224,7 @@
       group="fr.inrialpes.exmo.align"
       desc="Alignment API implementation"
       main="fr.inrialpes.exmo.align.cli.Procalign"
-      path="skosapi/skosapi.jar owlapi30/owlapi-bin.jar ontosim/ontosim.jar cli/commons-cli.jar slf4j/jcl-over-slf4j.jar slf4j/log4j-over-slf4j.jar slf4j/slf4j-api.jar jwnl/jwnl.jar lucene/lucene-core.jar jena/jena.jar jena/iri.jar jena/icu4j.jar iddl/iddl.jar xerces/xercesImpl.jar xerces/resolver.jar xerces/xml-apis.jar hermit/hermit.jar align.jar ontowrap.jar procalign.jar">
+      path="skosapi/skosapi.jar owlapi30/owlapi-bin.jar ontosim/ontosim.jar cli/commons-cli.jar slf4j/jcl-over-slf4j.jar slf4j/log4j-over-slf4j.jar slf4j/slf4j-api.jar jwnl/jwnl.jar lucene/lucene-core.jar jena/jena.jar jena/iri.jar iddl/iddl.jar xerces/xercesImpl.jar xerces/resolver.jar xerces/xml-apis.jar hermit/hermit.jar align.jar ontowrap.jar procalign.jar">
       <files>
 	<fileset dir="classes">
 	  <include name="fr/inrialpes/exmo/align/impl/**/*.class"/>
@@ -527,7 +527,6 @@
     <onepom file="jdbc/mysql-connector-java" />
     <onepom file="jdbc/postgresql-jdbc4" />
     <onepom file="jena/arq" />
-    <onepom file="jena/icu4j" />
     <onepom file="jena/iri" />
     <onepom file="jena/jena" />
     <onepom file="jetty/jetty-util" />
diff --git a/html/relnotes.html b/html/relnotes.html
index eb504151cec7f0ea48b6c52ce01606571386ed0b..5599154e4feeb4eba8f95dddb2458cd265ec9a11 100644
--- a/html/relnotes.html
+++ b/html/relnotes.html
@@ -73,7 +73,7 @@ with a warning:
 <!--h2>Version 4.9 (1xxx): ??/??/201X - Al pesto</h2-->
 <!--h2>Version 4.8 (1xxx): ??/??/201x - Antésine</h2-->
 <!--h2>Version 4.7 (1xxx): ??/??/201x - Letraset</h2-->
-<!--h2>Version 4.6 (1xxx): ??/01/2014 - Da lec'h all</h2-->
+<!--h2>Version 4.6 (18xx): ??/01/2014 - Da lec'h all</h2-->
 <p><ul compact="1">
 <li>Fixed a bug in <tt>EDOALAlignment.init()</tt> which would prohibit rendering (edoal)</li>
 <li>Fixed a bug in <tt>OWLAxiomsRendererVisitor</tt>, <tt>SWRLRendererVisitor</tt>, <tt>SEKTMappingRendererVisitor</tt>, <tt>COWLMappingRendererVisitor</tt> <tt>SPARQLConstructRendererVisitor</tt>, and <tt>SPARQLSelectRendererVisitor</tt> which sometimes rendered alignments empty (impl)</li>
@@ -90,6 +90,12 @@ with a warning:
 <li>Updated tutorial2 with deprecated <tt>BasicParameters</tt> (tutorial)</li>
 <li>Added complete command line option tests in <tt>tests/clitest.sh</tt> (cli)</li>
 <li>Upgraded to <span style="color: green">SLF4J</span> to 1.7.5 (lib)</li>
+<li>Upgraded to <span style="color: green">xercesImpl</span> to 2.11.0 (lib)</li>
+<!--li>Upgraded to <span style="color: green">Lucene</span> to 4.6.0 (lib)</li-->
+<li>Upgraded to <span style="color: green">mysql</span> to 5.1.28 and <span style="color: green">postgres</span> to 9.3-1100 (lib)</li>
+<li>Upgraded to <span style="color: green">Jena</span> to 2.9.0 (lib)</li>
+<li>Upgraded to <span style="color: green">OWL API</span> to 3.4.8 (lib)</li>
+<li>Upgraded to <span style="color: green">HermiT</span> to 1.3.8 (lib)</li>
 </ul></p>
 
 <h2>Version 4.5 (1847): 25/03/2013 - Building 16</h2>
diff --git a/lib/hermit/hermit.jar b/lib/hermit/hermit.jar
index 2043a963a705ae900c0808969199deaf95621a13..408886017cb07f855f1b1affce059040a4c5b037 100644
Binary files a/lib/hermit/hermit.jar and b/lib/hermit/hermit.jar differ
diff --git a/lib/hermit/hermit.pom b/lib/hermit/hermit.pom
index 3f665d244b82528efbac03cb9b17fee58a939a16..df93b593f88e43605e1aeebd597d22287a703db1 100644
--- a/lib/hermit/hermit.pom
+++ b/lib/hermit/hermit.pom
@@ -3,7 +3,7 @@
 
   <groupId>org.semanticweb.HermiT</groupId>
   <artifactId>HermiT</artifactId>
-  <version>1.3.6</version>
+  <version>1.3.8</version>
   <!-- This is a stripped down version of HermiT with suppressed:
        getopt, owl-api, common-loggins -->
   <name>HermiT</name>
diff --git a/lib/jdbc/mysql-connector-java.jar b/lib/jdbc/mysql-connector-java.jar
index af5847eed4ccfd139427aaadbf3e9f3fbcef020d..2f1b7ab5fb924a6e637a6b605721ea85f0af7884 100644
Binary files a/lib/jdbc/mysql-connector-java.jar and b/lib/jdbc/mysql-connector-java.jar differ
diff --git a/lib/jdbc/mysql-connector-java.pom b/lib/jdbc/mysql-connector-java.pom
index a975c9a7f785c313213ac2a9b6d4101f3e41b8e7..f9be14a8db5eca32122766f15c38ad4cb5ba1151 100644
--- a/lib/jdbc/mysql-connector-java.pom
+++ b/lib/jdbc/mysql-connector-java.pom
@@ -3,7 +3,7 @@
 
   <groupId>com.mysql</groupId>
   <artifactId>mysql-connector-java</artifactId>
-  <version>5.1.12</version>
+  <version>5.1.28</version>
   <name>Java Database connector (JDBC) for MySQL</name>
   <licenses>
     <license>
diff --git a/lib/jdbc/postgresql-jdbc4.jar b/lib/jdbc/postgresql-jdbc4.jar
index e21beec54882a8f5b27fe277055859dd2c33fe01..04a86ad7a67a96c37fa4fc1e71fec951d220dda5 100644
Binary files a/lib/jdbc/postgresql-jdbc4.jar and b/lib/jdbc/postgresql-jdbc4.jar differ
diff --git a/lib/jdbc/postgresql-jdbc4.pom b/lib/jdbc/postgresql-jdbc4.pom
index 1c611703beb913994ba699b7512069357ef50c27..39db5e83be61153847c87c08d6d6c4dc58491300 100644
--- a/lib/jdbc/postgresql-jdbc4.pom
+++ b/lib/jdbc/postgresql-jdbc4.pom
@@ -3,7 +3,7 @@
 
   <groupId>org.postgresql</groupId>
   <artifactId>postgresql-jdbc4</artifactId>
-  <version>8.4-701</version>
+  <version>9.3-1100</version>
   <name>Java Database connector (JDBC) for Postgres</name>
   <licenses>
     <license>
diff --git a/lib/jena/arq.jar b/lib/jena/arq.jar
index d4ac9a3fd4c2fb4358f1d328dd2cbcc1d4679387..0d3c9a7763f1bbc591ddf9e3892e400838963424 100644
Binary files a/lib/jena/arq.jar and b/lib/jena/arq.jar differ
diff --git a/lib/jena/arq.pom b/lib/jena/arq.pom
index aae2725b412a7ee44304f6a56847173f2cb264b4..702ea8f24a0e433d3bac13b3298f212178beff0d 100644
--- a/lib/jena/arq.pom
+++ b/lib/jena/arq.pom
@@ -3,7 +3,7 @@
 
   <groupId>org.apache.jena</groupId>
   <artifactId>jena-arq</artifactId>
-  <version>2.9.0-incubating   q</version>
+  <version>2.11.0</version>
   <name>ARQ</name>
   <description>ARQ is a SPARQL 1.1 query engine for Jena</description>
   <packaging>jar</packaging>
diff --git a/lib/jena/icu4j.jar b/lib/jena/icu4j.jar
deleted file mode 100644
index f5e8c167e7f7f3d078407859cb50b8abf23c697e..0000000000000000000000000000000000000000
Binary files a/lib/jena/icu4j.jar and /dev/null differ
diff --git a/lib/jena/icu4j.pom b/lib/jena/icu4j.pom
deleted file mode 100644
index 3fbc948c537e1cbae613c343be570e74507c20c3..0000000000000000000000000000000000000000
--- a/lib/jena/icu4j.pom
+++ /dev/null
@@ -1,126 +0,0 @@
-<project>
-  <modelVersion>4.0.0</modelVersion>
-
-  <groupId>com.ibm.icu</groupId>
-  <artifactId>icu4j</artifactId>
-  <version>3.4.4</version>
-  <name>ICU4J</name>
-  <description>International Component for Unicode for Java (ICU4J) is a mature, widely used Java library providing Unicode and Globalization support</description>
-  <licenses>
-    <license>
-      <name>ICU License</name>
-      <url>http://source.icu-project.org/repos/icu/icu/trunk/license.html</url>
-      <distribution>repo</distribution>
-    </license>
-  </licenses>
-
-  <url>http://icu-project.org/</url>
-
-
-  <developers>
-    <developer>
-      <id>mark</id>
-      <name>Mark Davis</name>
-      <organization>Google</organization>
-      <roles>
-        <role>PMC Member</role>
-      </roles>
-    </developer>
-    <developer>
-      <id>emmons</id>
-      <name>John Emmons</name>
-      <organization>IBM Corporation</organization>
-      <roles>
-        <role>PMC Member</role>
-      </roles>
-    </developer>
-    <developer>
-      <id>doug</id>
-      <name>Doug Felt</name>
-      <organization>Google</organization>
-      <roles>
-        <role>PMC Member</role>
-      </roles>
-    </developer>
-    <developer>
-      <id>deborah</id>
-      <name>Deborah Goldsmith</name>
-      <organization>Apple</organization>
-      <roles>
-        <role>PMC Member</role>
-      </roles>
-    </developer>
-    <developer>
-      <id>srl</id>
-      <name>Steven Loomis</name>
-      <organization>IBM Corporation</organization>
-      <roles>
-        <role>PMC Member</role>
-      </roles>
-    </developer>
-    <developer>
-      <id>markus</id>
-      <name>Markus Scherer</name>
-      <organization>Google</organization>
-      <roles>
-        <role>PMC Member</role>
-      </roles>
-    </developer>
-    <developer>
-      <id>yoshito</id>
-      <name>Yoshito Umaoka</name>
-      <organization>IBM Corporation</organization>
-      <roles>
-        <role>PMC Member</role>
-      </roles>
-    </developer>
-  </developers>
-
-  <mailingLists>
-    <mailingList>
-      <name>icu-support</name>
-      <subscribe>https://lists.sourceforge.net/lists/listinfo/icu-support</subscribe>
-      <unsubscribe>https://lists.sourceforge.net/lists/listinfo/icu-support</unsubscribe>
-      <post>icu-support@lists.sourceforge.net</post>
-      <archive>http://sourceforge.net/mailarchive/forum.php?forum_name=icu-support</archive>
-    </mailingList>
-    <mailingList>
-      <name>icu-announce</name>
-      <subscribe>https://lists.sourceforge.net/lists/listinfo/icu-announce</subscribe>
-      <unsubscribe>https://lists.sourceforge.net/lists/listinfo/icu-announce</unsubscribe>
-      <post>icu-announce@lists.sourceforge.net</post>
-      <archive>http://sourceforge.net/mailarchive/forum.php?forum_name=icu-announce</archive>
-    </mailingList>
-    <mailingList>
-      <name>icu-design</name>
-      <subscribe>https://lists.sourceforge.net/lists/listinfo/icu-design</subscribe>
-      <unsubscribe>https://lists.sourceforge.net/lists/listinfo/icu-design</unsubscribe>
-      <post>icu-design@lists.sourceforge.net</post>
-      <archive>http://sourceforge.net/mailarchive/forum.php?forum_name=icu-design</archive>
-    </mailingList>
-  </mailingLists>
-
-  <scm>
-    <connection>scm:svn:http://source.icu-project.org/repos/icu/icu4j/trunk/</connection>
-    <developerConnection>scm:svn:http://source.icu-project.org/repos/icu/icu4j/trunk/</developerConnection>
-    <url>http://source.icu-project.org/repos/icu/icu4j/trunk/</url>
-  </scm>
-  <issueManagement>
-    <system>Trac</system>
-    <url>http://bugs.icu-project.org/trac/</url>
-  </issueManagement>
-
-  <distributionManagement>
-    <repository>
-      <id>icu4j-releases</id>
-      <name>ICU4J Central Repository</name>
-      <url>http://oss.sonatype.org/service/local/staging/deploy/maven2</url>
-    </repository>
-    <snapshotRepository>
-      <id>icu4j-snapshots</id>
-      <name>ICU4J Central Development Repository</name>
-      <url>http://oss.sonatype.org/content/repositories/snapshots</url>
-    </snapshotRepository>
-  </distributionManagement>
-
-</project>
diff --git a/lib/jena/iri.jar b/lib/jena/iri.jar
index 23830b7f7d57af33a71aef84d0c94d9a26111041..ef0ff7edb4132510f0afbec659f2b7792680a826 100644
Binary files a/lib/jena/iri.jar and b/lib/jena/iri.jar differ
diff --git a/lib/jena/iri.pom b/lib/jena/iri.pom
index 9430db55a86763f9ee96589148a538da73889111..0af55190b4a461f942d5faa5b4089b3ca323f453 100644
--- a/lib/jena/iri.pom
+++ b/lib/jena/iri.pom
@@ -3,7 +3,7 @@
 
   <groupId>org.apache.jena</groupId>
   <artifactId>jena-iri</artifactId>
-  <version>0.9.0-incubating</version>
+  <version>1.0.0</version>
   <name>IRI</name>
   <packaging>jar</packaging>
   <licenses>
diff --git a/lib/jena/jena.jar b/lib/jena/jena.jar
index b0068f30d92ad592f330c3e8fbc3080e1cfb36a4..c646971ecea3b2904376796706d485d4ea3d8141 100644
Binary files a/lib/jena/jena.jar and b/lib/jena/jena.jar differ
diff --git a/lib/jena/jena.pom b/lib/jena/jena.pom
index f644348c0d8b3d10669920dd4064d4420e9d5486..3ac98467764673ec6f3084916239c00b039fdc50 100644
--- a/lib/jena/jena.pom
+++ b/lib/jena/jena.pom
@@ -3,7 +3,7 @@
 
   <groupId>org.apache.jena</groupId>
   <artifactId>jena-core</artifactId>
-  <version>2.7.0-incubating</version>
+  <version>2.11.0</version>
   <name>Jena core</name>
   <description>Jena is a Java framework for building Semantic Web applications. It provides a programmatic environment for RDF, RDFS and OWL, SPARQL and includes a rule-based inference engine.</description>
   <packaging>jar</packaging>
@@ -21,10 +21,6 @@
 
   <!-- There is a decent pom in the Jar-file -->
   <!--dependencies>
-    <dependency>
-      <groupId>com.ibm.icu</groupId>
-      <artifactId>icu4j</artifactId>
-    </dependency>
     <dependency>
       <groupId>org.apache.xml</groupId>
       <artifactId>xml-apis</artifactId>
diff --git a/lib/owlapi30/owlapi-bin.jar b/lib/owlapi30/owlapi-bin.jar
index 700b27f724d6391dbfbc48043bc8c1fb30aa1062..ee93ec2e38a907bdc9efdd0524d081a32e2932b7 100644
Binary files a/lib/owlapi30/owlapi-bin.jar and b/lib/owlapi30/owlapi-bin.jar differ
diff --git a/lib/owlapi30/owlapi-bin.pom b/lib/owlapi30/owlapi-bin.pom
index f2aa49a5931b2c426773a5f3189d72b2ce0612e0..3595b352cb9e0c0c2ffb1358b2404bebfa80cdf1 100644
--- a/lib/owlapi30/owlapi-bin.pom
+++ b/lib/owlapi30/owlapi-bin.pom
@@ -3,7 +3,8 @@
 
   <groupId>org.semanticweb</groupId>
   <artifactId>owlapi</artifactId>
-  <version>3.4.2</version>
+  <version>3.4.8</version>
+  <!-- version 3.4.9 is incomplete: jump to 3.4.10 -->
   <name>OWL API</name>
   <description>API and implementation for OWL</description>
   <licenses>
diff --git a/lib/xerces/xercesImpl.jar b/lib/xerces/xercesImpl.jar
index 9dcd8c38196b24e51f78d8e1b0a42d1ffef60acb..0aaa990f3ecadf60d28b5395dc87bbe49da0cdd7 100644
Binary files a/lib/xerces/xercesImpl.jar and b/lib/xerces/xercesImpl.jar differ
diff --git a/lib/xerces/xercesImpl.pom b/lib/xerces/xercesImpl.pom
index 7044e16d25ee69af07961befdaf3df8192f9c1c7..3c765b93ef21a07595503a81caabddd95a99710a 100644
--- a/lib/xerces/xercesImpl.pom
+++ b/lib/xerces/xercesImpl.pom
@@ -3,7 +3,7 @@
 
   <groupId>org.apache</groupId>
   <artifactId>xerces</artifactId>
-  <version>2.10.0</version>
+  <version>2.11.0</version>
   <name></name>
   <description></description>
   <!-- Copyright 1999-2010 The Apache Software Foundation -->
diff --git a/src/fr/inrialpes/exmo/align/service/AServProtocolManager.java b/src/fr/inrialpes/exmo/align/service/AServProtocolManager.java
index 6bfa373535f4fe36b082888153aee413a8f3fbb2..a3401f3b06d7550cb6d10951d9201236962f8748 100644
--- a/src/fr/inrialpes/exmo/align/service/AServProtocolManager.java
+++ b/src/fr/inrialpes/exmo/align/service/AServProtocolManager.java
@@ -1,7 +1,7 @@
 /*
  * $Id$
  *
- * Copyright (C) INRIA, 2006-2013
+ * Copyright (C) INRIA, 2006-2014
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public License
@@ -61,6 +61,9 @@ import org.semanticweb.owl.align.AlignmentVisitor;
 import org.semanticweb.owl.align.AlignmentException;
 import org.semanticweb.owl.align.Evaluator;
 
+import org.reflections.Reflections;
+import org.reflections.util.ConfigurationBuilder;
+
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -73,6 +76,7 @@ import java.lang.IllegalAccessException;
 import java.lang.NullPointerException;
 import java.lang.UnsatisfiedLinkError;
 import java.lang.ExceptionInInitializerError;
+import java.lang.reflect.Constructor;
 import java.lang.reflect.InvocationTargetException;
 import java.io.ByteArrayOutputStream;
 import java.io.InputStream;
@@ -104,7 +108,7 @@ import java.util.jar.JarEntry;
 import java.util.zip.ZipEntry;
 
 /**
- * This is the main class that control the behaviour of the Alignment Server
+ * This is the main class which controls the behaviour of the Alignment Server
  * It is as independent from the OWL API as possible.
  * However, it is still necessary to test for the reachability of an ontology and moreover to resolve its URI for that of its source.
  * For these reasons we still need a parser of OWL files here.
@@ -461,11 +465,10 @@ public class AServProtocolManager implements Service {
 			       new OutputStreamWriter( result, "UTF-8" )), true);
 	    AlignmentVisitor renderer = null;
 	    try {
-		Object[] mparams = {(Object) writer };
-		java.lang.reflect.Constructor[] rendererConstructors =
-		    Class.forName(method).getConstructors();
-		renderer =
-		    (AlignmentVisitor) rendererConstructors[0].newInstance(mparams);
+		Class[] cparams = { PrintWriter.class };
+		Constructor rendererConstructor = Class.forName( method ).getConstructor( cparams );
+		Object[] mparams = { (Object)writer };
+		renderer = (AlignmentVisitor) rendererConstructor.newInstance( mparams );
 	    } catch ( ClassNotFoundException cnfex ) {
 		// should return the message
 		logger.error( "Unknown method", cnfex );
@@ -684,12 +687,11 @@ public class AServProtocolManager implements Service {
 	if ( classname == null ) classname = "fr.inrialpes.exmo.align.impl.eval.PRecEvaluator";
 	Evaluator eval = null;
 	try {
-	    Object [] mparams = {(Object)ref, (Object)al};
-	    Class<?> oClass = Class.forName("org.semanticweb.owl.align.Alignment");
-	    Class[] cparams = { oClass, oClass };
-	    Class<?> evaluatorClass = Class.forName(classname);
-	    java.lang.reflect.Constructor evaluatorConstructor = evaluatorClass.getConstructor(cparams);
-	    eval = (Evaluator)evaluatorConstructor.newInstance(mparams);
+	    Class[] cparams = { Alignment.class, Alignment.class };
+	    Class<?> evaluatorClass = Class.forName( classname );
+	    Constructor evaluatorConstructor = evaluatorClass.getConstructor( cparams );
+	    Object [] mparams = { (Object)ref, (Object)al };
+	    eval = (Evaluator)evaluatorConstructor.newInstance( mparams );
 	} catch ( ClassNotFoundException cnfex ) {
 	    logger.error( "Unknown method", cnfex );
 	    return new UnknownMethod(newId(),mess,serverId,mess.getSender(),classname,(Properties)null);
@@ -856,10 +858,51 @@ public class AServProtocolManager implements Service {
 
     /*********************************************************************
      * Utilities: Finding the implementation of an interface
+     *
+     * This is starting causing "java.lang.OutOfMemoryError: PermGen space"
+     * (when it was in static)
+     * Remedied (for the moment by improving the visited cache)
+     * This may also benefit by first filling the visited by the path of the
+     * libraries we know.
+     *
+     * May be replaced by org.reflections (see reflectiveImplementations)
+     * JE: Was unable to set it properly
      *********************************************************************/
 
-    public static void implementations( Class tosubclass, Set<String> list ){
+    /*
+    public Set<Class<?>> reflectiveImplementations( String interfaceName ) {
+	Set<Class<?>> classes = null;
+	try {
+	    Class toclass = Class.forName( interfaceName );
+	    //Reflections reflections = new Reflections("com.mycompany");
+	    Reflections reflections = new Reflections( new ConfigurationBuilder() );
+	    //Set<Class<? extends MyInterface>> 
+	    classes = reflections.getSubTypesOf(toclass);
+	} catch (ClassNotFoundException ex) {
+	    logger.debug( "IGNORED Class {} not found!", interfaceName );
+	}
+	return classes;
+	}*/
+
+    /**
+     * Display all the classes inheriting or implementing a given
+     * interface in the currently loaded packages.
+     * @param interfaceName the name of the interface to implement
+     */
+    public Set<String> implementations( String interfaceName ) {
+	Set<String> list = new HashSet<String>();
+	try {
+	    Class toclass = Class.forName(interfaceName);
+	    implementations( toclass, list );
+	} catch (ClassNotFoundException ex) {
+	    logger.debug( "IGNORED Class {} not found!", interfaceName );
+	}
+	return list;
+    }
+
+    public void implementations( Class tosubclass, Set<String> list ){
 	Set<String> visited = new HashSet<String>();
+	//visited.add();
 	String classPath = System.getProperty("java.class.path",".");
 	// Hack: this is not necessary
 	//classPath = classPath.substring(0,classPath.lastIndexOf(File.pathSeparatorChar));
@@ -889,32 +932,41 @@ public class AServProtocolManager implements Service {
 				}
 			    }
 			}
-		    } else if ( file.toString().endsWith(".jar") &&
-				!visited.contains( file.toString() ) &&
-				file.exists() ) {
-			//logger.trace("JAR {}", file);
-			visited.add( file.toString() );
-			JarFile jar = null;
+		    } else {
+			String canon = null;
 			try {
-			    jar = new JarFile( file );
-			    exploreJar( list, visited, tosubclass, jar );
-			    // Iterate on needed Jarfiles
-			    // JE(caveat): this deals naively with Jar files,
-			    // in particular it does not deal with section'ed MANISFESTs
-			    Attributes mainAttributes = jar.getManifest().getMainAttributes();
-			    String path = mainAttributes.getValue( Name.CLASS_PATH );
-			    //logger.trace("  >CP> {}", path);
-			    if ( path != null && !path.equals("") ) {
-				// JE: Not sure where to find the other Jars:
-				// in the path or at the local place?
-				//classPath += File.pathSeparator+file.getParent()+File.separator + path.replaceAll("[ \t]+",File.pathSeparator+file.getParent()+File.separator);
-				// This replaces the replaceAll which is not tolerant on Windows in having "\" as a separator
-				// Is there a way to make it iterable???
-				for( StringTokenizer token = new StringTokenizer(path," \t"); token.hasMoreTokens(); )
-				    classPath += File.pathSeparator+file.getParent()+File.separator+token.nextToken();
+			    canon = file.getCanonicalPath();
+			} catch ( IOException ioex ) {
+			    canon = file.toString();
+			    logger.warn( "IGNORED Invalid Jar path", ioex );
+			}
+			if ( canon.endsWith(".jar") &&
+			     !visited.contains( canon ) && 
+			     file.exists() ) {
+			    //logger.trace("JAR {}", file);
+			    visited.add( canon );
+			    JarFile jar = null;
+			    try {
+				jar = new JarFile( file );
+				exploreJar( list, visited, tosubclass, jar );
+				// Iterate on needed Jarfiles
+				// JE(caveat): this deals naively with Jar files,
+				// in particular it does not deal with section'ed MANISFESTs
+				Attributes mainAttributes = jar.getManifest().getMainAttributes();
+				String path = mainAttributes.getValue( Name.CLASS_PATH );
+				//logger.trace("  >CP> {}", path);
+				if ( path != null && !path.equals("") ) {
+				    // JE: Not sure where to find the other Jars:
+				    // in the path or at the local place?
+				    //classPath += File.pathSeparator+file.getParent()+File.separator + path.replaceAll("[ \t]+",File.pathSeparator+file.getParent()+File.separator);
+				    // This replaces the replaceAll which is not tolerant on Windows in having "\" as a separator
+				    // Is there a way to make it iterable???
+				    for( StringTokenizer token = new StringTokenizer(path," \t"); token.hasMoreTokens(); )
+					classPath += File.pathSeparator+file.getParent()+File.separator+token.nextToken();
+				}
+			    } catch (NullPointerException nullexp) { //Raised by JarFile
+				//logger.trace( "JarFile, file {} unavailable", file );
 			    }
-			} catch (NullPointerException nullexp) { //Raised by JarFile
-			    //logger.trace( "JarFile, file {} unavailable", file );
 			}
 		    }
 		} catch( IOException e ) {
@@ -928,7 +980,7 @@ public class AServProtocolManager implements Service {
 	}
     }
     
-    public static void exploreJar( Set<String> list, Set<String> visited, Class tosubclass, JarFile jar ) {
+    public void exploreJar( Set<String> list, Set<String> visited, Class tosubclass, JarFile jar ) {
 	Enumeration enumeration = jar.entries();
 	while( enumeration != null && enumeration.hasMoreElements() ){
 	    JarEntry entry = (JarEntry)enumeration.nextElement();
@@ -944,38 +996,46 @@ public class AServProtocolManager implements Service {
 		if ( implementsInterface( entryName, tosubclass ) ) {
 			    list.add( entryName );
 		}
-	    } else if( entryName.endsWith(".jar") &&
-		       !visited.contains( entryName ) ) { // a jar in a jar
-		//logger.trace("JAR {}", entryName);
-		visited.add( entryName );
-		//logger.trace(  "jarEntry is a jarfile={}", je.getName() );
-		InputStream jarSt = null;
-		OutputStream out = null;
-		File f = null;
+	    } else {
+		String canon = entryName;
 		try {
-		    jarSt = jar.getInputStream( (ZipEntry)entry );
-		    f = File.createTempFile( "aservTmpFile"+visited.size(), "jar" );
-		    out = new FileOutputStream( f );
-		    byte buf[]=new byte[1024];
-		    int len1 ;
-		    while( (len1 = jarSt.read(buf))>0 )
-			out.write(buf,0,len1);
-		    JarFile inJar = new JarFile( f );
-		    exploreJar( list, visited, tosubclass, inJar );
-		} catch (IOException ioex) {
-		    logger.warn( "IGNORED Cannot read embedded jar", ioex );
-		} finally {
+		    canon = new File( entryName ).getCanonicalPath();
+		} catch ( IOException ioex ) {
+		    logger.warn( "IGNORED Invalid Jar path", ioex );
+		}
+		if( canon.endsWith(".jar") &&
+		    !visited.contains( canon ) ) { // a jar in a jar
+		    //logger.trace("JAR {}", entryName);
+		    visited.add( canon );
+		    //logger.trace(  "jarEntry is a jarfile={}", je.getName() );
+		    InputStream jarSt = null;
+		    OutputStream out = null;
+		    File f = null;
 		    try {
-			jarSt.close();
-			out.close();
-			f.delete();
-		    } catch (Exception ex) {};
+			jarSt = jar.getInputStream( (ZipEntry)entry );
+			f = File.createTempFile( "aservTmpFile"+visited.size(), "jar" );
+			out = new FileOutputStream( f );
+			byte buf[]=new byte[1024];
+			int len1 ;
+			while( (len1 = jarSt.read(buf))>0 )
+			    out.write(buf,0,len1);
+			JarFile inJar = new JarFile( f );
+			exploreJar( list, visited, tosubclass, inJar );
+		    } catch (IOException ioex) {
+			logger.warn( "IGNORED Cannot read embedded jar", ioex );
+		    } finally {
+			try {
+			    jarSt.close();
+			    out.close();
+			    f.delete();
+			} catch (Exception ex) {};
+		    }
 		}
 	    } 
 	}
     }
 
-    public static boolean implementsInterface( String classname, Class tosubclass ) {
+    public boolean implementsInterface( String classname, Class tosubclass ) {
 	try {
 	    if ( classname.equals("org.apache.xalan.extensions.ExtensionHandlerGeneral") || 
 		 classname.equals("org.apache.log4j.net.ZeroConfSupport") 
@@ -1006,27 +1066,6 @@ public class AServProtocolManager implements Service {
 	return false;
     }
 
-    /**
-     * Display all the classes inheriting or implementing a given
-     * interface in the currently loaded packages.
-     * @param interfaceName the name of the interface to implement
-     */
-    public static Set<String> implementations( String interfaceName ) {
-	Set<String> list = new HashSet<String>();
-	try {
-	    Class toclass = Class.forName(interfaceName);
-	    //Package [] pcks = Package.getPackages();
-	    //for (int i=0;i<pcks.length;i++) {
-		//logger.trace(interfaceName+ ">> "+pcks[i].getName() );
-		//implementations( pcks[i].getName(), toclass, list );
-		//}
-	    implementations( toclass, list );
-	} catch (ClassNotFoundException ex) {
-	    logger.debug( "IGNORED Class {} not found!", interfaceName );
-	}
-	return list;
-    }
-
     protected class Aligner implements Runnable {
 	private Message mess = null;
 	private Message result = null;
@@ -1075,13 +1114,13 @@ public class AServProtocolManager implements Service {
 	    
 	    // Create alignment object
 	    try {
-		Object[] mparams = {};
 		if ( method == null )
 		    method = "fr.inrialpes.exmo.align.impl.method.StringDistAlignment";
 		Class<?> alignmentClass = Class.forName(method);
 		Class[] cparams = {};
-		java.lang.reflect.Constructor alignmentConstructor = alignmentClass.getConstructor(cparams);
-		AlignmentProcess aresult = (AlignmentProcess)alignmentConstructor.newInstance(mparams);
+		Constructor alignmentConstructor = alignmentClass.getConstructor( cparams );
+		Object[] mparams = {};
+		AlignmentProcess aresult = (AlignmentProcess)alignmentConstructor.newInstance( mparams );
 		try {
 		    aresult.init( uri1, uri2 );
 		    long time = System.currentTimeMillis();
diff --git a/test/clitest.sh b/test/clitest.sh
index eed6d1ce69f53391b52c2e5b73bcb71c9a20894e..e4cdd098476d2a80bdbfec1ba81ffabd068d6b13 100644
--- a/test/clitest.sh
+++ b/test/clitest.sh
@@ -993,12 +993,13 @@ kill -TERM $!
 
 #-------------------
 echo "\t-A,--jade <PORT>"
-java -cp $CP:lib/alignsvc.jar fr.inrialpes.exmo.align.service.AlignmentService -A 5555 &> $RESDIR/err.txt &
+echo "\tOnly works with increased PermGenSize"
+java -XX:PermSize=128m -cp $CP:lib/alignsvc.jar fr.inrialpes.exmo.align.service.AlignmentService -A 5555 &> $RESDIR/err.txt &
 sleep 20;
 if [ -s $RESDIR/err.txt ]; then grep "is ready" $RESDIR/err.txt > $RESDIR/jerr.txt; else echo error with ASERV-JADE1; fi
 if [ ! -s $RESDIR/jerr.txt ]; then echo error with ASERV-JADE2; fi
 kill -TERM $!
-java -cp $CP:lib/alignsvc.jar fr.inrialpes.exmo.align.service.AlignmentService --jade 5555 &> $RESDIR/err.txt &
+java -XX:PermSize=128m -cp $CP:lib/alignsvc.jar fr.inrialpes.exmo.align.service.AlignmentService --jade 5555 &> $RESDIR/err.txt &
 sleep 20;
 if [ -s $RESDIR/err.txt ]; then grep "is ready" $RESDIR/err.txt > $RESDIR/jerr.txt; else echo error with ASERV-JADE3; fi
 if [ ! -s $RESDIR/jerr.txt ]; then echo error with ASERV-JADE4; fi