diff --git a/datamover/source/java/ch/systemsx/cisd/datamover/DataMover.java b/datamover/source/java/ch/systemsx/cisd/datamover/DataMover.java
index b1646aeca9ba8d1030dd5b3cbac5ad324acd454e..95e2ab2dee453c816592e32654192ce5f57a48a2 100644
--- a/datamover/source/java/ch/systemsx/cisd/datamover/DataMover.java
+++ b/datamover/source/java/ch/systemsx/cisd/datamover/DataMover.java
@@ -23,16 +23,16 @@ import ch.systemsx.cisd.common.Constants;
 import ch.systemsx.cisd.common.utilities.DirectoryScanningTimerTask;
 import ch.systemsx.cisd.common.utilities.FileUtilities;
 import ch.systemsx.cisd.common.utilities.IPathHandler;
+import ch.systemsx.cisd.common.utilities.IStoreHandler;
 import ch.systemsx.cisd.common.utilities.ITerminable;
 import ch.systemsx.cisd.common.utilities.ITriggerable;
+import ch.systemsx.cisd.common.utilities.StoreItem;
 import ch.systemsx.cisd.common.utilities.TimerHelper;
 import ch.systemsx.cisd.common.utilities.TriggeringTimerTask;
-import ch.systemsx.cisd.datamover.common.StoreItem;
 import ch.systemsx.cisd.datamover.filesystem.FileStoreFactory;
 import ch.systemsx.cisd.datamover.filesystem.RemoteMonitoredMoverFactory;
 import ch.systemsx.cisd.datamover.filesystem.intf.FileStore;
 import ch.systemsx.cisd.datamover.filesystem.intf.IFileSysOperationsFactory;
