Index: branches/supervisor/src/main/java/omq/common/util/OmqConnectionFactory.java
===================================================================
--- branches/supervisor/src/main/java/omq/common/util/OmqConnectionFactory.java	(revision 101)
+++ branches/supervisor/src/main/java/omq/common/util/OmqConnectionFactory.java	(revision 102)
@@ -57,4 +57,5 @@
 				working = true;
 			} catch (Exception e) {
+//				e.printStackTrace();
 				logger.error(e);
 				long milis = 2000;
Index: branches/supervisor/src/main/java/omq/common/util/ParameterQueue.java
===================================================================
--- branches/supervisor/src/main/java/omq/common/util/ParameterQueue.java	(revision 101)
+++ branches/supervisor/src/main/java/omq/common/util/ParameterQueue.java	(revision 102)
@@ -132,8 +132,4 @@
 	 */
 
-	/**
-	 * Set how many threads will be created to invoke remote methods
-	 */
-	public static String NUM_THREADS = "omq.num_threads";
 
 	/**
Index: branches/supervisor/src/main/java/omq/server/InvocationThread.java
===================================================================
--- branches/supervisor/src/main/java/omq/server/InvocationThread.java	(revision 101)
+++ branches/supervisor/src/main/java/omq/server/InvocationThread.java	(revision 102)
@@ -157,4 +157,5 @@
 
 		}
+		logger.info("ObjectMQ ('" + obj.getRef() + "') InvocationThread " + Thread.currentThread().getId() + " is killed");
 	}
 
Index: branches/supervisor/src/main/java/omq/server/RemoteThreadPool.java
===================================================================
--- branches/supervisor/src/main/java/omq/server/RemoteThreadPool.java	(revision 101)
+++ branches/supervisor/src/main/java/omq/server/RemoteThreadPool.java	(revision 102)
@@ -4,4 +4,5 @@
 import java.util.ArrayList;
 import java.util.List;
+import java.util.ListIterator;
 import java.util.concurrent.atomic.AtomicInteger;
 
@@ -102,10 +103,7 @@
 		long now = System.currentTimeMillis();
 
-		int i = 0;
-		for (InvocationThread worker : workers) {
-			// Ensure there are at least minThreads available
-			if (workers.size() == minPoolThreads) {
-				break;
-			}
+		ListIterator<InvocationThread> lIter = workers.listIterator();
+		while (workers.size() > minPoolThreads && lIter.hasNext()) {
+			InvocationThread worker = lIter.next();
 			long lastExec = worker.getLastExecution();
 			System.out.println("last - now = " + (now - lastExec) + " keep alive = " + keepAliveTime);
@@ -114,12 +112,10 @@
 				try {
 					worker.kill();
-					workers.remove(i);
+					lIter.remove();
 				} catch (IOException e) {
-					// TODO Auto-generated catch block
-					e.printStackTrace();
+					logger.error(e);
 				}
 
 			}
-			i++;
 		}
 	}
