Index: /trunk/src/main/java/omq/Remote.java
===================================================================
--- /trunk/src/main/java/omq/Remote.java	(revision 81)
+++ /trunk/src/main/java/omq/Remote.java	(revision 82)
@@ -4,4 +4,10 @@
 
 /**
+ * 
+ * The Remote interface serves to identify interfaces whose methods may be
+ * invoked from a non-local virtual machine. Any object that is a remote object
+ * must directly or indirectly implement this interface. Only those methods
+ * specified in a "remote interface", an interface that extends omq.Remote are
+ * available remotely.
  * 
  * @author Sergi Toda <sergi.toda@estudiants.urv.cat>
Index: /trunk/src/main/java/omq/client/annotation/MultiMethod.java
===================================================================
--- /trunk/src/main/java/omq/client/annotation/MultiMethod.java	(revision 81)
+++ /trunk/src/main/java/omq/client/annotation/MultiMethod.java	(revision 82)
@@ -9,4 +9,10 @@
 @Target(ElementType.METHOD)
 public @interface MultiMethod {
+	/**
+	 * If @MultiMethod is followed by @SyncMethod waitNum indicates how many
+	 * responses we will wait for.
+	 * 
+	 * @return length of the array of responses we are waiting for.
+	 */
 	int waitNum() default 1;
 }
Index: /trunk/src/main/java/omq/client/annotation/RemoteInterface.java
===================================================================
--- /trunk/src/main/java/omq/client/annotation/RemoteInterface.java	(revision 81)
+++ /trunk/src/main/java/omq/client/annotation/RemoteInterface.java	(revision 82)
@@ -10,5 +10,6 @@
  * Annotation which indicates which is the remote interface that can have
  * asynchmethods or syncmethods. By default every method without an annotation
- * will be classified as a SyncMethod
+ * will be classified as a SyncMethod. Both annotations can be preceded by the @MultiMethod
+ * annotation.
  * 
  * @author Sergi Toda <sergi.toda@estudiants.urv.cat>
Index: /trunk/src/main/java/omq/client/annotation/SyncMethod.java
===================================================================
--- /trunk/src/main/java/omq/client/annotation/SyncMethod.java	(revision 81)
+++ /trunk/src/main/java/omq/client/annotation/SyncMethod.java	(revision 82)
@@ -17,6 +17,17 @@
 @Target(ElementType.METHOD)
 public @interface SyncMethod {
+	/**
+	 * Timeout of a synchronous method
+	 * 
+	 * @return how long we'll wait for a response
+	 */
 	long timeout() default 60000L;
 
+	/**
+	 * Number of retries of a synchronous method
+	 * 
+	 * @return how many retries we'll make. If the timeout is set, every timeout
+	 *         will use it
+	 */
 	int retry() default 1;
 }
Index: unk/src/main/java/omq/client/listener/RequestInfo.java
===================================================================
--- /trunk/src/main/java/omq/client/listener/RequestInfo.java	(revision 81)
+++ 	(revision )
@@ -1,45 +1,0 @@
-package omq.client.listener;
-
-public class RequestInfo {
-	private String uid_request;
-	private boolean multi;
-	private int wait;
-
-	public RequestInfo(String uid_request, boolean multi, int wait) {
-		this.uid_request = uid_request;
-		this.multi = multi;
-		this.wait = wait;
-	}
-
-	public String getUid_request() {
-		return uid_request;
-	}
-
-	public void setUid_request(String uid_request) {
-		this.uid_request = uid_request;
-	}
-
-	public boolean isMulti() {
-		return multi;
-	}
-
-	public void setMulti(boolean multi) {
-		this.multi = multi;
-	}
-
-	public int getWait() {
-		return wait;
-	}
-
-	public void setWait(int wait) {
-		this.wait = wait;
-	}
-
-	@Override
-	public boolean equals(Object obj) {
-		if (obj instanceof RequestInfo) {
-			return uid_request.equals(((RequestInfo) obj).getUid_request());
-		}
-		return false;
-	}
-}
Index: /trunk/src/main/java/omq/client/listener/ResponseListener.java
===================================================================
--- /trunk/src/main/java/omq/client/listener/ResponseListener.java	(revision 81)
+++ /trunk/src/main/java/omq/client/listener/ResponseListener.java	(revision 82)
@@ -21,6 +21,7 @@
 
 /**
- * Class that inherits from RemoteListener. It's used in the server side. This
- * class gets the deliveries from the server and stores them into the proxies
+ * Class that inherits from Thread. It's used in the client side. This class
+ * gets the deliveries from the server and stores them into the different
+ * proxies created.
  * 
  * @author Sergi Toda <sergi.toda@estudiants.urv.cat>
@@ -38,7 +39,7 @@
 
 	/**
-	 * Protected constructor used by the singleton pattern
+	 * ResponseListener constructor
 	 * 
-	 * @param env
+	 * @param broker
 	 * @throws Exception
 	 */
@@ -108,4 +109,9 @@
 	}
 
+	/**
+	 * This function is used to start the response client queue
+	 * 
+	 * @throws Exception
+	 */
 	private void startRPCQueue() throws Exception {
 		channel = broker.getNewChannel();
@@ -151,6 +157,12 @@
 	}
 