-import ch.systemsx.cisd.datamover.filesystem.intf.IStoreHandler;
 import ch.systemsx.cisd.datamover.utils.LocalBufferDirs;
 
 /**
diff --git a/datamover/source/java/ch/systemsx/cisd/datamover/IncomingProcessor.java b/datamover/source/java/ch/systemsx/cisd/datamover/IncomingProcessor.java
index e1093596856df79d950a5455287800221cc90c95..66cdbc65c6c31c3e0bd71117339118f86b42cfd4 100644
--- a/datamover/source/java/ch/systemsx/cisd/datamover/IncomingProcessor.java
+++ b/datamover/source/java/ch/systemsx/cisd/datamover/IncomingProcessor.java
@@ -17,8 +17,8 @@
 package ch.systemsx.cisd.datamover;
 
 import java.io.File;
-import java.io.FileFilter;
 import java.util.TimerTask;
+import java.util.Vector;
 
 import org.apache.log4j.Level;
 import org.apache.log4j.Logger;
@@ -30,17 +30,16 @@ import ch.systemsx.cisd.common.logging.LogCategory;
 import ch.systemsx.cisd.common.logging.LogFactory;
 import ch.systemsx.cisd.common.utilities.DirectoryScanningTimerTask;
 import ch.systemsx.cisd.common.utilities.FileUtilities;
-import ch.systemsx.cisd.common.utilities.IPathHandler;
-import ch.systemsx.cisd.common.utilities.NamePrefixFileFilter;
+import ch.systemsx.cisd.common.utilities.IStoreHandler;
+import ch.systemsx.cisd.common.utilities.StoreItem;
+import ch.systemsx.cisd.common.utilities.DirectoryScanningTimerTask.IScannedStore;
 import ch.systemsx.cisd.datamover.common.MarkerFile;
-import ch.systemsx.cisd.datamover.common.StoreItem;
 import ch.systemsx.cisd.datamover.filesystem.FileStoreFactory;
 import ch.systemsx.cisd.datamover.filesystem.RemoteMonitoredMoverFactory;
 import ch.systemsx.cisd.datamover.filesystem.intf.FileStore;
 import ch.systemsx.cisd.datamover.filesystem.intf.IFileSysOperationsFactory;
 import ch.systemsx.cisd.datamover.filesystem.intf.IPathMover;
 import ch.systemsx.cisd.datamover.filesystem.intf.IRecoverableTimerTaskFactory;
-import ch.systemsx.cisd.datamover.filesystem.intf.IStoreHandler;
 import ch.systemsx.cisd.datamover.filesystem.intf.FileStore.ExtendedFileStore;
 import ch.systemsx.cisd.datamover.utils.LocalBufferDirs;
 import ch.systemsx.cisd.datamover.utils.QuietPeriodFileFilter;
@@ -98,45 +97,61 @@ public class IncomingProcessor implements IRecoverableTimerTaskFactory
     private DataMoverProcess create()
     {
         final IStoreHandler pathHandler = createIncomingMovingPathHandler();
-        final FileFilter filter = createQuietPeriodFilter();
 
-        // TODO 2007-10-10, Tomasz Pylak: refactor not to use incomingStore.getPath()
         final DirectoryScanningTimerTask movingTask =
-                new DirectoryScanningTimerTask(incomingStore.getPath(), filter, asPathHandler(pathHandler),
-                        NUMBER_OF_ERRORS_IN_LISTING_IGNORED);
+                new DirectoryScanningTimerTask(createIncomingStoreScanner(), bufferDirs.getCopyInProgressDir(),
+                        pathHandler, NUMBER_OF_ERRORS_IN_LISTING_IGNORED);
         return new DataMoverProcess(movingTask, "Mover of Incoming Data", this);
     }
 
-    // TODO 2007-10-10, Tomasz Pylak: remove this when DirectoryScanningTimerTask will work with IStoreHandler. This is a
-    // quick hack.
-    private static IPathHandler asPathHandler(final IStoreHandler storeHandler)
+    private IScannedStore createIncomingStoreScanner()
     {
-        return new IPathHandler()
+        return new IScannedStore()
             {
-                public void handle(File path)
+                public boolean exists(StoreItem item)
                 {
-                    storeHandler.handle(new StoreItem(path.getName()));
+                    return incomingStore.exists(item);
+                }
+
+                public String getLocationDescription(StoreItem item)
+                {
+                    return incomingStore.getLocationDescription(item);
+                }
+
+                public StoreItem[] tryListSortedReadyToProcess(ISimpleLogger loggerOrNull)
+                {
+                    // Older items will be handled before newer items.
+                    // This becomes important when doing online quality control of measurements.
+                    StoreItem[] items = incomingStore.tryListSortByLastModified(loggerOrNull);
+                    if (items == null)
+                    {
+                        return null;
+                    }
+                    return filterReadyToProcess(items);
                 }
             };
     }
 
-    private FileFilter createQuietPeriodFilter()
+    private StoreItem[] filterReadyToProcess(StoreItem[] items)
     {
-        FileFilter quitePeriodFilter = new QuietPeriodFileFilter(parameters);
-        FileFilter filterDeletionMarkers = new NamePrefixFileFilter(Constants.DELETION_IN_PROGRESS_PREFIX, false);
-        FileFilter filter = combineFilters(filterDeletionMarkers, quitePeriodFilter);
-        return filter;
+        Vector<StoreItem> result = new Vector<StoreItem>();
+        for (StoreItem item : items)
+        {
+            if (isReadyToProcess(item))
+            {
+                result.add(item);
+            }
+        }
+        return result.toArray(StoreItem.EMPTY_ARRAY);
     }
 
-    private static FileFilter combineFilters(final FileFilter filter1, final FileFilter filter2)
+    private boolean isReadyToProcess(StoreItem item)
     {
-        return new FileFilter()
-            {
-                public boolean accept(File pathname)
-                {
-                    return filter1.accept(pathname) && filter2.accept(pathname);
-                }
-            };
+        if (item.getName().startsWith(Constants.DELETION_IN_PROGRESS_PREFIX))
+        {
+            return false;
+        }
+        return new QuietPeriodFileFilter(incomingStore, parameters).accept(item);
     }
 
     private IStoreHandler createIncomingMovingPathHandler()
diff --git a/datamover/source/java/ch/systemsx/cisd/datamover/common/MarkerFile.java b/datamover/source/java/ch/systemsx/cisd/datamover/common/MarkerFile.java
index 6579c609223978d752a1ff41fae98d775dad5a19..e2fda5fbad9b5332fcebac02f414dd3b5b171d67 100644
--- a/datamover/source/java/ch/systemsx/cisd/datamover/common/MarkerFile.java
+++ b/datamover/source/java/ch/systemsx/cisd/datamover/common/MarkerFile.java
@@ -20,6 +20,7 @@ import java.io.File;
 
 import ch.systemsx.cisd.common.Constants;
 import ch.systemsx.cisd.common.utilities.FileUtilities;
+import ch.systemsx.cisd.common.utilities.StoreItem;
 
 /**
  * Manipulations on marker files. Should not use string types in the interface.
diff --git a/datamover/source/java/ch/systemsx/cisd/datamover/common/StoreItem.java b/datamover/source/java/ch/systemsx/cisd/datamover/common/StoreItem.java
deleted file mode 100644
index 160420d17e7d1114a13d4509094787f7a5f47d0d..0000000000000000000000000000000000000000
--- a/datamover/source/java/ch/systemsx/cisd/datamover/common/StoreItem.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright 2007 ETH Zuerich, CISD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package ch.systemsx.cisd.datamover.common;
-
-/**
- * @author Tomasz Pylak on Oct 8, 2007
- */
-public class StoreItem
-{
-    private final String name;
-
-    public StoreItem(String name)
-    {
-        this.name = name;
-    }
-
-    /** Should not be used for logging. Use toString() instead. */
-    public String getName()
-    {
-        return name;
-    }
-
-    @Override
-    public String toString()
-    {
-        return name;
-    }
-}
diff --git a/datamover/source/java/ch/systemsx/cisd/datamover/filesystem/RemoteMonitoredMoverFactory.java b/datamover/source/java/ch/systemsx/cisd/datamover/filesystem/RemoteMonitoredMoverFactory.java
index a221dbd60f15ad123e914ed629870988f62b1f2e..c030e66b7289aa69aa42060b7bb4457ad4f08fb8 100644
--- a/datamover/source/java/ch/systemsx/cisd/datamover/filesystem/RemoteMonitoredMoverFactory.java
+++ b/datamover/source/java/ch/systemsx/cisd/datamover/filesystem/RemoteMonitoredMoverFactory.java
@@ -16,9 +16,9 @@
 
 package ch.systemsx.cisd.datamover.filesystem;
 
