diff --git a/screening/dist/etc/service.properties b/screening/dist/etc/service.properties
index 062e3aa11b58666d82c2c4849af9b535698b4e41..17ee8fab7ae8ff05ad8a41272cefa8d7b4c307b1 100644
--- a/screening/dist/etc/service.properties
+++ b/screening/dist/etc/service.properties
@@ -86,11 +86,9 @@ mail.smtp.host = file://${root-dir}
 # ---------------------------------------------------------------------------
 
 data-sources = imaging-db
-imaging-db.version-holder-class = ch.systemsx.cisd.openbis.dss.etl.dataaccess.ImagingDatabaseVersionHolder
 imaging-db.databaseEngineCode = postgresql
 imaging-db.basicDatabaseName = imaging
 imaging-db.databaseKind = productive
-imaging-db.scriptFolder = sql
 
 # ---------------------------------------------------------------------------
 # reporting and processing plugins configuration
diff --git a/screening/dist/server/service.properties b/screening/dist/server/service.properties
index e6ca7364f9b06385410deb7401872beb225f710e..342c6bf93b6d7831adc1b9300ec1fff74590507d 100644
--- a/screening/dist/server/service.properties
+++ b/screening/dist/server/service.properties
@@ -22,6 +22,17 @@ database.owner-password =
 database.admin-user = 
 database.admin-password =
 
+imaging.database.engine = postgresql
+imaging.database.create-from-scratch = false
+imaging.database.script-single-step-mode = false
+imaging.database.url-host-part =
+imaging.database.kind = dev
+imaging.database.owner =
+imaging.database.owner-password =
+imaging.database.admin-user = 
+imaging.database.admin-password =
+imaging.script-folder = source
+
 #crowd.service.host = crowd-bsse.ethz.ch
 #crowd.service.port = 8443
 #crowd.application.name = <openbis_application_name_in_crowd>
diff --git a/screening/etc/service.properties b/screening/etc/service.properties
index ecc26319dbbd744f7b8540dc2bfabed5eae83e11..1719cd48f1d5fbb9e3c51de7c37171bf1c7ba639 100644
--- a/screening/etc/service.properties
+++ b/screening/etc/service.properties
@@ -86,11 +86,9 @@ mail.smtp.host = file://${root-dir}/emails
 # ---------------------------------------------------------------------------
 
 data-sources = imaging-db
-imaging-db.version-holder-class = ch.systemsx.cisd.openbis.dss.etl.dataaccess.ImagingDatabaseVersionHolder
 imaging-db.databaseEngineCode = postgresql
 imaging-db.basicDatabaseName = imaging
 imaging-db.databaseKind = dev
-imaging-db.scriptFolder = source/sql
 
 # ---------------------------------------------------------------------------
 # reporting and processing plugins configuration
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/AbsoluteImageReference.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/AbsoluteImageReference.java
index e5aaa9d311d14e731d8ca1b50bbabe61c6f4a8ea..ad9101971286af6eaf2cf4841c2d3cb1c37a8417 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/AbsoluteImageReference.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/AbsoluteImageReference.java
@@ -17,7 +17,7 @@
 package ch.systemsx.cisd.openbis.dss.etl;
 
 import ch.systemsx.cisd.common.io.IContent;
