diff --git a/src/fr/inrialpes/exmo/align/impl/BasicAlignment.java b/src/fr/inrialpes/exmo/align/impl/BasicAlignment.java
index 5f21eafdbd05c36c0b9edb8438c06d1799d2d0bc..465683e7bc2754ec3560e839c462999e9c6b708b 100644
--- a/src/fr/inrialpes/exmo/align/impl/BasicAlignment.java
+++ b/src/fr/inrialpes/exmo/align/impl/BasicAlignment.java
@@ -436,6 +436,14 @@ public class BasicAlignment implements Alignment {
 	}
     };
 
+    /**
+     * Returns default exception for conversion to URIAlignments
+     *
+     */
+    public URIAlignment toURIAlignment() throws AlignmentException {
+	throw new AlignmentException("[BasicAlignment].toURIAlignment() cannot process");
+    }
+
     /***************************************************************************
      * The harden function acts like threshold but put all weights to 1.
      **************************************************************************/
@@ -562,6 +570,12 @@ public class BasicAlignment implements Alignment {
     public void render( AlignmentVisitor renderer ) throws AlignmentException {
 	accept(renderer);
     }
+
+    /**
+     * Can be used for reducing the amount of memory taken by an alignment
+     * Does nothing in BasicAlignment.
+     */
+    public void cleanUp() {}
 }
 
 class MEnumeration implements Enumeration {
diff --git a/src/fr/inrialpes/exmo/align/impl/DistanceAlignment.java b/src/fr/inrialpes/exmo/align/impl/DistanceAlignment.java
index b41ad40155557813dc57849d04c049bc7867f3a1..9e84e6088800df43e1562fa3dc0cce193766304d 100644
--- a/src/fr/inrialpes/exmo/align/impl/DistanceAlignment.java
+++ b/src/fr/inrialpes/exmo/align/impl/DistanceAlignment.java
@@ -96,6 +96,9 @@ public class DistanceAlignment extends OWLAPIAlignment implements AlignmentProce
 	extract( getType(), params );
     }
 
+    /**
+     * Prints the distance matrix
+     */
     public void printDistanceMatrix( Parameters params ){
 	System.out.println("\\documentclass{article}\n");
 	System.out.println("\\usepackage{graphics}\n");
@@ -109,6 +112,13 @@ public class DistanceAlignment extends OWLAPIAlignment implements AlignmentProce
 	System.out.println("\n\\end{document}");
     }
 
