Index: trunk/src/test/java/omq/test/calculator/Calculator.java
===================================================================
--- trunk/src/test/java/omq/test/calculator/Calculator.java	(revision 71)
+++ trunk/src/test/java/omq/test/calculator/Calculator.java	(revision 72)
@@ -1,5 +1,3 @@
 package omq.test.calculator;
-
-import java.io.IOException;
 
 import omq.Remote;
@@ -7,5 +5,4 @@
 import omq.client.annotation.RemoteInterface;
 import omq.client.annotation.SyncMethod;
-import omq.exception.SerializerException;
 
 @RemoteInterface
@@ -20,7 +17,4 @@
 	public void sendMessage(Message m);
 
-	@AsyncMethod
-	public void asyncDivideByZero() throws IOException, SerializerException;
-
 	@SyncMethod(timeout = 1500)
 	public int divideByZero();
Index: trunk/src/test/java/omq/test/calculator/CalculatorImpl.java
===================================================================
--- trunk/src/test/java/omq/test/calculator/CalculatorImpl.java	(revision 71)
+++ trunk/src/test/java/omq/test/calculator/CalculatorImpl.java	(revision 72)
@@ -1,21 +1,11 @@
 package omq.test.calculator;
 
-import java.io.IOException;
-
-import omq.common.broker.Broker;
-import omq.exception.SerializerException;
 import omq.server.RemoteObject;
 
 public class CalculatorImpl extends RemoteObject implements Calculator {
 	private int mult = 0;
-	private Broker broker;
 
 	public CalculatorImpl() throws Exception {
 		super();
-	}
-
-	public CalculatorImpl(Broker broker) throws Exception {
-		super();
-		this.broker = broker;
 	}
 
@@ -41,11 +31,4 @@
 
 	@Override
-	public void asyncDivideByZero() throws IOException, SerializerException {
-		ZeroEvent ze = new ZeroEvent("my zero event", "zero-event");
-		broker.trigger(ze);
-		// notifyEvent(ze);
-	}
-
-	@Override
 	public void sendMessage(Message m) {
 		System.out.println("Code = " + m.getCode());
Index: trunk/src/test/java/omq/test/calculator/CalculatorTest.java
===================================================================
--- trunk/src/test/java/omq/test/calculator/CalculatorTest.java	(revision 71)
+++ trunk/src/test/java/omq/test/calculator/CalculatorTest.java	(revision 72)
@@ -120,15 +120,4 @@
 
 	@Test
-	public void notifyEvent() throws Exception {
-		ZeroListener zL = new ZeroListener("zero-event");
-
-		remoteCalc.addListener(zL);
-
-		remoteCalc.asyncDivideByZero();
-
-		Thread.sleep(200);
-	}
-
-	@Test
 	public void sendMessage() throws Exception {
 		Message m = new Message(2334, "Hello objectmq");
Index: trunk/src/test/java/omq/test/calculator/ZeroEvent.java
===================================================================
--- trunk/src/test/java/omq/test/calculator/ZeroEvent.java	(revision 71)
+++ 	(revision )
@@ -1,22 +1,0 @@
-package omq.test.calculator;
-
-import omq.common.event.Event;
-
-public class ZeroEvent extends Event {
-	/**
-	 * 
-	 */
-	private static final long serialVersionUID = 1L;
-
-	public ZeroEvent() {
-	}
-
-	public ZeroEvent(String corrId, String topic) {
-		super(corrId, topic);
-	}
-
-	public String getZeroMessage() {
-		return "divition by 0";
-	}
-
-}
Index: trunk/src/test/java/omq/test/calculator/ZeroListener.java
===================================================================
--- trunk/src/test/java/omq/test/calculator/ZeroListener.java	(revision 71)
+++ 	(revision )
@@ -1,15 +1,0 @@
-package omq.test.calculator;
-
-import omq.common.event.EventListener;
-
-public class ZeroListener extends EventListener<ZeroEvent> {
-
-	public ZeroListener(String topic) {
-		super(topic);
-	}
-
-	@Override
-	public void notifyEvent(ZeroEvent event) {
-		System.out.println(event.getZeroMessage());
-	}
-}
Index: trunk/src/test/java/omq/test/observer/ObserverTest.java
===================================================================
--- trunk/src/test/java/omq/test/observer/ObserverTest.java	(revision 71)
+++ trunk/src/test/java/omq/test/observer/ObserverTest.java	(revision 72)
@@ -23,4 +23,5 @@
 	private static String OBSERVER = "observer";
 	private static Broker broker;
+	private static RemoteSubjectImpl subject;
 	private static RemoteSubject remoteSubject;
 
@@ -71,6 +72,11 @@
 		env.setProperty(ParameterQueue.RETRY_TIME_CONNECTION, "2000");
 
+		// Set info about the queue & the exchange where the ResponseListener
+		// will listen to.
+		env.setProperty(ParameterQueue.RPC_REPLY_QUEUE, "server_reply_queue");
+		env.setProperty(ParameterQueue.EVENT_REPLY_QUEUE, "server_event_queue");
+
 		Broker broker = new Broker(env);
-		RemoteSubjectImpl subject = new RemoteSubjectImpl();
+		subject = new RemoteSubjectImpl(broker);
 		broker.bind(SUBJECT, subject);
 
@@ -90,12 +96,15 @@
 		RemoteObserverImpl observer = new RemoteObserverImpl();
 		broker.bind(OBSERVER, observer);
+		observer.setSubject(remoteSubject);
 
-		remoteSubject.addObserver(observer);
+		remoteSubject.addObserver(observer.getRef());
 		remoteSubject.setState(expected);
-		remoteSubject.notifyObservers();
+		// both proxies are in the same thread for this reason since subject has
+		// a proxy inside we need to use subject or create a new thread
+		subject.notifyObservers();
 		actual = observer.getObsState();
 
 		assertEquals(expected, actual);
-		remoteSubject.setState(null);
+		remoteSubject.setState("");
 	}
 
Index: trunk/src/test/java/omq/test/observer/RemoteSubject.java
===================================================================
--- trunk/src/test/java/omq/test/observer/RemoteSubject.java	(revision 71)
+++ trunk/src/test/java/omq/test/observer/RemoteSubject.java	(revision 72)
@@ -4,4 +4,5 @@
 import omq.client.annotation.RemoteInterface;
 import omq.client.annotation.SyncMethod;
+import omq.exception.RemoteException;
 
 @RemoteInterface
@@ -15,8 +16,8 @@
 
 	@SyncMethod(timeout = 1000)
-	public void addObserver(RemoteObserver o);
+	public void addObserver(String ref) throws RemoteException;
 
 	@SyncMethod(timeout = 1000)
-	public void removeObserver(RemoteObserver o);
+	public void removeObserver(String ref) throws RemoteException;
 
 	@SyncMethod(timeout = 1000)
Index: trunk/src/test/java/omq/test/observer/RemoteSubjectImpl.java
===================================================================
--- trunk/src/test/java/omq/test/observer/RemoteSubjectImpl.java	(revision 71)
+++ trunk/src/test/java/omq/test/observer/RemoteSubjectImpl.java	(revision 72)
@@ -4,4 +4,6 @@
 import java.util.List;
 
+import omq.common.broker.Broker;
+import omq.exception.RemoteException;
 import omq.server.RemoteObject;
 
@@ -13,14 +15,22 @@
 	private static final long serialVersionUID = 1L;
 	private String state;
-	private List<RemoteObserver> list = new ArrayList<RemoteObserver>();
+	private Broker broker;
+	private List<RemoteObserver> list;
 
-	@Override
-	public void addObserver(RemoteObserver o) {
-		list.add(o);
+	public RemoteSubjectImpl(Broker broker) {
+		this.broker = broker;
+		list = new ArrayList<RemoteObserver>();
 	}
 
 	@Override
-	public void removeObserver(RemoteObserver o) {
-		list.remove(o);
+	public void addObserver(String ref) throws RemoteException {
+		RemoteObserver obs = broker.lookup(ref, RemoteObserver.class);
+		list.add(obs);
+	}
+
+	@Override
+	public void removeObserver(String ref) throws RemoteException {
+		RemoteObserver obs = broker.lookup(ref, RemoteObserver.class);
+		list.remove(obs);
 	}
 