-import ch.systemsx.cisd.openbis.dss.etl.dataaccess.ColorComponent;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.ColorComponent;
 
 /**
  * Reference to the image with an absolute path.
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/AbstractHCSImageFileExtractor.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/AbstractHCSImageFileExtractor.java
index b2ed635b0c59f4191ff0b0b7079521c6ea408583..36a19c6fb3ad04e5a341cce13299224632a5f842 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/AbstractHCSImageFileExtractor.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/AbstractHCSImageFileExtractor.java
@@ -39,8 +39,8 @@ import ch.systemsx.cisd.common.logging.LogCategory;
 import ch.systemsx.cisd.common.logging.LogFactory;
 import ch.systemsx.cisd.common.utilities.PropertyUtils;
 import ch.systemsx.cisd.openbis.dss.etl.HCSImageFileExtractionResult.Channel;
-import ch.systemsx.cisd.openbis.dss.etl.dataaccess.ColorComponent;
 import ch.systemsx.cisd.openbis.dss.generic.shared.dto.DataSetInformation;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.ColorComponent;
 
 /**
  * Abstract superclass for <code>IHCSImageFileExtractor</code> implementations.
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/AbstractImageReference.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/AbstractImageReference.java
index c0cbba98c905212f3dfff36e56c23b65814f75c7..2aaa9e6437dc837370dbf6327413e7cf36f60d6a 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/AbstractImageReference.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/AbstractImageReference.java
@@ -17,7 +17,7 @@
 package ch.systemsx.cisd.openbis.dss.etl;
 
 import ch.systemsx.cisd.common.utilities.AbstractHashable;
-import ch.systemsx.cisd.openbis.dss.etl.dataaccess.ColorComponent;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.ColorComponent;
 
 /**
  * Superclass for image reference.
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/HCSDatasetUploader.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/HCSDatasetUploader.java
index a94af70cbfee4a3c7e457cbc5c3591c168022696..8ebc261c5d18102dda02bf6c93d1b70d59844a21 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/HCSDatasetUploader.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/HCSDatasetUploader.java
@@ -27,29 +27,29 @@ import java.util.Map.Entry;
 import ch.systemsx.cisd.bds.hcs.Location;
 import ch.systemsx.cisd.common.exceptions.EnvironmentFailureException;
 import ch.systemsx.cisd.openbis.dss.etl.ScreeningContainerDatasetInfoHelper.ExperimentWithChannelsAndContainer;
-import ch.systemsx.cisd.openbis.dss.etl.dataaccess.IImagingUploadDAO;
-import ch.systemsx.cisd.openbis.dss.etl.dataaccess.ImgAcquiredImageDTO;
-import ch.systemsx.cisd.openbis.dss.etl.dataaccess.ImgChannelStackDTO;
-import ch.systemsx.cisd.openbis.dss.etl.dataaccess.ImgImageDTO;
-import ch.systemsx.cisd.openbis.dss.etl.dataaccess.ImgSpotDTO;
 import ch.systemsx.cisd.openbis.dss.generic.shared.IEncapsulatedOpenBISService;
 import ch.systemsx.cisd.openbis.dss.generic.shared.ServiceProvider;
 import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.ScreeningConstants;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.IImagingQueryDAO;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.ImgAcquiredImageDTO;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.ImgChannelStackDTO;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.ImgImageDTO;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.ImgSpotDTO;
 
 /**
  * @author Tomasz Pylak
  */
 public class HCSDatasetUploader
 {
-    public static void upload(IImagingUploadDAO dao, ScreeningContainerDatasetInfo info,
+    public static void upload(IImagingQueryDAO dao, ScreeningContainerDatasetInfo info,
             List<AcquiredPlateImage> images, Set<HCSImageFileExtractionResult.Channel> channels)
     {
         new HCSDatasetUploader(dao).upload(info, images, channels);
     }
 
-    private final IImagingUploadDAO dao;
+    private final IImagingQueryDAO dao;
 
-    private HCSDatasetUploader(IImagingUploadDAO dao)
+    private HCSDatasetUploader(IImagingQueryDAO dao)
     {
         this.dao = dao;
     }
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/HCSDatasetLoaderFactory.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/HCSImageDatasetLoaderFactory.java
similarity index 82%
rename from screening/source/java/ch/systemsx/cisd/openbis/dss/etl/HCSDatasetLoaderFactory.java
rename to screening/source/java/ch/systemsx/cisd/openbis/dss/etl/HCSImageDatasetLoaderFactory.java
index 0ee4906d863882f5c01506a77f9dbc7e7bae9e95..ac0b35df322c5cca53aa3e8037ae6163c2584cdd 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/HCSDatasetLoaderFactory.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/HCSImageDatasetLoaderFactory.java
@@ -29,28 +29,28 @@ import net.lemnik.eodsql.QueryTool;
 import ch.systemsx.cisd.bds.hcs.Geometry;
 import ch.systemsx.cisd.bds.hcs.Location;
 import ch.systemsx.cisd.common.io.FileBasedContent;
-import ch.systemsx.cisd.openbis.dss.etl.dataaccess.HCSDatasetLoader;
-import ch.systemsx.cisd.openbis.dss.etl.dataaccess.IImagingUploadDAO;
+import ch.systemsx.cisd.openbis.dss.etl.dataaccess.HCSImageDatasetLoader;
 import ch.systemsx.cisd.openbis.dss.generic.server.AbstractDatasetDownloadServlet.Size;
 import ch.systemsx.cisd.openbis.dss.generic.shared.ServiceProvider;
 import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.ScreeningConstants;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.IImagingQueryDAO;
 
 /**
  * @author Tomasz Pylak
  */
-public class HCSDatasetLoaderFactory
+public class HCSImageDatasetLoaderFactory
 {
     private static final Map<String, IContentRepositoryFactory> repositoryFactories =
             createFactories();
 
-    private static final IImagingUploadDAO query = createQuery();
+    private static final IImagingQueryDAO query = createQuery();
 
-    private static IImagingUploadDAO createQuery()
+    private static IImagingQueryDAO createQuery()
     {
         DataSource dataSource =
                 ServiceProvider.getDataSourceProvider().getDataSource(
                         ScreeningConstants.IMAGING_DATA_SOURCE);
-        return QueryTool.getQuery(dataSource, IImagingUploadDAO.class);
+        return QueryTool.getQuery(dataSource, IImagingQueryDAO.class);
     }
 
     private static Map<String, IContentRepositoryFactory> createFactories()
@@ -61,30 +61,30 @@ public class HCSDatasetLoaderFactory
         return factories;
     }
 
-    public static final IHCSDatasetLoader create(File datasetRootDir, String datasetCode)
+    public static final IHCSImageDatasetLoader create(File datasetRootDir, String datasetCode)
     {
         return createImageDBLoader(datasetRootDir, datasetCode);
         // return createBDSLoader(datasetRootDir);
     }
 
-    private static HCSDatasetLoader createImageDBLoader(File datasetRootDir, String datasetCode)
+    private static HCSImageDatasetLoader createImageDBLoader(File datasetRootDir, String datasetCode)
     {
         IContentRepository repository = new ContentRepository(datasetRootDir, repositoryFactories);
-        return new HCSDatasetLoader(query, datasetCode, repository);
+        return new HCSImageDatasetLoader(query, datasetCode, repository);
     }
 
     // remove when not needed
     @SuppressWarnings("unused")
-    private static IHCSDatasetLoader createBDSLoader(File datasetRootDir)
+    private static IHCSImageDatasetLoader createBDSLoader(File datasetRootDir)
     {
         final ch.systemsx.cisd.bds.hcs.HCSDatasetLoader loader =
                 new ch.systemsx.cisd.bds.hcs.HCSDatasetLoader(datasetRootDir);
         return adapt(loader);
     }
 
-    private static IHCSDatasetLoader adapt(final ch.systemsx.cisd.bds.hcs.HCSDatasetLoader loader)
+    private static IHCSImageDatasetLoader adapt(final ch.systemsx.cisd.bds.hcs.HCSDatasetLoader loader)
     {
-        return new IHCSDatasetLoader()
+        return new IHCSImageDatasetLoader()
             {
 
                 public void close()
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/HCSImageFileExtractor.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/HCSImageFileExtractor.java
index 418e0183604d91095c53b5ebc7abc69a3f746c46..7752e5a16a4d54a476c7b1b348d1ddc26ae08645 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/HCSImageFileExtractor.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/HCSImageFileExtractor.java
@@ -30,7 +30,7 @@ import ch.systemsx.cisd.common.filesystem.FileOperations;
 import ch.systemsx.cisd.openbis.dss.etl.AbstractHCSImageFileExtractor;
 import ch.systemsx.cisd.openbis.dss.etl.AcquiredPlateImage;
 import ch.systemsx.cisd.openbis.dss.etl.HCSImageFileExtractionResult.Channel;
-import ch.systemsx.cisd.openbis.dss.etl.dataaccess.ColorComponent;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.ColorComponent;
 
 /**
  * Generic image extractor implementation. The images names should have an extension present in
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/IHCSDatasetLoader.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/IHCSImageDatasetLoader.java
similarity index 78%
rename from screening/source/java/ch/systemsx/cisd/openbis/dss/etl/IHCSDatasetLoader.java
rename to screening/source/java/ch/systemsx/cisd/openbis/dss/etl/IHCSImageDatasetLoader.java
index b671bc722ae8e6aba96efd609efac09d6f074147..65bfd6d728ebf7897f97ab50cf946c45646ede1b 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/IHCSDatasetLoader.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/IHCSImageDatasetLoader.java
@@ -16,29 +16,15 @@
 
 package ch.systemsx.cisd.openbis.dss.etl;
 
-import java.util.List;
-
-import ch.systemsx.cisd.bds.hcs.Geometry;
 import ch.systemsx.cisd.bds.hcs.Location;
 import ch.systemsx.cisd.openbis.dss.generic.server.AbstractDatasetDownloadServlet.Size;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.IHCSDatasetLoader;
 
 /**
  * @author Tomasz Pylak
  */
-public interface IHCSDatasetLoader
+public interface IHCSImageDatasetLoader extends IHCSDatasetLoader
 {
-
-    /** has to be called at the end */
-    void close();
-
-    Geometry getPlateGeometry();
-
-    Geometry getWellGeometry();
-
-    int getChannelCount();
-
-    List<String> getChannelsNames();
-
     /**
      * @param chosenChannel start from 1
      * @return image (with absolute path, page and color)
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/PlateStorageProcessor.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/PlateStorageProcessor.java
index 6fdf41fa9a9f36db61cc7b66331e619f41597c54..9ce83fdb48f1c26f93973d6858ba8a57e32b5eda 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/PlateStorageProcessor.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/PlateStorageProcessor.java
@@ -61,12 +61,12 @@ import ch.systemsx.cisd.hdf5.HDF5FactoryProvider;
 import ch.systemsx.cisd.hdf5.IHDF5Writer;
 import ch.systemsx.cisd.openbis.dss.Constants;
 import ch.systemsx.cisd.openbis.dss.etl.HCSImageCheckList.FullLocation;
-import ch.systemsx.cisd.openbis.dss.etl.dataaccess.IImagingUploadDAO;
 import ch.systemsx.cisd.openbis.dss.generic.shared.ServiceProvider;
 import ch.systemsx.cisd.openbis.dss.generic.shared.dto.DataSetInformation;
 import ch.systemsx.cisd.openbis.dss.generic.shared.utils.ImageUtil;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Experiment;
 import ch.systemsx.cisd.openbis.generic.shared.dto.StorageFormat;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.IImagingQueryDAO;
 
 /**
  * Storage processor which stores HCS images in a special-purpose database.
@@ -142,7 +142,7 @@ public final class PlateStorageProcessor extends AbstractStorageProcessor
 
     private final ch.systemsx.cisd.etlserver.IHCSImageFileExtractor deprecatedImageFileExtractor;
 
-    private IImagingUploadDAO currentTransaction;
+    private IImagingQueryDAO currentTransaction;
 
     public PlateStorageProcessor(final Properties properties)
     {
@@ -178,9 +178,9 @@ public final class PlateStorageProcessor extends AbstractStorageProcessor
         this.currentTransaction = null;
     }
 
-    private IImagingUploadDAO createQuery()
+    private IImagingQueryDAO createQuery()
     {
-        return QueryTool.getQuery(dataSource, IImagingUploadDAO.class);
+        return QueryTool.getQuery(dataSource, IImagingQueryDAO.class);
     }
 
     private final static void checkDataSetInformation(final DataSetInformation dataSetInformation)
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/RelativeImageReference.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/RelativeImageReference.java
index 1d9f12fdbd919582cbb1f5e2d282e24fe4553ac0..99b2ec918cb8f3ab4632e558e7e1c050d72ae372 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/RelativeImageReference.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/RelativeImageReference.java
@@ -16,7 +16,7 @@
 
 package ch.systemsx.cisd.openbis.dss.etl;
 
-import ch.systemsx.cisd.openbis.dss.etl.dataaccess.ColorComponent;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.ColorComponent;
 
 /**
  * Reference to the image with a path relative to the folder with all the images.
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/ScreeningContainerDatasetInfoHelper.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/ScreeningContainerDatasetInfoHelper.java
index 6fb56512fb11cf3ddba5060da267d368fe631cdc..3a0b66ff09f3e8487d410268846ac10b26298810 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/ScreeningContainerDatasetInfoHelper.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/ScreeningContainerDatasetInfoHelper.java
@@ -23,10 +23,10 @@ import java.util.Set;
 
 import ch.systemsx.cisd.common.exceptions.UserFailureException;
 import ch.systemsx.cisd.openbis.dss.etl.HCSImageFileExtractionResult.Channel;
-import ch.systemsx.cisd.openbis.dss.etl.dataaccess.IImagingUploadDAO;
-import ch.systemsx.cisd.openbis.dss.etl.dataaccess.ImgChannelDTO;
-import ch.systemsx.cisd.openbis.dss.etl.dataaccess.ImgContainerDTO;
-import ch.systemsx.cisd.openbis.dss.etl.dataaccess.ImgDatasetDTO;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.IImagingQueryDAO;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.ImgChannelDTO;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.ImgContainerDTO;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.ImgDatasetDTO;
 
 /**
  * Helper class for retrieving and/or creating entities associated with the screening container data
@@ -36,9 +36,9 @@ import ch.systemsx.cisd.openbis.dss.etl.dataaccess.ImgDatasetDTO;
  */
 public class ScreeningContainerDatasetInfoHelper
 {
-    private final IImagingUploadDAO dao;
+    private final IImagingQueryDAO dao;
 
-    public ScreeningContainerDatasetInfoHelper(IImagingUploadDAO dao)
+    public ScreeningContainerDatasetInfoHelper(IImagingQueryDAO dao)
     {
         this.dao = dao;
     }
@@ -55,7 +55,7 @@ public class ScreeningContainerDatasetInfoHelper
     }
 
     // Package-visible static methods
-    public static long createDataset(IImagingUploadDAO dao, ScreeningContainerDatasetInfo info,
+    public static long createDataset(IImagingQueryDAO dao, ScreeningContainerDatasetInfo info,
             long contId)
     {
         ImgDatasetDTO dataset =
@@ -71,10 +71,10 @@ public class ScreeningContainerDatasetInfoHelper
      * transaction will be rolled back sample and experiment created in first transaction will stay
      * in the DB.
      */
-    public static ExperimentAndContainerIds getOrCreateExperimentAndContainer(
-            IImagingUploadDAO dao, ScreeningContainerDatasetInfo info)
+    public static ExperimentAndContainerIds getOrCreateExperimentAndContainer(IImagingQueryDAO dao,
+            ScreeningContainerDatasetInfo info)
     {
-        synchronized (IImagingUploadDAO.class)
+        synchronized (IImagingQueryDAO.class)
         {
             CreatedOrFetchedEntity exp = getOrCreateExperiment(dao, info);
             CreatedOrFetchedEntity cont = getOrCreateContainer(dao, info, exp.getId());
@@ -96,11 +96,11 @@ public class ScreeningContainerDatasetInfoHelper
      * in the DB.
      */
     public static ExperimentWithChannelsAndContainer getOrCreateExperimentWithChannelsAndContainer(
-            IImagingUploadDAO dao, ScreeningContainerDatasetInfo info,
+            IImagingQueryDAO dao, ScreeningContainerDatasetInfo info,
             Set<HCSImageFileExtractionResult.Channel> channels)
     {
         ScreeningContainerDatasetInfoHelper helper = new ScreeningContainerDatasetInfoHelper(dao);
-        synchronized (IImagingUploadDAO.class)
+        synchronized (IImagingQueryDAO.class)
         {
             CreatedOrFetchedEntity exp = getOrCreateExperiment(dao, info);
             long expId = exp.getId();
@@ -117,7 +117,7 @@ public class ScreeningContainerDatasetInfoHelper
         }
     }
 
-    private static CreatedOrFetchedEntity getOrCreateContainer(IImagingUploadDAO dao,
+    private static CreatedOrFetchedEntity getOrCreateContainer(IImagingQueryDAO dao,
             ScreeningContainerDatasetInfo info, long expId)
     {
         String containerPermId = info.getContainerPermId();
@@ -135,7 +135,7 @@ public class ScreeningContainerDatasetInfoHelper
         }
     }
 
-    private static CreatedOrFetchedEntity getOrCreateExperiment(IImagingUploadDAO dao,
+    private static CreatedOrFetchedEntity getOrCreateExperiment(IImagingQueryDAO dao,
             ScreeningContainerDatasetInfo info)
     {
         String experimentPermId = info.getExperimentPermId();
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/bdsmigration/BDSImagingDatabaseMigrator.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/bdsmigration/BDSImagingDatabaseMigrator.java
index 6284cc4dad7892a02f460e318e7a62709ffaf8ec..3f4f132f37d50424eb1c41ba71f55556bb4dabb6 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/bdsmigration/BDSImagingDatabaseMigrator.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/bdsmigration/BDSImagingDatabaseMigrator.java
@@ -28,16 +28,16 @@ import ch.systemsx.cisd.common.exceptions.ConfigurationFailureException;
 import ch.systemsx.cisd.common.utilities.PropertyUtils;
 import ch.systemsx.cisd.openbis.dss.etl.AbstractHCSImageFileExtractor;
 import ch.systemsx.cisd.openbis.dss.etl.PlateStorageProcessor;
-import ch.systemsx.cisd.openbis.dss.etl.dataaccess.ColorComponent;
-import ch.systemsx.cisd.openbis.dss.etl.dataaccess.IImagingUploadDAO;
 import ch.systemsx.cisd.openbis.dss.generic.shared.ServiceProvider;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.ColorComponent;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.IImagingQueryDAO;
 
 /**
  * @author Franz-Josef Elmer
  */
 public class BDSImagingDatabaseMigrator extends AbstractBDSMigrator
 {
-    private IImagingUploadDAO dao;
+    private IImagingQueryDAO dao;
 
     private List<String> channelNames;
 
@@ -75,7 +75,7 @@ public class BDSImagingDatabaseMigrator extends AbstractBDSMigrator
     public BDSImagingDatabaseMigrator(Properties properties)
     {
         DataSource dataSource = ServiceProvider.getDataSourceProvider().getDataSource(properties);
-        dao = QueryTool.getQuery(dataSource, IImagingUploadDAO.class);
+        dao = QueryTool.getQuery(dataSource, IImagingQueryDAO.class);
         channelNames =
                 PropertyUtils.getMandatoryList(properties, PlateStorageProcessor.CHANNEL_NAMES);
         channelColorComponentsOrNull =
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/bdsmigration/BDSImagingDbUploader.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/bdsmigration/BDSImagingDbUploader.java
index 3e3679ddbfc59ab410792f888de6d216b1dd337e..6ef193e48afb4984095548647a4d4b6b412ff4be 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/bdsmigration/BDSImagingDbUploader.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/bdsmigration/BDSImagingDbUploader.java
@@ -49,9 +49,9 @@ import ch.systemsx.cisd.openbis.dss.etl.PlateStorageProcessor;
 import ch.systemsx.cisd.openbis.dss.etl.RelativeImageReference;
 import ch.systemsx.cisd.openbis.dss.etl.ScreeningContainerDatasetInfo;
 import ch.systemsx.cisd.openbis.dss.etl.HCSImageFileExtractionResult.Channel;
-import ch.systemsx.cisd.openbis.dss.etl.dataaccess.ColorComponent;
-import ch.systemsx.cisd.openbis.dss.etl.dataaccess.IImagingUploadDAO;
 import ch.systemsx.cisd.openbis.dss.generic.shared.ServiceProvider;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.ColorComponent;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.IImagingQueryDAO;
 
 /**
  * Uploads data to the imaging database.
@@ -62,7 +62,7 @@ class BDSImagingDbUploader
 {
     public static IMigrator createImagingDbUploaderMigrator(Properties properties)
     {
-        final IImagingUploadDAO dao = createQuery(properties);
+        final IImagingQueryDAO dao = createQuery(properties);
         final List<String> channelNames =
                 PropertyUtils.getMandatoryList(properties, PlateStorageProcessor.CHANNEL_NAMES);
         final List<ColorComponent> channelColorComponentsOrNull =
@@ -101,13 +101,13 @@ class BDSImagingDbUploader
         }
     }
 
-    private static IImagingUploadDAO createQuery(Properties properties)
+    private static IImagingQueryDAO createQuery(Properties properties)
     {
         DataSource dataSource = ServiceProvider.getDataSourceProvider().getDataSource(properties);
-        return QueryTool.getQuery(dataSource, IImagingUploadDAO.class);
+        return QueryTool.getQuery(dataSource, IImagingQueryDAO.class);
     }
 
-    private static boolean migrateDataset(File dataset, IImagingUploadDAO dao,
+    private static boolean migrateDataset(File dataset, IImagingQueryDAO dao,
             List<String> channelNames, List<ColorComponent> channelColorComponentsOrNull)
     {
         String originalDatasetDirName = tryGetOriginalDatasetDirName(dataset);
@@ -121,7 +121,7 @@ class BDSImagingDbUploader
 
     private final File dataset;
 
-    private final IImagingUploadDAO dao;
+    private final IImagingQueryDAO dao;
 
     private final String originalDatasetDirName;
 
@@ -129,7 +129,7 @@ class BDSImagingDbUploader
 
     private final List<ColorComponent> channelColorComponentsOrNull;
 
-    BDSImagingDbUploader(File dataset, IImagingUploadDAO dao, String originalDatasetDirName,
+    BDSImagingDbUploader(File dataset, IImagingQueryDAO dao, String originalDatasetDirName,
             List<String> channelNames, List<ColorComponent> channelColorComponentsOrNull)
     {
         this.dataset = dataset;
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/HCSDatasetLoader.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/HCSImageDatasetLoader.java
similarity index 71%
rename from screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/HCSDatasetLoader.java
rename to screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/HCSImageDatasetLoader.java
index 0b7dee61ddf96ed4aee92ccc60a0ac77f6178381..ec93ee30c00da85bb7930d8780050d4c53b995f2 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/HCSDatasetLoader.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/HCSImageDatasetLoader.java
@@ -21,94 +21,38 @@ import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
 
 import javax.imageio.ImageIO;
 
 import org.apache.commons.lang.StringUtils;
 
 import ch.systemsx.cisd.base.exceptions.CheckedExceptionTunnel;
-import ch.systemsx.cisd.bds.hcs.Geometry;
 import ch.systemsx.cisd.bds.hcs.Location;
 import ch.systemsx.cisd.common.io.IContent;
 import ch.systemsx.cisd.openbis.dss.etl.AbsoluteImageReference;
 import ch.systemsx.cisd.openbis.dss.etl.IContentRepository;
-import ch.systemsx.cisd.openbis.dss.etl.IHCSDatasetLoader;
+import ch.systemsx.cisd.openbis.dss.etl.IHCSImageDatasetLoader;
 import ch.systemsx.cisd.openbis.dss.generic.server.AbstractDatasetDownloadServlet.Size;
 import ch.systemsx.cisd.openbis.dss.generic.shared.utils.ImageUtil;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.HCSDatasetLoader;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.IImagingQueryDAO;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.ImgImageDTO;
 
 /**
- * Helper class for easy handling of HCS image dataset standard structure.
+ * {@link HCSDatasetLoader} extension with code for handling images.
  * 
  * @author Tomasz Pylak
  * @author Piotr Buczek
  */
-public class HCSDatasetLoader implements IHCSDatasetLoader
+public class HCSImageDatasetLoader extends HCSDatasetLoader implements IHCSImageDatasetLoader
 {
-    private final IImagingUploadDAO query;
-
-    private final ImgDatasetDTO dataset;
-
     private final IContentRepository contentRepository;
 
-    private ImgContainerDTO container;
-
-    private Integer channelCount;
-
-    private List<String> channelNames;
-
-    public HCSDatasetLoader(IImagingUploadDAO query, String datasetPermId,
+    public HCSImageDatasetLoader(IImagingQueryDAO query, String datasetPermId,
             IContentRepository contentRepository)
     {
+        super(query, datasetPermId);
         this.contentRepository = contentRepository;
-        this.query = query;
-        this.dataset = query.tryGetDatasetByPermId(datasetPermId);
-        if (dataset == null)
-        {
-            throw new IllegalStateException(String.format("Dataset '%s' not found", datasetPermId));
-        }
-    }
-
-    /** has to be called at the end */
-    public void close()
-    {
-        query.close();
-    }
-
-    private ImgContainerDTO getContainer()
-    {
-        if (container == null)
-        {
-            container = query.getContainerById(dataset.getContainerId());
-        }
-        return container;
-    }
-
-    public Geometry getPlateGeometry()
-    {
-        return new Geometry(getContainer().getNumberOfRows(), getContainer().getNumberOfColumns());
-    }
-
-    private ImgDatasetDTO getDataset()
-    {
-        return dataset;
-    }
-
-    public Geometry getWellGeometry()
-    {
-        return new Geometry(getDataset().getFieldNumberOfRows(), getDataset()
-                .getFieldNumberOfColumns());
-    }
-
-    public int getChannelCount()
-    {
-        if (channelCount == null)
-        {
-            channelCount = getChannelsNames().size();
-        }
-        return channelCount;
     }
 
     /**
@@ -224,15 +168,4 @@ public class HCSDatasetLoader implements IHCSDatasetLoader
         }
     }
 
-    public List<String> getChannelsNames()
-    {
-        if (channelNames == null)
-        {
-            String[] namesAsArray =
-                    query.getChannelNamesByDatasetIdOrExperimentId(getDataset().getId(),
-                            getContainer().getExperimentId());
-            channelNames = new ArrayList<String>(Arrays.asList(namesAsArray));
-        }
-        return channelNames;
-    }
 }
\ No newline at end of file
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/IFeatureVectorDAO.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/IFeatureVectorDAO.java
deleted file mode 100644
index d6bbc3895e910eb0e61b4652e4135f8891eaf1e8..0000000000000000000000000000000000000000
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/IFeatureVectorDAO.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Copyright 2010 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.openbis.dss.etl.dataaccess;
-
-import java.util.List;
-
-import net.lemnik.eodsql.Select;
-import net.lemnik.eodsql.TransactionQuery;
-
-import ch.systemsx.cisd.openbis.generic.server.dataaccess.db.ByteArrayMapper;
-
-/**
- * DAO for interacting with feature vector tables.
- * 
- * @author Chandrasekhar Ramakrishnan
- */
-public interface IFeatureVectorDAO extends TransactionQuery
-{
-    public static final int FETCH_SIZE = 1000;
-
-    // Simple Getters
-    @Select("SELECT * from FEATURE_DEFS where DS_ID = ?{1}")
-    public List<ImgFeatureDefDTO> listFeatureDefsByDataSetId(long dataSetId);
-
-    @Select(value = "SELECT * from FEATURE_VALUES where FD_ID = ?{1.id}", resultSetBinding = FeatureVectorDataObjectBinding.class)
-    public List<ImgFeatureValuesDTO> getFeatureValues(ImgFeatureDefDTO featureDef);
-
-    // Inserts
-    @Select("INSERT into FEATURE_DEFS (NAME, DESCRIPTION, DS_ID) values "
-            + "(?{1.name}, ?{1.description}, ?{1.dataSetId}) RETURNING ID")
-    public long addFeatureDef(ImgFeatureDefDTO featureDef);
-
-    @Select(value = "INSERT into FEATURE_VALUES (VALUES, Z_in_M, T_in_SEC, FD_ID) values "
-            + "(?{1.values}, ?{1.z}, ?{1.t}, ?{1.featureDefId}) RETURNING ID", parameterBindings =
-        { ByteArrayMapper.class })
-    public long addFeatureValues(ImgFeatureValuesDTO featureValues);
-}
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/featurevector/AbstractFeatureVectorMigrator.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/featurevector/AbstractFeatureVectorMigrator.java
index ce06b80ce704d1d7b22d018fa7f9d4c22d9d3bf9..e43840968c93b2e2be99e2e63cd52c1aff97e37f 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/featurevector/AbstractFeatureVectorMigrator.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/featurevector/AbstractFeatureVectorMigrator.java
@@ -28,8 +28,6 @@ import net.lemnik.eodsql.QueryTool;
 
 import ch.systemsx.cisd.etlserver.plugins.IMigrator;
 import ch.systemsx.cisd.openbis.dss.etl.ScreeningContainerDatasetInfo;
-import ch.systemsx.cisd.openbis.dss.etl.dataaccess.IImagingUploadDAO;
-import ch.systemsx.cisd.openbis.dss.etl.dataaccess.ImgDatasetDTO;
 import ch.systemsx.cisd.openbis.dss.generic.shared.IEncapsulatedOpenBISService;
 import ch.systemsx.cisd.openbis.dss.generic.shared.ServiceProvider;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Experiment;
@@ -40,6 +38,8 @@ import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.SampleIdentifier;
 import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.SampleIdentifierFactory;
 import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.SpaceIdentifier;
 import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.ScreeningConstants;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.IImagingQueryDAO;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.ImgDatasetDTO;
 
 /**
  * Imports individual data sets into the imaging db.
@@ -48,7 +48,7 @@ import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.ScreeningConst
  */
 public abstract class AbstractFeatureVectorMigrator implements IMigrator
 {
-    protected final IImagingUploadDAO dao;
+    protected final IImagingQueryDAO dao;
 
     protected final IEncapsulatedOpenBISService openBisService;
 
@@ -59,7 +59,7 @@ public abstract class AbstractFeatureVectorMigrator implements IMigrator
     public AbstractFeatureVectorMigrator(Properties properties)
     {
         DataSource dataSource = ServiceProvider.getDataSourceProvider().getDataSource(properties);
-        dao = QueryTool.getQuery(dataSource, IImagingUploadDAO.class);
+        dao = QueryTool.getQuery(dataSource, IImagingQueryDAO.class);
         openBisService = ServiceProvider.getOpenBISService();
         knownDataSets = openBisService.listDataSets();
         knownDataSetsByCode =
@@ -247,7 +247,7 @@ public abstract class AbstractFeatureVectorMigrator implements IMigrator
      */
     protected abstract static class AbstractImageDbImporter
     {
-        protected final IImagingUploadDAO dao;
+        protected final IImagingQueryDAO dao;
 
         protected final ScreeningContainerDatasetInfo screeningDataSetInfo;
 
@@ -255,7 +255,7 @@ public abstract class AbstractFeatureVectorMigrator implements IMigrator
 
         protected boolean isSuccessful = false;
 
-        protected AbstractImageDbImporter(IImagingUploadDAO dao,
+        protected AbstractImageDbImporter(IImagingQueryDAO dao,
                 ScreeningContainerDatasetInfo screeningDataSetInfo, File fileToMigrate)
         {
             this.dao = dao;
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/featurevector/CanonicalFeatureVector.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/featurevector/CanonicalFeatureVector.java
index 555a8e75a99e0e578d9b8f2bbe69abfacb7b41c9..e77f3823826a884fb227fa645cb0861e7a476212 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/featurevector/CanonicalFeatureVector.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/featurevector/CanonicalFeatureVector.java
@@ -19,8 +19,8 @@ package ch.systemsx.cisd.openbis.dss.etl.featurevector;
 import java.util.ArrayList;
 import java.util.List;
 
-import ch.systemsx.cisd.openbis.dss.etl.dataaccess.ImgFeatureDefDTO;
-import ch.systemsx.cisd.openbis.dss.etl.dataaccess.ImgFeatureValuesDTO;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.ImgFeatureDefDTO;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.ImgFeatureValuesDTO;
 
 /**
  * Image feature vectors stored in a standardized form.
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/featurevector/CsvFeatureVectorMigrator.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/featurevector/CsvFeatureVectorMigrator.java
index 816657cea5a3783d3bca740a01f15a040f83b633..07f9511253b20ea870ac5f6e391ba7b955553e12 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/featurevector/CsvFeatureVectorMigrator.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/featurevector/CsvFeatureVectorMigrator.java
@@ -25,10 +25,10 @@ import java.util.Properties;
 import ch.systemsx.cisd.base.exceptions.IOExceptionUnchecked;
 import ch.systemsx.cisd.etlserver.DefaultStorageProcessor;
 import ch.systemsx.cisd.openbis.dss.etl.ScreeningContainerDatasetInfo;
-import ch.systemsx.cisd.openbis.dss.etl.dataaccess.IImagingUploadDAO;
 import ch.systemsx.cisd.openbis.dss.etl.featurevector.CsvToCanonicalFeatureVector.CsvToCanonicalFeatureVectorConfiguration;
 import ch.systemsx.cisd.openbis.dss.generic.server.plugins.tasks.DatasetFileLines;
 import ch.systemsx.cisd.openbis.generic.shared.dto.SimpleDataSetInformationDTO;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.IImagingQueryDAO;
 import ch.systemsx.cisd.utils.CsvFileReaderHelper;
 
 /**
@@ -120,7 +120,7 @@ public class CsvFeatureVectorMigrator extends AbstractFeatureVectorMigrator
 
         private final CsvToCanonicalFeatureVectorConfiguration convertorConfig;
 
-        protected ImporterCsv(IImagingUploadDAO dao,
+        protected ImporterCsv(IImagingQueryDAO dao,
                 ScreeningContainerDatasetInfo screeningDataSetInfo, File fileToMigrate,
                 FeatureVectorStorageProcessorConfiguration configuration,
                 CsvToCanonicalFeatureVectorConfiguration convertorConfig)
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/featurevector/CsvToCanonicalFeatureVector.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/featurevector/CsvToCanonicalFeatureVector.java
index 3b9faf97c4c85c2884f417b96f6ea3e2290cf183..d297d9904a18648fc6ca489096db9884ba544222 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/featurevector/CsvToCanonicalFeatureVector.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/featurevector/CsvToCanonicalFeatureVector.java
@@ -24,9 +24,9 @@ import java.util.List;
 import ch.systemsx.cisd.base.mdarray.MDDoubleArray;
 import ch.systemsx.cisd.bds.hcs.Location;
 import ch.systemsx.cisd.common.geometry.Point;
-import ch.systemsx.cisd.openbis.dss.etl.dataaccess.ImgFeatureDefDTO;
-import ch.systemsx.cisd.openbis.dss.etl.dataaccess.ImgFeatureValuesDTO;
 import ch.systemsx.cisd.openbis.dss.generic.server.plugins.tasks.DatasetFileLines;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.ImgFeatureDefDTO;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.ImgFeatureValuesDTO;
 
 /**
  * Converts feature vectors from CSV files to CanonicaFeatureVector objects.
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/featurevector/FeatureVectorStorageProcessor.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/featurevector/FeatureVectorStorageProcessor.java
index 2d0ae122776d81d3338717264b90290cf5c06131..e68f87a4eb8b0caaa3a105479468ed2ca5a743cc 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/featurevector/FeatureVectorStorageProcessor.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/featurevector/FeatureVectorStorageProcessor.java
@@ -31,7 +31,6 @@ import ch.systemsx.cisd.common.mail.IMailClient;
 import ch.systemsx.cisd.etlserver.AbstractDelegatingStorageProcessor;
 import ch.systemsx.cisd.etlserver.ITypeExtractor;
 import ch.systemsx.cisd.openbis.dss.etl.ScreeningContainerDatasetInfo;
-import ch.systemsx.cisd.openbis.dss.etl.dataaccess.IImagingUploadDAO;
 import ch.systemsx.cisd.openbis.dss.etl.featurevector.CsvToCanonicalFeatureVector.CsvToCanonicalFeatureVectorConfiguration;
 import ch.systemsx.cisd.openbis.dss.generic.server.plugins.tasks.DatasetFileLines;
 import ch.systemsx.cisd.openbis.dss.generic.shared.IEncapsulatedOpenBISService;
@@ -39,6 +38,7 @@ import ch.systemsx.cisd.openbis.dss.generic.shared.ServiceProvider;
 import ch.systemsx.cisd.openbis.dss.generic.shared.dto.DataSetInformation;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExternalData;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.IImagingQueryDAO;
 import ch.systemsx.cisd.utils.CsvFileReaderHelper;
 
 /**
@@ -59,7 +59,7 @@ public class FeatureVectorStorageProcessor extends AbstractDelegatingStorageProc
     private final IEncapsulatedOpenBISService openBisService;
 
     // Execution state of this object -- set to null after an execution is finished.
-    private IImagingUploadDAO dataAccessObject = null;
+    private IImagingQueryDAO dataAccessObject = null;
 
     public FeatureVectorStorageProcessor(Properties properties)
     {
@@ -138,9 +138,9 @@ public class FeatureVectorStorageProcessor extends AbstractDelegatingStorageProc
         return sampleOrNull;
     }
 
-    private IImagingUploadDAO createDAO()
+    private IImagingQueryDAO createDAO()
     {
-        return QueryTool.getQuery(dataSource, IImagingUploadDAO.class);
+        return QueryTool.getQuery(dataSource, IImagingQueryDAO.class);
     }
 
     @Override
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/featurevector/FeatureVectorUploader.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/featurevector/FeatureVectorUploader.java
index 9d2a93642e8afb9a5f0f7e9238f342b35daca003..fa698dca418d6f98bc76f15d627c6dd09e143538 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/featurevector/FeatureVectorUploader.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/featurevector/FeatureVectorUploader.java
@@ -20,9 +20,9 @@ import java.util.List;
 
 import ch.systemsx.cisd.openbis.dss.etl.ScreeningContainerDatasetInfo;
 import ch.systemsx.cisd.openbis.dss.etl.ScreeningContainerDatasetInfoHelper;
-import ch.systemsx.cisd.openbis.dss.etl.dataaccess.IImagingUploadDAO;
-import ch.systemsx.cisd.openbis.dss.etl.dataaccess.ImgFeatureDefDTO;
-import ch.systemsx.cisd.openbis.dss.etl.dataaccess.ImgFeatureValuesDTO;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.IImagingQueryDAO;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.ImgFeatureDefDTO;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.ImgFeatureValuesDTO;
 
 /**
  * Helper class for uploading feature vectors from the file system into the data base.
@@ -31,11 +31,11 @@ import ch.systemsx.cisd.openbis.dss.etl.dataaccess.ImgFeatureValuesDTO;
  */
 public class FeatureVectorUploader
 {
-    private final IImagingUploadDAO dao;
+    private final IImagingQueryDAO dao;
 
     private final ScreeningContainerDatasetInfo info;
 
-    public FeatureVectorUploader(IImagingUploadDAO imagingDao, ScreeningContainerDatasetInfo info)
+    public FeatureVectorUploader(IImagingQueryDAO imagingDao, ScreeningContainerDatasetInfo info)
     {
         this.dao = imagingDao;
         this.info = info;
@@ -58,13 +58,13 @@ public class FeatureVectorUploader
 
     private static class FeatureVectorUploaderHelper
     {
-        private final IImagingUploadDAO dao;
+        private final IImagingQueryDAO dao;
 
         private final long dataSetId;
 
         private final CanonicalFeatureVector fvec;
 
-        FeatureVectorUploaderHelper(IImagingUploadDAO dao, ScreeningContainerDatasetInfo info,
+        FeatureVectorUploaderHelper(IImagingQueryDAO dao, ScreeningContainerDatasetInfo info,
                 long dataSetId, CanonicalFeatureVector fvec)
         {
             this.dao = dao;
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/genedata/FeatureStorageProcessor.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/genedata/FeatureStorageProcessor.java
index 90797bd2ddc37e12aee06e46a2f678f519046d24..bc898ea13d60df25f1d389aac614bd1f2ec30e19 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/genedata/FeatureStorageProcessor.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/genedata/FeatureStorageProcessor.java
@@ -37,7 +37,6 @@ import ch.systemsx.cisd.etlserver.ITypeExtractor;
 import ch.systemsx.cisd.etlserver.utils.Column;
 import ch.systemsx.cisd.etlserver.utils.TableBuilder;
 import ch.systemsx.cisd.openbis.dss.etl.ScreeningContainerDatasetInfo;
-import ch.systemsx.cisd.openbis.dss.etl.dataaccess.IImagingUploadDAO;
 import ch.systemsx.cisd.openbis.dss.etl.featurevector.CanonicalFeatureVector;
 import ch.systemsx.cisd.openbis.dss.etl.featurevector.FeatureVectorUploader;
 import ch.systemsx.cisd.openbis.dss.generic.shared.IEncapsulatedOpenBISService;
@@ -45,6 +44,7 @@ import ch.systemsx.cisd.openbis.dss.generic.shared.ServiceProvider;
 import ch.systemsx.cisd.openbis.dss.generic.shared.dto.DataSetInformation;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExternalData;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.IImagingQueryDAO;
 
 /**
  * @author Franz-Josef Elmer
@@ -60,7 +60,7 @@ public class FeatureStorageProcessor extends AbstractDelegatingStorageProcessor
     private final IEncapsulatedOpenBISService openBisService;
 
     // Execution state of this object -- set to null after an execution is finished.
-    private IImagingUploadDAO dataAccessObject = null;
+    private IImagingQueryDAO dataAccessObject = null;
 
     private final class ColumnsBuilder
     {
@@ -260,9 +260,9 @@ public class FeatureStorageProcessor extends AbstractDelegatingStorageProcessor
         return sampleOrNull;
     }
 
-    protected IImagingUploadDAO createDAO()
+    protected IImagingQueryDAO createDAO()
     {
-        return QueryTool.getQuery(dataSource, IImagingUploadDAO.class);
+        return QueryTool.getQuery(dataSource, IImagingQueryDAO.class);
     }
 
     private String convertColumnsToString(String barCode, ColumnsBuilder columnsBuilder)
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/genedata/GenedataFeatureVectorMigrator.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/genedata/GenedataFeatureVectorMigrator.java
index 4d956f9fe718d9756d04b1893c7b47cf3b626028..668b94c3af65bdb1229a770dc4282aab24d671a0 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/genedata/GenedataFeatureVectorMigrator.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/genedata/GenedataFeatureVectorMigrator.java
@@ -25,11 +25,11 @@ import java.util.Properties;
 import ch.systemsx.cisd.common.filesystem.FileUtilities;
 import ch.systemsx.cisd.etlserver.DefaultStorageProcessor;
 import ch.systemsx.cisd.openbis.dss.etl.ScreeningContainerDatasetInfo;
-import ch.systemsx.cisd.openbis.dss.etl.dataaccess.IImagingUploadDAO;
 import ch.systemsx.cisd.openbis.dss.etl.featurevector.AbstractFeatureVectorMigrator;
 import ch.systemsx.cisd.openbis.dss.etl.featurevector.CanonicalFeatureVector;
 import ch.systemsx.cisd.openbis.dss.etl.featurevector.FeatureVectorUploader;
 import ch.systemsx.cisd.openbis.generic.shared.dto.SimpleDataSetInformationDTO;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.IImagingQueryDAO;
 
 /**
  * Imports Genedata feature vectors into the database.
@@ -112,7 +112,7 @@ public class GenedataFeatureVectorMigrator extends AbstractFeatureVectorMigrator
         /**
          * @param fileToMigrate
          */
-        private ImporterGenedata(IImagingUploadDAO dao,
+        private ImporterGenedata(IImagingQueryDAO dao,
                 ScreeningContainerDatasetInfo screeningDataSetInfo, File fileToMigrate)
         {
             super(dao, screeningDataSetInfo, fileToMigrate);
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/genedata/GenedataFormatToCanonicalFeatureVector.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/genedata/GenedataFormatToCanonicalFeatureVector.java
index ae2a11c49a450724ac855067f0baf2eac6c1c82a..66b820fec504f6a457bf3fad68b51ad9401a02fd 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/genedata/GenedataFormatToCanonicalFeatureVector.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/genedata/GenedataFormatToCanonicalFeatureVector.java
@@ -27,9 +27,9 @@ import org.apache.commons.lang.StringUtils;
 import ch.systemsx.cisd.base.mdarray.MDDoubleArray;
 import ch.systemsx.cisd.common.exceptions.UserFailureException;
 import ch.systemsx.cisd.common.geometry.Point;
-import ch.systemsx.cisd.openbis.dss.etl.dataaccess.ImgFeatureDefDTO;
-import ch.systemsx.cisd.openbis.dss.etl.dataaccess.ImgFeatureValuesDTO;
 import ch.systemsx.cisd.openbis.dss.etl.featurevector.CanonicalFeatureVector;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.ImgFeatureDefDTO;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.ImgFeatureValuesDTO;
 
 /**
  * Converts currentFeature vectors from the Genedata currentFeature vector file format to
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/generic/server/images/ImageChannelsUtils.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/generic/server/images/ImageChannelsUtils.java
index 808b22874e880e1f718099b5070ddf07626214c1..649a762c2f5c223fc1c142fdbe51584a53b59c67 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/generic/server/images/ImageChannelsUtils.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/generic/server/images/ImageChannelsUtils.java
@@ -26,11 +26,11 @@ import ch.systemsx.cisd.bds.hcs.Location;
 import ch.systemsx.cisd.common.exceptions.EnvironmentFailureException;
 import ch.systemsx.cisd.common.io.IContent;
 import ch.systemsx.cisd.openbis.dss.etl.AbsoluteImageReference;
-import ch.systemsx.cisd.openbis.dss.etl.HCSDatasetLoaderFactory;
-import ch.systemsx.cisd.openbis.dss.etl.IHCSDatasetLoader;
-import ch.systemsx.cisd.openbis.dss.etl.dataaccess.ColorComponent;
+import ch.systemsx.cisd.openbis.dss.etl.HCSImageDatasetLoaderFactory;
+import ch.systemsx.cisd.openbis.dss.etl.IHCSImageDatasetLoader;
 import ch.systemsx.cisd.openbis.dss.generic.server.AbstractDatasetDownloadServlet.Size;
 import ch.systemsx.cisd.openbis.dss.generic.shared.utils.ImageUtil;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.ColorComponent;
 
 /**
  * Utility classes to create an image of a specified size containing one channel or a subset of all
@@ -49,7 +49,8 @@ public class ImageChannelsUtils
     public static List<AbsoluteImageReference> getImagePaths(File datasetRoot, String datasetCode,
             TileImageReference params)
     {
-        IHCSDatasetLoader imageAccessor = HCSDatasetLoaderFactory.create(datasetRoot, datasetCode);
+        IHCSImageDatasetLoader imageAccessor =
+                HCSImageDatasetLoaderFactory.create(datasetRoot, datasetCode);
         Location wellLocation = params.getWellLocation();
         Location tileLocation = params.getTileLocation();
         List<AbsoluteImageReference> images = new ArrayList<AbsoluteImageReference>();
@@ -218,7 +219,7 @@ public class ImageChannelsUtils
      * @param chosenChannel starts from 1
      * @throw {@link EnvironmentFailureException} when image does not exist
      */
-    public static AbsoluteImageReference getImage(IHCSDatasetLoader imageAccessor,
+    public static AbsoluteImageReference getImage(IHCSImageDatasetLoader imageAccessor,
             Location wellLocation, Location tileLocation, String chosenChannel,
             Size thumbnailSizeOrNull)
     {
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/ScreeningPlateImageParamsReportingPlugin.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/ScreeningPlateImageParamsReportingPlugin.java
index 058a401cd27a7b30fe243773ab3b8bdcbfc72916..e7273040dae8b7f10d3af33836d919270ffb43f9 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/ScreeningPlateImageParamsReportingPlugin.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/ScreeningPlateImageParamsReportingPlugin.java
@@ -27,8 +27,8 @@ import java.util.Properties;
 import org.apache.commons.lang.StringEscapeUtils;
 
 import ch.systemsx.cisd.bds.hcs.Geometry;
-import ch.systemsx.cisd.openbis.dss.etl.HCSDatasetLoaderFactory;
-import ch.systemsx.cisd.openbis.dss.etl.IHCSDatasetLoader;
+import ch.systemsx.cisd.openbis.dss.etl.HCSImageDatasetLoaderFactory;
+import ch.systemsx.cisd.openbis.dss.etl.IHCSImageDatasetLoader;
 import ch.systemsx.cisd.openbis.dss.generic.server.plugins.standard.AbstractDatastorePlugin;
 import ch.systemsx.cisd.openbis.dss.generic.server.plugins.tasks.IReportingPluginTask;
 import ch.systemsx.cisd.openbis.dss.generic.server.plugins.tasks.SimpleTableModelBuilder;
@@ -74,8 +74,8 @@ public class ScreeningPlateImageParamsReportingPlugin extends AbstractDatastoreP
         for (DatasetDescription dataset : datasets)
         {
             File datasetFile = new File(storeRoot, dataset.getDataSetLocation());
-            IHCSDatasetLoader imageAccessor =
-                    HCSDatasetLoaderFactory.create(datasetFile, dataset.getDatasetCode());
+            IHCSImageDatasetLoader imageAccessor =
+                    HCSImageDatasetLoaderFactory.create(datasetFile, dataset.getDatasetCode());
             addReportRows(builder, dataset, imageAccessor);
             imageAccessor.close();
         }
@@ -94,7 +94,7 @@ public class ScreeningPlateImageParamsReportingPlugin extends AbstractDatastoreP
     }
 
     private void addReportRows(SimpleTableModelBuilder builder, DatasetDescription dataset,
-            IHCSDatasetLoader imageAccessor)
+            IHCSImageDatasetLoader imageAccessor)
     {
         Geometry plateGeometry = imageAccessor.getPlateGeometry();
         Geometry wellGeometry = imageAccessor.getWellGeometry();
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/screening/server/DssServiceRpcScreening.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/screening/server/DssServiceRpcScreening.java
index 38a0556b98275cc705aa902fed7c1a88aa1db4dc..d1faeadb7ec31115878104290fdd88fa7adb56db 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/screening/server/DssServiceRpcScreening.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/screening/server/DssServiceRpcScreening.java
@@ -40,8 +40,8 @@ import ch.systemsx.cisd.common.exceptions.UserFailureException;
 import ch.systemsx.cisd.common.io.ConcatenatedContentInputStream;
 import ch.systemsx.cisd.common.io.IContent;
 import ch.systemsx.cisd.openbis.dss.etl.AbsoluteImageReference;
-import ch.systemsx.cisd.openbis.dss.etl.HCSDatasetLoaderFactory;
-import ch.systemsx.cisd.openbis.dss.etl.IHCSDatasetLoader;
+import ch.systemsx.cisd.openbis.dss.etl.HCSImageDatasetLoaderFactory;
+import ch.systemsx.cisd.openbis.dss.etl.IHCSImageDatasetLoader;
 import ch.systemsx.cisd.openbis.dss.generic.server.AbstractDssServiceRpc;
 import ch.systemsx.cisd.openbis.dss.generic.server.images.ImageChannelsUtils;
 import ch.systemsx.cisd.openbis.dss.generic.server.plugins.tasks.DatasetFileLines;
@@ -170,8 +170,8 @@ public class DssServiceRpcScreening extends AbstractDssServiceRpc implements
     private static ImageDatasetMetadata extractImageMetadata(IImageDatasetIdentifier dataset,
             File datasetRoot)
     {
-        IHCSDatasetLoader imageAccessor =
-                HCSDatasetLoaderFactory.create(datasetRoot, dataset.getDatasetCode());
+        IHCSImageDatasetLoader imageAccessor =
+                HCSImageDatasetLoaderFactory.create(datasetRoot, dataset.getDatasetCode());
         IContent imageFile = getAnyImagePath(imageAccessor, dataset);
         Geometry wellGeometry = imageAccessor.getWellGeometry();
         int channelsNumber = imageAccessor.getChannelCount();
@@ -181,7 +181,7 @@ public class DssServiceRpcScreening extends AbstractDssServiceRpc implements
                 image.getHeight());
     }
 
-    private static IContent getAnyImagePath(IHCSDatasetLoader imageAccessor,
+    private static IContent getAnyImagePath(IHCSImageDatasetLoader imageAccessor,
             IImageDatasetIdentifier dataset)
     {
         Geometry plateGeometry = imageAccessor.getPlateGeometry();
@@ -232,14 +232,14 @@ public class DssServiceRpcScreening extends AbstractDssServiceRpc implements
 
     public InputStream loadImages(String sessionToken, List<PlateImageReference> imageReferences)
     {
-        Map<String, IHCSDatasetLoader> imageLoadersMap =
+        Map<String, IHCSImageDatasetLoader> imageLoadersMap =
                 getImageDatasetsMap(sessionToken, imageReferences);
         List<IContent> imageFiles = new ArrayList<IContent>();
         try
         {
             for (PlateImageReference imageReference : imageReferences)
             {
-                IHCSDatasetLoader imageAccessor =
+                IHCSImageDatasetLoader imageAccessor =
                         imageLoadersMap.get(imageReference.getDatasetCode());
                 assert imageAccessor != null : "imageAccessor not found for: " + imageReference;
                 AbsoluteImageReference image = tryGetImage(imageAccessor, imageReference);
@@ -260,20 +260,20 @@ public class DssServiceRpcScreening extends AbstractDssServiceRpc implements
         return new ConcatenatedContentInputStream(true, imageFiles);
     }
 
-    private static void closeDatasetLoaders(Collection<IHCSDatasetLoader> loaders)
+    private static void closeDatasetLoaders(Collection<IHCSImageDatasetLoader> loaders)
     {
-        for (IHCSDatasetLoader loader : loaders)
+        for (IHCSImageDatasetLoader loader : loaders)
         {
             loader.close();
         }
     }
 
     // throws exception if some datasets cannot be found
-    private Map<String/* image or feature vector dataset code */, IHCSDatasetLoader> getImageDatasetsMap(
+    private Map<String/* image or feature vector dataset code */, IHCSImageDatasetLoader> getImageDatasetsMap(
             String sessionToken, List<PlateImageReference> imageReferences)
     {
-        Map<String/* dataset code */, IHCSDatasetLoader> imageDatasetsMap =
-                new HashMap<String, IHCSDatasetLoader>();
+        Map<String/* dataset code */, IHCSImageDatasetLoader> imageDatasetsMap =
+                new HashMap<String, IHCSImageDatasetLoader>();
         for (PlateImageReference imageReference : imageReferences)
         {
             if (imageDatasetsMap.containsKey(imageReference.getDatasetCode()) == false)
@@ -282,7 +282,8 @@ public class DssServiceRpcScreening extends AbstractDssServiceRpc implements
                         tryFindImageDataset(sessionToken, imageReference.getDatasetCode());
                 if (imageDataset != null)
                 {
-                    IHCSDatasetLoader imageAccessor = createImageLoader(imageDataset.getCode());
+                    IHCSImageDatasetLoader imageAccessor =
+                            createImageLoader(imageDataset.getCode());
                     imageDatasetsMap.put(imageReference.getDatasetCode(), imageAccessor);
                 } else
                 {
@@ -294,7 +295,7 @@ public class DssServiceRpcScreening extends AbstractDssServiceRpc implements
         return imageDatasetsMap;
     }
 
-    private AbsoluteImageReference tryGetImage(IHCSDatasetLoader imageAccessor,
+    private AbsoluteImageReference tryGetImage(IHCSImageDatasetLoader imageAccessor,
             PlateImageReference imageRef)
     {
         Location wellLocation = asLocation(imageRef.getWellPosition());
@@ -328,10 +329,10 @@ public class DssServiceRpcScreening extends AbstractDssServiceRpc implements
         return new Location(wellPosition.getWellColumn(), wellPosition.getWellRow());
     }
 
-    private IHCSDatasetLoader createImageLoader(String datasetCode)
+    private IHCSImageDatasetLoader createImageLoader(String datasetCode)
     {
         File datasetRoot = getRootDirectoryForDataSet(datasetCode);
-        return HCSDatasetLoaderFactory.create(datasetRoot, datasetCode);
+        return HCSImageDatasetLoaderFactory.create(datasetRoot, datasetCode);
     }
 
     private ExternalData tryFindImageDataset(String sessionToken, String datasetCode)
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/IScreeningBusinessObjectFactory.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/IScreeningBusinessObjectFactory.java
index cfc006f87e5bf929bc9ba4b9c83c86bae0456717..97248a938d60e84eea8d06f04dc51db3fbf75f88 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/IScreeningBusinessObjectFactory.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/IScreeningBusinessObjectFactory.java
@@ -25,6 +25,7 @@ import ch.systemsx.cisd.openbis.generic.server.business.bo.datasetlister.IDatase
 import ch.systemsx.cisd.openbis.generic.server.business.bo.materiallister.IMaterialLister;
 import ch.systemsx.cisd.openbis.generic.server.business.bo.samplelister.ISampleLister;
 import ch.systemsx.cisd.openbis.generic.shared.dto.Session;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.IHCSDatasetLoader;
 
 /**
  * A <i>screening</i> plugin specific business object factory.
@@ -33,6 +34,8 @@ import ch.systemsx.cisd.openbis.generic.shared.dto.Session;
  */
 public interface IScreeningBusinessObjectFactory
 {
+    public IHCSDatasetLoader createHCSDatasetLoader(final String datasetPermId);
+
     public ISampleBO createSampleBO(final Session session);
 
     public IExternalDataTable createExternalDataTable(final Session session);
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/ScreeningBusinessObjectFactory.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/ScreeningBusinessObjectFactory.java
index 56bf93ad896a0e0d6af9ebb89a35e3b2989629be..e5dc92736c6a22dfcd884f453c3a856d91039e57 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/ScreeningBusinessObjectFactory.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/ScreeningBusinessObjectFactory.java
@@ -16,6 +16,8 @@
 
 package ch.systemsx.cisd.openbis.plugin.screening.server;
 
+import javax.annotation.Resource;
+
 import org.springframework.stereotype.Component;
 
 import ch.systemsx.cisd.openbis.generic.server.business.bo.IExperimentBO;
@@ -28,7 +30,10 @@ import ch.systemsx.cisd.openbis.generic.server.business.bo.materiallister.IMater
 import ch.systemsx.cisd.openbis.generic.server.business.bo.samplelister.ISampleLister;
 import ch.systemsx.cisd.openbis.generic.shared.dto.Session;
 import ch.systemsx.cisd.openbis.plugin.AbstractPluginBusinessObjectFactory;
+import ch.systemsx.cisd.openbis.plugin.screening.server.dataaccess.IScreeningDAOFactory;
 import ch.systemsx.cisd.openbis.plugin.screening.shared.ResourceNames;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.HCSDatasetLoader;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.IHCSDatasetLoader;
 
 /**
  * The unique {@link IScreeningBusinessObjectFactory} implementation.
@@ -40,6 +45,18 @@ public final class ScreeningBusinessObjectFactory extends AbstractPluginBusiness
         implements IScreeningBusinessObjectFactory
 {
 
+    @Resource(name = ResourceNames.SCREENING_DAO_FACTORY)
+    private IScreeningDAOFactory specificDAOFactory;
+
+    public ScreeningBusinessObjectFactory()
+    {
+    }
+
+    public final IHCSDatasetLoader createHCSDatasetLoader(final String datasetPermId)
+    {
+        return new HCSDatasetLoader(specificDAOFactory.getImagingQueryDAO(), datasetPermId);
+    }
+
     public final ISampleBO createSampleBO(final Session session)
     {
         return getCommonBusinessObjectFactory().createSampleBO(session);
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/dataaccess/IScreeningDAOFactory.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/dataaccess/IScreeningDAOFactory.java
new file mode 100644
index 0000000000000000000000000000000000000000..e37c8c943b1dccc40c8ea7909f406b99a71f1a6a
--- /dev/null
+++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/dataaccess/IScreeningDAOFactory.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright 2009 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.openbis.plugin.screening.server.dataaccess;
+
+import ch.systemsx.cisd.dbmigration.DatabaseConfigurationContext;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.IImagingQueryDAO;
+
+/**
+ * A factory for Screening specific DAOs.
+ * 
+ * @author Piotr Buczek
+ */
+public interface IScreeningDAOFactory
+{
+    public DatabaseConfigurationContext getContext();
+
+    public IImagingQueryDAO getImagingQueryDAO();
+}
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/dataaccess/db/ScreeningDAOFactory.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/dataaccess/db/ScreeningDAOFactory.java
new file mode 100644
index 0000000000000000000000000000000000000000..9a8095fdcf54ba1675a25e34a4b9c5af26e54de5
--- /dev/null
+++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/dataaccess/db/ScreeningDAOFactory.java
@@ -0,0 +1,79 @@
+/*
+ * Copyright 2009 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.openbis.plugin.screening.server.dataaccess.db;
+
+import java.sql.Connection;
+import java.sql.SQLException;
+
+import net.lemnik.eodsql.QueryTool;
+
+import org.apache.log4j.Logger;
+
+import ch.systemsx.cisd.base.exceptions.CheckedExceptionTunnel;
+import ch.systemsx.cisd.common.logging.LogCategory;
+import ch.systemsx.cisd.common.logging.LogFactory;
+import ch.systemsx.cisd.dbmigration.DBMigrationEngine;
+import ch.systemsx.cisd.dbmigration.DatabaseConfigurationContext;
+import ch.systemsx.cisd.openbis.plugin.screening.server.dataaccess.IScreeningDAOFactory;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.IImagingQueryDAO;
+
+/**
+ * @author Piotr Buczek
+ */
+public class ScreeningDAOFactory implements IScreeningDAOFactory
+{
+    /** Current version of the database. */
+    public static final String DATABASE_VERSION = "003"; // S83
+
+    private static final Logger operationLog =
+            LogFactory.getLogger(LogCategory.OPERATION, ScreeningDAOFactory.class);
+
+    private final IImagingQueryDAO imagingQueryDAO;
+
+    private final DatabaseConfigurationContext imagingDatabaseContext;
+
+    public ScreeningDAOFactory(DatabaseConfigurationContext context)
+    {
+        this.imagingDatabaseContext = context;
+        DBMigrationEngine.createOrMigrateDatabaseAndGetScriptProvider(context, DATABASE_VERSION);
+        Connection connection = null;
+        try
+        {
+            connection = context.getDataSource().getConnection();
+        } catch (SQLException ex)
+        {
+            throw CheckedExceptionTunnel.wrapIfNecessary(ex);
+        }
+        // TODO this is the same solution as in PhosphoNetX - is it ok to use connection here?
+        // shouldn't it be a data source passed here in constructor?
+        imagingQueryDAO = QueryTool.getQuery(connection, IImagingQueryDAO.class);
+        if (operationLog.isInfoEnabled())
+        {
+            operationLog.info("DAO factory for Screening created.");
+        }
+    }
+
+    public DatabaseConfigurationContext getContext()
+    {
+        return imagingDatabaseContext;
+    }
+
+    public IImagingQueryDAO getImagingQueryDAO()
+    {
+        return imagingQueryDAO;
+    }
+}
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/ResourceNames.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/ResourceNames.java
index 3890e43995811a92bea38b8fe8a80153562da4ce..cba01cf953cd84f0a8a859b60ffd4159388ba05f 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/ResourceNames.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/ResourceNames.java
@@ -37,8 +37,9 @@ public final class ResourceNames
 
     public final static String SCREENING_PLUGIN_SERVER = "screening-plugin-server";
 
-    public final static String SCREENING_BUSINESS_OBJECT_FACTORY =
-            "screening-business-object-factory";
+    public final static String SCREENING_BUSINESS_OBJECT_FACTORY = "screening-bo-factory";
+
+    public final static String SCREENING_DAO_FACTORY = "screening-dao-factory";
 
     public final static String SCREENING_SAMPLE_SERVER_PLUGIN = "screening-sample-server-plugin";
 
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/HCSDatasetLoader.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/HCSDatasetLoader.java
new file mode 100644
index 0000000000000000000000000000000000000000..11b03d9d39bb76548585bcc961320d5a6313c035
--- /dev/null
+++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/HCSDatasetLoader.java
@@ -0,0 +1,108 @@
+/*
+ * Copyright 2010 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.openbis.plugin.screening.shared.imaging;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import ch.systemsx.cisd.bds.hcs.Geometry;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.IImagingQueryDAO;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.ImgContainerDTO;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.ImgDatasetDTO;
+
+/**
+ * Helper class for easy handling of HCS image dataset standard structure with no code for handling
+ * images.
+ * 
+ * @author Tomasz Pylak
+ * @author Piotr Buczek
+ */
+public class HCSDatasetLoader implements IHCSDatasetLoader
+{
+    protected final IImagingQueryDAO query;
+
+    protected final ImgDatasetDTO dataset;
+
+    protected ImgContainerDTO container;
+
+    protected Integer channelCount;
+
+    protected List<String> channelNames;
+
+    public HCSDatasetLoader(IImagingQueryDAO query, String datasetPermId)
+    {
+        this.query = query;
+        this.dataset = query.tryGetDatasetByPermId(datasetPermId);
+        if (dataset == null)
+        {
+            throw new IllegalStateException(String.format("Dataset '%s' not found", datasetPermId));
+        }
+    }
+
+    /** has to be called at the end */
+    public void close()
+    {
+        query.close();
+    }
+
+    protected final ImgContainerDTO getContainer()
+    {
+        if (container == null)
+        {
+            container = query.getContainerById(dataset.getContainerId());
+        }
+        return container;
+    }
+
+    public Geometry getPlateGeometry()
+    {
+        return new Geometry(getContainer().getNumberOfRows(), getContainer().getNumberOfColumns());
+    }
+
+    protected final ImgDatasetDTO getDataset()
+    {
+        return dataset;
+    }
+
+    public Geometry getWellGeometry()
+    {
+        return new Geometry(getDataset().getFieldNumberOfRows(), getDataset()
+                .getFieldNumberOfColumns());
+    }
+
+    public int getChannelCount()
+    {
+        if (channelCount == null)
+        {
+            channelCount = getChannelsNames().size();
+        }
+        return channelCount;
+    }
+
+    public List<String> getChannelsNames()
+    {
+        if (channelNames == null)
+        {
+            String[] namesAsArray =
+                    query.getChannelNamesByDatasetIdOrExperimentId(getDataset().getId(),
+                            getContainer().getExperimentId());
+            channelNames = new ArrayList<String>(Arrays.asList(namesAsArray));
+        }
+        return channelNames;
+    }
+}
\ No newline at end of file
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/ImagingDatabaseVersionHolder.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/IHCSDatasetLoader.java
similarity index 58%
rename from screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/ImagingDatabaseVersionHolder.java
rename to screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/IHCSDatasetLoader.java
index d5ce9a1180e937442e71d5e7c9ecd66cf975cea7..80756fb4bdedc40daf690585fe298d3a08d13a96 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/ImagingDatabaseVersionHolder.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/IHCSDatasetLoader.java
@@ -14,23 +14,27 @@
  * limitations under the License.
  */
 
-package ch.systemsx.cisd.openbis.dss.etl.dataaccess;
+package ch.systemsx.cisd.openbis.plugin.screening.shared.imaging;
 
-import ch.systemsx.cisd.openbis.dss.generic.shared.IDatabaseVersionHolder;
+import java.util.List;
+
+import ch.systemsx.cisd.bds.hcs.Geometry;
 
 /**
- * Stores current version of special purpose imaging database.
- * 
  * @author Tomasz Pylak
  */
-public class ImagingDatabaseVersionHolder implements IDatabaseVersionHolder
+public interface IHCSDatasetLoader
 {
-    /** Current version of the database. */
-    static final String DATABASE_VERSION = "003"; // S83
 
-    public String getDatabaseVersion()
-    {
-        return DATABASE_VERSION;
-    }
+    /** has to be called at the end */
+    void close();
+
+    Geometry getPlateGeometry();
+
+    Geometry getWellGeometry();
+
+    int getChannelCount();
+
+    List<String> getChannelsNames();
 
-}
+}
\ No newline at end of file
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/ColorComponent.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/ColorComponent.java
similarity index 95%
rename from screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/ColorComponent.java
rename to screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/ColorComponent.java
index ad63813c897511622dc96f64c346f988aa995e3d..140dfe5af190382a058a87be3eee1b907136bb00 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/ColorComponent.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/ColorComponent.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package ch.systemsx.cisd.openbis.dss.etl.dataaccess;
+package ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess;
 
 import java.awt.Color;
 
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/FeatureVectorDataObjectBinding.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/FeatureVectorDataObjectBinding.java
similarity index 94%
rename from screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/FeatureVectorDataObjectBinding.java
rename to screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/FeatureVectorDataObjectBinding.java
index 3b8476fd48ba44d94693d8b8bf4c52a68090e88b..1fe2ee364354b4cdc72afe61c27733a263586287 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/FeatureVectorDataObjectBinding.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/FeatureVectorDataObjectBinding.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package ch.systemsx.cisd.openbis.dss.etl.dataaccess;
+package ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess;
 
 import java.sql.ResultSet;
 import java.sql.SQLException;
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/IImagingUploadDAO.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/IImagingQueryDAO.java
similarity index 98%
rename from screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/IImagingUploadDAO.java
rename to screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/IImagingQueryDAO.java
index c4a421f49c98f92b9e5a85a86b52f29fd7baa92d..8fed686e6bcc7f86dfbc790fb2e675bd059c2d0e 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/IImagingUploadDAO.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/IImagingQueryDAO.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package ch.systemsx.cisd.openbis.dss.etl.dataaccess;
+package ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess;
 
 import java.util.List;
 
@@ -28,7 +28,7 @@ import ch.systemsx.cisd.openbis.generic.server.dataaccess.db.ByteArrayMapper;
 /**
  * @author Tomasz Pylak
  */
-public interface IImagingUploadDAO extends TransactionQuery
+public interface IImagingQueryDAO extends TransactionQuery
 {
     public static final int FETCH_SIZE = 1000;
 
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/ImgAcquiredImageDTO.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/ImgAcquiredImageDTO.java
similarity index 96%
rename from screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/ImgAcquiredImageDTO.java
rename to screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/ImgAcquiredImageDTO.java
index 235e525767d98c0c574c41583a5ce9872ebe8910..9ef3b0e381cad657fcf9e526781c79edd9f75dd9 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/ImgAcquiredImageDTO.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/ImgAcquiredImageDTO.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package ch.systemsx.cisd.openbis.dss.etl.dataaccess;
+package ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess;
 
 import net.lemnik.eodsql.AutoGeneratedKeys;
 import net.lemnik.eodsql.ResultColumn;
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/ImgChannelDTO.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/ImgChannelDTO.java
similarity index 97%
rename from screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/ImgChannelDTO.java
rename to screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/ImgChannelDTO.java
index 48336231307e8a911b62b08b17881f469c7b2a0f..f473c2d77892d6692e61e7012df098c37ca2e610 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/ImgChannelDTO.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/ImgChannelDTO.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package ch.systemsx.cisd.openbis.dss.etl.dataaccess;
+package ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess;
 
 import net.lemnik.eodsql.AutoGeneratedKeys;
 import net.lemnik.eodsql.ResultColumn;
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/ImgChannelStackDTO.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/ImgChannelStackDTO.java
similarity index 97%
rename from screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/ImgChannelStackDTO.java
rename to screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/ImgChannelStackDTO.java
index 44ff7859cef51079ce5b332482710249e8494998..2fd24910d0be2fc6abf6685fc661c802d5aa762a 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/ImgChannelStackDTO.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/ImgChannelStackDTO.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package ch.systemsx.cisd.openbis.dss.etl.dataaccess;
+package ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess;
 
 import net.lemnik.eodsql.AutoGeneratedKeys;
 import net.lemnik.eodsql.ResultColumn;
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/ImgContainerDTO.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/ImgContainerDTO.java
similarity index 96%
rename from screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/ImgContainerDTO.java
rename to screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/ImgContainerDTO.java
index 4427208dd4286348d36ff2e3b5f6de64fc85be92..e5932271494f2718599a0513d2b1bceaa4a2a27c 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/ImgContainerDTO.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/ImgContainerDTO.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package ch.systemsx.cisd.openbis.dss.etl.dataaccess;
+package ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess;
 
 import net.lemnik.eodsql.AutoGeneratedKeys;
 import net.lemnik.eodsql.ResultColumn;
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/ImgDatasetDTO.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/ImgDatasetDTO.java
similarity index 97%
rename from screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/ImgDatasetDTO.java
rename to screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/ImgDatasetDTO.java
index 18a1ee6d1090b95769835af1ab91297690146f5f..58cf4871a10249c28dbf11f1f0f237e775b7dc0d 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/ImgDatasetDTO.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/ImgDatasetDTO.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package ch.systemsx.cisd.openbis.dss.etl.dataaccess;
+package ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess;
 
 import net.lemnik.eodsql.AutoGeneratedKeys;
 import net.lemnik.eodsql.ResultColumn;
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/ImgFeatureDefDTO.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/ImgFeatureDefDTO.java
similarity index 96%
rename from screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/ImgFeatureDefDTO.java
rename to screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/ImgFeatureDefDTO.java
index 166b39c1847af86bdde8e32f829ac1ec9f836338..7ba947e07c6ed9ec0121d38086502accf6bea568 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/ImgFeatureDefDTO.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/ImgFeatureDefDTO.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package ch.systemsx.cisd.openbis.dss.etl.dataaccess;
+package ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess;
 
 import net.lemnik.eodsql.AutoGeneratedKeys;
 import net.lemnik.eodsql.ResultColumn;
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/ImgFeatureValuesDTO.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/ImgFeatureValuesDTO.java
similarity index 97%
rename from screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/ImgFeatureValuesDTO.java
rename to screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/ImgFeatureValuesDTO.java
index 0cda1a2925fbb083021929723a9f2d1999cb8525..b3d418f221f0913d9d9cc30d8df6429cd6073c14 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/ImgFeatureValuesDTO.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/ImgFeatureValuesDTO.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package ch.systemsx.cisd.openbis.dss.etl.dataaccess;
+package ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess;
 
 import net.lemnik.eodsql.AutoGeneratedKeys;
 import net.lemnik.eodsql.ResultColumn;
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/ImgImageDTO.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/ImgImageDTO.java
similarity index 96%
rename from screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/ImgImageDTO.java
rename to screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/ImgImageDTO.java
index 19ad6ed07cb06f7caed07fd12b0ab3d5ec88b11a..ebdeabae3cb8941c8d0248e80129fd49a9fa32a1 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/ImgImageDTO.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/ImgImageDTO.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package ch.systemsx.cisd.openbis.dss.etl.dataaccess;
+package ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess;
 
 
 import net.lemnik.eodsql.AutoGeneratedKeys;
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/ImgSpotDTO.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/ImgSpotDTO.java
similarity index 96%
rename from screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/ImgSpotDTO.java
rename to screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/ImgSpotDTO.java
index 2927d99d3ca32d4d72b62addd96c4afd0be2b5fd..57546b6dbe376b68733c2f8f911417c678f00a7a 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/ImgSpotDTO.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/ImgSpotDTO.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package ch.systemsx.cisd.openbis.dss.etl.dataaccess;
+package ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess;
 
 import net.lemnik.eodsql.AutoGeneratedKeys;
 import net.lemnik.eodsql.ResultColumn;
diff --git a/screening/source/java/screening-applicationContext.xml b/screening/source/java/screening-applicationContext.xml
index 3a5e07e65e54083814018656a114da2a88eb8aa2..c8f42648252ace1fe19d2b3baa070af337d321e9 100644
--- a/screening/source/java/screening-applicationContext.xml
+++ b/screening/source/java/screening-applicationContext.xml
@@ -9,6 +9,31 @@
 
     <import resource="applicationContext.xml"/>
     
+    <bean id="imaging-db-configuration-context"
+        class="ch.systemsx.cisd.dbmigration.DatabaseConfigurationContext">
+        <property name="basicDatabaseName" value="imaging" />
+        <property name="createFromScratch" value="${imaging.database.create-from-scratch}" />
+        <property name="scriptSingleStepMode" value="${imaging.database.script-single-step-mode}" />
+        <property name="sequenceNameMapper">
+            <bean class="ch.systemsx.cisd.openbis.generic.server.dataaccess.db.SequenceNameMapper" />
+        </property>
+        <property name="urlHostPart" value="${imaging.database.url-host-part}" />
+        <property name="adminUser" value="${imaging.database.admin-user}" />
+        <property name="owner" value="${imaging.database.owner}" />
+        <property name="readOnlyGroup" value="imaging_readonly" />
+        <property name="password" value="${imaging.database.owner-password}" />
+        <property name="adminPassword" value="${imaging.database.admin-password}" />
+        <property name="databaseKind" value="${imaging.database.kind}" />
+        <property name="databaseEngineCode" value="${imaging.database.engine}" />
+        <property name="scriptFolder" value="${imaging.script-folder}/sql" />
+        <property name="databaseInstance" value="${imaging.database-instance}" />
+    </bean>
+    
+    <bean id="screening-dao-factory"
+          class="ch.systemsx.cisd.openbis.plugin.screening.server.dataaccess.db.ScreeningDAOFactory">
+        <constructor-arg ref="imaging-db-configuration-context"/>
+    </bean>
+    
     <!--
         //Mail Client Parameters
     -->
diff --git a/screening/source/java/service.properties b/screening/source/java/service.properties
index 3db582c2b9315a568fcd793f80e163338579b873..1d4aa1792cebe508c4faa4d855454f61b81e8e35 100644
--- a/screening/source/java/service.properties
+++ b/screening/source/java/service.properties
@@ -21,6 +21,17 @@ database.owner-password =
 database.admin-user = 
 database.admin-password =
 
+imaging.database.engine = postgresql
+imaging.database.create-from-scratch = false
+imaging.database.script-single-step-mode = false
+imaging.database.url-host-part =
+imaging.database.kind = dev
+imaging.database.owner =
+imaging.database.owner-password =
+imaging.database.admin-user = 
+imaging.database.admin-password =
+imaging.script-folder = source
+
 crowd.service.host = crowd-bsse.ethz.ch
 crowd.service.port = 8443
 crowd.application.name = lims
diff --git a/screening/sourceTest/java/ch/systemsx/cisd/openbis/dss/etl/featurevector/FeatureVectorUploaderTest.java b/screening/sourceTest/java/ch/systemsx/cisd/openbis/dss/etl/featurevector/FeatureVectorUploaderTest.java
index 29d73a330bdb87a0c30fee2666477282f90159a7..cc1195ae175bcb943192a9ea9e6dd177ba6af210 100644
--- a/screening/sourceTest/java/ch/systemsx/cisd/openbis/dss/etl/featurevector/FeatureVectorUploaderTest.java
+++ b/screening/sourceTest/java/ch/systemsx/cisd/openbis/dss/etl/featurevector/FeatureVectorUploaderTest.java
@@ -28,11 +28,11 @@ import org.testng.annotations.Test;
 
 import ch.systemsx.cisd.base.mdarray.MDDoubleArray;
 import ch.systemsx.cisd.openbis.dss.etl.ScreeningContainerDatasetInfo;
-import ch.systemsx.cisd.openbis.dss.etl.dataaccess.AbstractDBTest;
-import ch.systemsx.cisd.openbis.dss.etl.dataaccess.DBUtils;
-import ch.systemsx.cisd.openbis.dss.etl.dataaccess.IImagingUploadDAO;
-import ch.systemsx.cisd.openbis.dss.etl.dataaccess.ImgFeatureDefDTO;
-import ch.systemsx.cisd.openbis.dss.etl.dataaccess.ImgFeatureValuesDTO;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.AbstractDBTest;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.DBUtils;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.IImagingQueryDAO;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.ImgFeatureDefDTO;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.ImgFeatureValuesDTO;
 
 /**
  * @author Chandrasekhar Ramakrishnan
@@ -47,12 +47,12 @@ public class FeatureVectorUploaderTest extends AbstractDBTest
 
     private static final String TEST_FEATURE_NAME = "test";
 
-    private IImagingUploadDAO dao;
+    private IImagingQueryDAO dao;
 
     @BeforeClass(alwaysRun = true)
     public void init() throws SQLException
     {
-        dao = DBUtils.getQuery(datasource, IImagingUploadDAO.class);
+        dao = DBUtils.getQuery(datasource, IImagingQueryDAO.class);
     }
 
     @Test
diff --git a/screening/sourceTest/java/ch/systemsx/cisd/openbis/dss/etl/genedata/FeatureStorageProcessorTest.java b/screening/sourceTest/java/ch/systemsx/cisd/openbis/dss/etl/genedata/FeatureStorageProcessorTest.java
index 560164ab8f7aa74ac1fb71ba6bd4df7923c1fa96..5b8598843768a96f9920f695e7f5c52dc758420c 100644
--- a/screening/sourceTest/java/ch/systemsx/cisd/openbis/dss/etl/genedata/FeatureStorageProcessorTest.java
+++ b/screening/sourceTest/java/ch/systemsx/cisd/openbis/dss/etl/genedata/FeatureStorageProcessorTest.java
@@ -33,10 +33,6 @@ import ch.systemsx.cisd.base.tests.AbstractFileSystemTestCase;
 import ch.systemsx.cisd.common.filesystem.FileUtilities;
 import ch.systemsx.cisd.etlserver.IStorageProcessor;
 import ch.systemsx.cisd.etlserver.PlateDimensionParser;
-import ch.systemsx.cisd.openbis.dss.etl.dataaccess.IImagingUploadDAO;
-import ch.systemsx.cisd.openbis.dss.etl.dataaccess.ImgDatasetDTO;
-import ch.systemsx.cisd.openbis.dss.etl.dataaccess.ImgFeatureDefDTO;
-import ch.systemsx.cisd.openbis.dss.etl.dataaccess.ImgFeatureValuesDTO;
 import ch.systemsx.cisd.openbis.dss.generic.shared.IEncapsulatedOpenBISService;
 import ch.systemsx.cisd.openbis.dss.generic.shared.dto.DataSetInformation;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Experiment;
@@ -44,6 +40,10 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.GenericValueEntityPrope
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IEntityProperty;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.PropertyType;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.IImagingQueryDAO;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.ImgDatasetDTO;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.ImgFeatureDefDTO;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.ImgFeatureValuesDTO;
 
 /**
  * @author Franz-Josef Elmer
@@ -63,7 +63,7 @@ public class FeatureStorageProcessorTest extends AbstractFileSystemTestCase
 
     private Mockery context;
 
-    private IImagingUploadDAO dao;
+    private IImagingQueryDAO dao;
 
     private DataSource dataSource;
 
@@ -76,7 +76,7 @@ public class FeatureStorageProcessorTest extends AbstractFileSystemTestCase
         super.setUp();
 
         context = new Mockery();
-        dao = context.mock(IImagingUploadDAO.class);
+        dao = context.mock(IImagingQueryDAO.class);
         dataSource = context.mock(DataSource.class);
         openBisService = context.mock(IEncapsulatedOpenBISService.class);
 
@@ -128,7 +128,7 @@ public class FeatureStorageProcessorTest extends AbstractFileSystemTestCase
                 // For Testing
 
                 @Override
-                protected IImagingUploadDAO createDAO()
+                protected IImagingQueryDAO createDAO()
                 {
                     return dao;
                 }
diff --git a/screening/sourceTest/java/ch/systemsx/cisd/openbis/dss/etl/genedata/GenedataFormatToCanonicalFeatureVectorTest.java b/screening/sourceTest/java/ch/systemsx/cisd/openbis/dss/etl/genedata/GenedataFormatToCanonicalFeatureVectorTest.java
index 2427bd798e6f01dd65081a0fde60fa537f641c2e..a35e0b1e23e18a5a40b96339a5b8856e1c7716fc 100644
--- a/screening/sourceTest/java/ch/systemsx/cisd/openbis/dss/etl/genedata/GenedataFormatToCanonicalFeatureVectorTest.java
+++ b/screening/sourceTest/java/ch/systemsx/cisd/openbis/dss/etl/genedata/GenedataFormatToCanonicalFeatureVectorTest.java
@@ -25,9 +25,9 @@ import org.testng.annotations.Test;
 import ch.systemsx.cisd.base.mdarray.MDDoubleArray;
 import ch.systemsx.cisd.base.tests.AbstractFileSystemTestCase;
 import ch.systemsx.cisd.common.filesystem.FileUtilities;
-import ch.systemsx.cisd.openbis.dss.etl.dataaccess.ImgFeatureDefDTO;
-import ch.systemsx.cisd.openbis.dss.etl.dataaccess.ImgFeatureValuesDTO;
 import ch.systemsx.cisd.openbis.dss.etl.featurevector.CanonicalFeatureVector;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.ImgFeatureDefDTO;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.ImgFeatureValuesDTO;
 
 /**
  * Check that Genedata feature vectors can be converted to the canonical form.
diff --git a/screening/sourceTest/java/ch/systemsx/cisd/openbis/dss/screening/shared/.gitignore b/screening/sourceTest/java/ch/systemsx/cisd/openbis/dss/screening/shared/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/screening/sourceTest/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/AbstractDBTest.java b/screening/sourceTest/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/AbstractDBTest.java
similarity index 96%
rename from screening/sourceTest/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/AbstractDBTest.java
rename to screening/sourceTest/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/AbstractDBTest.java
index 4b2c4bcf666d65c15e1ddda346cad251f3ca797d..1c6adfba79950e2a2ee93f9c5cecf0f93190dce1 100644
--- a/screening/sourceTest/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/AbstractDBTest.java
+++ b/screening/sourceTest/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/AbstractDBTest.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package ch.systemsx.cisd.openbis.dss.etl.dataaccess;
+package ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess;
 
 import java.sql.SQLException;
 
diff --git a/screening/sourceTest/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/DBUtils.java b/screening/sourceTest/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/DBUtils.java
similarity index 96%
rename from screening/sourceTest/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/DBUtils.java
rename to screening/sourceTest/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/DBUtils.java
index 4b6845f2aa8b0778f805972c3db02661cad394d7..1206b6ee82e53be02f49df8cbe2314942d324d2a 100644
--- a/screening/sourceTest/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/DBUtils.java
+++ b/screening/sourceTest/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/DBUtils.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package ch.systemsx.cisd.openbis.dss.etl.dataaccess;
+package ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess;
 
 import javax.sql.DataSource;
 
diff --git a/screening/sourceTest/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/DBUtilsForTests.java b/screening/sourceTest/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/DBUtilsForTests.java
similarity index 79%
rename from screening/sourceTest/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/DBUtilsForTests.java
rename to screening/sourceTest/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/DBUtilsForTests.java
index 4d6d2293d4118d44380e1750d1b996e84489e0f9..702e5448ec29ca8a2224923c3d748d61e0ca06a3 100644
--- a/screening/sourceTest/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/DBUtilsForTests.java
+++ b/screening/sourceTest/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/DBUtilsForTests.java
@@ -14,25 +14,25 @@
  * limitations under the License.
  */
 
-package ch.systemsx.cisd.openbis.dss.etl.dataaccess;
+package ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess;
 
 import ch.rinn.restrictions.Friend;
 import ch.systemsx.cisd.dbmigration.DBMigrationEngine;
 import ch.systemsx.cisd.dbmigration.DatabaseConfigurationContext;
-import ch.systemsx.cisd.openbis.dss.etl.dataaccess.ImagingDatabaseVersionHolder;
+import ch.systemsx.cisd.openbis.plugin.screening.server.dataaccess.db.ScreeningDAOFactory;
 
 /**
  * Utilities for dealing with databases in tests.
  * 
  * @author Piotr Buczek
  */
-@Friend(toClasses = ImagingDatabaseVersionHolder.class)
+@Friend(toClasses = ScreeningDAOFactory.class)
 public class DBUtilsForTests
 {
 
     public static void init(DatabaseConfigurationContext context)
     {
         DBMigrationEngine.createOrMigrateDatabaseAndGetScriptProvider(context,
-                ImagingDatabaseVersionHolder.DATABASE_VERSION);
+                ScreeningDAOFactory.DATABASE_VERSION);
     }
 }
diff --git a/screening/sourceTest/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/FeatureVectorDAOTest.java b/screening/sourceTest/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/FeatureVectorDAOTest.java
similarity index 85%
rename from screening/sourceTest/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/FeatureVectorDAOTest.java
rename to screening/sourceTest/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/FeatureVectorDAOTest.java
index d436277100ca336c1be74fcb8376b83ac3c7a3cd..9ead171b15832b931a770e0c506a99d020524abb 100644
--- a/screening/sourceTest/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/FeatureVectorDAOTest.java
+++ b/screening/sourceTest/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/FeatureVectorDAOTest.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package ch.systemsx.cisd.openbis.dss.etl.dataaccess;
+package ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess;
 
 import static org.testng.AssertJUnit.assertEquals;
 
@@ -25,9 +25,14 @@ import org.testng.annotations.BeforeClass;
 import org.testng.annotations.Test;
 
 import ch.systemsx.cisd.base.mdarray.MDDoubleArray;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.IImagingQueryDAO;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.ImgContainerDTO;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.ImgDatasetDTO;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.ImgFeatureDefDTO;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.ImgFeatureValuesDTO;
 
 /**
- * Tests for {@link IImagingUploadDAO} methods that deal with feature vectors.
+ * Tests for {@link IImagingQueryDAO} methods that deal with feature vectors.
  * 
  * @author Chandrasekhar Ramakrishnan
  */
@@ -35,7 +40,7 @@ import ch.systemsx.cisd.base.mdarray.MDDoubleArray;
     { "db", "screening" })
 public class FeatureVectorDAOTest extends AbstractDBTest
 {
-    private IImagingUploadDAO dao;
+    private IImagingQueryDAO dao;
 
     private ImgDatasetDTO dataset;
 
@@ -50,12 +55,12 @@ public class FeatureVectorDAOTest extends AbstractDBTest
     @BeforeClass(alwaysRun = true)
     public void init() throws SQLException
     {
-        dao = DBUtils.getQuery(datasource, IImagingUploadDAO.class);
+        dao = DBUtils.getQuery(datasource, IImagingQueryDAO.class);
     }
 
     private ImgDatasetDTO createDataSet()
     {
-        IImagingUploadDAO imagingDao = dao;
+        IImagingQueryDAO imagingDao = dao;
 
         // Create an Experiment
         final long experimentId = imagingDao.addExperiment(EXP_PERM_ID);
diff --git a/screening/sourceTest/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/ImagingUploadDAOTest.java b/screening/sourceTest/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/ImagingQueryDAOTest.java
similarity index 89%
rename from screening/sourceTest/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/ImagingUploadDAOTest.java
rename to screening/sourceTest/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/ImagingQueryDAOTest.java
index c78efa3c11318f55ca893f69e22517a7492782ae..7d3496c9c8f092e4b7c54d27944ef0da833fb66d 100644
--- a/screening/sourceTest/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/ImagingUploadDAOTest.java
+++ b/screening/sourceTest/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/ImagingQueryDAOTest.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package ch.systemsx.cisd.openbis.dss.etl.dataaccess;
+package ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess;
 
 import static org.testng.AssertJUnit.assertEquals;
 import static org.testng.AssertJUnit.assertNotNull;
@@ -27,15 +27,24 @@ import org.testng.annotations.BeforeClass;
 import org.testng.annotations.Test;
 
 import ch.systemsx.cisd.bds.hcs.Location;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.ColorComponent;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.IImagingQueryDAO;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.ImgAcquiredImageDTO;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.ImgChannelDTO;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.ImgChannelStackDTO;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.ImgContainerDTO;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.ImgDatasetDTO;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.ImgImageDTO;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.ImgSpotDTO;
 
 /**
- * Tests for {@link IImagingUploadDAO}.
+ * Tests for {@link IImagingQueryDAO}.
  * 
  * @author Piotr Buczek
  */
 @Test(groups =
     { "db", "screening" })
-public class ImagingUploadDAOTest extends AbstractDBTest
+public class ImagingQueryDAOTest extends AbstractDBTest
 {
 
     private static final String PERM_ID = "PERM_ID";
@@ -68,12 +77,12 @@ public class ImagingUploadDAOTest extends AbstractDBTest
 
     private static final String EXP_CHANNEL = "expChannel";
 
-    private IImagingUploadDAO dao;
+    private IImagingQueryDAO dao;
 
     @BeforeClass(alwaysRun = true)
     public void init() throws SQLException
     {
-        dao = DBUtils.getQuery(datasource, IImagingUploadDAO.class);
+        dao = DBUtils.getQuery(datasource, IImagingQueryDAO.class);
     }
 
     @Test