+import ch.systemsx.cisd.common.utilities.IStoreHandler;
 import ch.systemsx.cisd.datamover.filesystem.intf.FileStore;
 import ch.systemsx.cisd.datamover.filesystem.intf.IStoreCopier;
-import ch.systemsx.cisd.datamover.filesystem.intf.IStoreHandler;
 import ch.systemsx.cisd.datamover.filesystem.remote.CopyActivityMonitor;
 import ch.systemsx.cisd.datamover.filesystem.remote.RemotePathMover;
 import ch.systemsx.cisd.datamover.intf.ITimingParameters;
diff --git a/datamover/source/java/ch/systemsx/cisd/datamover/filesystem/intf/FileStore.java b/datamover/source/java/ch/systemsx/cisd/datamover/filesystem/intf/FileStore.java
index 86aaebd65888812ba4f4e6874eaa260978ccc70b..42a8606f523a7b986e8b89fa1f2264077e75ca36 100644
--- a/datamover/source/java/ch/systemsx/cisd/datamover/filesystem/intf/FileStore.java
+++ b/datamover/source/java/ch/systemsx/cisd/datamover/filesystem/intf/FileStore.java
@@ -23,7 +23,8 @@ import org.apache.commons.lang.StringUtils;
 
 import ch.systemsx.cisd.common.exceptions.EnvironmentFailureException;
 import ch.systemsx.cisd.common.exceptions.Status;
