Index: trunk/src/main/java/omq/common/broker/Broker.java
===================================================================
--- trunk/src/main/java/omq/common/broker/Broker.java	(revision 66)
+++ trunk/src/main/java/omq/common/broker/Broker.java	(revision 70)
@@ -2,4 +2,5 @@
 
 import java.io.IOException;
+import java.lang.reflect.Proxy;
 import java.net.URL;
 import java.util.HashMap;
@@ -10,4 +11,5 @@
 import omq.Remote;
 import omq.client.listener.ResponseListener;
+import omq.client.proxy.MultiProxymq;
 import omq.client.proxy.Proxymq;
 import omq.common.event.Event;
@@ -46,4 +48,5 @@
 	private Map<String, RemoteObject> remoteObjs;
 	private Map<String, Object> proxies = new Hashtable<String, Object>();
+	private Map<String, Object> multiProxies = new Hashtable<String, Object>();
 
 	public Broker(Properties env) throws Exception {
@@ -73,5 +76,5 @@
 			responseListener.kill();
 			eventDispatcher.kill();
-			//TODO proxies = null; ??
+			// TODO proxies = null; ??
 		}
 		// Stop all the remote objects working
@@ -136,5 +139,5 @@
 				Proxymq proxy = new Proxymq(reference, contract, this);
 				Class<?>[] array = { contract };
-				Object newProxy = Proxymq.newProxyInstance(contract.getClassLoader(), array, proxy);
+				Object newProxy = Proxy.newProxyInstance(contract.getClassLoader(), array, proxy);
 				proxies.put(reference, newProxy);
 				return (T) newProxy;
@@ -147,4 +150,21 @@
 	}
 
+	@SuppressWarnings("unchecked")
+	public synchronized <T extends Remote> T lookupMulti(String reference, Class<T> contract) throws RemoteException {
+		try {
+			if (!multiProxies.containsKey(reference)) {
+				MultiProxymq proxy = new MultiProxymq(reference, contract, this);
+				Class<?>[] array = { contract };
+				Object newProxy = Proxy.newProxyInstance(contract.getClassLoader(), array, proxy);
+				multiProxies.put(reference, newProxy);
+				return (T) newProxy;
+			}
+			return (T) multiProxies.get(reference);
+
+		} catch (Exception e) {
+			throw new RemoteException(e);
+		}
+	}
+
 	public void bind(String reference, RemoteObject remote) throws RemoteException {
 		try {
@@ -155,5 +175,5 @@
 		}
 	}
-	
+
 	public void startTriggerEvent(String reference, RemoteObject remote) throws RemoteException {
 		try {
