diff --git a/examples/agent/JADEFIPAASRequesterAgentGUI.java b/examples/agent/JADEFIPAASRequesterAgentGUI.java
index 70308ed3e3d2feb4c2c5f9c18cf46727f677d98b..6047138f1664c16d5d8db4168066e74c2fa2bd62 100644
--- a/examples/agent/JADEFIPAASRequesterAgentGUI.java
+++ b/examples/agent/JADEFIPAASRequesterAgentGUI.java
@@ -12,6 +12,7 @@ import javax.swing.JButton;
 import javax.swing.JLabel;
 import javax.swing.JOptionPane;
 import javax.swing.JPanel;
+import javax.swing.JScrollPane;
 import javax.swing.JTabbedPane;
 import javax.swing.JTextArea;
 import javax.swing.JTextField;
@@ -38,11 +39,11 @@ public class JADEFIPAASRequesterAgentGUI  extends  javax.swing.JFrame implements
 	private JPanel CUTPane;
 	private JPanel ReplyPane;
 	private JPanel main;
-
+	
 	private JTextArea reply;
+	private JScrollPane scrollReply;
 	private JTabbedPane onglets;
-
-
+	 
 	//LOAD PANE
 
 	private JLabel  LOADURLAlignmentLabel;
@@ -138,6 +139,7 @@ public class JADEFIPAASRequesterAgentGUI  extends  javax.swing.JFrame implements
 		ReplyPane = new JPanel();
 		reply = new JTextArea(20,50);
 		reply.setEditable(false);
