diff --git a/pom.xml b/pom.xml
index a45fa442480f37bab4dca31539a7293652cc42d5..bf39fc73ef0d6d7838e98d138e8a90b538e1cd2f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -7,15 +7,21 @@
     <parent>
         <groupId>org.bioimageanalysis.icy</groupId>
         <artifactId>parent-pom-plugin</artifactId>
-        <version>1.0.3</version>
+        <version>1.0.4</version>
     </parent>
 
     <artifactId>sequence-blocks</artifactId>
-    <version>2.0.16</version>
+    <version>2.1.0</version>
 
     <name>SequenceBlocks</name>
 
     <dependencies>
+        <dependency>
+            <groupId>org.bioimageanalysis.icy</groupId>
+            <artifactId>icy-kernel</artifactId>
+            <version>2.1.3</version>
+        </dependency>
+
         <dependency>
             <groupId>org.bioimageanalysis.icy</groupId>
             <artifactId>blocks</artifactId>
diff --git a/src/main/java/plugins/tprovoost/sequenceblocks/infos/GetSequenceProperty.java b/src/main/java/plugins/tprovoost/sequenceblocks/infos/GetSequenceProperty.java
new file mode 100644
index 0000000000000000000000000000000000000000..278ae202f5ead8935f48ab0d9be658ad1b4893e7
--- /dev/null
+++ b/src/main/java/plugins/tprovoost/sequenceblocks/infos/GetSequenceProperty.java
@@ -0,0 +1,68 @@
+package plugins.tprovoost.sequenceblocks.infos;
+
+import icy.plugin.abstract_.Plugin;
+import icy.plugin.interface_.PluginBundled;
+import icy.plugin.interface_.PluginLibrary;
+import icy.sequence.Sequence;
+import plugins.adufour.blocks.tools.sequence.SequenceBlock;
+import plugins.adufour.blocks.util.VarList;
+import plugins.adufour.vars.lang.VarSequence;
+import plugins.adufour.vars.lang.VarString;
+import plugins.tprovoost.sequenceblocks.SequenceBlocks;
+
+/**
+ * Block to retrieve value (in String format) of a Sequence property (name, pixel size, custom...)<br>
+ * Default metadata information can be retrieved using specific property name:<br>
+ * <ul>
+ * <li><i>id</i> = sequence internal Id</li>
+ * <li><i>name</i> = sequence name</li>
+ * <li><i>positionX</i> = absolute position X of the image (in um)</li>
+ * <li><i>positionY</i> = absolute position Y of the image (in um)</li>
+ * <li><i>positionZ</i> = absolute position Z of the image (in um)</li>
+ * <li><i>positionT</i> = acquisition date time</li>
+ * <li><i>positionTOffset</i> = not available for property;</li>
+ * <li><i>pixelSizeX</i> = pixel size X (in um)</li>
+ * <li><i>pixelSizeY</i> = pixel size Y (in um)</li>
+ * <li><i>pixelSizeZ</i> = pixel size Z (in um)</li>
+ * <li><i>timeInterval</i> = time interval between each image (in second)</li>
+ * <li><i>channelName</i> = not available for property</li>
+ * <li><i>userName</i> = user who generated / acquired the dataset</li>
+ * <li><i>virtual</i> = virtual mode enabled on the dataset</li>
+ * </ul>
+ * 
+ * @author Stephane
+ */
+public class GetSequenceProperty extends Plugin implements SequenceBlock, PluginLibrary, PluginBundled
+{
+    protected VarSequence sequence = new VarSequence("Sequence", null);
+    protected VarString propertyName = new VarString("Property", "name");
+    protected VarString value = new VarString("Value", "");
+
+    @Override
+    public void run()
+    {
+        final Sequence seq = sequence.getValue();
+
+        if (seq != null)
+            value.setValue(seq.getProperty(propertyName.getValue()));
+    }
+
+    @Override
+    public void declareInput(VarList inputMap)
+    {
+        inputMap.add("sequence", sequence);
+        inputMap.add("property", propertyName);
+    }
+
+    @Override
+    public void declareOutput(VarList outputMap)
+    {
+        outputMap.add("value", value);
+    }
+
+    @Override
+    public String getMainPluginClassName()
+    {
+        return SequenceBlocks.class.getName();
+    }
+}
diff --git a/src/main/java/plugins/tprovoost/sequenceblocks/infos/SetSequenceProperty.java b/src/main/java/plugins/tprovoost/sequenceblocks/infos/SetSequenceProperty.java
new file mode 100644
index 0000000000000000000000000000000000000000..21aa719924b636cd4069d65919fd72778304cf57
--- /dev/null
+++ b/src/main/java/plugins/tprovoost/sequenceblocks/infos/SetSequenceProperty.java
@@ -0,0 +1,69 @@
+package plugins.tprovoost.sequenceblocks.infos;
+
+import icy.plugin.abstract_.Plugin;
+import icy.plugin.interface_.PluginBundled;
+import icy.plugin.interface_.PluginLibrary;
+import icy.sequence.Sequence;
+import plugins.adufour.blocks.tools.sequence.SequenceBlock;
+import plugins.adufour.blocks.util.VarList;
+import plugins.adufour.vars.lang.VarSequence;
+import plugins.adufour.vars.lang.VarString;
+import plugins.tprovoost.sequenceblocks.SequenceBlocks;
+
+/**
+ * Block to set value (in String format) of a Sequence property (name, pixel size, custom...)<br>
+ * Default metadata information can be set using specific property name:<br>
+ * <ul>
+ * <li><i>id</i> = sequence internal Id</li>
+ * <li><i>name</i> = sequence name</li>
+ * <li><i>positionX</i> = absolute position X of the image (in um)</li>
+ * <li><i>positionY</i> = absolute position Y of the image (in um)</li>
+ * <li><i>positionZ</i> = absolute position Z of the image (in um)</li>
+ * <li><i>positionT</i> = acquisition date time</li>
+ * <li><i>positionTOffset</i> = not available for property;</li>
+ * <li><i>pixelSizeX</i> = pixel size X (in um)</li>
+ * <li><i>pixelSizeY</i> = pixel size Y (in um)</li>
+ * <li><i>pixelSizeZ</i> = pixel size Z (in um)</li>
+ * <li><i>timeInterval</i> = time interval between each image (in second)</li>
+ * <li><i>channelName</i> = not available for property</li>
+ * <li><i>userName</i> = user who generated / acquired the dataset</li>
+ * <li><i>virtual</i> = virtual mode enabled on the dataset</li>
+ * </ul>
+ * 
+ * @author Stephane
+ */
+public class SetSequenceProperty extends Plugin implements SequenceBlock, PluginLibrary, PluginBundled
+{
+    protected VarSequence sequence = new VarSequence("Sequence", null);
+    protected VarString propertyName = new VarString("Property", "name");
+    protected VarString value = new VarString("Value", "");
+
+    @Override
+    public void run()
+    {
+        final Sequence seq = sequence.getValue();
+
+        if (seq != null)
+            seq.setProperty(propertyName.getValue(), value.getValue());
+    }
+
+    @Override
+    public void declareInput(VarList inputMap)
+    {
+        inputMap.add("sequence", sequence);
+        inputMap.add("property", propertyName);
+        inputMap.add("value", value);
+    }
+
+    @Override
+    public void declareOutput(VarList outputMap)
+    {
+        //
+    }
+
+    @Override
+    public String getMainPluginClassName()
+    {
+        return SequenceBlocks.class.getName();
+    }
+}