diff --git a/screening/etc/data-set-handler.py b/screening/etc/data-set-handler.py
index 6d1464b55270477f3285d76057713d137021c21b..97ea35b37f827f101d3a0ec10025c4c5ccde8c6e 100755
--- a/screening/etc/data-set-handler.py
+++ b/screening/etc/data-set-handler.py
@@ -463,19 +463,51 @@ def register_images_with_overlays_and_analysis(incoming):
     register_sample_if_necessary(space_code, DEFAULT_PROJECT_CODE, DEFAULT_EXPERIMENT_CODE, plate_code)
 
     img_dataset_code = service.queueDataSetRegistration(incoming, image_dataset_details).getCode()
-    service.commit()
     
     # register overlays dataset
     if overlays_dir != None:
         overlay_dataset_details = create_overlay_dataset_details(tmp_overlays_dir, 
                                      image_dataset_details.getDataSetInformation(), img_dataset_code)
         service.queueDataSetRegistration(tmp_overlays_dir, overlay_dataset_details)
-        service.commit()
 
     # register analysis dataset
     if analysis_file != None:
         analysis_registration_details = create_analysis_dataset_details(space_code, plate_code, img_dataset_code)  
         service.queueDataSetRegistration(tmp_analysis_file, analysis_registration_details)
-        service.commit()
 
+def register_images_with_overlays_and_analysis_new(incoming):
+    if not incoming.isDirectory():
+        return
+    
+    tr = service.transaction(incoming, factory)
+        
+    image_dataset_details = create_image_dataset_details(incoming)
+    plate_code = image_dataset_details.getDataSetInformation().getSampleCode()
+    space_code = image_dataset_details.getDataSetInformation().getSpaceCode()
+    register_sample_if_necessary(space_code, DEFAULT_PROJECT_CODE, DEFAULT_EXPERIMENT_CODE, plate_code)
+
+    # create the image data set and put everything in it initially
+    image_data_set = tr.createNewDataSet(image_dataset_details)
+    image_data_set_folder = tr.moveFile(incoming.getPath(), image_data_set)
+    img_dataset_code = image_data_set.getDataSetCode()
+          
+        
+    # move overlays folder
+    overlays_dir = find_dir(File(image_data_set_folder), OVERLAYS_DIR_PATTERN)
+    if overlays_dir != None:
+        overlay_dataset_details = create_overlay_dataset_details(overlays_dir, 
+                                     image_dataset_details.getDataSetInformation(), img_dataset_code)
+        overlays_data_set = tr.createNewDataSet(overlay_dataset_details)
+        tr.moveFile(overlays_dir.getPath(), overlays_data_set, "overlays")
+
+    # transform and move analysis file
+    analysis_file = find_file_by_ext(File(image_data_set_folder), "xml")
+    if analysis_file != None:
+        analysis_registration_details = create_analysis_dataset_details(space_code, plate_code, img_dataset_code)
+        analysis_data_set = tr.createNewDataSet(analysis_registration_details)
+        analysis_data_set_file = tr.createNewFile(analysis_data_set, analysis_file.getName())
+        GEExplorerImageAnalysisResultParser(analysis_file.getPath()).writeCSV(File(analysis_data_set_file))
+        
+    service.commit()
+    
 register_images_with_overlays_and_analysis(incoming)