diff --git a/base/source/java/ch/systemsx/cisd/base/exceptions/namedthread/.gitignore b/base/source/java/ch/systemsx/cisd/base/exceptions/namedthread/.gitignore
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/common/source/java/ch/systemsx/cisd/common/concurrent/NamedCallable.java b/base/source/java/ch/systemsx/cisd/base/namedthread/NamedCallable.java
similarity index 95%
rename from common/source/java/ch/systemsx/cisd/common/concurrent/NamedCallable.java
rename to base/source/java/ch/systemsx/cisd/base/namedthread/NamedCallable.java
index 4ae7595595922dbf4b58a4545316c7143fb48acf..2a8d5eef85145d0e0231409fb314c3cf50837baa 100644
--- a/common/source/java/ch/systemsx/cisd/common/concurrent/NamedCallable.java
+++ b/base/source/java/ch/systemsx/cisd/base/namedthread/NamedCallable.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package ch.systemsx.cisd.common.concurrent;
+package ch.systemsx.cisd.base.namedthread;
 
 import java.util.concurrent.Callable;
 
diff --git a/common/source/java/ch/systemsx/cisd/common/concurrent/NamedFutureTask.java b/base/source/java/ch/systemsx/cisd/base/namedthread/NamedFutureTask.java
similarity index 96%
rename from common/source/java/ch/systemsx/cisd/common/concurrent/NamedFutureTask.java
rename to base/source/java/ch/systemsx/cisd/base/namedthread/NamedFutureTask.java
index b84245d28e3461d51971bab8e3a80eccbeadc3ca..301ad3f40038afa8f4151ecdfdbdcae2ce17104a 100644
--- a/common/source/java/ch/systemsx/cisd/common/concurrent/NamedFutureTask.java
+++ b/base/source/java/ch/systemsx/cisd/base/namedthread/NamedFutureTask.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package ch.systemsx.cisd.common.concurrent;
+package ch.systemsx.cisd.base.namedthread;
 
 import java.util.concurrent.FutureTask;
 
