diff --git a/src/fr/inrialpes/exmo/align/impl/eval/SemPRecEvaluator.java b/src/fr/inrialpes/exmo/align/impl/eval/SemPRecEvaluator.java
index 3f5be2bfa1345c6e2d56199e9b96e01d8c2e2d20..5fb97c0c8ae79994d72b84bd8a5b8a4a6aefd61e 100644
--- a/src/fr/inrialpes/exmo/align/impl/eval/SemPRecEvaluator.java
+++ b/src/fr/inrialpes/exmo/align/impl/eval/SemPRecEvaluator.java
@@ -57,6 +57,7 @@ import org.semanticweb.owlapi.model.OWLClass;
 import org.semanticweb.owlapi.model.OWLObjectProperty;
 import org.semanticweb.owlapi.model.OWLDataProperty;
 import org.semanticweb.owlapi.model.OWLIndividual;
+import org.semanticweb.owlapi.model.AddAxiom;
 
 import org.semanticweb.owlapi.apibinding.OWLManager;
 import org.semanticweb.owlapi.util.SimpleIRIMapper;
@@ -115,7 +116,7 @@ public class SemPRecEvaluator extends PRecEvaluator implements Evaluator {
      **/
     public SemPRecEvaluator( Alignment al1, Alignment al2 ) throws AlignmentException {
 	super( al1, al2 );
-	logger.debug( "Created a SemPREvaluator" );
+	logger.trace( "Created a SemPREvaluator" );
 	convertToObjectAlignments( al1, al2 );
     }
 
@@ -179,14 +180,15 @@ public class SemPRecEvaluator extends PRecEvaluator implements Evaluator {
 	    allist.add( al1 );
 	    try {
 		reasoner = new IDDLReasoner( allist, semantics );
-	    } catch ( IDDLException idex ) {
+	    } catch ( Exception idex ) { // IDDLException... useful when no IDDL
 		throw new AlignmentException( "Cannot create IDDLReasoner", idex );
 	    }
 	} else { // Hermit
-	    loadPipedAlignedOntologies( al1 );
+	    //loadPipedAlignedOntologies( al1 );
+	    loadAlignedOntologies( al1 );
 	}
 	if ( !reasoner.isConsistent() ) return al2.nbCells(); // everything is entailed
-	logger.debug( "{} is consistent", al1 );
+	logger.trace( "{} is consistent ({} cells)", al1, al1.nbCells() );
 	int entailed = 0;
 	for ( Cell c2 : al2 ) {
 	    logger.trace( c2.getObject1()+" {} {}", c2.getRelation().getRelation(), c2.getObject2() );
@@ -196,8 +198,8 @@ public class SemPRecEvaluator extends PRecEvaluator implements Evaluator {
 			logger.trace( "      --> entailed" );
 			entailed++;
 		    }
-		} catch (IDDLException idex) { // counted as non entailed
-		    logger.warn( "Cannot be translated." );
+		} catch ( Exception idex ) { // IDDLException... useful when no IDDL
+		    logger.warn( "Cannot be translated." );// counted as non entailed
 		}
 	    } else { // Hermit
 		try {
@@ -220,6 +222,48 @@ public class SemPRecEvaluator extends PRecEvaluator implements Evaluator {
     protected OWLOntologyManager manager = null;
     protected OWLReasoner reasoner = null;
 
+    /**
+     * Even simpler if they are loaded: just merge them on the spot
+     * 
+     */
+    public void loadAlignedOntologies( ObjectAlignment align ) throws AlignmentException {
+	// Get the two ontologies
+	Object onto1 = align.getOntology1();
+	Object onto2 = align.getOntology2();
+	// Check that they are OWLOntologies
+	if ( onto1 == null || !(onto1 instanceof OWLOntology) )
+	    throw new AlignmentException( "Can only use OWLOntologies : "+onto1 );
+	if ( onto2 == null || !(onto2 instanceof OWLOntology) )
+	    throw new AlignmentException( "Can only use OWLOntologies : "+onto2 );
+	// Put their axioms in a new ontology
+	manager = OWLManager.createOWLOntologyManager();
+	try {
+	    OWLOntology ontology = manager.createOntology( IRI.create( "http://www" ) ); // should be generated
+	    for ( OWLAxiom ax : ((OWLOntology)onto1).getAxioms() ) {
+		AddAxiom action = new AddAxiom( ontology, ax );
+		manager.applyChange( action );
+	    }
+	    for ( OWLAxiom ax : ((OWLOntology)onto2).getAxioms() ) {
+		AddAxiom action = new AddAxiom( ontology, ax );
+		manager.applyChange( action );
+	    }
+	    // Put the alignment axioms in the new ontology...
+	    // Isn't it OK?
+	    for ( Cell c : align ) {
+		try {
+		    AddAxiom action = new AddAxiom( ontology, correspToAxiom( align, (ObjectCell)c ) );
+		    manager.applyChange( action );
+		} catch (AlignmentException alex) {
+		    logger.debug( "Cannot convert correspondence", alex );
+		}
+	    }
+	    reasoner = new Reasoner( ontology );
+	} catch (OWLOntologyCreationException ocex) {
+	    throw new AlignmentException( "Cannot create merged ontology for "+align, ocex );
+	}
+    }
+
+
     /* 
      * Loads the Aligned ontologies without intermediate file
      */
@@ -338,24 +382,24 @@ public class SemPRecEvaluator extends PRecEvaluator implements Evaluator {
 	Object e2 = corresp.getObject2();
 	Relation r = corresp.getRelation();
 	try {
-	if ( onto1.isClass( e1 ) ) {
-	    if ( onto2.isClass( e2 ) ) {
-		OWLClass entity1 = owlfactory.getOWLClass( IRI.create( onto1.getEntityURI( e1 ) ) );
-		OWLClass entity2 = owlfactory.getOWLClass( IRI.create( onto2.getEntityURI( e2 ) ) );
-		if ( r instanceof EquivRelation ) {
-		    return owlfactory.getOWLEquivalentClassesAxiom( entity1, entity2 );
-		} else if ( r instanceof SubsumeRelation ) {
-		    return owlfactory.getOWLSubClassOfAxiom( entity2, entity1 );
-		} else if ( r instanceof SubsumedRelation ) {
-		    return owlfactory.getOWLSubClassOfAxiom( entity1, entity2 );
-		} else if ( r instanceof IncompatRelation ) {
-		    return owlfactory.getOWLDisjointClassesAxiom( entity1, entity2 );
+	    if ( onto1.isClass( e1 ) ) {
+		if ( onto2.isClass( e2 ) ) {
+		    OWLClass entity1 = owlfactory.getOWLClass( IRI.create( onto1.getEntityURI( e1 ) ) );
+		    OWLClass entity2 = owlfactory.getOWLClass( IRI.create( onto2.getEntityURI( e2 ) ) );
+		    if ( r instanceof EquivRelation ) {
+			return owlfactory.getOWLEquivalentClassesAxiom( entity1, entity2 );
+		    } else if ( r instanceof SubsumeRelation ) {
+			return owlfactory.getOWLSubClassOfAxiom( entity2, entity1 );
+		    } else if ( r instanceof SubsumedRelation ) {
+			return owlfactory.getOWLSubClassOfAxiom( entity1, entity2 );
+		    } else if ( r instanceof IncompatRelation ) {
+			return owlfactory.getOWLDisjointClassesAxiom( entity1, entity2 );
+		    }
+		} else if ( onto2.isIndividual( e2 ) && ( r instanceof HasInstanceRelation ) ) {
+		    return owlfactory.getOWLClassAssertionAxiom( owlfactory.getOWLClass( IRI.create( onto1.getEntityURI( e1 ) ) ),  
+								 owlfactory.getOWLNamedIndividual( IRI.create( onto2.getEntityURI( e2 ) ) ) );
 		}
-	    } else if ( onto2.isIndividual( e2 ) && ( r instanceof HasInstanceRelation ) ) {
-		return owlfactory.getOWLClassAssertionAxiom( owlfactory.getOWLClass( IRI.create( onto1.getEntityURI( e1 ) ) ),  
-							     owlfactory.getOWLNamedIndividual( IRI.create( onto2.getEntityURI( e2 ) ) ) );
-	    }
-	} else if ( onto1.isDataProperty( e1 ) && onto2.isDataProperty( e2 ) ) {
+	    } else if ( onto1.isDataProperty( e1 ) && onto2.isDataProperty( e2 ) ) {
 		OWLDataProperty entity1 = owlfactory.getOWLDataProperty( IRI.create( onto1.getEntityURI( e1 ) ) );
 		OWLDataProperty entity2 = owlfactory.getOWLDataProperty( IRI.create( onto2.getEntityURI( e2 ) ) );
 		if ( r instanceof EquivRelation ) {
@@ -367,7 +411,7 @@ public class SemPRecEvaluator extends PRecEvaluator implements Evaluator {
 		} else if ( r instanceof IncompatRelation ) {
 		    return owlfactory.getOWLDisjointDataPropertiesAxiom( entity1, entity2 );
 		}
-	} else if ( onto1.isObjectProperty( e1 ) && onto2.isObjectProperty( e2 ) ) {
+	    } else if ( onto1.isObjectProperty( e1 ) && onto2.isObjectProperty( e2 ) ) {
 		OWLObjectProperty entity1 = owlfactory.getOWLObjectProperty( IRI.create( onto1.getEntityURI( e1 ) ) );
 		OWLObjectProperty entity2 = owlfactory.getOWLObjectProperty( IRI.create( onto2.getEntityURI( e2 ) ) );
 		if ( r instanceof EquivRelation ) {
@@ -379,23 +423,24 @@ public class SemPRecEvaluator extends PRecEvaluator implements Evaluator {
 		} else if ( r instanceof IncompatRelation ) {
 		    return owlfactory.getOWLDisjointObjectPropertiesAxiom( entity1, entity2 );
 		}
-	} else if ( onto1.isIndividual( e1 ) ) {
-	    if ( onto2.isIndividual( e2 ) ) {
-		OWLIndividual entity1 = owlfactory.getOWLNamedIndividual( IRI.create( onto1.getEntityURI( e1 ) ) );
-		OWLIndividual entity2 = owlfactory.getOWLNamedIndividual( IRI.create( onto2.getEntityURI( e2 ) ) );
-		if ( r instanceof EquivRelation ) {
-		    return owlfactory.getOWLSameIndividualAxiom( entity1, entity2 );
-		} else if ( r instanceof IncompatRelation ) {
-		    return owlfactory.getOWLDifferentIndividualsAxiom( entity1, entity2 );
+	    } else if ( onto1.isIndividual( e1 ) ) {
+		if ( onto2.isIndividual( e2 ) ) {
+		    OWLIndividual entity1 = owlfactory.getOWLNamedIndividual( IRI.create( onto1.getEntityURI( e1 ) ) );
+		    OWLIndividual entity2 = owlfactory.getOWLNamedIndividual( IRI.create( onto2.getEntityURI( e2 ) ) );
+		    if ( r instanceof EquivRelation ) {
+			return owlfactory.getOWLSameIndividualAxiom( entity1, entity2 );
+		    } else if ( r instanceof IncompatRelation ) {
+			return owlfactory.getOWLDifferentIndividualsAxiom( entity1, entity2 );
+		    }
+		} else if ( onto2.isClass( e2 ) && ( r instanceof InstanceOfRelation ) ) {
+		    return owlfactory.getOWLClassAssertionAxiom( owlfactory.getOWLClass( IRI.create( onto2.getEntityURI( e2 ) ) ), 
+								 owlfactory.getOWLNamedIndividual( IRI.create( onto1.getEntityURI( e1 ) ) ) );
 		}
-	    } else if ( onto2.isClass( e2 ) && ( r instanceof InstanceOfRelation ) ) {
-		return owlfactory.getOWLClassAssertionAxiom( owlfactory.getOWLClass( IRI.create( onto2.getEntityURI( e2 ) ) ), 
-							     owlfactory.getOWLNamedIndividual( IRI.create( onto1.getEntityURI( e1 ) ) ) );
-	    }
 	    }
 	} catch ( OntowrapException owex ) {
 	    throw new AlignmentException( "Error interpreting URI "+owex );
 	}
+	//System.err.println( e1+ " -- "+e2 );
 	throw new AlignmentException( "Cannot convert correspondence "+corresp );
     }