+    /**
+     * Suppresses the distance matrix
+     */
+    public void cleanUp() {
+	sim = null;
+    }
+
     /**
      * Extract the alignment form the Similarity
      * There are theoretically 16 types of extractors composing the
@@ -186,16 +196,20 @@ public class DistanceAlignment extends OWLAPIAlignment implements AlignmentProce
 	  if (  params.getParameter("noinst") == null ){
 	      for (Iterator it1 = ((OWLOntology)onto1).getIndividuals().iterator(); it1.hasNext();) {
 		  OWLIndividual ind1 = (OWLIndividual)it1.next();
-		  found = false; max = threshold; val = 0;
-		  OWLIndividual ind2 = null;
-		  for (Iterator it2 = ((OWLOntology)onto2).getIndividuals().iterator(); it2.hasNext(); ) {
-		      OWLIndividual current = (OWLIndividual)it2.next();
-		      val = 1 - sim.getIndividualSimilarity(ind1,current);
-		      if (val > max) {
-			  found = true; max = val; ind2 = current;
+		  if ( ind1.getURI() != null ) {
+		      found = false; max = threshold; val = 0;
+		      OWLIndividual ind2 = null;
+		      for (Iterator it2 = ((OWLOntology)onto2).getIndividuals().iterator(); it2.hasNext(); ) {
+			  OWLIndividual current = (OWLIndividual)it2.next();
+			  if ( current.getURI() != null ) {
+			      val = 1 - sim.getIndividualSimilarity(ind1,current);
+			      if (val > max) {
+				  found = true; max = val; ind2 = current;
+			      }
+			  }
 		      }
+		      if ( found ) addAlignCell(ind1,ind2, "=", max);
 		  }
-		  if ( found ) addAlignCell(ind1,ind2, "=", max);
 	      }
 	  }
       } catch (OWLException owlex) { owlex.printStackTrace(); }
@@ -393,12 +407,17 @@ public class DistanceAlignment extends OWLAPIAlignment implements AlignmentProce
 	  if (  params.getParameter("noinst") == null ){
 	      for (Iterator it1 = ((OWLOntology)onto1).getIndividuals().iterator(); it1.hasNext();) {
 		  ent1 = (OWLIndividual)it1.next();
-		  for (Iterator it2 = ((OWLOntology)onto2).getIndividuals().iterator(); it2.hasNext(); ) {
-		      ent2 = (OWLIndividual)it2.next();
-		      val = 1 - sim.getIndividualSimilarity((OWLIndividual)ent1,(OWLIndividual)ent2);
-		      //val = ((SimilarityMeasure)getSimilarity()).getSimilarity(ent1.getURI(),ent2.getURI());
-		      if ( val > threshold ){
-			  cellSet.add( new OWLAPICell( (String)null, ent1, ent2, BasicRelation.createRelation("="), val ) );
+		  if ( ent1.getURI() != null ) {
+
+		      for (Iterator it2 = ((OWLOntology)onto2).getIndividuals().iterator(); it2.hasNext(); ) {
+			  ent2 = (OWLIndividual)it2.next();
+			  if ( ent2.getURI() != null ) {
+			      val = 1 - sim.getIndividualSimilarity((OWLIndividual)ent1,(OWLIndividual)ent2);
+			      //val = ((SimilarityMeasure)getSimilarity()).getSimilarity(ent1.getURI(),ent2.getURI());
+			      if ( val > threshold ){
+				  cellSet.add( new OWLAPICell( (String)null, ent1, ent2, BasicRelation.createRelation("="), val ) );
+			      }
+			  }
 		      }
 		  }
 	      }
diff --git a/src/fr/inrialpes/exmo/align/impl/MatrixMeasure.java b/src/fr/inrialpes/exmo/align/impl/MatrixMeasure.java
index 6e112b9b4a3e87f02bc6ec474e699c61b8723522..99b282f7e4c5a9c70f951e86ee06424247e41246 100644
--- a/src/fr/inrialpes/exmo/align/impl/MatrixMeasure.java
+++ b/src/fr/inrialpes/exmo/align/impl/MatrixMeasure.java
@@ -112,11 +112,23 @@ public abstract class MatrixMeasure implements Similarity {
 	    }
 	    prmatrix = new double[nbprop1+1][nbprop2+1];
 	    // Create individual lists
-	    for ( Iterator it = onto2.getIndividuals().iterator(); it.hasNext(); nbind2++ ){
-		indlist2.put( it.next(), new Integer(nbind2) );
+	    for ( Iterator it = onto2.getIndividuals().iterator(); it.hasNext();  ){
+		OWLIndividual o = (OWLIndividual)it.next();
+		//System.err.println( o );
+		// We suppress anonymous individuals... this is not legitimate
+		if ( o.getURI() != null ) {
+		    indlist2.put( o, new Integer(nbind2) );
+		    nbind2++;
+		}
 	    }
-	    for ( Iterator it = onto1.getIndividuals().iterator(); it.hasNext(); nbind1++ ){
-		indlist1.put( it.next(), new Integer(nbind1) );
+	    for ( Iterator it = onto1.getIndividuals().iterator(); it.hasNext(); ){
+		OWLIndividual o = (OWLIndividual)it.next();
+		//System.err.println( o );
+		// We suppress anonymous individuals... this is not legitimate
+		if ( o.getURI() != null ) {
+		    indlist1.put( o, new Integer(nbind1) );
+		    nbind1++;
+		}
 	    }
 	    indmatrix = new double[nbind1+1][nbind2+1];
 
@@ -137,9 +149,13 @@ public abstract class MatrixMeasure implements Similarity {
 	    // (this comes first because otherwise, it2 is defined)
 	    for ( Iterator it2 = onto2.getIndividuals().iterator(); it2.hasNext(); ){
 		OWLIndividual ind2 = (OWLIndividual)it2.next();
-		for ( Iterator it1 = onto1.getIndividuals().iterator(); it1.hasNext(); ){
-		    OWLIndividual ind1 = (OWLIndividual)it1.next();
-		    indmatrix[((Integer)indlist1.get(ind1)).intValue()][((Integer)indlist2.get(ind2)).intValue()] = measure( ind1, ind2 );
+		if ( indlist2.get(ind2) != null ) {
+		    for ( Iterator it1 = onto1.getIndividuals().iterator(); it1.hasNext(); ){
+			OWLIndividual ind1 = (OWLIndividual)it1.next();
+			if ( indlist1.get(ind1) != null ) {
+			    indmatrix[((Integer)indlist1.get(ind1)).intValue()][((Integer)indlist2.get(ind2)).intValue()] = measure( ind1, ind2 );
+			}
+		    }
 		}
 	    }
 	    // Compute distances on properties
diff --git a/src/fr/inrialpes/exmo/align/impl/OWLAPIAlignment.java b/src/fr/inrialpes/exmo/align/impl/OWLAPIAlignment.java
index 05aa5a5d90a1971c404efd25a5ac2db3fe82f0af..bfad92bdb8c8c01ded9a7d1a4c94a6b2d36659d3 100644
--- a/src/fr/inrialpes/exmo/align/impl/OWLAPIAlignment.java
+++ b/src/fr/inrialpes/exmo/align/impl/OWLAPIAlignment.java
@@ -245,7 +245,11 @@ public class OWLAPIAlignment extends BasicAlignment {
 	}
 	for (Enumeration e = getElements(); e.hasMoreElements();) {
 	    Cell c = (Cell)e.nextElement();
-	    align.addAlignCell( c.getId(), c.getObject1AsURI(), c.getObject2AsURI(), c.getRelation(), c.getStrength() );
+	    try {
+		align.addAlignCell( c.getId(), c.getObject1AsURI(), c.getObject2AsURI(), c.getRelation(), c.getStrength() );
+	    } catch (AlignmentException aex) {
+		// Sometimes URIs are null, this is ignore
+	    }
 	};
 	return align;
     }
diff --git a/src/fr/inrialpes/exmo/align/impl/URIAlignment.java b/src/fr/inrialpes/exmo/align/impl/URIAlignment.java
index a95407e6b430fed789f5cc536e170c12a9b1f6fb..871ba9a40d99a87558bcc37b4f2b0cd6a91291e7 100644
--- a/src/fr/inrialpes/exmo/align/impl/URIAlignment.java
+++ b/src/fr/inrialpes/exmo/align/impl/URIAlignment.java
@@ -86,7 +86,6 @@ public class URIAlignment extends BasicAlignment {
 
     /** Cell methods **/
     public Cell addAlignCell(String id, Object ob1, Object ob2, Relation relation, double measure) throws AlignmentException {
- 
         if ( !( ob1 instanceof URI && ob2 instanceof URI ) )
 	    throw new AlignmentException("arguments must be URIs");
 
@@ -153,6 +152,14 @@ public class URIAlignment extends BasicAlignment {
 	}
     }
 
