diff --git a/src/plugins/tprovoost/sequenceblocks/loop/SequenceRegionBatch.java b/src/plugins/tprovoost/sequenceblocks/loop/SequenceRegionBatch.java
index dd539a3bd66f0f44ec1a1eaa5206f6e734804ac8..23bbe64070ab78156b22a9a64bd4ada38aa212ad 100644
--- a/src/plugins/tprovoost/sequenceblocks/loop/SequenceRegionBatch.java
+++ b/src/plugins/tprovoost/sequenceblocks/loop/SequenceRegionBatch.java
@@ -4,6 +4,7 @@ import java.util.List;
 
 import icy.plugin.interface_.PluginBundled;
 import icy.plugin.interface_.PluginLibrary;
+import icy.roi.ROI;
 import icy.sequence.Sequence;
 import icy.sequence.SequenceUtil;
 import plugins.adufour.blocks.lang.Batch;
@@ -25,35 +26,51 @@ public class SequenceRegionBatch extends Batch implements SequenceBlock, PluginL
     // important to not initialize here (even with null) and create them in getBatchSource() and getBatchElement()
     protected VarSequence inputSequence;
     protected VarSequence element;
-    protected final VarROIArray rois;
+    protected VarROIArray rois;
+    protected VarROIArray currentRoi;
 
     public SequenceRegionBatch()
     {
         super();
+    }
 
-        rois = new VarROIArray("ROI(s)");
+    @Override
+    public VarROIArray getBatchSource()
+    {
+        if (rois == null)
+            rois = new VarROIArray("ROI(s)");
+
+        return rois;
     }
 
     @Override
-    public VarSequence getBatchSource()
+    public void declareInput(VarList inputMap)
     {
-        // initialize variable if needed
+        super.declareInput(inputMap);
         if (inputSequence == null)
             inputSequence = new VarSequence("Sequence", null);
 
-        return inputSequence;
+        inputMap.add(inputSequence.getName(), inputSequence);
     }
 
     @Override
     public VarSequence getBatchElement()
     {
-        // initialize element if needed
         if (element == null)
             element = new VarSequence("Channel Sequence", null);
 
         return element;
     }
 
+    @Override
+    public void declareOutput(VarList outputMap)
+    {
+        super.declareOutput(outputMap);
+        if (currentRoi == null)
+            currentRoi = new VarROIArray("Current ROI");
+        outputMap.add(currentRoi.getName(), currentRoi);
+    }
+
     @Override
     public void initializeLoop()
     {
@@ -70,8 +87,9 @@ public class SequenceRegionBatch extends Batch implements SequenceBlock, PluginL
     public void beforeIteration()
     {
         // set result in element
-        element.setValue(SequenceUtil.getSubSequence(inputSequence.getValue(),
-                rois.getValue()[getIterationCounter().getValue().intValue()]));
+        ROI roi = rois.getValue()[getIterationCounter().getValue().intValue()];
+        element.setValue(SequenceUtil.getSubSequence(inputSequence.getValue(), roi));
+        currentRoi.setValue(new ROI[] {roi});
     }
 
     @Override
@@ -80,20 +98,12 @@ public class SequenceRegionBatch extends Batch implements SequenceBlock, PluginL
         return getIterationCounter().getValue().intValue() >= rois.getValue().length;
     }
 
-    @Override
-    public void declareInput(VarList inputMap)
-    {
-        super.declareInput(inputMap);
-
-        inputMap.add("ROIs", rois);
-    }
-
     @Override
     public void declareLoopVariables(List<Var<?>> loopVariables)
     {
         super.declareLoopVariables(loopVariables);
-
-        loopVariables.add(rois);
+        loopVariables.add(inputSequence);
+        loopVariables.add(currentRoi);
     }
 
     @Override