diff --git a/examples/org.eclipse.epsilon.examples.picto.sirius/.classpath b/examples/org.eclipse.epsilon.examples.picto.sirius/.classpath
new file mode 100644
index 0000000..e801ebf
--- /dev/null
+++ b/examples/org.eclipse.epsilon.examples.picto.sirius/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/examples/org.eclipse.epsilon.examples.picto.sirius/.project b/examples/org.eclipse.epsilon.examples.picto.sirius/.project
new file mode 100644
index 0000000..fd44ce6
--- /dev/null
+++ b/examples/org.eclipse.epsilon.examples.picto.sirius/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.epsilon.examples.picto.sirius</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/examples/org.eclipse.epsilon.examples.picto.sirius/.settings/org.eclipse.jdt.core.prefs b/examples/org.eclipse.epsilon.examples.picto.sirius/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..c9545f0
--- /dev/null
+++ b/examples/org.eclipse.epsilon.examples.picto.sirius/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,9 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
+org.eclipse.jdt.core.compiler.compliance=11
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
diff --git a/examples/org.eclipse.epsilon.examples.picto.sirius/META-INF/MANIFEST.MF b/examples/org.eclipse.epsilon.examples.picto.sirius/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..2cff7ef
--- /dev/null
+++ b/examples/org.eclipse.epsilon.examples.picto.sirius/META-INF/MANIFEST.MF
@@ -0,0 +1,9 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Sirius
+Bundle-SymbolicName: org.eclipse.epsilon.examples.picto.sirius;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Automatic-Module-Name: org.eclipse.epsilon.examples.picto.sirius
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Require-Bundle: org.eclipse.epsilon.picto,
+ org.eclipse.sirius.diagram.ui
diff --git a/examples/org.eclipse.epsilon.examples.picto.sirius/build.properties b/examples/org.eclipse.epsilon.examples.picto.sirius/build.properties
new file mode 100644
index 0000000..5bcac31
--- /dev/null
+++ b/examples/org.eclipse.epsilon.examples.picto.sirius/build.properties
@@ -0,0 +1,7 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .,\
+               src/,\
+               resources/,\
+               plugin.xml
diff --git a/examples/org.eclipse.epsilon.examples.picto.sirius/plugin.xml b/examples/org.eclipse.epsilon.examples.picto.sirius/plugin.xml
new file mode 100644
index 0000000..3edef31
--- /dev/null
+++ b/examples/org.eclipse.epsilon.examples.picto.sirius/plugin.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+   <extension
+         point="org.eclipse.epsilon.picto.pictoSource">
+      <pictoSource
+            class="org.eclipse.epsilon.examples.picto.sirius.BasicFamilyPictoSource">
+      </pictoSource>
+   </extension>
+
+</plugin>
diff --git a/examples/org.eclipse.epsilon.examples.picto.sirius/resources/basicfamily.egx b/examples/org.eclipse.epsilon.examples.picto.sirius/resources/basicfamily.egx
new file mode 100644
index 0000000..acfdda3
--- /dev/null
+++ b/examples/org.eclipse.epsilon.examples.picto.sirius/resources/basicfamily.egx
@@ -0,0 +1,17 @@
+rule Model2Bar transform family : Family {
+	parameters : Map {
+		"currentElement" = currentElement,
+		"format" = "html",
+		"path" = List{"Bar"}
+	}
+	template : "model2bar.egl"
+}
+
+rule Model2Pie transform family : Family {
+	parameters : Map {
+		"currentElement" = currentElement,
+		"format" = "html",
+		"path" = List{"Pie"}
+	}
+	template : "model2pie.egl"
+}
\ No newline at end of file
diff --git a/examples/org.eclipse.epsilon.examples.picto.sirius/resources/model2bar.egl b/examples/org.eclipse.epsilon.examples.picto.sirius/resources/model2bar.egl
new file mode 100644
index 0000000..25b25a2
--- /dev/null
+++ b/examples/org.eclipse.epsilon.examples.picto.sirius/resources/model2bar.egl
@@ -0,0 +1,44 @@
+[% import "utils.eol";%]
+
+<html>
+
+<head>
+	<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.9.4/Chart.bundle.js" integrity="sha512-zO8oeHCxetPn1Hd9PdDleg5Tw1bAaP0YmNvPY8CwcRyUk7d7/+nyElmFrB6f7vg4f7Fv4sui1mcep8RIEShczg==" crossorigin="anonymous"></script>
+</head>
+
+<body>
+	<div id="canvas" style="width:60%">
+		<canvas id="chart"></canvas>
+	</div>
+
+	<script>
+		new Chart(document.getElementById("chart"), {
+		    type: 'bar',
+		    data: {
+		      labels: ["Men", "Woman"],
+		      datasets: [{
+		        label: "Family",
+		        backgroundColor: ["#add8e6","#e8c3b9"],
+		        data: [[%= currentElement.getNumberOfMen() %] , [%= currentElement.getNumberOfWomen() %]]
+		      }]
+		    },
+		    options: {
+		      legend: false,
+			  tooltips: false,
+		      title: {
+		        display: true,
+		        text: '[%= currentElement.getTitle() %] '
+		      },
+		      scales: {
+			        yAxes: [{
+			            ticks: {
+			                beginAtZero:true
+			            }
+			        }]
+			    }
+		    }
+		});		
+	</script>
+</body>
+
+</html>
diff --git a/examples/org.eclipse.epsilon.examples.picto.sirius/resources/model2pie.egl b/examples/org.eclipse.epsilon.examples.picto.sirius/resources/model2pie.egl
new file mode 100644
index 0000000..25c2ac5
--- /dev/null
+++ b/examples/org.eclipse.epsilon.examples.picto.sirius/resources/model2pie.egl
@@ -0,0 +1,34 @@
+[% import "utils.eol";%]
+<html>
+
+<head>
+	<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.9.4/Chart.bundle.js" integrity="sha512-zO8oeHCxetPn1Hd9PdDleg5Tw1bAaP0YmNvPY8CwcRyUk7d7/+nyElmFrB6f7vg4f7Fv4sui1mcep8RIEShczg==" crossorigin="anonymous"></script>
+</head>
+
+<body>
+	<div id="canvas" style="width:60%">
+		<canvas id="chart"></canvas>
+	</div>
+
+	<script>
+		new Chart(document.getElementById("chart"), {
+		    type: 'pie',
+		    data: {
+		      labels: ["Men", "Woman"],
+		      datasets: [{
+		        label: "Family",
+		        backgroundColor: ["#add8e6","#e8c3b9"],
+		        data: [[%= currentElement.getNumberOfMen() %] , [%= currentElement.getNumberOfWomen() %]]
+		      }]
+		    },
+		    options: {
+		      title: {
+		        display: true,
+		        text: '[%= currentElement.getTitle() %] '
+		      }
+		    }
+		});		
+	</script>
+</body>
+
+</html>
diff --git a/examples/org.eclipse.epsilon.examples.picto.sirius/resources/utils.eol b/examples/org.eclipse.epsilon.examples.picto.sirius/resources/utils.eol
new file mode 100644
index 0000000..80c29d9
--- /dev/null
+++ b/examples/org.eclipse.epsilon.examples.picto.sirius/resources/utils.eol
@@ -0,0 +1,25 @@
+operation Family getTitle() : String{
+	return "Family";
+}
+
+operation Person getTitle() : String{
+	return "Children of " + self.name;
+}
+	
+
+operation Family getNumberOfMen() : String {
+	return self.getMembers().select(m|m.isTypeOf(Man)).size.toString();
+}
+
+operation Person getNumberOfMen() : String {
+	return self.getChildren().select(m|m.isTypeOf(Man)).size.toString();
+}
+
+operation Family getNumberOfWomen() : String {
+	return self.getMembers().select(m|m.isTypeOf(Woman)).size.toString();
+}
+
+operation Person getNumberOfWomen() : String {
+	return self.getChildren().select(m|m.isTypeOf(Woman)).size.toString();
+}
+
diff --git a/examples/org.eclipse.epsilon.examples.picto.sirius/src/org/eclipse/epsilon/examples/picto/sirius/BasicFamilyPictoSource.java b/examples/org.eclipse.epsilon.examples.picto.sirius/src/org/eclipse/epsilon/examples/picto/sirius/BasicFamilyPictoSource.java
new file mode 100644
index 0000000..61800cc
--- /dev/null
+++ b/examples/org.eclipse.epsilon.examples.picto.sirius/src/org/eclipse/epsilon/examples/picto/sirius/BasicFamilyPictoSource.java
@@ -0,0 +1,79 @@
+package org.eclipse.epsilon.examples.picto.sirius;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.epsilon.picto.dom.Picto;
+import org.eclipse.epsilon.picto.dom.PictoFactory;
+import org.eclipse.epsilon.picto.source.SimpleSource;
+import org.eclipse.sirius.diagram.impl.DSemanticDiagramImpl;
+import org.eclipse.sirius.diagram.ui.tools.api.editor.DDiagramEditor;
+import org.eclipse.ui.IEditorPart;
+
+public class BasicFamilyPictoSource extends SimpleSource {
+
+	private static final String EGX_SCRIPT = "platform:/plugin/org.eclipse.epsilon.examples.picto.sirius/resources/basicfamily.egx";
+	
+	@Override
+	protected String getFormat() {
+		return "egx";
+	}
+
+	@Override
+	protected String getFileExtension() {
+		return "basicfamily";
+	}
+	
+	@Override
+	protected Picto getRenderingMetadata(IEditorPart editorPart) {
+		Picto metadata = PictoFactory.eINSTANCE.createPicto();
+		metadata.setFormat(getFormat());
+		metadata.setTransformation(EGX_SCRIPT);
+		// pass the root element of the Sirius diagram to EGX via currentElement variable
+		metadata.getParameters().add(createParameter("currentElement", getRootOfDiagram(editorPart)));
+		return metadata;
+	}
+	
+	@Override
+	public boolean supports(IEditorPart editorPart) {
+		return isSiriusEditor(editorPart);
+	}
+	
+	@Override
+	protected boolean supportsEditorType(IEditorPart editorPart) {
+		return isSiriusEditor(editorPart);
+	}
+	
+	@Override
+	protected IFile getFile(IEditorPart editorPart) {
+		if (isSiriusEditor(editorPart)) {
+			Resource r = getRootOfDiagram(editorPart).eResource();
+			return ResourcesPlugin.getWorkspace().getRoot().getFile(new Path(r.getURI().toPlatformString(true)));
+		}
+		return null;
+	}
+	
+	@Override
+	protected Resource getResource(IEditorPart editorPart) {
+		if (isSiriusEditor(editorPart)) {
+			return getRootOfDiagram(editorPart).eResource();
+		}
+		return null;
+	}
+	
+	protected EObject getRootOfDiagram(IEditorPart editorPart) {
+		if (isSiriusEditor(editorPart)) {
+			DDiagramEditor editor = (DDiagramEditor) editorPart;
+			DSemanticDiagramImpl diagram = (DSemanticDiagramImpl) editor.getRepresentation();
+			return diagram.getTarget();
+		}
+		return null;
+	}
+	
+	protected boolean isSiriusEditor(IEditorPart editorPart) {
+		return editorPart instanceof DDiagramEditor;
+	}
+
+}
diff --git a/plugins/org.eclipse.epsilon.picto/src/org/eclipse/epsilon/picto/source/EglPictoSource.java b/plugins/org.eclipse.epsilon.picto/src/org/eclipse/epsilon/picto/source/EglPictoSource.java
index d427a51..03aef2c 100644
--- a/plugins/org.eclipse.epsilon.picto/src/org/eclipse/epsilon/picto/source/EglPictoSource.java
+++ b/plugins/org.eclipse.epsilon.picto/src/org/eclipse/epsilon/picto/source/EglPictoSource.java
@@ -92,6 +92,11 @@
 			IEolContext context = module.getContext();
 			context.getNativeTypeDelegates().add(new ExtensionPointToolNativeTypeDelegate());
 			
+			FrameStack fs = context.getFrameStack();
+			for (Parameter customParameter : renderingMetadata.getParameters()) {
+				fs.put(new Variable(customParameter.getName(), getValue(customParameter), EolAnyType.Instance));
+			}
+			
 			URI transformationUri = null;
 			
 			if (renderingMetadata.getTransformation() != null) {			
@@ -149,7 +154,7 @@
 							customView.getParameters().add(createParameter("activeLayers", customView.getLayers()));
 						}
 						
-						FrameStack fs = context.getFrameStack();
+						
 						for (Parameter customViewParameter : customView.getParameters()) {
 							fs.put(new Variable(customViewParameter.getName(), getValue(customViewParameter), EolAnyType.Instance));
 						}
