diff --git a/execution/org.eclipse.efm.execution.launchconfiguration/META-INF/MANIFEST.MF b/execution/org.eclipse.efm.execution.launchconfiguration/META-INF/MANIFEST.MF
index ae29ee4..2b0257f 100644
--- a/execution/org.eclipse.efm.execution.launchconfiguration/META-INF/MANIFEST.MF
+++ b/execution/org.eclipse.efm.execution.launchconfiguration/META-INF/MANIFEST.MF
@@ -17,7 +17,6 @@
  org.eclipse.ui.workbench,
  org.eclipse.ui.ide,
  org.eclipse.ui.navigator,
- org.eclipse.pde.ui,
  org.eclipse.ui.forms,
  org.eclipse.core.externaltools,
  org.eclipse.swt,
diff --git a/execution/org.eclipse.efm.execution.ui.views/META-INF/MANIFEST.MF b/execution/org.eclipse.efm.execution.ui.views/META-INF/MANIFEST.MF
index 9867a3c..924cd0d 100644
--- a/execution/org.eclipse.efm.execution.ui.views/META-INF/MANIFEST.MF
+++ b/execution/org.eclipse.efm.execution.ui.views/META-INF/MANIFEST.MF
@@ -7,7 +7,6 @@
 Require-Bundle: org.eclipse.core.runtime,
  org.eclipse.ui,
  org.eclipse.jface,
- org.eclipse.pde,
  org.eclipse.efm.ui,
  org.eclipse.ui.forms,
  org.eclipse.efm.execution.configuration.common.ui
