Index: trunk/src/main/java/omq/common/broker/Broker.java
===================================================================
--- trunk/src/main/java/omq/common/broker/Broker.java	(revision 58)
+++ trunk/src/main/java/omq/common/broker/Broker.java	(revision 59)
@@ -4,4 +4,5 @@
 import java.net.URL;
 import java.util.HashMap;
+import java.util.Hashtable;
 import java.util.Map;
 import java.util.Properties;
@@ -44,4 +45,5 @@
 	private Properties environment = null;
 	private Map<String, RemoteObject> remoteObjs;
+	private Map<String, Object> proxies = new Hashtable<String, Object>();
 
 	public Broker(Properties env) throws Exception {
@@ -71,5 +73,5 @@
 			responseListener.kill();
 			eventDispatcher.kill();
-			Proxymq.stopProxy();
+			//TODO proxies = null; ??
 		}
 		// Stop all the remote objects working
@@ -123,5 +125,5 @@
 
 	@SuppressWarnings("unchecked")
-	public <T extends Remote> T lookup(String reference, Class<T> contract) throws RemoteException {
+	public synchronized <T extends Remote> T lookup(String reference, Class<T> contract) throws RemoteException {
 		try {
 
@@ -131,10 +133,12 @@
 			}
 
-			if (!Proxymq.containsProxy(reference)) {
+			if (!proxies.containsKey(reference)) {
 				Proxymq proxy = new Proxymq(reference, contract, this);
 				Class<?>[] array = { contract };
-				return (T) Proxymq.newProxyInstance(contract.getClassLoader(), array, proxy);
+				Object newProxy = Proxymq.newProxyInstance(contract.getClassLoader(), array, proxy);
+				proxies.put(reference, newProxy);
+				return (T) newProxy;
 			}
-			return (T) Proxymq.getInstance(reference);
+			return (T) proxies.get(reference);
 
 		} catch (Exception e) {