-import ch.systemsx.cisd.datamover.common.StoreItem;
+import ch.systemsx.cisd.common.logging.ISimpleLogger;
+import ch.systemsx.cisd.common.utilities.StoreItem;
 
 /**
  * A class to holds the information about a file store.
@@ -54,8 +55,7 @@ public abstract class FileStore
         this.factory = factory;
     }
 
-    // TODO 2007-10-10, Tomasz Pylak: change visibility to protected after changing DirectoryScanningTimerTask
-    public final File getPath()
+    protected final File getPath()
     {
         return path;
     }
@@ -179,6 +179,11 @@ public abstract class FileStore
      */
     public abstract long lastChanged(StoreItem item);
 
+    /**
+     * List files in the scanned store. Sort in order of "oldest first".  
+     */
+    public abstract StoreItem[] tryListSortByLastModified(ISimpleLogger loggerOrNull);
+
     public abstract Status delete(StoreItem item);
 
     /**
@@ -187,7 +192,10 @@ public abstract class FileStore
      */
     public abstract IStoreCopier getCopier(FileStore destinationDirectory);
 
-    // public boolean isParentDirectory(FileStoreIntf child);
+    // returned description should give the user the idea about file location. You should not use the result for
+    // something else than printing it for user. It should not be especially assumed that the result is the path
+    // which could be used in java.io.File constructor.
+    public abstract String getLocationDescription(StoreItem item);
 
     public abstract ExtendedFileStore tryAsExtended();
 
diff --git a/datamover/source/java/ch/systemsx/cisd/datamover/filesystem/intf/IStoreCopier.java b/datamover/source/java/ch/systemsx/cisd/datamover/filesystem/intf/IStoreCopier.java
index 4d289a364d67a9a4b24f6a225c94d710882f0be7..213763a83539477fef6c749a42764e38a5b8ce78 100644
--- a/datamover/source/java/ch/systemsx/cisd/datamover/filesystem/intf/IStoreCopier.java
+++ b/datamover/source/java/ch/systemsx/cisd/datamover/filesystem/intf/IStoreCopier.java
@@ -18,7 +18,7 @@ package ch.systemsx.cisd.datamover.filesystem.intf;
 
 import ch.systemsx.cisd.common.exceptions.Status;
 import ch.systemsx.cisd.common.utilities.ITerminable;
-import ch.systemsx.cisd.datamover.common.StoreItem;
+import ch.systemsx.cisd.common.utilities.StoreItem;
 
 /**
  * @author Tomasz Pylak on Oct 10, 2007
diff --git a/datamover/source/java/ch/systemsx/cisd/datamover/filesystem/intf/IStoreHandler.java b/datamover/source/java/ch/systemsx/cisd/datamover/filesystem/intf/IStoreHandler.java
deleted file mode 100644
index 1870ed04f029cf958da58fbccb94199f5a9a4874..0000000000000000000000000000000000000000
--- a/datamover/source/java/ch/systemsx/cisd/datamover/filesystem/intf/IStoreHandler.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Copyright 2007 ETH Zuerich, CISD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package ch.systemsx.cisd.datamover.filesystem.intf;
-
-import ch.systemsx.cisd.datamover.common.StoreItem;
-
-
-/**
- * @author Tomasz Pylak on Oct 9, 2007
- */
-public interface IStoreHandler
-{
-    void handle(StoreItem item);
-}
diff --git a/datamover/source/java/ch/systemsx/cisd/datamover/filesystem/remote/CopyActivityMonitor.java b/datamover/source/java/ch/systemsx/cisd/datamover/filesystem/remote/CopyActivityMonitor.java
index 672a61b1220279ccc0a12f408f5a30aa6d7d16e1..7fbd142c3c422e55a6565d3f1db0ea3a5f0402b3 100644
--- a/datamover/source/java/ch/systemsx/cisd/datamover/filesystem/remote/CopyActivityMonitor.java
+++ b/datamover/source/java/ch/systemsx/cisd/datamover/filesystem/remote/CopyActivityMonitor.java
@@ -27,7 +27,7 @@ import org.apache.log4j.Logger;
 import ch.systemsx.cisd.common.logging.LogCategory;
 import ch.systemsx.cisd.common.logging.LogFactory;
 import ch.systemsx.cisd.common.utilities.ITerminable;