diff --git a/gui/org.eclipse.efm.ui.intro/.classpath b/gui/org.eclipse.efm.ui.intro/.classpath
new file mode 100644
index 0000000..b862a29
--- /dev/null
+++ b/gui/org.eclipse.efm.ui.intro/.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-1.8"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/gui/org.eclipse.efm.ui.intro/.gitignore b/gui/org.eclipse.efm.ui.intro/.gitignore
new file mode 100644
index 0000000..ae3c172
--- /dev/null
+++ b/gui/org.eclipse.efm.ui.intro/.gitignore
@@ -0,0 +1 @@
+/bin/
diff --git a/gui/org.eclipse.efm.ui.intro/.project b/gui/org.eclipse.efm.ui.intro/.project
new file mode 100644
index 0000000..e0d3d6a
--- /dev/null
+++ b/gui/org.eclipse.efm.ui.intro/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.efm.ui.intro</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/gui/org.eclipse.efm.ui.intro/.settings/org.eclipse.jdt.core.prefs b/gui/org.eclipse.efm.ui.intro/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..295926d
--- /dev/null
+++ b/gui/org.eclipse.efm.ui.intro/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/gui/org.eclipse.efm.ui.intro/META-INF/MANIFEST.MF b/gui/org.eclipse.efm.ui.intro/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..202abc7
--- /dev/null
+++ b/gui/org.eclipse.efm.ui.intro/META-INF/MANIFEST.MF
@@ -0,0 +1,12 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: EFM Intro
+Bundle-SymbolicName: org.eclipse.efm.ui.intro;singleton:=true
+Bundle-Version: 0.0.1.qualifier
+Bundle-Activator: org.eclipse.efm.ui.intro.Activator
+Bundle-Vendor: CEA LIST
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.runtime,
+ org.eclipse.ui.intro
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-ActivationPolicy: lazy
diff --git a/gui/org.eclipse.efm.ui.intro/about.html b/gui/org.eclipse.efm.ui.intro/about.html
new file mode 100644
index 0000000..d35d5ae
--- /dev/null
+++ b/gui/org.eclipse.efm.ui.intro/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+ 
+<p>June 5, 2007</p>	
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content.  Check the Redistributor's license that was 
+provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
diff --git a/gui/org.eclipse.efm.ui.intro/build.properties b/gui/org.eclipse.efm.ui.intro/build.properties
new file mode 100644
index 0000000..6f20375
--- /dev/null
+++ b/gui/org.eclipse.efm.ui.intro/build.properties
@@ -0,0 +1,5 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .,\
+               plugin.xml
diff --git a/gui/org.eclipse.efm.ui.intro/extensions/css/overview.css b/gui/org.eclipse.efm.ui.intro/extensions/css/overview.css
new file mode 100644
index 0000000..71c8419
--- /dev/null
+++ b/gui/org.eclipse.efm.ui.intro/extensions/css/overview.css
@@ -0,0 +1,11 @@
+a#im-help-class-diagrams img,
+a#im-help-papyrus img,
+a#im-help-profiles img {
+	background-image : url(../../img/efm-48.png);
+}
+
+a#im-help-class-diagrams:hover img,
+a#im-help-papyrus:hover img,
+a#im-help-profiles:hover img {
+	background-image : url(../../img/efm-48_hover.png);
+}
diff --git a/gui/org.eclipse.efm.ui.intro/extensions/css/overview.properties b/gui/org.eclipse.efm.ui.intro/extensions/css/overview.properties
new file mode 100644
index 0000000..00398db
--- /dev/null
+++ b/gui/org.eclipse.efm.ui.intro/extensions/css/overview.properties
@@ -0,0 +1,5 @@
+overview.im-help-class-diagrams.link-icon = img/efm-48.png
+overview.im-help-class-diagrams.hover-icon = img/efm-48_hover.png
+
+overview.im-help-profiles.link-icon = img/efm-48.png
+overview.im-help-profiles.hover-icon = img/efm-48_hover.png
\ No newline at end of file
diff --git a/gui/org.eclipse.efm.ui.intro/extensions/css/samples.css b/gui/org.eclipse.efm.ui.intro/extensions/css/samples.css
new file mode 100644
index 0000000..2809858
--- /dev/null
+++ b/gui/org.eclipse.efm.ui.intro/extensions/css/samples.css
@@ -0,0 +1,11 @@
+a#im-sample-project-management img {
+	background-image : url(../../img/efm-48.png);
+}
+
+a#im-sample-project-management:hover img {
+	background-image : url(../../img/efm-48_hover.png);
+}
+
+.content-group {
+	margin-bottom: 20px;
+}
\ No newline at end of file
diff --git a/gui/org.eclipse.efm.ui.intro/extensions/css/samples.properties b/gui/org.eclipse.efm.ui.intro/extensions/css/samples.properties
new file mode 100644
index 0000000..5fa1a89
--- /dev/null
+++ b/gui/org.eclipse.efm.ui.intro/extensions/css/samples.properties
@@ -0,0 +1,2 @@
+overview.im-sample-project-management.link-icon = img/efm-48.png
+overview.im-sample-project-management.hover-icon = img/efm-48_hover.png
diff --git a/gui/org.eclipse.efm.ui.intro/extensions/css/tutorials.css b/gui/org.eclipse.efm.ui.intro/extensions/css/tutorials.css
new file mode 100644
index 0000000..1fb46b3
--- /dev/null
+++ b/gui/org.eclipse.efm.ui.intro/extensions/css/tutorials.css
@@ -0,0 +1,11 @@
+a#im-tutorial-getting-started img {
+	background-image : url(../../img/efm-48.png);
+}
+
+a#im-tutorial-getting-started:hover img {
+	background-image : url(../../img/efm-48_hover.png);
+}
+
+.content-group {
+	margin-bottom: 20px;
+}
\ No newline at end of file
diff --git a/gui/org.eclipse.efm.ui.intro/extensions/css/tutorials.properties b/gui/org.eclipse.efm.ui.intro/extensions/css/tutorials.properties
new file mode 100644
index 0000000..b4502f5
--- /dev/null
+++ b/gui/org.eclipse.efm.ui.intro/extensions/css/tutorials.properties
@@ -0,0 +1,2 @@
+tutorials.im-tutorial-getting-started.link-icon = img/efm-48.png
+tutorials.im-tutorial-getting-started.hover-icon = img/efm-48_hover.png
diff --git a/gui/org.eclipse.efm.ui.intro/extensions/tutorialsExtensionContent.xml b/gui/org.eclipse.efm.ui.intro/extensions/tutorialsExtensionContent.xml
new file mode 100644
index 0000000..93e6b69
--- /dev/null
+++ b/gui/org.eclipse.efm.ui.intro/extensions/tutorialsExtensionContent.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<introContent>
+  <extensionContent id="org.eclipse.efm.ui.intro.tutorials" name="EFM Tutorials" alt-style="css/tutorials.properties" style="css/tutorials.css" path="tutorials/@">
+    <group label="Eclipse Formal Modeling" id="org.eclipse.efm.ui.intro.tutorial-group" style-id="content-group">
+      <link label="Getting Started with Model-based testing with Thermostat example" 
+      		id="im-tutorial-getting-started" 
+      		style-id="content-link"
+      		url="http://org.eclipse.ui.intro/showStandby?partId=org.eclipse.platform.cheatsheet&amp;input=org.eclipse.efm.tutorial.Thermostat.cheatsheet" >
+        <text>This tutorial provides an introduction into the symbolic modeling framework and offline testing process.</text>
+      </link>
+    </group>
+  </extensionContent>
+</introContent>
\ No newline at end of file
diff --git a/gui/org.eclipse.efm.ui.intro/img/efm-48.png b/gui/org.eclipse.efm.ui.intro/img/efm-48.png
new file mode 100644
index 0000000..cbd8020
--- /dev/null
+++ b/gui/org.eclipse.efm.ui.intro/img/efm-48.png
Binary files differ
diff --git a/gui/org.eclipse.efm.ui.intro/img/efm-48_hover.png b/gui/org.eclipse.efm.ui.intro/img/efm-48_hover.png
new file mode 100644
index 0000000..cbd8020
--- /dev/null
+++ b/gui/org.eclipse.efm.ui.intro/img/efm-48_hover.png
Binary files differ
diff --git a/gui/org.eclipse.efm.ui.intro/license.html b/gui/org.eclipse.efm.ui.intro/license.html
new file mode 100644
index 0000000..c3d34c3
--- /dev/null
+++ b/gui/org.eclipse.efm.ui.intro/license.html
@@ -0,0 +1,107 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>Eclipse Foundation Software User Agreement</title>
+</head>
+
+<body lang="EN-US">
+<h2>Eclipse Foundation Software User Agreement</h2>
+<p>April 9, 2014</p>
+
+<h3>Usage Of Content</h3>
+
+<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+   (COLLECTIVELY &quot;CONTENT&quot;).  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
+   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
+   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
+   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+
+<h3>Applicable Licenses</h3>
+
+<p>Unless otherwise indicated, all Content made available by the Eclipse Foundation is provided to you under the terms and conditions of the Eclipse Public License Version 1.0
+   (&quot;EPL&quot;).  A copy of the EPL is provided with this Content and is also available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+   For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
+   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
+
+<ul>
+       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
+      and/or Fragments associated with that Feature.</li>
+       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
+</ul>
+
+<p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
+Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
+including, but not limited to the following locations:</p>
+
+<ul>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
+       <li>Feature directories</li>
+</ul>
+
+<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
+installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
+inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
+that directory.</p>
+
+<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.  SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+
+<ul>
+       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+</ul>
+
+<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
+contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
+
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
+   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
+       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   (&quot;Specification&quot;).</p>
+
+<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
+   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
+   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
+       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
+       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
+       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
+       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
+</ol>
+
+<h3>Cryptography</h3>
+
+<p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
+   another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
+   possession, or use, and re-export of encryption software, to see if this is permitted.</p>
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
+</body>
+</html>
diff --git a/gui/org.eclipse.efm.ui.intro/plugin.xml b/gui/org.eclipse.efm.ui.intro/plugin.xml
new file mode 100644
index 0000000..e2090ed
--- /dev/null
+++ b/gui/org.eclipse.efm.ui.intro/plugin.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+   <extension
+         point="org.eclipse.ui.intro">
+      <introProductBinding
+            introId="org.eclipse.ui.intro.universal"
+            productId="org.eclipse.efm.modeling.rcp.product">
+      </introProductBinding>
+   </extension>
+   <extension
+         point="org.eclipse.ui.intro.configExtension">
+      <configExtension
+            configId="org.eclipse.ui.intro.universalConfig"
+            content="extensions/tutorialsExtensionContent.xml">
+      </configExtension>
+   </extension>
+
+</plugin>
diff --git a/gui/org.eclipse.efm.ui.intro/pom.xml b/gui/org.eclipse.efm.ui.intro/pom.xml
new file mode 100644
index 0000000..7db88dc
--- /dev/null
+++ b/gui/org.eclipse.efm.ui.intro/pom.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+	<parent>
+		<groupId>org.eclipse.efm</groupId>
+		<artifactId>org.eclipse.efm.modeling.gui</artifactId>
+		<version>0.0.1-SNAPSHOT</version>
+	</parent>
+	<artifactId>org.eclipse.efm.ui.intro</artifactId>
+	<packaging>eclipse-plugin</packaging>
+	<name>org.eclipse.efm.ui.intro</name>
+	<description>This plug-in contains ui intro for efm welcome page...</description>
+</project>
\ No newline at end of file
diff --git a/gui/org.eclipse.efm.ui.intro/src/org/eclipse/efm/ui/intro/Activator.java b/gui/org.eclipse.efm.ui.intro/src/org/eclipse/efm/ui/intro/Activator.java
new file mode 100644
index 0000000..8e1e528
--- /dev/null
+++ b/gui/org.eclipse.efm.ui.intro/src/org/eclipse/efm/ui/intro/Activator.java
@@ -0,0 +1,63 @@
+/**
+ * ****************************************************************************
+ * Copyright (c) 2017 CEA LIST.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *  Boutheina BANNOUR (CEA LIST) boutheina.bannour@gmail.com
+ *  - Initial API and implementation
+ * ****************************************************************************/
+package org.eclipse.efm.ui.intro;
+
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class Activator extends AbstractUIPlugin {
+
+	// The plug-in ID
+	public static final String PLUGIN_ID = "org.eclipse.efm.ui.intro"; //$NON-NLS-1$
+
+	// The shared instance
+	private static Activator plugin;
+	
+	/**
+	 * The constructor
+	 */
+	public Activator() {
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
+	 */
+	public void start(BundleContext context) throws Exception {
+		super.start(context);
+		plugin = this;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
+	 */
+	public void stop(BundleContext context) throws Exception {
+		plugin = null;
+		super.stop(context);
+	}
+
+	/**
+	 * Returns the shared instance
+	 *
+	 * @return the shared instance
+	 */
+	public static Activator getDefault() {
+		return plugin;
+	}
+
+}
diff --git a/gui/pom.xml b/gui/pom.xml
index b854be7..fb93ca5 100644
--- a/gui/pom.xml
+++ b/gui/pom.xml
@@ -21,5 +21,6 @@
 		<module>org.eclipse.efm.modeling.ui.views.common</module>
 		<module>org.eclipse.efm.modeling.ui.views.property.tab.xlia</module>
 		<module>org.eclipse.efm.ui</module>
+		<module>org.eclipse.efm.ui.intro</module>
 	</modules>
 </project>
diff --git a/pom.xml b/pom.xml
index 08cd76a..fab6ef3 100644
--- a/pom.xml
+++ b/pom.xml
@@ -81,5 +81,6 @@
 		<module>gui</module>
 		<module>releng</module>
 		<module>targetplatform</module>
+		<module>tutorial</module>
 	</modules>
 </project>
\ No newline at end of file
diff --git a/releng/org.eclipse.efm.modeling.rcp/plugin.xml b/releng/org.eclipse.efm.modeling.rcp/plugin.xml
index bd4c384..b77c391 100644
--- a/releng/org.eclipse.efm.modeling.rcp/plugin.xml
+++ b/releng/org.eclipse.efm.modeling.rcp/plugin.xml
@@ -16,7 +16,7 @@
          </property>
          <property
               name="introBrandingImage"
-              value="product:icons/intro-papyrus.png"/>
+              value="product:icons/intro-efm.png"/>
          <property
                name="introTitle"
                value="Welcome to Eclipse Formal Modeling">
diff --git a/releng/org.eclipse.efm.modeling.rcp/plugin_customization.ini b/releng/org.eclipse.efm.modeling.rcp/plugin_customization.ini
index d61be40..6793b9f 100644
--- a/releng/org.eclipse.efm.modeling.rcp/plugin_customization.ini
+++ b/releng/org.eclipse.efm.modeling.rcp/plugin_customization.ini
@@ -24,3 +24,27 @@
 
 #org.eclipse.ui/defaultPerspectiveId=org.eclipse.efm.editing.ui.perspectiveEditing
 #org.eclipse.ui/defaultPerspectiveId=org.eclipse.efm.execution.ui.perspectiveExecution
+
+
+# Show Intro
+org.eclipse.ui/showIntro=true
+
+# a comma-separated list of root page identifiers that should be visible in the home page
+# possible values: overview,firststeps,tutorials,samples,whatsnew,migrate,webresources
+org.eclipse.ui.intro.universal/INTRO_ROOT_PAGES=tutorials
+
+# a file name pointing at the XML file with the page layout settings (see more about this below). The file name relative to the product bundle must have 'product:' prefix.
+org.eclipse.ui.intro.universal/INTRO_DATA=product:welcome/introData.xml
+
+# a unique identifier of the presentation theme to be used for this product. Note that this preference comes from 'org.eclipse.ui.intro plug-in' because active theme selection is performed at the framework level.
+org.eclipse.ui.intro/INTRO_THEME=org.eclipse.ui.intro.universal.solstice
+
+# the id of the page which will be shown when Eclipse starts the first time.
+# org.eclipse.ui.intro/INTRO_START_PAGE=
+
+# the id of the page which will be shown when the home button is pressed.
+# org.eclipse.ui.intro/INTRO_HOME_PAGE=
+
+# the id of the page which will be shown when welcome is displayed in a non-maximized form.
+# org.eclipse.ui.intro/INTRO_STANDBY_PAGE=
+
diff --git a/tutorial/.gitignore b/tutorial/.gitignore
new file mode 100644
index 0000000..bbdfc34
--- /dev/null
+++ b/tutorial/.gitignore
@@ -0,0 +1,2 @@
+/bin/
+*.md.html
diff --git a/tutorial/.project b/tutorial/.project
new file mode 100644
index 0000000..a7e6eef
--- /dev/null
+++ b/tutorial/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.efm.modeling.tutorial</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.m2e.core.maven2Nature</nature>
+	</natures>
+</projectDescription>
diff --git a/tutorial/about.html b/tutorial/about.html
new file mode 100644
index 0000000..d35d5ae
--- /dev/null
+++ b/tutorial/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+ 
+<p>June 5, 2007</p>	
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content.  Check the Redistributor's license that was 
+provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
diff --git a/tutorial/org.eclipse.efm.tutorial.Thermostat/.classpath b/tutorial/org.eclipse.efm.tutorial.Thermostat/.classpath
new file mode 100644
index 0000000..b862a29
--- /dev/null
+++ b/tutorial/org.eclipse.efm.tutorial.Thermostat/.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-1.8"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/tutorial/org.eclipse.efm.tutorial.Thermostat/.gitignore b/tutorial/org.eclipse.efm.tutorial.Thermostat/.gitignore
new file mode 100644
index 0000000..ae3c172
--- /dev/null
+++ b/tutorial/org.eclipse.efm.tutorial.Thermostat/.gitignore
@@ -0,0 +1 @@
+/bin/
diff --git a/tutorial/org.eclipse.efm.tutorial.Thermostat/.project b/tutorial/org.eclipse.efm.tutorial.Thermostat/.project
new file mode 100644
index 0000000..51735fd
--- /dev/null
+++ b/tutorial/org.eclipse.efm.tutorial.Thermostat/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.efm.tutorial.Thermostat</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/tutorial/org.eclipse.efm.tutorial.Thermostat/.settings/org.eclipse.jdt.core.prefs b/tutorial/org.eclipse.efm.tutorial.Thermostat/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..295926d
--- /dev/null
+++ b/tutorial/org.eclipse.efm.tutorial.Thermostat/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/tutorial/org.eclipse.efm.tutorial.Thermostat/META-INF/MANIFEST.MF b/tutorial/org.eclipse.efm.tutorial.Thermostat/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..92a5a55
--- /dev/null
+++ b/tutorial/org.eclipse.efm.tutorial.Thermostat/META-INF/MANIFEST.MF
@@ -0,0 +1,12 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Thermostat Tutorial
+Bundle-SymbolicName: org.eclipse.efm.tutorial.Thermostat;singleton:=true
+Bundle-Version: 0.0.1.qualifier
+Bundle-Activator: org.eclipse.efm.tutorial.thermostat.Activator
+Bundle-Vendor: CEA LIST
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.runtime,
+ org.eclipse.ui.cheatsheets;bundle-version="3.5.0"
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-ActivationPolicy: lazy
diff --git a/tutorial/org.eclipse.efm.tutorial.Thermostat/about.html b/tutorial/org.eclipse.efm.tutorial.Thermostat/about.html
new file mode 100644
index 0000000..d35d5ae
--- /dev/null
+++ b/tutorial/org.eclipse.efm.tutorial.Thermostat/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+ 
+<p>June 5, 2007</p>	
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content.  Check the Redistributor's license that was 
+provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
diff --git a/tutorial/org.eclipse.efm.tutorial.Thermostat/build.properties b/tutorial/org.eclipse.efm.tutorial.Thermostat/build.properties
new file mode 100644
index 0000000..6f20375
--- /dev/null
+++ b/tutorial/org.eclipse.efm.tutorial.Thermostat/build.properties
@@ -0,0 +1,5 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .,\
+               plugin.xml
diff --git a/tutorial/org.eclipse.efm.tutorial.Thermostat/cheatsheet/getting_started-orig.xml b/tutorial/org.eclipse.efm.tutorial.Thermostat/cheatsheet/getting_started-orig.xml
new file mode 100644
index 0000000..53367b7
--- /dev/null
+++ b/tutorial/org.eclipse.efm.tutorial.Thermostat/cheatsheet/getting_started-orig.xml
@@ -0,0 +1,247 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<cheatsheet title="Getting started with EFM">
+<intro>
+	<description>
+		This tutorial introduces the basic user interface of EFM and demonstrates how to create a simple project.
+	</description>
+</intro>
+<item title="Get to know your environment">
+	<description>
+		The most important step is to familiarize yourself with the EFM environment.<br/>
+		What you see and what you can do in EFM is governed by the current perspective. There are three different perspective associated with different business activities : Requirement Design, Test Design and Test Execution. <br/>
+		You can switch between different perspectives by clicking the button in the upper right corner of this window. Alternatively, you may open the selection dialog through the menu 'Window' > 'Perspective' > 'Open Perspective'.<br/>
+	</description>
+	<subitem>
+		<description>
+			<b>Requirement Design Perspective</b><br/>
+			Within this perspective, you can define and organize requirements of the system.<br/>
+			To open this perspective, click the green action arrow.
+		</description>
+  <command
+        required="false"
+        serialization="org.eclipse.ui.perspectives.showPerspective(org.eclipse.ui.perspectives.showPerspective.perspectiveId=org.eclipse.efm.ui.perspective.RequirementDesign)"/>
+	</subitem>
+	<subitem>
+		<description>
+			<b>Test Design Perspective</b><br/>
+			Within this perspective, you can define and organize test suites and test cases.<br/>
+			To open this perspective, click the green action arrow.
+			<br/>
+		</description>
+		<command required="true" confirm="true"
+			     serialization="org.eclipse.ui.perspectives.showPerspective(org.eclipse.ui.perspectives.showPerspective.perspectiveId=org.eclipse.efm.ui.perspective.TestDesign)"/>
+	</subitem>
+	<subitem>
+		<description>
+			<b>Test Execution Perspective</b><br/>
+			Within this perspective, you can define and execute test campaigns.<br/>
+			To open this perspective, click the green action arrow.
+		</description>
+		<command required="true" confirm="true"
+				 serialization="org.eclipse.ui.perspectives.showPerspective(org.eclipse.ui.perspectives.showPerspective.perspectiveId=org.eclipse.efm.ui.perspective.TestExecution)"/>
+	</subitem>
+	<subitem>
+		<description>
+			<b>Project Explorer</b><br/>
+			The Project Explorer shows a list of all projects and its contained files in your workspace. This explorer is available in every QS perspective.
+		</description>
+	</subitem>
+	<subitem>
+		<description>
+			<b>Project Tree Explorer</b><br/>
+			The Project Tree Explorer shows the contents of the currently opened project. This explorer is available in every QS perspective, but displays only concepts relevant to the current perspective. <br/>
+			For example, the Project Tree Explorer does not show requirements if the Test Execution Perspective is active.
+		</description>
+	</subitem>
+	<subitem>
+		<description>
+			<b>Project Dictionary</b><br/>
+			NOT AVAILABLE YET
+		</description>
+	</subitem>
+	<subitem>
+		<description>
+			<b>Form Editor View</b><br/>
+			The Form Editor View shows and editable form associated to an element of the Project Tree Explorer.
+			You will have to double-click on an element to open its Form Editor View.
+		</description>
+	</subitem>
+	<subitem>
+		<description>
+			<b>Properties View</b><br/>
+			The Properties view shows additional properties of the currently selected element of the Project Tree Explorer.
+		</description>
+	</subitem>
+</item>
+<item title="Create a new EFM Project" dialog="true">
+	<description>
+		The EFM Project Wizard allows you to initialize a new project automatically.<br/>
+		To create a new project, you can select 'File' > 'New' > 'Create a New QS Project' from the menu or right-click in the Project explorer and select 'New' > 'Create a New QS Project'.
+	</description>
+	<subitem>
+		<description>
+			Start the EFM Project Wizard.
+		</description>
+		<command required="true"
+				 serialization="org.eclipse.ui.newWizard(newWizardId=org.eclipse.papyrus.uml.diagram.wizards.createproject)"/>
+	</subitem>
+	<subitem label="Select the parent Checkout in which the project will be created." />
+	<subitem label="Specify a 'Project name' and hit 'Next'." />
+	<subitem label="To Be Continued." />
+</item>
+<item title="Connect to EFM Server" dialog="true">
+	<description>
+		Not Available Yet
+	</description>
+</item>
+<item title="Inspect the created project content">
+	<description>
+		After creating the project, the Project Tree Explorer shows a project structure with three business activities : Requirement Design, Test Design and Test Execution.
+	</description>
+	<subitem>
+		<description>
+			<b>Requirement Design</b><br/>
+			This business activity contains all elements associated with requirements.<br/>
+			Requirements can be hierarchically organized using Requirement Design Packages.
+		</description>
+	</subitem>
+	<subitem>
+		<description>
+			<b>Test Design</b><br/>
+			This business activity contains all elements associated with test definition. You can see the two standard oracles which were automatically created.<br/>
+			Test suites and tests cases can be hierarchically organized using Test Design Packages.<br/>
+		</description>
+	</subitem>
+	<subitem>
+		<description>
+			<b>Test Execution</b><br/>
+			This business activity contains all elements associated with test execution.<br/>
+			Test campaigns can be hierarchically organized using Test Execution Packages.<br/>
+		</description>
+	</subitem>
+</item>
+<item title="Create your first test case">
+	<description>
+		Here we will create a test suite, a test case and several test steps. We will use the ATM example consisting of a credit card, an automatic cash dispenser and a bank account.
+		Our test case will verify that the credit card is swallowed after a bad PIN code has been given three times.
+	</description>
+	<subitem>
+		<description>
+			<b>Create a Test Design Package</b><br/>
+			Select the 'Test Design' business activity, right click to open the contextual menu and choose 'Test Design > New Package'.<br/>
+			A Test Design Package is created and contains three sub folders: 'Steps Folder', 'Cases Folder' and 'Data'.
+			After the package is created, you can change its name in the associated form.
+		</description>
+	</subitem>
+	<subitem>
+		<description>
+			<b>Create a Test Case</b><br/>
+		Select the 'Test Cases Folder', right click to open the contextual menu and choose 'Test Design > New Test Case'.
+		A test case is created and its properties are displayed in the associated form. Give a name to the test case, for example: 'Bad Pin Three Times'.
+		</description>
+	</subitem>
+	<subitem>
+		<description>
+			<b>Create and Add a Test Step</b><br/>
+			In the test case form, press the 'Create And Add A Step' button. The new test step is created in the 'Test Steps Folder' and associated to the test case.<br/>
+			Note the slightly different icons when seeing the test step from the test step forlder and from the test case. This express the fact the test step is stored in the test steps folder and is only referenced in the test case.<br/>
+			In the test step form, set the step name to 'Enter false code PIN', the stimulation to 'input $userPID_ko$' and the expected to 'output message $Enter_another_pin_code_msg$'.<br/>
+			The stimulation and the expected references parameters with the $parameter_name$ convention.
+		</description>
+	</subitem>
+	<subitem>
+		<description>
+			<b>Create a Parameter</b><br/>
+			Select the 'Data' folder, right click to open the contextual menu, choose 'Test Design' > 'New Parameter' and select 'Integer' in the popping dialog.<br/>
+			The new parameter is created in the 'Data' folder. Set its name to 'userPID_ko'. To set a default value, click on the green '+', choose 'LiteralInteger' and set '3782' as name and value.<br/>
+			We also need to create the Enter_another_pin_code_msg. Follow the previous procedure but choose String and LiteralString, and set default value to 'Enter PIN code'.<br/>
+		</description>
+	</subitem>
+	<subitem>
+		<description>
+			<b>Associate a Parameter to a Test Step</b><br/>
+			Select the previously created test step. In the form editor, click on the green '+' close to the Parameters List and select the parameters we have just created.
+		</description>
+	</subitem>
+	<subitem>
+		<description>
+			<b>Add an existing Test Step</b><br/>
+			The second step of our test case is the same than the first one. If is very easy to reuse the same step two times.<br/>
+			Go back to the 'Test Case Folder' and select our test case. In the form editor, press the 'Add an Existing Step' button and choose 'Enter false code PIN'. The test step is referenced two times in the test case.<br/>
+			Basically, it is the same test step, so it is already associated with the two parameters previously created.
+		</description>
+	</subitem>
+</item>
+<item title="Create and organize a Test Suite">
+	<description>
+		Now, we going to create a test suite in which we will add our test case.
+	</description>
+	<subitem>
+		<description>
+			<b>Create a Test Suite</b><br/>
+			Select the Test Design Package, right click to open the contextual menu and choose 'Test Design > New Test Suite'.<br/>
+			A Test Suite is created and its properties are displayed on the Form Editor.
+			In the test step form, give the name 'ATM_func_tests' to the test suite.
+		</description>
+	</subitem>
+	<subitem>
+		<description>
+			<b>Add a Test Case</b><br/>
+			In the test suite form, press on the 'Add a TestCase' button and select our test case from the popping dialog.
+			Note that a test suite cannot contains two times the same test case.
+		</description>
+	</subitem>
+	<subitem>
+		<description>
+			<b>TODO</b><br/>
+			TODO
+		</description>
+	</subitem>
+</item>
+<item title="Create a Test Campaign">
+	<description>
+		TODO
+	</description>
+</item>
+<item title="Execute a Test Campaign">
+	<description>
+		TODO
+	</description>
+</item>
+<item title="Create and organize Requirements">
+	<description>
+		TODO
+	</description>
+</item>
+<item title="Going further">
+	<description>
+		Here we show optional (but useful) capabilities of EFM
+	</description>
+	<subitem>
+		<description>
+			<b>Using a SUT model</b><br/>
+			TODO
+		</description>
+	</subitem>
+	<subitem>
+		<description>
+			<b>Using a Test Context model</b><br/>
+			TODO
+		</description>
+	</subitem>
+</item>
+<item skip="true" title="More Information" href="/org.eclipse.papyrus.uml.doc/target/generated-eclipse-help/PapyrusStarterGuide.html">
+	<description>
+	TODO
+	</description>
+	<command required="false"
+		serialization="org.eclipse.ui.help.helpContents"/>
+</item>
+<item skip="true" title="Example: ATM">
+	<description>
+		TODO
+	</description>
+	<command required="false"
+		serialization="org.eclipse.ui.newWizard(newWizardId=org.eclipse.efm.ui.wizard.createproject)"/>
+</item>
+</cheatsheet>
diff --git a/tutorial/org.eclipse.efm.tutorial.Thermostat/cheatsheet/getting_started.xml b/tutorial/org.eclipse.efm.tutorial.Thermostat/cheatsheet/getting_started.xml
new file mode 100644
index 0000000..7e829aa
--- /dev/null
+++ b/tutorial/org.eclipse.efm.tutorial.Thermostat/cheatsheet/getting_started.xml
@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<cheatsheet title="Getting started with EFM">
+<intro>
+	<description>
+		Model-based testing (MBT) uses models of systems for the derivation of test cases. We use timed automata as models that manipulate variables to abstractly
+denote system states (we call them data variables) and variables to capture timing constraints (we call them clocks) on system executions. 
+The objective is to get familiar with model-based testing using symbolic techniques. Symbolic execution is a technique used here to analyze model behavior. It works by using symbols, instead of concrete values. Hence, variables during the execution are assigned with expressions based on those symbols rather than concrete values.
+
+This exercise sheet is divided in two parts.
+	</description>
+</intro>
+<item title="Part I Symbolic framework">
+	<description>
+		The most important step is to familiarize yourself with the symbolic framework.<br/>
+	</description>
+	<subitem>
+		<description>
+			<b>Modeling</b><br/>
+			Consider the automaton of the thermostat control component in Figure 2.
+		</description>
+  <command
+        required="false"
+        serialization="org.eclipse.ui.perspectives.showPerspective(org.eclipse.ui.perspectives.showPerspective.perspectiveId=org.eclipse.efm.ui.perspective.RequirementDesign)"/>
+	</subitem>
+	<subitem>
+		<description>
+			<b>Test Design Perspective</b><br/>
+			Within this perspective, you can define and organize test suites and test cases.<br/>
+			To open this perspective, click the green action arrow.
+			<br/>
+		</description>
+		<command required="true" confirm="true"
+			     serialization="org.eclipse.ui.perspectives.showPerspective(org.eclipse.ui.perspectives.showPerspective.perspectiveId=org.eclipse.efm.ui.perspective.TestDesign)"/>
+	</subitem>
+	<subitem>
+		<description>
+			<b>Test Execution Perspective</b><br/>
+			Within this perspective, you can define and execute test campaigns.<br/>
+			To open this perspective, click the green action arrow.
+		</description>
+		<command required="true" confirm="true"
+				 serialization="org.eclipse.ui.perspectives.showPerspective(org.eclipse.ui.perspectives.showPerspective.perspectiveId=org.eclipse.efm.ui.perspective.TestExecution)"/>
+	</subitem>
+	<subitem>
+		<description>
+			<b>Project Explorer</b><br/>
+			The Project Explorer shows a list of all projects and its contained files in your workspace. This explorer is available in every QS perspective.
+		</description>
+	</subitem>
+	<subitem>
+		<description>
+			<b>Project Tree Explorer</b><br/>
+			The Project Tree Explorer shows the contents of the currently opened project. This explorer is available in every QS perspective, but displays only concepts relevant to the current perspective. <br/>
+			For example, the Project Tree Explorer does not show requirements if the Test Execution Perspective is active.
+		</description>
+	</subitem>
+	<subitem>
+		<description>
+			<b>Project Dictionary</b><br/>
+			NOT AVAILABLE YET
+		</description>
+	</subitem>
+	<subitem>
+		<description>
+			<b>Form Editor View</b><br/>
+			The Form Editor View shows and editable form associated to an element of the Project Tree Explorer.
+			You will have to double-click on an element to open its Form Editor View.
+		</description>
+	</subitem>
+	<subitem>
+		<description>
+			<b>Properties View</b><br/>
+			The Properties view shows additional properties of the currently selected element of the Project Tree Explorer.
+		</description>
+	</subitem>
+</item>
+<item title="Create a new EFM Project" dialog="true">
+	<description>
+		The EFM Project Wizard allows you to initialize a new project automatically.<br/>
+		To create a new project, you can select 'File' > 'New' > 'Create a New QS Project' from the menu or right-click in the Project explorer and select 'New' > 'Create a New QS Project'.
+	</description>
+	<subitem>
+		<description>
+			Start the EFM Project Wizard.
+		</description>
+		<command required="true"
+				 serialization="org.eclipse.ui.newWizard(newWizardId=org.eclipse.papyrus.uml.diagram.wizards.createproject)"/>
+	</subitem>
+	<subitem label="Select the parent Checkout in which the project will be created." />
+	<subitem label="Specify a 'Project name' and hit 'Next'." />
+	<subitem label="To Be Continued." />
+</item>
+<item title="Connect to EFM Server" dialog="true">
+	<description>
+		Not Available Yet
+	</description>
+</item>
+</cheatsheet>
diff --git a/tutorial/org.eclipse.efm.tutorial.Thermostat/license.html b/tutorial/org.eclipse.efm.tutorial.Thermostat/license.html
new file mode 100644
index 0000000..c3d34c3
--- /dev/null
+++ b/tutorial/org.eclipse.efm.tutorial.Thermostat/license.html
@@ -0,0 +1,107 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>Eclipse Foundation Software User Agreement</title>
+</head>
+
+<body lang="EN-US">
+<h2>Eclipse Foundation Software User Agreement</h2>
+<p>April 9, 2014</p>
+
+<h3>Usage Of Content</h3>
+
+<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+   (COLLECTIVELY &quot;CONTENT&quot;).  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
+   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
+   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
+   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+
+<h3>Applicable Licenses</h3>
+
+<p>Unless otherwise indicated, all Content made available by the Eclipse Foundation is provided to you under the terms and conditions of the Eclipse Public License Version 1.0
+   (&quot;EPL&quot;).  A copy of the EPL is provided with this Content and is also available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+   For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
+   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
+
+<ul>
+       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
+      and/or Fragments associated with that Feature.</li>
+       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
+</ul>
+
+<p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
+Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
+including, but not limited to the following locations:</p>
+
+<ul>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
+       <li>Feature directories</li>
+</ul>
+
+<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
+installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
+inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
+that directory.</p>
+
+<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.  SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+
+<ul>
+       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+</ul>
+
+<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
+contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
+
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
+   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
+       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   (&quot;Specification&quot;).</p>
+
+<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
+   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
+   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
+       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
+       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
+       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
+       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
+</ol>
+
+<h3>Cryptography</h3>
+
+<p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
+   another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
+   possession, or use, and re-export of encryption software, to see if this is permitted.</p>
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
+</body>
+</html>
diff --git a/tutorial/org.eclipse.efm.tutorial.Thermostat/outputTrace/mergeTrace.txt b/tutorial/org.eclipse.efm.tutorial.Thermostat/outputTrace/mergeTrace.txt
new file mode 100644
index 0000000..45e196a
--- /dev/null
+++ b/tutorial/org.eclipse.efm.tutorial.Thermostat/outputTrace/mergeTrace.txt
@@ -0,0 +1,8 @@
+delta = 1
+INPUT sens(0)
+delta = 1
+OUTPUT screen(1)
+delta = 1
+OUTPUT dt(20)
+delta = 2
+OUTPUT equip(4)
diff --git a/tutorial/org.eclipse.efm.tutorial.Thermostat/plugin.xml b/tutorial/org.eclipse.efm.tutorial.Thermostat/plugin.xml
new file mode 100644
index 0000000..067de9e
--- /dev/null
+++ b/tutorial/org.eclipse.efm.tutorial.Thermostat/plugin.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+   <extension
+         point="org.eclipse.ui.cheatsheets.cheatSheetContent">
+      <category
+            id="org.eclipse.efm.tutorial.Thermostat.category"
+            name="ThermostTutorial">
+      </category>
+      <cheatsheet
+            category="org.eclipse.efm.tutorial.Thermostat.category"
+            composite="false"
+            contentFile="cheatsheet/getting_started.xml"
+            id="org.eclipse.efm.tutorial.Thermostat.cheatsheet"
+            name="org.eclipse.efm.tutorial.Thermostat.cheatsheet">
+      </cheatsheet>
+   </extension>
+
+</plugin>
diff --git a/tutorial/org.eclipse.efm.tutorial.Thermostat/pom.xml b/tutorial/org.eclipse.efm.tutorial.Thermostat/pom.xml
new file mode 100644
index 0000000..b1d9c52
--- /dev/null
+++ b/tutorial/org.eclipse.efm.tutorial.Thermostat/pom.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+	<parent>
+		<groupId>org.eclipse.efm</groupId>
+		<artifactId>org.eclipse.efm.modeling.tutorial</artifactId>
+		<version>0.0.1-SNAPSHOT</version>
+	</parent>
+	<artifactId>org.eclipse.efm.tutorial.Thermostat</artifactId>
+	<packaging>eclipse-plugin</packaging>
+	<name>org.eclipse.efm.tutorial.Thermostat</name>
+	<description>This plug-in contains Thermostat tutorial...</description>
+</project>
\ No newline at end of file
diff --git a/tutorial/org.eclipse.efm.tutorial.Thermostat/src/org/eclipse/efm/tutorial/thermostat/Activator.java b/tutorial/org.eclipse.efm.tutorial.Thermostat/src/org/eclipse/efm/tutorial/thermostat/Activator.java
new file mode 100644
index 0000000..4d22aef
--- /dev/null
+++ b/tutorial/org.eclipse.efm.tutorial.Thermostat/src/org/eclipse/efm/tutorial/thermostat/Activator.java
@@ -0,0 +1,63 @@
+/**
+ * ****************************************************************************
+ * Copyright (c) 2017 CEA LIST.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *  Boutheina BANNOUR (CEA LIST) boutheina.bannour@gmail.com
+ *  - Initial API and implementation
+ * ****************************************************************************/
+package org.eclipse.efm.tutorial.thermostat;
+
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class Activator extends AbstractUIPlugin {
+
+	// The plug-in ID
+	public static final String PLUGIN_ID = "org.eclipse.efm.tutorial.Thermostat"; //$NON-NLS-1$
+
+	// The shared instance
+	private static Activator plugin;
+	
+	/**
+	 * The constructor
+	 */
+	public Activator() {
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
+	 */
+	public void start(BundleContext context) throws Exception {
+		super.start(context);
+		plugin = this;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
+	 */
+	public void stop(BundleContext context) throws Exception {
+		plugin = null;
+		super.stop(context);
+	}
+
+	/**
+	 * Returns the shared instance
+	 *
+	 * @return the shared instance
+	 */
+	public static Activator getDefault() {
+		return plugin;
+	}
+
+}
diff --git a/tutorial/org.eclipse.efm.tutorial.Thermostat/src/org/eclipse/efm/tutorial/thermostat/system/Channel.java b/tutorial/org.eclipse.efm.tutorial.Thermostat/src/org/eclipse/efm/tutorial/thermostat/system/Channel.java
new file mode 100644
index 0000000..abff1c4
--- /dev/null
+++ b/tutorial/org.eclipse.efm.tutorial.Thermostat/src/org/eclipse/efm/tutorial/thermostat/system/Channel.java
@@ -0,0 +1,30 @@
+/**
+ * ****************************************************************************
+ * Copyright (c) 2017 CEA LIST.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *  Boutheina BANNOUR (CEA LIST) boutheina.bannour@gmail.com
+ *  - Initial API and implementation
+ * ****************************************************************************/
+package org.eclipse.efm.tutorial.thermostat.system;
+
+public class Channel<Type> {
+	Type v;
+	String name;
+	
+	void send(Type t){
+		
+		this.v = t;
+		
+	}
+	
+	Type receive(){
+		return v;
+	}
+
+}
diff --git a/tutorial/org.eclipse.efm.tutorial.Thermostat/src/org/eclipse/efm/tutorial/thermostat/system/Equipement.java b/tutorial/org.eclipse.efm.tutorial.Thermostat/src/org/eclipse/efm/tutorial/thermostat/system/Equipement.java
new file mode 100644
index 0000000..9df9bc8
--- /dev/null
+++ b/tutorial/org.eclipse.efm.tutorial.Thermostat/src/org/eclipse/efm/tutorial/thermostat/system/Equipement.java
@@ -0,0 +1,33 @@
+/**
+ * ****************************************************************************
+ * Copyright (c) 2017 CEA LIST.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *  Boutheina BANNOUR (CEA LIST) boutheina.bannour@gmail.com
+ *  - Initial API and implementation
+ * ****************************************************************************/
+package org.eclipse.efm.tutorial.thermostat.system;
+
+public class Equipement {
+	
+	Channel<Integer> dt;
+	Channel<Integer> amount;
+	Channel<Integer> error;
+	int x;
+
+	public Equipement(Channel<Integer> dt, Channel<Integer> amount,
+			Channel<Integer> error) {
+		super();
+		this.dt = dt;
+		this.amount = amount;
+		this.error = error;
+	}
+	
+	
+	
+}
diff --git a/tutorial/org.eclipse.efm.tutorial.Thermostat/src/org/eclipse/efm/tutorial/thermostat/system/Sensor.java b/tutorial/org.eclipse.efm.tutorial.Thermostat/src/org/eclipse/efm/tutorial/thermostat/system/Sensor.java
new file mode 100644
index 0000000..9da4b59
--- /dev/null
+++ b/tutorial/org.eclipse.efm.tutorial.Thermostat/src/org/eclipse/efm/tutorial/thermostat/system/Sensor.java
@@ -0,0 +1,31 @@
+/**
+ * ****************************************************************************
+ * Copyright (c) 2017 CEA LIST.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *  Boutheina BANNOUR (CEA LIST) boutheina.bannour@gmail.com
+ *  - Initial API and implementation
+ * ****************************************************************************/
+package org.eclipse.efm.tutorial.thermostat.system;
+
+public class Sensor {
+	
+	//temperature
+	int t ;
+
+	public int getT() {
+		return t;
+	}
+
+	public void setT(int t) {
+		this.t = t;
+	}
+	
+	
+
+}
diff --git a/tutorial/org.eclipse.efm.tutorial.Thermostat/src/org/eclipse/efm/tutorial/thermostat/system/Thermostat.java b/tutorial/org.eclipse.efm.tutorial.Thermostat/src/org/eclipse/efm/tutorial/thermostat/system/Thermostat.java
new file mode 100644
index 0000000..08be1f3
--- /dev/null
+++ b/tutorial/org.eclipse.efm.tutorial.Thermostat/src/org/eclipse/efm/tutorial/thermostat/system/Thermostat.java
@@ -0,0 +1,66 @@
+/**
+ * ****************************************************************************
+ * Copyright (c) 2017 CEA LIST.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *  Boutheina BANNOUR (CEA LIST) boutheina.bannour@gmail.com
+ *  - Initial API and implementation
+ * ****************************************************************************/
+package org.eclipse.efm.tutorial.thermostat.system;
+
+public class Thermostat implements Runnable{
+	
+	int Tmax = 20 ;
+	int Tmin = 25;
+	int t;
+	
+	Channel<Integer> sens;
+	Channel<Integer> screen;
+	Channel<Integer> dt;
+	Channel<Integer> amount;
+	Channel<Integer> error;
+	//private int y;
+	
+	public Thermostat(Channel<Integer> sens, Channel<Integer> screen, Channel<Integer> dt,
+			Channel<Integer> amount, Channel<Integer> error) {
+		super();
+		this.sens = sens;
+		this.screen = screen;
+		this.dt = dt;
+		this.amount = amount;
+		this.error = error;
+	}	
+		
+	public void run(){
+		
+		t = sens.receive();
+		
+		if (t < Tmin) {
+			dt.send(t);
+			System.out.println("dt!"+t+"\n");
+			
+		} else {
+
+		}
+		boolean equipNotDone = true;
+		while (equipNotDone){
+			try {
+				Thread.sleep (10);
+			} catch (InterruptedException e) {
+				// TODO Auto-generated catch block
+				e.printStackTrace();
+			}
+			//y = amount.receive();
+			
+		}
+		
+		
+		
+		
+	}
+}
diff --git a/tutorial/org.eclipse.efm.tutorial.Thermostat/src/org/eclipse/efm/tutorial/thermostat/system/ThermostatSystem.java b/tutorial/org.eclipse.efm.tutorial.Thermostat/src/org/eclipse/efm/tutorial/thermostat/system/ThermostatSystem.java
new file mode 100644
index 0000000..9b372a6
--- /dev/null
+++ b/tutorial/org.eclipse.efm.tutorial.Thermostat/src/org/eclipse/efm/tutorial/thermostat/system/ThermostatSystem.java
@@ -0,0 +1,285 @@
+/**
+ * ****************************************************************************
+ * Copyright (c) 2017 CEA LIST.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *  Boutheina BANNOUR (CEA LIST) boutheina.bannour@gmail.com
+ *  - Initial API and implementation
+ * ****************************************************************************/
+package org.eclipse.efm.tutorial.thermostat.system;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileReader;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.util.Vector;
+
+import org.eclipse.efm.tutorial.thermostat.utils.Couple;
+
+public class ThermostatSystem {
+		
+	static Channel<Integer> dt = new Channel<Integer>();
+	static Channel<Integer> amount = new Channel<Integer>();
+	static Channel<Integer> error = new Channel<Integer>();
+	static Channel<Integer> sens = new Channel<Integer>();
+	static Channel<Integer> screen = new Channel<Integer>();
+	
+	static Vector<Couple<Integer,Boolean>> inputTrace = new Vector<Couple<Integer,Boolean>>();
+		
+	
+	static Thermostat therm = new Thermostat(sens,screen,dt,amount,error);
+	static Equipement equip  = new Equipement(dt,amount,error);
+
+	static int delay;
+	static int t;
+
+	static int Tmin = 20;
+	static int Tmax = 25 ;
+	static int HeatingDisplay = 1 ;
+	static int CoolinggDisplay = 2 ;
+	static int StandbyDisplay = 3 ;
+	
+	public enum Mode {
+	    COOLING, HEATING, STANDBY	
+    }
+	static Mode mode = Mode.STANDBY;
+	
+	static FileReader inputTraceFile;
+	
+	static String inputTracePath;
+	
+	static String logdirName;
+	
+	static void readInputTrace(){
+		
+		
+		
+		
+		try {
+			//inputTraceFile = new FileReader("inputTrace/inputTrace.txt");
+			inputTraceFile = new FileReader(inputTracePath);
+		 
+        BufferedReader br = new BufferedReader(inputTraceFile);
+        String line;
+			
+			//System.out.println(line.toString());
+			
+			//long b = System.currentTimeMillis();
+        	
+	        while((line = br.readLine())!= null){
+	        	if (line.startsWith("TRACE NUMBER")) continue;
+	        	//String delims = "[?!]+";
+	        	String delims = "=";
+	        	String[] parts = line.split(delims);
+	        	
+	        	if (parts.length == 2){
+	        		 //case of reading a delay
+	        		inputTrace.add(new Couple<Integer, Boolean>(Integer.parseInt(parts[1].trim()),
+        					false));
+	        		
+	        	}else{
+	        		
+	        		//case of reading an input value
+	        		String strTMP = parts[0].trim();
+	        		String[] parts1 = strTMP.split("\\(");
+	        		
+	        		String[] parts2 = parts1[1].split("\\)");
+	        		
+	        		inputTrace.add(new Couple<Integer, Boolean>(Integer.parseInt(parts2[0]),
+        					true));
+	        		
+	        		
+	        	}   	 	
+	        }
+	        
+	        br.close();
+		}catch (FileNotFoundException e1) {
+				// TODO Auto-generated catch block
+				e1.printStackTrace();
+		}catch (IOException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		}catch (NumberFormatException e2){
+			
+			System.out.println("Check the formatting of your input file..");
+			
+		}
+	}
+	
+
+	public static void main(String[] args) {
+		// TODO Auto-generated method stub
+		if (args.length == 2)
+			{
+	
+			inputTracePath = args[0]; // E.g. "inputTrace/inputTrace.txt"
+			logdirName = args[1]; // E.g. "outputTrace";
+		
+			readInputTrace();
+			
+			(new File(logdirName)).mkdir();
+			File logfile = new File(logdirName+"/mergeTrace.txt"); 			
+				
+				
+				    FileWriter logwriter = null;
+				    try {
+				        logwriter = new FileWriter(logfile);
+				        
+				        if (inputTrace.size() != 0){ 
+				        //System.out.printf("File is located at %s%n", logfile.getAbsolutePath());
+				        	        
+					        if (!inputTrace.firstElement().second()){
+					        	
+					        	logwriter.write("delta = "+inputTrace.firstElement().first()+"\n");
+					        	inputTrace.remove(0);
+					        }
+							
+					        for (Couple<Integer, Boolean> elemInputTrace : inputTrace) {
+								
+					        	if (elemInputTrace.second()){
+					        		therm.sens.send(elemInputTrace.first());
+					        		logwriter.write("INPUT sens("+elemInputTrace.first()+")\n");
+					        		continue;
+					        	}else{
+					        		delay = elemInputTrace.first();
+					        	}
+								t = therm.sens.receive();
+								
+								//logwriter.write("1\n");
+								
+								if (t < Tmin && (mode == Mode.HEATING || mode == Mode.STANDBY)) {	
+									
+									mode = Mode.HEATING;
+									
+																	
+									logwriter.write("delta = 1\n");
+									delay = delay-1;
+									//logwriter.write("OUTPUT screen("+mode+")\n");
+									logwriter.write("OUTPUT screen("+"1"+")\n");
+									
+									if (delay >= 1){
+									
+										delay = delay-1;
+									
+										logwriter.write("delta = 1\n");
+									
+									
+										
+										therm.dt.send(Tmin-t);
+										
+										equip.x = equip.dt.receive();
+										
+										logwriter.write("OUTPUT dt("+(Tmin-t)+")\n");
+										if (delay >= 2){
+											logwriter.write("delta = 2\n");
+											delay = delay-2;
+											
+											while (equip.x > 0){
+												equip.x = equip.x-4;
+												amount.send(4);
+												logwriter.write("OUTPUT equip("+4+")\n");
+												if (delay < 1){
+													break;
+												}
+												logwriter.write("delta = 1\n");
+												delay--;							
+											}
+										}
+										
+									}
+									
+									
+								}	
+								else{
+									if (t > Tmax && (mode == Mode.COOLING || mode == Mode.STANDBY)) {	
+										
+										mode = Mode.COOLING;
+										
+										
+										logwriter.write("delta = 1\n");
+										delay = delay-1;
+										//logwriter.write("OUTPUT screen("+mode+")\n");
+										logwriter.write("OUTPUT screen("+"2"+")\n");
+										
+										if (delay >= 1){
+											
+											delay = delay-1;
+											
+											logwriter.write("delta = 1\n");
+										
+										
+											
+											therm.dt.send(Tmax-t);
+											
+											equip.x = equip.dt.receive();
+										
+											logwriter.write("OUTPUT dt("+(Tmax-t)+")\n");
+											
+											if (delay >= 2){
+												logwriter.write("delta = 2\n");
+												delay = delay-2;
+												
+												while (equip.x < 0){
+													equip.x = equip.x+4;
+													amount.send(-4);
+													logwriter.write("OUTPUT equip("+-4+")\n");
+													if (delay < 1){
+														break;
+													}
+													logwriter.write("delta = 1\n");
+													delay--;							
+												}
+											}
+										}
+										
+									}else{ // case Tmin <= t <= Tmax
+										
+										if ((t > Tmin && mode == Mode.HEATING) || (t < Tmax && mode == Mode.COOLING)) {
+											
+											logwriter.write("delta = 1\n");
+											delay--;
+											logwriter.write("dt!0\n");
+											if(delay < 2){
+												logwriter.write("delta = 1\n");
+											}else{
+												logwriter.write("delta = 2\n");
+												delay = delay-2;
+											}
+											logwriter.write("OUTPUT equip(0)\n");
+											
+											mode = Mode.STANDBY;
+										}
+									}
+								}
+								if (delay > 0){
+									logwriter.write("delta = "+delay+"\n");
+								} if (delay <= 0) {
+									//continue;
+									break;
+								}
+					        }
+				        } 
+				        
+				        
+				        
+				    } catch (IOException e) {
+				        e.printStackTrace(); // rather declare method with throws IOException and omit this catch.
+				    } finally {
+				        if (logwriter != null) try { logwriter.close(); } catch (IOException ignore) {}
+				    }
+		    
+			
+		}
+		else
+		{
+			System.out.println("Wrong argument number.");
+		}
+	}
+}
diff --git a/tutorial/org.eclipse.efm.tutorial.Thermostat/src/org/eclipse/efm/tutorial/thermostat/utils/Couple.java b/tutorial/org.eclipse.efm.tutorial.Thermostat/src/org/eclipse/efm/tutorial/thermostat/utils/Couple.java
new file mode 100644
index 0000000..33296aa
--- /dev/null
+++ b/tutorial/org.eclipse.efm.tutorial.Thermostat/src/org/eclipse/efm/tutorial/thermostat/utils/Couple.java
@@ -0,0 +1,33 @@
+/**
+ * ****************************************************************************
+ * Copyright (c) 2017 CEA LIST.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *  Boutheina BANNOUR (CEA LIST) boutheina.bannour@gmail.com
+ *  - Initial API and implementation
+ * ****************************************************************************/
+package org.eclipse.efm.tutorial.thermostat.utils;
+public class Couple<A, B> extends java.lang.Object {
+		
+		private A a;
+		private B b;
+		
+		public Couple (A a0, B b0) {
+		    a = a0;
+		    b = b0;
+		}
+		
+		public A first() {
+		    return a;
+		}
+		
+		public B second() {
+		    return b;
+		}
+		
+	    }
\ No newline at end of file
diff --git a/tutorial/pom.xml b/tutorial/pom.xml
new file mode 100644
index 0000000..a19bce6
--- /dev/null
+++ b/tutorial/pom.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+	<parent>
+		<groupId>org.eclipse.efm</groupId>
+		<artifactId>org.eclipse.efm.modeling.parent</artifactId>
+		<version>0.0.1-SNAPSHOT</version>
+	</parent>
+	<artifactId>org.eclipse.efm.modeling.tutorial</artifactId>
+	<packaging>pom</packaging>
+	<name>org.eclipse.efm-modeling TUTORIAL</name>
+	<description>This module contains the different plugins relative to EFM tutorials</description>
+
+	<modules>
+		<module>org.eclipse.efm.tutorial.Thermostat</module>
+	</modules>
+</project>
