diff --git a/pom.xml b/pom.xml
index a6381e55ff482bb8601c583b4bb74f3b14fe23e0..8e2972eea66a2f775e690a63c105690c8c32a540 100644
--- a/pom.xml
+++ b/pom.xml
@@ -11,7 +11,7 @@
     </parent>
 
     <artifactId>icy-micromanager</artifactId>
-    <version>1.8.0</version>
+    <version>1.9.0</version>
 
     <packaging>jar</packaging>
 
diff --git a/src/main/java/plugins/tprovoost/Microscopy/MicroManager/MicroManager.java b/src/main/java/plugins/tprovoost/Microscopy/MicroManager/MicroManager.java
index 2a6a8fa70c8f0d1aa68416c4fd875980b8447238..2519367e317c9688078a36e1ff0942a104440d20 100644
--- a/src/main/java/plugins/tprovoost/Microscopy/MicroManager/MicroManager.java
+++ b/src/main/java/plugins/tprovoost/Microscopy/MicroManager/MicroManager.java
@@ -39,6 +39,7 @@ import mmcorej.TaggedImage;
 import plugins.tprovoost.Microscopy.MicroManager.core.AcquisitionResult;
 import plugins.tprovoost.Microscopy.MicroManager.event.AcquisitionListener;
 import plugins.tprovoost.Microscopy.MicroManager.event.LiveListener;
+import plugins.tprovoost.Microscopy.MicroManager.gui.LiveSettingsPanel;
 import plugins.tprovoost.Microscopy.MicroManager.gui.LoadFrame;
 import plugins.tprovoost.Microscopy.MicroManager.gui.LoadingFrame;
 import plugins.tprovoost.Microscopy.MicroManager.gui.MMMainFrame;
@@ -1862,8 +1863,13 @@ public class MicroManager
                     final SequenceSettings settings = getAcquisitionSettings();
                     final JSONObject metadata = getAcquisitionMetaData();
 
+                    // set sequence prefix for acquisition
+                    final LiveSettingsPanel livePanel = instance.livePanel;
+                    if (livePanel.hasCustomAcqName()) settings.prefix = livePanel.getAcqName();
+                    else settings.prefix = "Acquisition";
+
                     // create the acquisition manager
-                    acquisitionManager = new AcquisitionResult(settings, metadata);
+                    acquisitionManager = new AcquisitionResult(settings, metadata, livePanel.hasDateSuffix());
 
                     // send acquisition started event
                     for (AcquisitionListener l : listeners)
diff --git a/src/main/java/plugins/tprovoost/Microscopy/MicroManager/core/AcquisitionResult.java b/src/main/java/plugins/tprovoost/Microscopy/MicroManager/core/AcquisitionResult.java
index 686e8bda53e0886d4390cb495f85ac4e9e5ac4e1..f8952f33e55f396e3dc36983810eae11ce9b747b 100644
--- a/src/main/java/plugins/tprovoost/Microscopy/MicroManager/core/AcquisitionResult.java
+++ b/src/main/java/plugins/tprovoost/Microscopy/MicroManager/core/AcquisitionResult.java
@@ -15,7 +15,6 @@ import org.micromanager.utils.MMScriptException;
 import icy.gui.viewer.Viewer;
 import icy.main.Icy;
 import icy.sequence.Sequence;
-import icy.util.DateUtil;
 import icy.util.StringUtil;
 import mmcorej.TaggedImage;
 import plugins.tprovoost.Microscopy.MicroManager.MicroManager;
@@ -33,13 +32,15 @@ public class AcquisitionResult
     protected final Map<Integer, Sequence> sequences;
     protected final SequenceSettings settings;
     protected final JSONObject summaryMetadata;
+    protected final boolean dateSuffix;
     protected final long startTime;
     protected boolean done;
 