-import ch.systemsx.cisd.datamover.common.StoreItem;
+import ch.systemsx.cisd.common.utilities.StoreItem;
 import ch.systemsx.cisd.datamover.filesystem.intf.FileStore;
 import ch.systemsx.cisd.datamover.intf.ITimingParameters;
 
diff --git a/datamover/source/java/ch/systemsx/cisd/datamover/filesystem/remote/RemotePathMover.java b/datamover/source/java/ch/systemsx/cisd/datamover/filesystem/remote/RemotePathMover.java
index d62cde273ae2c2657985af9ecdf64bfd6549defc..120daaebb78479a2efaf2428fe4488556c12fe2a 100644
--- a/datamover/source/java/ch/systemsx/cisd/datamover/filesystem/remote/RemotePathMover.java
+++ b/datamover/source/java/ch/systemsx/cisd/datamover/filesystem/remote/RemotePathMover.java
@@ -22,11 +22,11 @@ import ch.systemsx.cisd.common.exceptions.Status;
 import ch.systemsx.cisd.common.exceptions.StatusFlag;
 import ch.systemsx.cisd.common.logging.LogCategory;
 import ch.systemsx.cisd.common.logging.LogFactory;
+import ch.systemsx.cisd.common.utilities.IStoreHandler;
+import ch.systemsx.cisd.common.utilities.StoreItem;
 import ch.systemsx.cisd.datamover.common.MarkerFile;
-import ch.systemsx.cisd.datamover.common.StoreItem;
 import ch.systemsx.cisd.datamover.filesystem.intf.FileStore;
 import ch.systemsx.cisd.datamover.filesystem.intf.IStoreCopier;
-import ch.systemsx.cisd.datamover.filesystem.intf.IStoreHandler;
 import ch.systemsx.cisd.datamover.filesystem.intf.FileStore.ExtendedFileStore;
 import ch.systemsx.cisd.datamover.intf.ITimingParameters;
 
diff --git a/datamover/source/java/ch/systemsx/cisd/datamover/filesystem/store/FileStoreLocal.java b/datamover/source/java/ch/systemsx/cisd/datamover/filesystem/store/FileStoreLocal.java
index 284d9ed053888ddea9951ee6e4535df3c24fbb21..6799da89569fabd4ea69f3de8cc63a128c7168fa 100644
--- a/datamover/source/java/ch/systemsx/cisd/datamover/filesystem/store/FileStoreLocal.java
+++ b/datamover/source/java/ch/systemsx/cisd/datamover/filesystem/store/FileStoreLocal.java
@@ -22,11 +22,12 @@ import java.io.IOException;
 import org.apache.log4j.Logger;
 
 import ch.systemsx.cisd.common.exceptions.Status;
+import ch.systemsx.cisd.common.logging.ISimpleLogger;
 import ch.systemsx.cisd.common.logging.LogCategory;
 import ch.systemsx.cisd.common.logging.LogFactory;
 import ch.systemsx.cisd.common.utilities.FileUtilities;
+import ch.systemsx.cisd.common.utilities.StoreItem;
 import ch.systemsx.cisd.datamover.common.MarkerFile;
-import ch.systemsx.cisd.datamover.common.StoreItem;
 import ch.systemsx.cisd.datamover.filesystem.intf.FileStore;
 import ch.systemsx.cisd.datamover.filesystem.intf.IFileSysOperationsFactory;
 import ch.systemsx.cisd.datamover.filesystem.intf.IPathMover;