+		scrollReply = new JScrollPane(reply,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
 
 		main = new JPanel();
 		main.setLayout(new BoxLayout(main, BoxLayout.PAGE_AXIS));
@@ -283,7 +285,8 @@ public class JADEFIPAASRequesterAgentGUI  extends  javax.swing.JFrame implements
 		onglets.addTab("Metadata", METADATAPane);
 		onglets.addTab("Translate", TRANSLATEPane);
 		onglets.addTab("Cut", CUTPane);
-		ReplyPane.add(reply);
+		//ReplyPane.add(reply);
+		ReplyPane.add(scrollReply);
 
 		main.add(onglets);		
 		main.add(ReplyPane);
diff --git a/html/base.css b/html/base.css
index 56a10ba4fc92560a3eda86252a10053b59f70850..1a7311e666773a3373af4b7edf27325ea587cf8e 100644
--- a/html/base.css
+++ b/html/base.css
@@ -3,7 +3,7 @@
    The following software licensing rules apply:
    http://www.w3.org/Consortium/Legal/copyright-software */
 
-/* $Id: base.css,v 1.24 2003/04/17 13:56:40 bbos Exp $ */
+/* $Id$ */
 
 body {
   padding: 2em 1em 2em 70px;
diff --git a/lib/jade.jar b/lib/jade.jar
index b761ab2532aff328a105c582f18573f1debe3b3c..d15e487276d8da74d090ff496b3075d0196a8836 100755
Binary files a/lib/jade.jar and b/lib/jade.jar differ
diff --git a/src/fr/inrialpes/exmo/align/service/jade/JadeFIPAAServiceAgent.java b/src/fr/inrialpes/exmo/align/service/jade/JadeFIPAAServiceAgent.java
index 89e3c3bf26b8d5620213e5b47a0d6e3ed94e6965..4ff2e9b99a876e33a6c0a6f607638ce458f7a01d 100755
--- a/src/fr/inrialpes/exmo/align/service/jade/JadeFIPAAServiceAgent.java
+++ b/src/fr/inrialpes/exmo/align/service/jade/JadeFIPAAServiceAgent.java
@@ -23,6 +23,15 @@
 package fr.inrialpes.exmo.align.service.jade;
 
 
+import java.util.Iterator;
+
+import jade.content.ContentElement;
+import jade.content.ContentManager;
+import jade.content.Predicate;
+import jade.content.lang.Codec.CodecException;
+import jade.content.lang.sl.SLCodec;
+import jade.content.onto.Ontology;
+import jade.content.onto.OntologyException;
 import jade.core.Agent;
 import jade.core.behaviours.CyclicBehaviour;
 import jade.domain.DFService;
@@ -38,6 +47,17 @@ import org.semanticweb.owl.align.Parameters;
 import fr.inrialpes.exmo.align.service.AServProtocolManager;
 import fr.inrialpes.exmo.align.service.ErrorMsg;
 import fr.inrialpes.exmo.align.service.Message;
+import fr.inrialpes.exmo.align.service.jade.messageontology.ALIGN;
+import fr.inrialpes.exmo.align.service.jade.messageontology.Action;
+import fr.inrialpes.exmo.align.service.jade.messageontology.CUT;
+import fr.inrialpes.exmo.align.service.jade.messageontology.FIND;
+import fr.inrialpes.exmo.align.service.jade.messageontology.JADEFIPAAlignmentServerOntology;
+import fr.inrialpes.exmo.align.service.jade.messageontology.LOAD;
+import fr.inrialpes.exmo.align.service.jade.messageontology.METADATA;
+import fr.inrialpes.exmo.align.service.jade.messageontology.Parameter;
+import fr.inrialpes.exmo.align.service.jade.messageontology.RETRIEVE;
+import fr.inrialpes.exmo.align.service.jade.messageontology.STORE;
+import fr.inrialpes.exmo.align.service.jade.messageontology.TRANSLATE;
 
 public class JadeFIPAAServiceAgent extends Agent {
 
@@ -51,8 +71,26 @@ public class JadeFIPAAServiceAgent extends Agent {
 	private int localId=0;
 	private Parameters initialParameters;
 
+	//	FIPA ACL stuff
+
+	private ContentManager CTmanager=new ContentManager();
+	private SLCodec codec=new SLCodec();
+	private Ontology ontology=JADEFIPAAlignmentServerOntology.getInstance();
+
+
 	protected void setup() {
 		//myLogger.log(Logger.INFO, getAID().getName()+" started");
+		super.setup();
+		codec = new SLCodec();
+
+		// ontology =  ContextAgentManagerOntology.getInstance();
+		CTmanager = this.getContentManager();
+
+		//System.out.println("agent" + getAID() + " "+ getLocalName()+" is created");
+
+		CTmanager.registerOntology(ontology);
+		CTmanager.registerLanguage(codec);
+
 
 		// Read arguments
 		Object[] args = getArguments();
@@ -77,88 +115,104 @@ public class JadeFIPAAServiceAgent extends Agent {
 				String info; //parameters
 				Parameters params = initialParameters;
 
-				MessageTemplate tpl =MessageTemplate.MatchPerformative(ACLMessage.REQUEST);
+				MessageTemplate tpl =MessageTemplate.and(MessageTemplate.and(
+						MessageTemplate.MatchLanguage( codec.getName()),
+						MessageTemplate.MatchOntology( ontology.getName())),
+						MessageTemplate.MatchPerformative(ACLMessage.REQUEST));
+
 				ACLMessage msg = myAgent.receive(tpl);
 				if (msg != null) {
-					if (msg.getContent()!=null){
-						if (!(msg.getContent().equals(""))){
-							//System.out.println("Alignement Agent " + myAgent.getLocalName() + " receive : " + msg.getContent() + " from "+ msg.getSender());
-							perf=msg.getContent().substring(0,msg.getContent().indexOf("::"));
-							info = msg.getContent().substring(msg.getContent().indexOf("::")+2, msg.getContent().length());
-
-//							---------------------------------------------------------					
-							//myLogger.log(Logger.INFO, "Received message: "+msg);
-							//Parameters params = new BasicParameters();
-							if (!(perf.equals(""))){
-								if(!(info.equals(""))){
-									params = decodeMessage(info,params);												
-
-									if (perf.equals("ALIGN")){
-										Message answer = manager.align(new Message(newId(), (Message)null,myId,serverId,"",params));
-										if(!(answer instanceof ErrorMsg)){
-											ACLMessage JADEanswer=msg.createReply();
-											msg.setPerformative(ACLMessage.INFORM);
-											JADEanswer.setContent(answer.getContent());
-											myAgent.send(JADEanswer);
-										}else{myLogger.log(Logger.WARNING, answer.getContent());}
-									}else if (perf.equals("LOAD")){
-										Message answer = manager.load(new Message(newId(), (Message)null,myId,serverId,"",params));
-										if(!(answer instanceof ErrorMsg)){
-											ACLMessage JADEanswer=msg.createReply();
-											msg.setPerformative(ACLMessage.INFORM);
-											JADEanswer.setContent(answer.getContent());
-											myAgent.send(JADEanswer);
-										}else{myLogger.log(Logger.WARNING, answer.getContent());}
-									}else if (perf.equals("RETRIEVE")){
-										Message answer = manager.render(new Message(newId(), (Message)null,myId,serverId,"",params));
-										if(!(answer instanceof ErrorMsg)){
-											ACLMessage JADEanswer=msg.createReply();
-											msg.setPerformative(ACLMessage.INFORM);
-											JADEanswer.setContent(answer.getContent());
-											myAgent.send(JADEanswer);
-										}else{myLogger.log(Logger.WARNING, answer.getContent());}
-									}else if (perf.equals("TRANSLATE")){
-										//TODO
-									}else if (perf.equals("METADATA")){
-										//TODO
-									}else if (perf.equals("STORE")){
-									    Message answer = manager.store(new Message(newId(), (Message)null,myId,serverId,(String)params.getParameter("id"),params));
-										if(!(answer instanceof ErrorMsg)){
-											ACLMessage JADEanswer=msg.createReply();
-											msg.setPerformative(ACLMessage.INFORM);
-											JADEanswer.setContent(answer.getContent());
-											myAgent.send(JADEanswer);
-										}else{myLogger.log(Logger.WARNING, answer.getContent());}
-									}else if (perf.equals("FIND")){
-										Message answer = manager.existingAlignments(new Message(newId(), (Message)null,myId,serverId,"",params));
-										if(!(answer instanceof ErrorMsg)){
-											ACLMessage JADEanswer=msg.createReply();
-											msg.setPerformative(ACLMessage.INFORM);
-											JADEanswer.setContent(answer.getContent());
-											myAgent.send(JADEanswer);
-										}else{myLogger.log(Logger.WARNING, answer.getContent());}
-									}else if (perf.equals("CUT")){
-										Message answer = manager.cut(new Message(newId(), (Message)null,myId,serverId,"",params));
-										if(!(answer instanceof ErrorMsg)){
-											ACLMessage JADEanswer=msg.createReply();
-											msg.setPerformative(ACLMessage.INFORM);
-											JADEanswer.setContent(answer.getContent());
-											myAgent.send(JADEanswer);
-										}else{myLogger.log(Logger.WARNING, answer.getContent());}
-									}else {
-										ACLMessage reply = msg.createReply();
-										reply.setPerformative(ACLMessage.NOT_UNDERSTOOD);
-										myAgent.send(reply);
-									}
-								}
-							}
+//					---------------------------------------------------------					
+					//myLogger.log(Logger.INFO, "Received message: "+msg.toString());
+
+					try{
+						ContentElement ce = null;
+						ce = CTmanager.extractContent(msg);
+						params = decodeMessage(ce,params);
+
+						//Parameters params = new BasicParameters();
+
+						if (ce instanceof ALIGN){
+							Message answer = manager.align(new Message(newId(), (Message)null,myId,serverId,"",params));
+							if(!(answer instanceof ErrorMsg)){
+								ACLMessage JADEanswer=msg.createReply();
+								JADEanswer.setLanguage(codec.getName());
+								JADEanswer.setOntology(ontology.getName());
+								JADEanswer.setPerformative(ACLMessage.INFORM);
+								JADEanswer.setContent(answer.getContent());
+								myAgent.send(JADEanswer);								
+							}else{myLogger.log(Logger.WARNING, answer.getContent());}
+						}else if (ce instanceof LOAD){
+							Message answer = manager.load(new Message(newId(), (Message)null,myId,serverId,"",params));
+							if(!(answer instanceof ErrorMsg)){
+								ACLMessage JADEanswer=msg.createReply();
+								JADEanswer.setLanguage(codec.getName());
+								JADEanswer.setOntology(ontology.getName());
+								JADEanswer.setPerformative(ACLMessage.INFORM);
+								JADEanswer.setContent(answer.getContent());
+								myAgent.send(JADEanswer);
+							}else{myLogger.log(Logger.WARNING, answer.getContent());}
+						}else if (ce instanceof RETRIEVE){
+							Message answer = manager.render(new Message(newId(), (Message)null,myId,serverId,"",params));
+							if(!(answer instanceof ErrorMsg)){
+								ACLMessage JADEanswer=msg.createReply();
+								JADEanswer.setLanguage(codec.getName());
+								JADEanswer.setOntology(ontology.getName());
+								JADEanswer.setPerformative(ACLMessage.INFORM);
+								JADEanswer.setContent(answer.getContent());
+								myAgent.send(JADEanswer);
+							}else{myLogger.log(Logger.WARNING, answer.getContent());}
+						}else if (ce instanceof TRANSLATE){
+							//TODO
+						}else if (ce instanceof METADATA){
+							//TODO
+						}else if (ce instanceof STORE){
+							Message answer = manager.store(new Message(newId(), (Message)null,myId,serverId,(String)params.getParameter("id"),params));
+							if(!(answer instanceof ErrorMsg)){
+								ACLMessage JADEanswer=msg.createReply();
+								JADEanswer.setLanguage(codec.getName());
+								JADEanswer.setOntology(ontology.getName());
+								JADEanswer.setPerformative(ACLMessage.INFORM);
+								JADEanswer.setContent(answer.getContent());
+								myAgent.send(JADEanswer);
+							}else{myLogger.log(Logger.WARNING, answer.getContent());}
+						}else if (ce instanceof FIND){
+							Message answer = manager.existingAlignments(new Message(newId(), (Message)null,myId,serverId,"",params));
+							if(!(answer instanceof ErrorMsg)){
+								ACLMessage JADEanswer=msg.createReply();
+								JADEanswer.setLanguage(codec.getName());
+								JADEanswer.setOntology(ontology.getName());
+								JADEanswer.setPerformative(ACLMessage.INFORM);
+								JADEanswer.setContent(answer.getContent());
+								myAgent.send(JADEanswer);
+							}else{myLogger.log(Logger.WARNING, answer.getContent());}
+						}else if (ce instanceof CUT){
+							Message answer = manager.cut(new Message(newId(), (Message)null,myId,serverId,"",params));
+							if(!(answer instanceof ErrorMsg)){
+								ACLMessage JADEanswer=msg.createReply();
+								JADEanswer.setLanguage(codec.getName());
+								JADEanswer.setOntology(ontology.getName());
+								JADEanswer.setPerformative(ACLMessage.INFORM);
+								JADEanswer.setContent(answer.getContent());
+								myAgent.send(JADEanswer);
+							}else{myLogger.log(Logger.WARNING, answer.getContent());}
+						}else {
+							ACLMessage JADEanswer=msg.createReply();
+							JADEanswer.setLanguage(codec.getName());
+							JADEanswer.setOntology(ontology.getName());
+							JADEanswer.setPerformative(ACLMessage.NOT_UNDERSTOOD);						
+							myAgent.send(JADEanswer);
 						}
 					}
-				}
-				else {
+
+					catch(CodecException ce){ce.printStackTrace();}
+					catch(OntologyException oe){oe.printStackTrace();}
+				}else {
 					block();
 				}
+				params = initialParameters;
 			}
+
 		});//end of CyclicBehaviour
 
 
@@ -191,15 +245,14 @@ public class JadeFIPAAServiceAgent extends Agent {
 
 	private int newId(){return localId++;}
 
-	private Parameters decodeMessage(String info, Parameters param){
+	private Parameters decodeMessage(ContentElement ce, Parameters param){
 
 		Parameters toReturn = param;
-		String[] result = info.split("::");
-		for(int i=0;i<result.length;i++){
-			String[] arg=result[i].split("=");
-			toReturn.setParameter(arg[0], arg[1]);
+		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;
 	}