-    public AcquisitionResult(SequenceSettings settings, JSONObject summaryMetadata)
+    public AcquisitionResult(SequenceSettings settings, JSONObject summaryMetadata, boolean dateSuffix)
     {
         this.settings = settings;
         this.summaryMetadata = summaryMetadata;
+        this.dateSuffix = dateSuffix;
         sequences = new HashMap<Integer, Sequence>();
         startTime = Calendar.getInstance().getTimeInMillis();
         done = false;
@@ -61,8 +62,9 @@ public class AcquisitionResult
             final String positionName = MDUtils.getPositionName(tags);
 
             // create a new sequence
-            seq = new Sequence("Acquisition - " + (!StringUtil.isEmpty(positionName) ? positionName + " - " : "")
-                    + DateUtil.now("yyyy-MM-dd HH'h'mm'm'ss's'"));
+            seq = new Sequence(settings.prefix
+                    + (!StringUtil.isEmpty(positionName) && settings.usePositionList ? " - " + positionName : "")
+                    + (dateSuffix ? " - " + MMUtils.getDateString() : ""));
             sequences.put(position, seq);
 
             // display enabled ?
diff --git a/src/main/java/plugins/tprovoost/Microscopy/MicroManager/gui/ActionsPanel.java b/src/main/java/plugins/tprovoost/Microscopy/MicroManager/gui/ActionsPanel.java
index 05f3e81866b6c9b452e40c6171d7e865b99e2004..b1deb6e7afbff2be1cf0b9b04f7263244671cd4b 100644
--- a/src/main/java/plugins/tprovoost/Microscopy/MicroManager/gui/ActionsPanel.java
+++ b/src/main/java/plugins/tprovoost/Microscopy/MicroManager/gui/ActionsPanel.java
@@ -27,7 +27,6 @@ import icy.sequence.Sequence;
 import icy.sequence.SequenceEvent;
 import icy.sequence.SequenceListener;
 import icy.system.IcyExceptionHandler;
-import icy.util.DateUtil;
 import icy.util.StringUtil;
 import mmcorej.CMMCore;
 import mmcorej.TaggedImage;
@@ -270,8 +269,10 @@ public class ActionsPanel extends JPanel implements LiveListener, SequenceListen
             return;
 
         final boolean liveRunning = MicroManager.isLiveRunning();
-        final Sequence sequence = new Sequence("Image snap - " + getDateString());
         final LiveSettingsPanel livePanel = mainFrame.livePanel;
+        final String prefix = livePanel.hasCustomAcqName() ? livePanel.getAcqName() : "Image snap";
+        final Sequence sequence = new Sequence(
+                prefix + (livePanel.hasDateSuffix() ? " - " + MMUtils.getDateString() : ""));
 
         try
         {
@@ -341,7 +342,8 @@ public class ActionsPanel extends JPanel implements LiveListener, SequenceListen
 
         if (albumSequence.isEmpty())
         {
-            albumSequence.setName("Album - " + getDateString());
+            final String prefix = livePanel.hasCustomAcqName() ? livePanel.getAcqName() : "Album";
+            albumSequence.setName(prefix + (livePanel.hasDateSuffix() ? " - " + MMUtils.getDateString() : ""));
             albumDate = Calendar.getInstance().getTimeInMillis();
         }
         try
@@ -433,11 +435,6 @@ public class ActionsPanel extends JPanel implements LiveListener, SequenceListen
         mainFrame.refreshGUI();
     }
 
-    static String getDateString()
-    {
-        return DateUtil.now("yyyy-MM-dd HH'h'mm'm'ss's'");
-    }
-
     void prepareSequences()
     {
         // lazy creation
diff --git a/src/main/java/plugins/tprovoost/Microscopy/MicroManager/gui/LiveSettingsPanel.java b/src/main/java/plugins/tprovoost/Microscopy/MicroManager/gui/LiveSettingsPanel.java
index 1aec464a6d4f3d174a41ad76dd372c45747cb74e..5fe6c3f3144c7da4aaf1434588c9f05d82d6d485 100644
--- a/src/main/java/plugins/tprovoost/Microscopy/MicroManager/gui/LiveSettingsPanel.java
+++ b/src/main/java/plugins/tprovoost/Microscopy/MicroManager/gui/LiveSettingsPanel.java
@@ -3,9 +3,13 @@ package plugins.tprovoost.Microscopy.MicroManager.gui;
 import java.awt.GridBagConstraints;
 import java.awt.GridBagLayout;
 import java.awt.Insets;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
 
+import javax.swing.JCheckBox;
 import javax.swing.JLabel;
 import javax.swing.JPanel;
+import javax.swing.JTextField;
 import javax.swing.border.TitledBorder;
 
 import icy.gui.component.NumberTextField;
@@ -25,6 +29,9 @@ public class LiveSettingsPanel extends JPanel
     private NumberTextField zEndField;
     private JLabel lblNewLabel;
     private NumberTextField zStepField;
+    JCheckBox customAcqNameCheckBox;
+    JTextField acqNameField;
+    private JCheckBox dateSuffixCheckBox;
 
     /**
      * Create the panel.
@@ -39,6 +46,15 @@ public class LiveSettingsPanel extends JPanel
         this.mainFrame = mainFrame;
 
         initialize();
+
+        customAcqNameCheckBox.addActionListener(new ActionListener()
+        {
+            @Override
+            public void actionPerformed(ActionEvent e)
+            {
+                acqNameField.setEnabled(customAcqNameCheckBox.isSelected());
+            }
+        });
     }
 
     private void initialize()
@@ -47,12 +63,45 @@ public class LiveSettingsPanel extends JPanel
                 null));
 
         GridBagLayout gridBagLayout = new GridBagLayout();
-        gridBagLayout.columnWidths = new int[] {60, 0, 60, 0, 60, 0, 0};
-        gridBagLayout.rowHeights = new int[] {0, 0};
-        gridBagLayout.columnWeights = new double[] {0.0, 1.0, 0.0, 1.0, 0.0, 1.0, Double.MIN_VALUE};
-        gridBagLayout.rowWeights = new double[] {0.0, Double.MIN_VALUE};
+        gridBagLayout.columnWidths = new int[] {60, 0, 60, 0, 0, 60, 0, 0};
+        gridBagLayout.rowHeights = new int[] {0, 0, 0};
+        gridBagLayout.columnWeights = new double[] {0.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0, Double.MIN_VALUE};
+        gridBagLayout.rowWeights = new double[] {0.0, 0.0, Double.MIN_VALUE};
         setLayout(gridBagLayout);
 
+        customAcqNameCheckBox = new JCheckBox("Acquisition name");
+        customAcqNameCheckBox.setToolTipText("Set a custom acquisition name");
+        GridBagConstraints gbc_customAcqNameCheckBox = new GridBagConstraints();
+        gbc_customAcqNameCheckBox.anchor = GridBagConstraints.WEST;
+        gbc_customAcqNameCheckBox.gridwidth = 2;
+        gbc_customAcqNameCheckBox.insets = new Insets(0, 0, 5, 5);
+        gbc_customAcqNameCheckBox.gridx = 0;
+        gbc_customAcqNameCheckBox.gridy = 0;
+        add(customAcqNameCheckBox, gbc_customAcqNameCheckBox);
+
+        acqNameField = new JTextField();
+        acqNameField.setEnabled(false);
+        acqNameField.setText("Acquisition");
+        GridBagConstraints gbc_acqNameField = new GridBagConstraints();
+        gbc_acqNameField.gridwidth = 3;
+        gbc_acqNameField.insets = new Insets(0, 0, 5, 5);
+        gbc_acqNameField.fill = GridBagConstraints.HORIZONTAL;
+        gbc_acqNameField.gridx = 2;
+        gbc_acqNameField.gridy = 0;
+        add(acqNameField, gbc_acqNameField);
+        acqNameField.setColumns(10);
+
+        dateSuffixCheckBox = new JCheckBox("Date suffix");
+        dateSuffixCheckBox.setToolTipText("Add date suffix to acquisition name");
+        dateSuffixCheckBox.setSelected(true);
+        GridBagConstraints gbc_dateSuffixCheckBox = new GridBagConstraints();
+        gbc_dateSuffixCheckBox.anchor = GridBagConstraints.WEST;
+        gbc_dateSuffixCheckBox.gridwidth = 2;
+        gbc_dateSuffixCheckBox.insets = new Insets(0, 0, 5, 5);
+        gbc_dateSuffixCheckBox.gridx = 5;
+        gbc_dateSuffixCheckBox.gridy = 0;
+        add(dateSuffixCheckBox, gbc_dateSuffixCheckBox);
+
         lblZStart = new JLabel("Z start");
         lblZStart.setToolTipText("Z start position (um) for stack acquisition (used only if Z step is not 0)");
         GridBagConstraints gbc_lblZStart = new GridBagConstraints();
@@ -60,7 +109,7 @@ public class LiveSettingsPanel extends JPanel
         gbc_lblZStart.anchor = GridBagConstraints.WEST;
         gbc_lblZStart.insets = new Insets(0, 0, 0, 5);
         gbc_lblZStart.gridx = 0;
-        gbc_lblZStart.gridy = 0;
+        gbc_lblZStart.gridy = 1;
         add(lblZStart, gbc_lblZStart);
 
         zStartField = new NumberTextField();
@@ -69,7 +118,7 @@ public class LiveSettingsPanel extends JPanel
         gbc_zStartField.insets = new Insets(0, 0, 0, 5);
         gbc_zStartField.fill = GridBagConstraints.BOTH;
         gbc_zStartField.gridx = 1;
-        gbc_zStartField.gridy = 0;
+        gbc_zStartField.gridy = 1;
         add(zStartField, gbc_zStartField);
         zStartField.setColumns(4);
 
@@ -79,7 +128,7 @@ public class LiveSettingsPanel extends JPanel
         gbc_lblNewLabel.insets = new Insets(0, 0, 0, 5);
         gbc_lblNewLabel.anchor = GridBagConstraints.WEST;
         gbc_lblNewLabel.gridx = 2;
-        gbc_lblNewLabel.gridy = 0;
+        gbc_lblNewLabel.gridy = 1;
         add(lblNewLabel, gbc_lblNewLabel);
 
         zEndField = new NumberTextField();
@@ -87,8 +136,8 @@ public class LiveSettingsPanel extends JPanel
         GridBagConstraints gbc_zEndField = new GridBagConstraints();
         gbc_zEndField.insets = new Insets(0, 0, 0, 5);
         gbc_zEndField.fill = GridBagConstraints.BOTH;
-        gbc_zEndField.gridx = 3;
-        gbc_zEndField.gridy = 0;
+        gbc_zEndField.gridx = 4;
+        gbc_zEndField.gridy = 1;
         add(zEndField, gbc_zEndField);
         zEndField.setColumns(4);
 
@@ -98,20 +147,50 @@ public class LiveSettingsPanel extends JPanel
         gbc_lblZSlices.fill = GridBagConstraints.VERTICAL;
         gbc_lblZSlices.insets = new Insets(0, 0, 0, 5);
         gbc_lblZSlices.anchor = GridBagConstraints.WEST;
-        gbc_lblZSlices.gridx = 4;
-        gbc_lblZSlices.gridy = 0;
+        gbc_lblZSlices.gridx = 5;
+        gbc_lblZSlices.gridy = 1;
         add(lblZSlices, gbc_lblZSlices);
 
         zStepField = new NumberTextField();
         zStepField.setText("0");
         GridBagConstraints gbc_zStepField = new GridBagConstraints();
         gbc_zStepField.fill = GridBagConstraints.BOTH;
-        gbc_zStepField.gridx = 5;
-        gbc_zStepField.gridy = 0;
+        gbc_zStepField.gridx = 6;
+        gbc_zStepField.gridy = 1;
         add(zStepField, gbc_zStepField);
         zStepField.setColumns(4);
     }
 
+    public boolean hasCustomAcqName()
+    {
+        return customAcqNameCheckBox.isSelected();
+    }
+
+    public void setCustomAcqName(boolean value)
+    {
+        customAcqNameCheckBox.setSelected(value);
+    }
+
+    public String getAcqName()
+    {
+        return acqNameField.getText();
+    }
+
+    public void setAcqName(String value)
+    {
+        acqNameField.setText(value);
+    }
+
+    public boolean hasDateSuffix()
+    {
+        return dateSuffixCheckBox.isSelected();
+    }
+
+    public void setDateSuffix(boolean value)
+    {
+        dateSuffixCheckBox.setSelected(value);
+    }
+
     public boolean isZStackAcquisition()
     {
         return getZStep() != 0d;
diff --git a/src/main/java/plugins/tprovoost/Microscopy/MicroManager/gui/MMMainFrame.java b/src/main/java/plugins/tprovoost/Microscopy/MicroManager/gui/MMMainFrame.java
index 87ae10848f21623723c6ba5ce13041bd2701407b..8bf14d1f91ac834de60494bbf24e9acf3013bfa3 100644
--- a/src/main/java/plugins/tprovoost/Microscopy/MicroManager/gui/MMMainFrame.java
+++ b/src/main/java/plugins/tprovoost/Microscopy/MicroManager/gui/MMMainFrame.java
@@ -83,12 +83,12 @@ public class MMMainFrame extends IcyFrame
     Preferences contrastPrefs;
 
     // panels composing the main frame
-    ActionsPanel actionsPanel;
-    ConfigurationPanel configPanel;
-    CameraSettingsPanel cameraPanel;
-    LiveSettingsPanel livePanel;
-    AcquisitionInfoPanel acquisitionInfoPanel;
-    PluginsToolbar pluginsPanel;
+    public ActionsPanel actionsPanel;
+    public ConfigurationPanel configPanel;
+    public CameraSettingsPanel cameraPanel;
+    public LiveSettingsPanel livePanel;
+    public AcquisitionInfoPanel acquisitionInfoPanel;
+    public PluginsToolbar pluginsPanel;
 
     // MM event handler
     MMEventCallback mainCallback;
@@ -301,7 +301,7 @@ public class MMMainFrame extends IcyFrame
 
         final ToolTipFrame tooltip = new ToolTipFrame(
                 "<html>You can access more Micro-Manager options from menu by clicking on top left icon:<br>"
-                        + "<img src=\"" + getClass().getResource("/res/image/menu_tip.jpg").toString() + "\" /></html>",
+                        + "<img src=\"" + getClass().getResource("/image/menu_tip.jpg").toString() + "\" /></html>",
                 30, "MicroManager.HiddenMenu.Tip");
         tooltip.setSize(264, 192);
     }
diff --git a/src/main/java/plugins/tprovoost/Microscopy/MicroManager/tools/MMUtils.java b/src/main/java/plugins/tprovoost/Microscopy/MicroManager/tools/MMUtils.java
index 40d940d166d5ba7b183a4bb1648158291464a0bb..6bbb832d2f7585016a77f8a8792a56d2b4662607 100644
--- a/src/main/java/plugins/tprovoost/Microscopy/MicroManager/tools/MMUtils.java
+++ b/src/main/java/plugins/tprovoost/Microscopy/MicroManager/tools/MMUtils.java
@@ -43,6 +43,7 @@ import icy.type.collection.CollectionUtil;
 import icy.type.collection.array.Array2DUtil;
 import icy.type.collection.array.ArrayUtil;
 import icy.type.point.Point3D;
+import icy.util.DateUtil;
 import icy.util.OMEUtil;
 import icy.util.ReflectionUtil;
 import icy.util.StringUtil;
@@ -173,7 +174,9 @@ public class MMUtils
             }
             catch (Throwable t)
             {
-                throw new RuntimeException("Cannot patch Micro-Manager classes, you may need to restart Icy !", t);
+                // maybe already patched --> just display a warning message
+                new FailedAnnounceFrame(
+                        "Cannot patch Micro-Manager classes, it may not work correctly until you restart Icy !");
             }
 
             // load DLL
@@ -222,6 +225,14 @@ public class MMUtils
         return false;
     }
 
+    /**
+     * @return a date formatted String (used for acquisition name)
+     */
+    public static String getDateString()
+    {
+        return DateUtil.now("yyyy-MM-dd HH'h'mm'm'ss's'");
+    }
+
     /**
      * Convert a list of {@link TaggedImage} (Micro Manager) to {@link IcyBufferedImage} (Icy) where each
      * {@link TaggedImage} represents one channel of the output image.