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 b6f92ee31e79ae9988c2844287a1ffa5cb606c6e..9bc971fb5fd4b9e5016ce56129e609199a90025e 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
@@ -77,12 +77,12 @@ public abstract class FileStore implements IFileStore
         }
     }
 
-    protected final File getPath()
+    public final File getPath()
     {
         return fileWithHighwaterMark.getFile();
     }
 
-    protected final String tryGetHost()
+    public final String tryGetHost()
     {
         return hostOrNull;
     }
@@ -204,26 +204,4 @@ public abstract class FileStore implements IFileStore
         return builder.toHashCode();
     }
 
-
-    //
-    // Helper classes
-    //
-
-    public static abstract class ExtendedFileStore extends FileStore implements IExtendedFileStore
-    {
-        protected ExtendedFileStore(final FileWithHighwaterMark path, final String hostOrNull,
-                final boolean remote, final String kind, final IFileSysOperationsFactory factory)
-        {
-            super(path, hostOrNull, remote, kind, factory);
-        }
-
-        //
-        // IExtendedFileStore
-        //
-
-        public abstract boolean createNewFile(StoreItem item);
-
-        public abstract File tryMoveLocal(StoreItem sourceItem, File destinationDir,
-                String newFilePrefix);
-    }
 }
\ No newline at end of file
diff --git a/datamover/source/java/ch/systemsx/cisd/datamover/filesystem/intf/IFileStore.java b/datamover/source/java/ch/systemsx/cisd/datamover/filesystem/intf/IFileStore.java
index 99312d347a89d3f66cda85b2db44f2eafd5ed917..4adc4c869f19ee86d06440072551310556978a3c 100644
--- a/datamover/source/java/ch/systemsx/cisd/datamover/filesystem/intf/IFileStore.java
+++ b/datamover/source/java/ch/systemsx/cisd/datamover/filesystem/intf/IFileStore.java
@@ -16,6 +16,8 @@
 
 package ch.systemsx.cisd.datamover.filesystem.intf;
 
+import java.io.File;
+
 import ch.systemsx.cisd.common.exceptions.Status;
 import ch.systemsx.cisd.common.highwatermark.HighwaterMarkWatcher;
 import ch.systemsx.cisd.common.logging.ISimpleLogger;
@@ -41,7 +43,23 @@ public interface IFileStore extends ISelfTestable
      * share and mounted via NFS or CIFS.
      */
     public boolean isRemote();
+    
+    /**
+     * Returns the path of this file store.
+     */
+    public File getPath();
+    
+    /**
+     * Tries to return the host.
+     * 
+     * @return <code>null</code> if {@link #isRemote()} return <code>false</code>.
+     */
+    public String tryGetHost();
 
+    /**
+     * Returns <code>true</code> if this file store is the parent directory of
+     * the specified file store.
+     */
     public boolean isParentDirectory(IFileStore child);
 
     /**
@@ -54,6 +72,9 @@ public interface IFileStore extends ISelfTestable
      */
     public String tryCheckDirectoryFullyAccessible(final long timeOutMillis);
 
+    /**
+     * Returns <code>true</code> if the specified store item exists in this file store.
+     */
     public boolean exists(StoreItem item);
 
     /**
@@ -86,6 +107,9 @@ public interface IFileStore extends ISelfTestable
      */
     public StoreItem[] tryListSortByLastModified(ISimpleLogger loggerOrNull);
 
+    /**
+     * Deletes the specified item from this store.
+     */
     public Status delete(StoreItem item);
 
     /**
@@ -102,6 +126,11 @@ public interface IFileStore extends ISelfTestable
     // which could be used in java.io.File constructor.
     public String getLocationDescription(StoreItem item);
 
+    /**
+     * Returns this file store as an extended file store if possible.
+     * 
+     *  @return <code>null</code> if this file store can not be returned as an extended file store.
+     */
     public IExtendedFileStore tryAsExtended();
 
     /**
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 cbfd8d55ebca2005a1d63610d1e6e1cfc7065c69..a4cc889c4991dd09a0f353b94dc67d6da5b613cf 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
@@ -37,14 +37,13 @@ import ch.systemsx.cisd.datamover.filesystem.intf.IFileSysOperationsFactory;
 import ch.systemsx.cisd.datamover.filesystem.intf.IPathMover;
 import ch.systemsx.cisd.datamover.filesystem.intf.IPathRemover;
 import ch.systemsx.cisd.datamover.filesystem.intf.IStoreCopier;
-import ch.systemsx.cisd.datamover.filesystem.intf.FileStore.ExtendedFileStore;
 
 /**
  * An {@link IFileStore} implementation for local stores.
  * 
  * @author Tomasz Pylak
  */
-public class FileStoreLocal extends ExtendedFileStore
+public class FileStoreLocal extends FileStore implements IExtendedFileStore
 {
     private static final Logger machineLog =
             LogFactory.getLogger(LogCategory.MACHINE, FileStoreLocal.class);
@@ -64,10 +63,6 @@ public class FileStoreLocal extends ExtendedFileStore
         this.highwaterMarkWatcher = new HighwaterMarkWatcher(file.getHighwaterMark());
     }
 
-    //
-    // ExtendedFileStore
-    //
-
     public final Status delete(final StoreItem item)
     {
         return remover.remove(getChildFile(item));
@@ -122,7 +117,6 @@ public class FileStoreLocal extends ExtendedFileStore
         return this;
     }
 
-    @Override
     public final boolean createNewFile(final StoreItem item)
     {
         try
@@ -137,7 +131,6 @@ public class FileStoreLocal extends ExtendedFileStore
         }
     }
 
-    @Override
     public final File tryMoveLocal(final StoreItem sourceItem, final File destinationDir,
             final String newFilePrefix)
     {