+    /**
+     * Returns default exception for conversion to URIAlignments
+     *
+     */
+    public URIAlignment toURIAlignment() throws AlignmentException {
+	return this;
+    }
+
     /**
      * Generate a copy of this alignment object
      */
diff --git a/src/fr/inrialpes/exmo/align/impl/eval/PRecEvaluator.java b/src/fr/inrialpes/exmo/align/impl/eval/PRecEvaluator.java
index fcc706254de56ead188b2c9f434d9a3acec26517..2e38ce445c8f93e9a7c6c0059cd4a053cbfe3fdc 100644
--- a/src/fr/inrialpes/exmo/align/impl/eval/PRecEvaluator.java
+++ b/src/fr/inrialpes/exmo/align/impl/eval/PRecEvaluator.java
@@ -26,6 +26,7 @@ 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.BasicAlignment;
 
 import java.util.Enumeration;
 import java.util.Iterator;
@@ -64,8 +65,8 @@ public class PRecEvaluator extends BasicEvaluator {
     private int nbcorrect = 0; // nb of cells correctly identified
 
     /** Creation **/
-    public PRecEvaluator(Alignment align1, Alignment align2) {
-	super(align1, align2);
+    public PRecEvaluator(Alignment align1, Alignment align2) throws AlignmentException {
+	super(((BasicAlignment)align1).toURIAlignment(), ((BasicAlignment)align2).toURIAlignment());
     }
 
     public void init(){