@@ -125,6 +126,36 @@ public class FileStoreLocal extends ExtendedFileStore
         return "[local fs]" + pathStr;
     }
 
+    @Override
+    public String getLocationDescription(StoreItem item)
+    {
+        return getChildFile(item).getPath();
+    }
+
+    @Override
+    public StoreItem[] tryListSortByLastModified(ISimpleLogger loggerOrNull)
+    {
+        File[] files = FileUtilities.tryListFiles(path, loggerOrNull);
+        if (files != null)
+        {
+            FileUtilities.sortByLastModified(files);
+            return asItems(files);
+        } else
+        {
+            return null;
+        }
+    }
+
+    private static StoreItem[] asItems(File[] files)
+    {
+        StoreItem[] items = new StoreItem[files.length];
+        for (int i = 0; i < items.length; i++)
+        {
+            items[i] = new StoreItem(files[i].getName());
+        }
+        return items;
+    }
+
     // ------
 
     /**
diff --git a/datamover/source/java/ch/systemsx/cisd/datamover/filesystem/store/FileStoreRemote.java b/datamover/source/java/ch/systemsx/cisd/datamover/filesystem/store/FileStoreRemote.java
index ef42ce0f03b6993c206d78083478e849e1f682da..72b179dfb70e1a5cf8195699f31e334b52db5ac9 100644
--- a/datamover/source/java/ch/systemsx/cisd/datamover/filesystem/store/FileStoreRemote.java
+++ b/datamover/source/java/ch/systemsx/cisd/datamover/filesystem/store/FileStoreRemote.java
@@ -19,7 +19,8 @@ package ch.systemsx.cisd.datamover.filesystem.store;
 import java.io.File;
 
 import ch.systemsx.cisd.common.exceptions.Status;
-import ch.systemsx.cisd.datamover.common.StoreItem;
+import ch.systemsx.cisd.common.logging.ISimpleLogger;
+import ch.systemsx.cisd.common.utilities.StoreItem;
 import ch.systemsx.cisd.datamover.filesystem.intf.FileStore;
 import ch.systemsx.cisd.datamover.filesystem.intf.IFileSysOperationsFactory;
 import ch.systemsx.cisd.datamover.filesystem.intf.IStoreCopier;
@@ -80,4 +81,17 @@ public class FileStoreRemote extends FileStore
         String pathStr = path.getPath();
         return "[remote fs]" + hostOrNull + ":" + pathStr;
     }
+
+    @Override
+    public String getLocationDescription(StoreItem item)
+    {
+        return hostOrNull + ":" + getChildFile(item).getPath();
+    }
+
+    @Override
+    public StoreItem[] tryListSortByLastModified(ISimpleLogger loggerOrNull)
+    {
+        // TODO 2007-10-09, Tomasz Pylak: implement ssh tunneling mode.
+        return null;
+    }
 }
diff --git a/datamover/source/java/ch/systemsx/cisd/datamover/filesystem/store/FileStoreRemoteMounted.java b/datamover/source/java/ch/systemsx/cisd/datamover/filesystem/store/FileStoreRemoteMounted.java
index e00c5332421339c29f79e1981bf329c1d7e9a3eb..9fdfe169fbc9793d9c16fa3f104750902636c102 100644
--- a/datamover/source/java/ch/systemsx/cisd/datamover/filesystem/store/FileStoreRemoteMounted.java
+++ b/datamover/source/java/ch/systemsx/cisd/datamover/filesystem/store/FileStoreRemoteMounted.java
@@ -19,7 +19,8 @@ package ch.systemsx.cisd.datamover.filesystem.store;
 import java.io.File;
 
 import ch.systemsx.cisd.common.exceptions.Status;
-import ch.systemsx.cisd.datamover.common.StoreItem;
+import ch.systemsx.cisd.common.logging.ISimpleLogger;
+import ch.systemsx.cisd.common.utilities.StoreItem;
 import ch.systemsx.cisd.datamover.filesystem.intf.FileStore;
 import ch.systemsx.cisd.datamover.filesystem.intf.IFileSysOperationsFactory;
 import ch.systemsx.cisd.datamover.filesystem.intf.IStoreCopier;
@@ -57,6 +58,12 @@ public class FileStoreRemoteMounted extends FileStore
         return "[mounted remote fs]" + pathStr;
     }
 
+    @Override
+    public String getLocationDescription(StoreItem item)
+    {
+        return localImpl.getLocationDescription(item);
+    }
+
     @Override
     public Status delete(StoreItem item)
     {
@@ -80,4 +87,10 @@ public class FileStoreRemoteMounted extends FileStore
     {
         return localImpl.tryCheckDirectoryFullyAccessible();
     }
+
+    @Override
+    public StoreItem[] tryListSortByLastModified(ISimpleLogger loggerOrNull)
+    {
+        return localImpl.tryListSortByLastModified(loggerOrNull);
+    }
 }
diff --git a/datamover/source/java/ch/systemsx/cisd/datamover/utils/QuietPeriodFileFilter.java b/datamover/source/java/ch/systemsx/cisd/datamover/utils/QuietPeriodFileFilter.java
index 65f37023b6068fc7753cd09e90b545c55656a7dd..0ae1d580b51e86239313e1583b9e2d37c6a983da 100644
--- a/datamover/source/java/ch/systemsx/cisd/datamover/utils/QuietPeriodFileFilter.java
+++ b/datamover/source/java/ch/systemsx/cisd/datamover/utils/QuietPeriodFileFilter.java
@@ -16,10 +16,10 @@
 
 package ch.systemsx.cisd.datamover.utils;
 
-import java.io.File;
 import java.io.FileFilter;
 
-import ch.systemsx.cisd.common.utilities.FileUtilities;
+import ch.systemsx.cisd.common.utilities.StoreItem;
+import ch.systemsx.cisd.datamover.filesystem.intf.FileStore;
 import ch.systemsx.cisd.datamover.intf.ITimingParameters;
 
 /**
@@ -27,25 +27,28 @@ import ch.systemsx.cisd.datamover.intf.ITimingParameters;
  * 
  * @author Bernd Rinn
  */
