diff --git a/SLIC/src/algorithms/danyfel80/islic/SLICTask.java b/SLIC/src/algorithms/danyfel80/islic/SLICTask.java
index d63c6bdf833e74d2f8d7a6548fc1552798aa8205..44c705c3ed43706c98bf0ead4e53150b8e5a873c 100644
--- a/SLIC/src/algorithms/danyfel80/islic/SLICTask.java
+++ b/SLIC/src/algorithms/danyfel80/islic/SLICTask.java
@@ -425,6 +425,13 @@ public class SLICTask {
 			List<int[]> rgbs = labs.stream().map(lab -> CIELab.toRGB(lab.x, lab.y, lab.z)).collect(Collectors.toList());
 			superPixelsResult = new Sequence(
 					new IcyBufferedImage(sequence.getWidth(), sequence.getHeight(), 3, DataType.UBYTE));
+			
+			superPixelsResult.setPixelSizeX(sequence.getPixelSizeX());
+			superPixelsResult.setPixelSizeY(sequence.getPixelSizeY());
+			superPixelsResult.setPixelSizeZ(sequence.getPixelSizeZ());
+			superPixelsResult.setPositionX(sequence.getPositionX());
+			superPixelsResult.setPositionY(sequence.getPositionY());
+			superPixelsResult.setPositionZ(sequence.getPositionZ());
 
 			superPixelsResult.beginUpdate();
 			double[][] spData = Array2DUtil.arrayToDoubleArray(superPixelsResult.getDataXYC(0, 0),
diff --git a/SLIC/src/plugins/danyfel80/islic/SLIC.java b/SLIC/src/plugins/danyfel80/islic/SLIC.java
index 48aef85ec211a36f4d935aafc7dde871fafd6de9..1c467d266c7be94474adba4fc68fd9fc55affa14 100644
--- a/SLIC/src/plugins/danyfel80/islic/SLIC.java
+++ b/SLIC/src/plugins/danyfel80/islic/SLIC.java
@@ -2,19 +2,23 @@ package plugins.danyfel80.islic;
 
 import algorithms.danyfel80.islic.SLICTask;
 import icy.gui.dialog.MessageDialog;
+import plugins.adufour.blocks.lang.Block;
+import plugins.adufour.blocks.util.VarList;
 import plugins.adufour.ezplug.EzPlug;
 import plugins.adufour.ezplug.EzVarBoolean;
 import plugins.adufour.ezplug.EzVarDouble;
 import plugins.adufour.ezplug.EzVarInteger;
 import plugins.adufour.ezplug.EzVarSequence;
 
-public class SLIC extends EzPlug {
+public class SLIC extends EzPlug implements Block {
 
 	private EzVarSequence inSequence;
 	private EzVarInteger inSPSize;
 	private EzVarDouble inSPReg;
 	private EzVarBoolean inIsROIOutput;
 
+	private EzVarSequence outSequence;
+
 	@Override
 	protected void initialize() {
 		inSequence = new EzVarSequence("Sequence");
@@ -31,6 +35,29 @@ public class SLIC extends EzPlug {
 		addEzComponent(inIsROIOutput);
 	}
 
+	@Override
+	public void declareInput(VarList inputMap) {
+		inSequence = new EzVarSequence("Sequence");
+		inSPSize = new EzVarInteger("Superpixel size");
+		inSPReg = new EzVarDouble("Superpixels regularity");
+		inIsROIOutput = new EzVarBoolean("Output as ROIs", false);
+		
+		inSPSize.setValue(30);
+		inSPReg.setValue(0.2);
+
+		inputMap.add(inSequence.name, inSequence.getVariable());
+		inputMap.add(inSPSize.name, inSPSize.getVariable());
+		inputMap.add(inSPReg.name, inSPReg.getVariable());
+		inputMap.add(inIsROIOutput.name, inIsROIOutput.getVariable());
+	}
+
+	@Override
+	public void declareOutput(VarList outputMap) {
+		outSequence = new EzVarSequence("Result");
+
+		outputMap.add(outSequence.name, outSequence.getVariable());
+	}
+
 	@Override
 	protected void execute() {
 		long procTime, startTime, endTime;
@@ -39,8 +66,10 @@ public class SLIC extends EzPlug {
 			task = new SLICTask(inSequence.getValue(), inSPSize.getValue(), inSPReg.getValue(), inIsROIOutput.getValue());
 		} catch (Exception e) {
 			e.printStackTrace();
-			MessageDialog.showDialog("Initialization Error",
-					String.format("SLIC could not start properly: " + e.getMessage()), MessageDialog.ERROR_MESSAGE);
+			if (!this.isHeadLess()) {
+				MessageDialog.showDialog("Initialization Error",
+						String.format("SLIC could not start properly: " + e.getMessage()), MessageDialog.ERROR_MESSAGE);
+			}
 			return;
 		}
 		startTime = System.currentTimeMillis();
@@ -48,16 +77,27 @@ public class SLIC extends EzPlug {
 			task.execute();
 		} catch (Exception e) {
 			e.printStackTrace();
-			MessageDialog.showDialog("Runtime Error", String.format("SLIC could not run properly: " + e.getMessage()),
-					MessageDialog.ERROR_MESSAGE);
+			if (!this.isHeadLess()) {
+				MessageDialog.showDialog("Runtime Error", String.format("SLIC could not run properly: " + e.getMessage()),
+						MessageDialog.ERROR_MESSAGE);
+			}
 			return;
 		}
 
 		endTime = System.currentTimeMillis();
 		procTime = endTime - startTime;
-		MessageDialog.showDialog(String.format("SLIC finished in %d milliseconds", procTime));
 		System.out.println(String.format("SLIC finished in %d milliseconds", procTime));
-		addSequence(task.getResultSequence());
+		if (!this.inIsROIOutput.getValue()) {
+			task.getResultSequence().setName(inSequence.getValue().getName()
+					+ String.format("_SLIC(size=%s,reg=%.2f)", inSPSize.getValue().intValue(), inSPReg.getValue().doubleValue()));
+		}
+		if (!this.isHeadLess()) {
+			MessageDialog.showDialog(String.format("SLIC finished in %d milliseconds", procTime));
+			addSequence(task.getResultSequence());
+		} else {
+			outSequence.setValue(task.getResultSequence());
+		}
+
 	}
 
 	@Override