-	// Revisar això
+	/**
+	 * This method registers a new proxy into this responseListener
+	 * 
+	 * @param proxy
+	 */
 	public void registerProxy(Proxymq proxy) {
+		// Since results is a hashtable this method doesn't need to be
+		// synchronized
 		if (!results.containsKey(proxy.getRef())) {
 			results.put(proxy.getRef(), proxy.getResults());
Index: /trunk/src/main/java/omq/client/proxy/Proxymq.java
===================================================================
--- /trunk/src/main/java/omq/client/proxy/Proxymq.java	(revision 81)
+++ /trunk/src/main/java/omq/client/proxy/Proxymq.java	(revision 82)
@@ -27,6 +27,8 @@
 
 /**
- * EvoProxy class. This class inherits from InvocationHandler and gives you a
- * proxy with a server using an environment
+ * Proxymq class. This class inherits from InvocationHandler, for this reason
+ * each proxymq instance has an associated invocation handler. When a method is
+ * invoked on a proxymq instance, the method invocation is encoded and
+ * dispatched to the invoke method of its invocation handler.
  * 
  * @author Sergi Toda <sergi.toda@estudiants.urv.cat>
@@ -66,5 +68,5 @@
 
 	/**
-	 * EvoProxy Constructor.
+	 * Proxymq Constructor.
 	 * 
 	 * This constructor uses an uid to know which object will call. It also uses
@@ -131,4 +133,15 @@
 	}
 
+	/**
+	 * This method publishes a request
+	 * 
+	 * @param request
+	 *            - this request contains which method and which params will be
+	 *            invoked in the server side.
+	 * @param replyQueueName
+	 *            - this param indicates where the responseListener will be
+	 *            listen to.
+	 * @throws Exception
+	 */
 	private void publishMessage(Request request, String replyQueueName) throws Exception {
 		String corrId = request.getId();
@@ -158,4 +171,15 @@
 	}
 
+	/**
+	 * This method publishes a synchronous request
+	 * 
+	 * @param request
+	 *            - this request contains which method and which params will be
+	 *            invoked in the server side.
+	 * @param type
+	 *            - indicates which return type we are waiting for
+	 * @return serverResponse
+	 * @throws Exception
+	 */
 	private Object publishSyncRequest(Request request, Class<?> type) throws Exception {
 		String corrId = request.getId();
@@ -170,5 +194,5 @@
 				publishMessage(request, replyQueueName);
 				if (request.isMulti()) {
-					return getResults(corrId, 2, timeout, type);
+					return getResults(corrId, request.getWait(), timeout, type);
 				} else {
 					return getResult(corrId, timeout, type);
@@ -183,4 +207,14 @@
 	}
 
+	/**
+	 * This method creates a request using the annotations of the Remote
+	 * interface
+	 * 
+	 * @param method
+	 *            - method to invoke in the server side
+	 * @param arguments
+	 *            - arguments of the method
+	 * @return new Request
+	 */
 	private Request createRequest(Method method, Object[] arguments) {
 		String corrId = java.util.UUID.randomUUID().toString();
Index: /trunk/src/test/java/omq/test/persistence/PersistentTest.java
===================================================================
--- /trunk/src/test/java/omq/test/persistence/PersistentTest.java	(revision 81)
+++ /trunk/src/test/java/omq/test/persistence/PersistentTest.java	(revision 82)
@@ -85,4 +85,7 @@
 		serverBroker.bind(MESSAGE, msgImpl, msgImplProps);
 
+		// Stop the serverBroker
+		serverBroker.stopBroker();
+
 		Broker clientBroker = new Broker(clientProps);
 		Message iMsg = clientBroker.lookup(MESSAGE, Message.class);
@@ -98,4 +101,9 @@
 		Thread.sleep(15000);
 
+		// Restart the server and listen to the new messages
+		serverBroker = new Broker(serverProps);
+		msgImpl = new MessageImpl();
+		serverBroker.bind(MESSAGE, msgImpl, msgImplProps);
+
 		actual = iMsg.getMessage();
 
Index: /trunk/target/classes/log4j.xml
===================================================================
--- /trunk/target/classes/log4j.xml	(revision 82)
+++ /trunk/target/classes/log4j.xml	(revision 82)
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
+
+<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
+    <appender name="consoleAppender" class="org.apache.log4j.ConsoleAppender">
+        <param name="Threshold" value="DEBUG" />
+        <layout class="org.apache.log4j.PatternLayout">
+            <param name="ConversionPattern" value="%d{[yyyy-MM-dd HH:mm:ss]} %-5p %c:%L - %m%n" />
+        </layout>
+    </appender>
+
+    <appender class="org.apache.log4j.rolling.RollingFileAppender" name="A2">
+        <param value="true" name="append"/>
+        <param value="logs/objectmq-temp.log" name="File"/>
+
+        <rollingPolicy class="org.apache.log4j.rolling.FixedWindowRollingPolicy">
+            <param name="fileNamePattern" value="logs/objectmq-%i.log" />
+            <param name="MinIndex" value="0"/> 
+            <param name="MaxIndex" value="1"/> 
+        </rollingPolicy>
+        
+        <triggeringPolicy class="org.apache.log4j.rolling.SizeBasedTriggeringPolicy"> 
+            <param name="MaxFileSize" value="10000000"/> 
+        </triggeringPolicy> 
+        
+        <layout class="org.apache.log4j.PatternLayout">
+            <param value="%d{[yyyy-MM-dd HH:mm:ss]} %-5p %c:%L - %m%n" name="ConversionPattern"/>
+        </layout>        
+    </appender>
+
+  <root> 
+    <priority value ="DEBUG" /> 
+    <appender-ref ref="consoleAppender" />
+    <appender-ref ref="A2" />  
+  </root>
+  
+</log4j:configuration>