diff --git a/common/source/java/ch/systemsx/cisd/common/concurrent/NamedRunnable.java b/base/source/java/ch/systemsx/cisd/base/namedthread/NamedRunnable.java
similarity index 94%
rename from common/source/java/ch/systemsx/cisd/common/concurrent/NamedRunnable.java
rename to base/source/java/ch/systemsx/cisd/base/namedthread/NamedRunnable.java
index 9ff5c8f0c962abe9f453e165a16b30ff57956928..d54d3d2f1fd090a39ca64f714a2f066d4015e0ff 100644
--- a/common/source/java/ch/systemsx/cisd/common/concurrent/NamedRunnable.java
+++ b/base/source/java/ch/systemsx/cisd/base/namedthread/NamedRunnable.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package ch.systemsx.cisd.common.concurrent;
+package ch.systemsx.cisd.base.namedthread;
 
 /**
  * A {@link Runnable} with a name.
diff --git a/common/source/java/ch/systemsx/cisd/common/concurrent/NamingThreadFactory.java b/base/source/java/ch/systemsx/cisd/base/namedthread/NamingThreadFactory.java
similarity index 98%
rename from common/source/java/ch/systemsx/cisd/common/concurrent/NamingThreadFactory.java
rename to base/source/java/ch/systemsx/cisd/base/namedthread/NamingThreadFactory.java
index c87f18fb3868cde64ce10f03fb66c86e2311ea11..25bddc50b997a031edea0945524474cdd829cbc0 100644
--- a/common/source/java/ch/systemsx/cisd/common/concurrent/NamingThreadFactory.java
+++ b/base/source/java/ch/systemsx/cisd/base/namedthread/NamingThreadFactory.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package ch.systemsx.cisd.common.concurrent;
+package ch.systemsx.cisd.base.namedthread;
 
 import java.util.concurrent.ThreadFactory;
 
diff --git a/common/source/java/ch/systemsx/cisd/common/concurrent/NamingThreadPoolExecutor.java b/base/source/java/ch/systemsx/cisd/base/namedthread/NamingThreadPoolExecutor.java
similarity index 99%
rename from common/source/java/ch/systemsx/cisd/common/concurrent/NamingThreadPoolExecutor.java
rename to base/source/java/ch/systemsx/cisd/base/namedthread/NamingThreadPoolExecutor.java
index 5ac6954e4edd952cfb2ee5479b8f395f7b821391..6f96e87233d74dee26632da928ba986a8b9fde62 100644
--- a/common/source/java/ch/systemsx/cisd/common/concurrent/NamingThreadPoolExecutor.java
+++ b/base/source/java/ch/systemsx/cisd/base/namedthread/NamingThreadPoolExecutor.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package ch.systemsx.cisd.common.concurrent;
+package ch.systemsx.cisd.base.namedthread;
 
 import java.util.concurrent.BlockingQueue;
 import java.util.concurrent.Callable;
diff --git a/common/source/java/ch/systemsx/cisd/common/concurrent/PoolNameThread.java b/base/source/java/ch/systemsx/cisd/base/namedthread/PoolNameThread.java
similarity index 97%
rename from common/source/java/ch/systemsx/cisd/common/concurrent/PoolNameThread.java
rename to base/source/java/ch/systemsx/cisd/base/namedthread/PoolNameThread.java
index 3601019a2dc2d7bfe86fff2545ec6bd8bbac93f0..550efeaf7f8bc5e70148357ce449a3fd2150c080 100644
--- a/common/source/java/ch/systemsx/cisd/common/concurrent/PoolNameThread.java
+++ b/base/source/java/ch/systemsx/cisd/base/namedthread/PoolNameThread.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package ch.systemsx.cisd.common.concurrent;
+package ch.systemsx.cisd.base.namedthread;
 
 /**
  * A {@link Thread} that knows its pool name.
diff --git a/common/.classpath b/common/.classpath
index c38c47afae0468c26df135a7cab83ffa5ca7e1cc..cc089a2de623b9955d94d25cf0e56db19856ac3a 100644
--- a/common/.classpath
+++ b/common/.classpath
@@ -17,5 +17,6 @@
 	<classpathentry kind="lib" path="/libraries/jmock/objenesis/objenesis-1.0.jar"/>
 	<classpathentry kind="lib" path="/libraries/jmock/hamcrest/hamcrest-library.jar"/>
 	<classpathentry kind="lib" path="/libraries/unix"/>
+	<classpathentry combineaccessrules="false" kind="src" path="/base"/>
 	<classpathentry kind="output" path="targets/classes"/>
 </classpath>
diff --git a/common/source/java/ch/systemsx/cisd/common/concurrent/MonitoringProxy.java b/common/source/java/ch/systemsx/cisd/common/concurrent/MonitoringProxy.java
index 46ad3512b82f3443f7b34444c4aa1bc6fd01ec4f..b6802ef28490bbb16af334a99917b9445791a3d5 100644
--- a/common/source/java/ch/systemsx/cisd/common/concurrent/MonitoringProxy.java
+++ b/common/source/java/ch/systemsx/cisd/common/concurrent/MonitoringProxy.java
@@ -28,6 +28,8 @@ import java.util.Set;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Future;
 
+import ch.systemsx.cisd.base.namedthread.NamedCallable;
+import ch.systemsx.cisd.base.namedthread.NamingThreadPoolExecutor;
 import ch.systemsx.cisd.common.TimingParameters;
 import ch.systemsx.cisd.common.concurrent.ConcurrencyUtilities.ILogSettings;
 import ch.systemsx.cisd.common.exceptions.InterruptedExceptionUnchecked;
diff --git a/common/source/java/ch/systemsx/cisd/common/process/ProcessExecutionHelper.java b/common/source/java/ch/systemsx/cisd/common/process/ProcessExecutionHelper.java
index 64215d100f4d3b8c2d215744c1e4f0d2be097622..893aea8bf378d1da3380b91fee1dfb850a06e992 100644
--- a/common/source/java/ch/systemsx/cisd/common/process/ProcessExecutionHelper.java
+++ b/common/source/java/ch/systemsx/cisd/common/process/ProcessExecutionHelper.java
@@ -32,11 +32,11 @@ import org.apache.commons.io.IOUtils;
 import org.apache.commons.lang.StringUtils;
 import org.apache.log4j.Logger;
 
+import ch.systemsx.cisd.base.namedthread.NamedCallable;
+import ch.systemsx.cisd.base.namedthread.NamingThreadPoolExecutor;
 import ch.systemsx.cisd.common.concurrent.ConcurrencyUtilities;
 import ch.systemsx.cisd.common.concurrent.ExecutionResult;
 import ch.systemsx.cisd.common.concurrent.ExecutionStatus;
-import ch.systemsx.cisd.common.concurrent.NamedCallable;
-import ch.systemsx.cisd.common.concurrent.NamingThreadPoolExecutor;
 import ch.systemsx.cisd.common.exceptions.InterruptedExceptionUnchecked;
 import ch.systemsx.cisd.common.utilities.ITerminable;
 
diff --git a/common/sourceTest/java/ch/systemsx/cisd/common/concurrent/ConcurrencyUtilitiesTest.java b/common/sourceTest/java/ch/systemsx/cisd/common/concurrent/ConcurrencyUtilitiesTest.java
index 6f6e018ae474be3ae2d84a18b421e29742fc8b42..bde3db7e93fbf945a75cc2a89613e7510d36c49e 100644
--- a/common/sourceTest/java/ch/systemsx/cisd/common/concurrent/ConcurrencyUtilitiesTest.java
+++ b/common/sourceTest/java/ch/systemsx/cisd/common/concurrent/ConcurrencyUtilitiesTest.java
@@ -35,6 +35,7 @@ import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.BeforeTest;
 import org.testng.annotations.Test;
 
+import ch.systemsx.cisd.base.namedthread.NamingThreadPoolExecutor;
 import ch.systemsx.cisd.common.concurrent.ConcurrencyUtilities.ILogSettings;
 import ch.systemsx.cisd.common.exceptions.CheckedExceptionTunnel;
 import ch.systemsx.cisd.common.exceptions.InterruptedExceptionUnchecked;
diff --git a/common/sourceTest/java/ch/systemsx/cisd/common/concurrent/NamingThreadPoolExecutorTest.java b/common/sourceTest/java/ch/systemsx/cisd/common/concurrent/NamingThreadPoolExecutorTest.java
index 0f7d6a19f4b2cc7d960eff04fccc5802a3a3640d..39616431bff951c02d213639de759a749d17417f 100644
--- a/common/sourceTest/java/ch/systemsx/cisd/common/concurrent/NamingThreadPoolExecutorTest.java
+++ b/common/sourceTest/java/ch/systemsx/cisd/common/concurrent/NamingThreadPoolExecutorTest.java
@@ -34,6 +34,10 @@ import java.util.concurrent.TimeUnit;
 import org.testng.annotations.BeforeClass;
 import org.testng.annotations.Test;
 
+import ch.systemsx.cisd.base.namedthread.NamedCallable;
+import ch.systemsx.cisd.base.namedthread.NamedRunnable;
+import ch.systemsx.cisd.base.namedthread.NamingThreadFactory;
+import ch.systemsx.cisd.base.namedthread.NamingThreadPoolExecutor;
 import ch.systemsx.cisd.common.logging.LogInitializer;
 import ch.systemsx.cisd.common.test.Retry10;
 
diff --git a/datamover/source/java/ch/systemsx/cisd/datamover/filesystem/RetryingPathRemover.java b/datamover/source/java/ch/systemsx/cisd/datamover/filesystem/RetryingPathRemover.java
index 801f267cad5866304a04be53a075bbda1714dd8c..065ec5fbb378c5e878fadf91a136463b0ea6f8ba 100644
--- a/datamover/source/java/ch/systemsx/cisd/datamover/filesystem/RetryingPathRemover.java
+++ b/datamover/source/java/ch/systemsx/cisd/datamover/filesystem/RetryingPathRemover.java
@@ -25,12 +25,12 @@ import org.apache.commons.lang.time.DurationFormatUtils;
 import org.apache.log4j.Logger;
 
 import ch.rinn.restrictions.Private;
+import ch.systemsx.cisd.base.namedthread.NamingThreadPoolExecutor;
 import ch.systemsx.cisd.common.Constants;
 import ch.systemsx.cisd.common.concurrent.ConcurrencyUtilities;
 import ch.systemsx.cisd.common.concurrent.ExecutionResult;
 import ch.systemsx.cisd.common.concurrent.IActivityObserver;
 import ch.systemsx.cisd.common.concurrent.InactivityMonitor;
-import ch.systemsx.cisd.common.concurrent.NamingThreadPoolExecutor;
 import ch.systemsx.cisd.common.concurrent.InactivityMonitor.IDescribingActivitySensor;
 import ch.systemsx.cisd.common.concurrent.InactivityMonitor.IInactivityObserver;
 import ch.systemsx.cisd.common.exceptions.Status;