-public class QuietPeriodFileFilter implements FileFilter
+public class QuietPeriodFileFilter
 {
     private final long quietPeriodMillis;
 
+    private final FileStore store;
+
     /**
      * Creates a <var>QuietPeriodFileFilter</var>.
      * 
+     * @param store The store in which items reside
      * @param timingParameters The timing paramter object to get the quiet period from.
      */
-    public QuietPeriodFileFilter(ITimingParameters timingParameters)
+    public QuietPeriodFileFilter(FileStore store, ITimingParameters timingParameters)
     {
-        assert timingParameters != null;
+        this.store = store;
         this.quietPeriodMillis = timingParameters.getQuietPeriodMillis();
         assert quietPeriodMillis > 0;
     }
 
-    public boolean accept(File pathname)
+    public boolean accept(StoreItem item)
     {
-        return (System.currentTimeMillis() - FileUtilities.lastChanged(pathname)) > quietPeriodMillis;
+        return (System.currentTimeMillis() - store.lastChanged(item)) > quietPeriodMillis;
     }
 
 }
diff --git a/datamover/sourceTest/java/ch/systemsx/cisd/datamover/MainTest.java b/datamover/sourceTest/java/ch/systemsx/cisd/datamover/MainTest.java
index 29d6161c9b601df58e6210f9c9c7905189a4d18f..d691a632955b1203f3c47593999e8c6cbc725717 100644
--- a/datamover/sourceTest/java/ch/systemsx/cisd/datamover/MainTest.java
+++ b/datamover/sourceTest/java/ch/systemsx/cisd/datamover/MainTest.java
@@ -410,7 +410,7 @@ public class MainTest
     }
 
     @Test(groups =
-        { "slowXX" }, dataProvider = "delays")
+        { "slow" }, dataProvider = "delays")
     // recovery after failure when data are copied to 'copy-completed', but before deletion has been finished
     public void testRecoveryIncomingCompleteDeletionInProgress(long delay) throws Exception
     {
@@ -632,7 +632,7 @@ public class MainTest
     }
 
     @Test(groups =
-        { "xxx" })
+        { "slow" })
     // normal work-flow tests, no extra copy is created
     public void testWholePipelineNoExtraCopy() throws Exception
     {
diff --git a/datamover/sourceTest/java/ch/systemsx/cisd/datamover/filesystem/remote/CopyActivityMonitorTest.java b/datamover/sourceTest/java/ch/systemsx/cisd/datamover/filesystem/remote/CopyActivityMonitorTest.java
index c993b7b932b6a08923d4b4f7f12bbf0a861ccf17..faf41223b77ba5b5caf1ed95ba4a46c7ab2c2133 100644
--- a/datamover/sourceTest/java/ch/systemsx/cisd/datamover/filesystem/remote/CopyActivityMonitorTest.java
+++ b/datamover/sourceTest/java/ch/systemsx/cisd/datamover/filesystem/remote/CopyActivityMonitorTest.java
@@ -25,13 +25,14 @@ import org.testng.annotations.Test;
 
 import ch.systemsx.cisd.common.exceptions.CheckedExceptionTunnel;
 import ch.systemsx.cisd.common.exceptions.Status;
+import ch.systemsx.cisd.common.logging.ISimpleLogger;
 import ch.systemsx.cisd.common.logging.LogCategory;
 import ch.systemsx.cisd.common.logging.LogFactory;
 import ch.systemsx.cisd.common.logging.LogInitializer;
 import ch.systemsx.cisd.common.logging.LogMonitoringAppender;
 import ch.systemsx.cisd.common.utilities.ITerminable;
+import ch.systemsx.cisd.common.utilities.StoreItem;
 import ch.systemsx.cisd.common.utilities.StoringUncaughtExceptionHandler;
-import ch.systemsx.cisd.datamover.common.StoreItem;
 import ch.systemsx.cisd.datamover.filesystem.intf.FileStore;
 import ch.systemsx.cisd.datamover.filesystem.intf.IFileSysOperationsFactory;
 import ch.systemsx.cisd.datamover.filesystem.intf.IStoreCopier;
@@ -181,6 +182,18 @@ public class CopyActivityMonitorTest
                 {
                     return localImpl.getCopier(destinationDirectory);
                 }
+
+                @Override
+                public String getLocationDescription(StoreItem item)
+                {
+                    return localImpl.getLocationDescription(item);
+                }
+
+                @Override
+                public StoreItem[] tryListSortByLastModified(ISimpleLogger loggerOrNull)
+                {
+                    return localImpl.tryListSortByLastModified(loggerOrNull);
+                }
             };
     }
 
diff --git a/datamover/sourceTest/java/ch/systemsx/cisd/datamover/testhelper/FileStructEngine.java b/datamover/sourceTest/java/ch/systemsx/cisd/datamover/testhelper/FileStructEngine.java
index 04baf32946eed8d99376827113ec87cd044a4f4e..df42256584550aa8c262b2961ac41202a1a4ea3b 100644
--- a/datamover/sourceTest/java/ch/systemsx/cisd/datamover/testhelper/FileStructEngine.java
+++ b/datamover/sourceTest/java/ch/systemsx/cisd/datamover/testhelper/FileStructEngine.java
@@ -29,8 +29,8 @@ import java.util.Arrays;
 import java.util.List;
 
 import ch.systemsx.cisd.common.utilities.CollectionIO;
+import ch.systemsx.cisd.common.utilities.StoreItem;
 import ch.systemsx.cisd.datamover.common.MarkerFile;
-import ch.systemsx.cisd.datamover.common.StoreItem;
 
 /**
  * Immutable helper for creating a sample directory structure and manipulating it.