removed unused mtl templates

removed templates have been replaced by the ones working with the SAN
doel

Signed-off-by: Stefano Puri <stefano.puri@intecs.it>
diff --git a/plugins/mobius/org.polarsys.chess.mobius/src/org/polarsys/chess/mobius/templates/AltFragmentTemplate.mtl b/plugins/mobius/org.polarsys.chess.mobius/src/org/polarsys/chess/mobius/templates/AltFragmentTemplate.mtl
deleted file mode 100644
index d0ee8da..0000000
--- a/plugins/mobius/org.polarsys.chess.mobius/src/org/polarsys/chess/mobius/templates/AltFragmentTemplate.mtl
+++ /dev/null
@@ -1,288 +0,0 @@
-[comment
-/*********************************************************************
-* Copyright (c) 2019 Intecs Solutions SpA
-*
-* This program and the accompanying materials are made
-* available under the terms of the Eclipse Public License 2.0
-* which is available at https://www.eclipse.org/legal/epl-2.0/
-*
-* SPDX-License-Identifier: EPL-2.0
-*
-* Contributors: 
-*   Intecs Solutions - Initial API and implementation
-*   
-**********************************************************************/
-/]
-[comment encoding = UTF-8 /]
-
-[module AltFragmentTemplate('http://www.eclipse.org/uml2/3.0.0/UML')/]
-[import org::polarsys::chess::mobius::templates::projectFileTemplate /]
-
-[template public AltFragmentTemplate(combFrag : CombinedFragment, index : Integer, globalvars : Set(String), startPlace : String, startX : Integer, startY : Integer)]
-	[let altFragmentName : String = combFrag.name]
-	[let operands : OrderedSet(InteractionOperand) = combFrag.operand]
-	[let x : Integer = 50]
-	[let y : Integer = 250*index]
-	[comment places and activities/]
-	<class id="Mobius.AtomicModels.San.PlacePanelObject">
-		<int id="ClassVersion">1</int>
-		<class id="Mobius.BaseClasses.BaseVertexClass">
-			<int id="ClassVersion">3</int>
-			<class id="Mobius.BaseClasses.BasePanelObjectClass">
-				<int id="ClassVersion">5</int>
-				<string id="Name">[altFragmentName/]_failed</string>
-				<boolean id="ContainsLabel">true</boolean>
-				<boolean id="IsLabelShown">true</boolean>
-			</class>
-			<point id="CenterPoint">
-				<int id="x">[x+750/]</int>
-				<int id="y">[y+operands->size()*75/]</int>
-			</point>
-		</class>
-		<boolean id="ReadOnly">false</boolean>
-		<boolean id="ConstantMarking">true</boolean>
-		<int id="InitialState">0</int>
-	</class>
-	[comment this is the end place /]
-	<class id="Mobius.AtomicModels.San.PlacePanelObject">
-		<int id="ClassVersion">1</int>
-		<class id="Mobius.BaseClasses.BaseVertexClass">
-			<int id="ClassVersion">3</int>
-			<class id="Mobius.BaseClasses.BasePanelObjectClass">
-				<int id="ClassVersion">5</int>
-				<string id="Name">End[altFragmentName/]</string>[setStartPlace('End'.concat(altFragmentName))/]
-				<boolean id="ContainsLabel">true</boolean>
-				<boolean id="IsLabelShown">true</boolean>
-			</class>
-			<point id="CenterPoint">
-				<int id="x">[x+250/]</int>[setStartX(x+250)/]
-				<int id="y">[y+operands->size()*75/]</int>[setStartY(y+operands->size()*75)/]
-			</point>
-		</class>
-		<boolean id="ReadOnly">false</boolean>
-		<boolean id="ConstantMarking">true</boolean>
-		<int id="InitialState">0</int>
-	</class>
-	<class id="Mobius.AtomicModels.San.InstantaneousActivityPanelObject">
-		<int id="ClassVersion">1</int>
-		<class id="Mobius.AtomicModels.San.ActivityPanelObject">
-			<int id="ClassVersion">1</int>
-			<class id="Mobius.BaseClasses.ExtendedBaseVertexClass">
-				<int id="ClassVersion">1</int>
-				<class id="Mobius.BaseClasses.BaseVertexClass">
-					<int id="ClassVersion">3</int>
-					<class id="Mobius.BaseClasses.BasePanelObjectClass">
-						<int id="ClassVersion">5</int>
-						<string id="Name">[altFragmentName/]Activity</string>
-						<boolean id="ContainsLabel">true</boolean>
-						<boolean id="IsLabelShown">true</boolean>
-					</class>
-					<point id="CenterPoint">
-						<int id="x">[x+150/]</int>
-						<int id="y">[y/]</int>
-					</point>
-				</class>
-			</class>
-			<int id="NumberOfCases">[operands->size()/]</int>
-			<vector id="CaseDistributions">
-			[for (operand : InteractionOperand | operands)]
-				[let predicate : String = getPredicate(operand)]
-				<string id="[i-1/]">return([predicate/]);</string>[addToGlobalVars(predicate, globalvars)/]
-				[/let]
-			[/for]
-			</vector>[resetPredicateList()/]
-		</class>
-	</class>
-	[comment iterate over the operands/]
-	[for (operand : InteractionOperand | operands)]
-	[let attack : Message = getOperandAttack(operand)]
-	[comment places/]
-	<class id="Mobius.AtomicModels.San.PlacePanelObject">
-		<int id="ClassVersion">1</int>
-		<class id="Mobius.BaseClasses.BaseVertexClass">
-			<int id="ClassVersion">3</int>
-			<class id="Mobius.BaseClasses.BasePanelObjectClass">
-				<int id="ClassVersion">5</int>
-				<string id="Name">[attack.name/]</string>
-				<boolean id="ContainsLabel">true</boolean>
-				<boolean id="IsLabelShown">true</boolean>
-			</class>
-			<point id="CenterPoint">
-				<int id="x">[x+250/]</int>
-				<int id="y">[y+75*(i-1)/]</int>
-			</point>
-		</class>
-		<boolean id="ReadOnly">false</boolean>
-		<boolean id="ConstantMarking">true</boolean>
-		<int id="InitialState">0</int>
-	</class>
-	<class id="Mobius.AtomicModels.San.InstantaneousActivityPanelObject">
-		<int id="ClassVersion">1</int>
-		<class id="Mobius.AtomicModels.San.ActivityPanelObject">
-			<int id="ClassVersion">1</int>
-			<class id="Mobius.BaseClasses.ExtendedBaseVertexClass">
-				<int id="ClassVersion">1</int>
-				<class id="Mobius.BaseClasses.BaseVertexClass">
-					<int id="ClassVersion">3</int>
-					<class id="Mobius.BaseClasses.BasePanelObjectClass">
-						<int id="ClassVersion">5</int>
-						<string id="Name">[attack.name/]_activity</string>
-						<boolean id="ContainsLabel">true</boolean>
-						<boolean id="IsLabelShown">true</boolean>
-					</class>
-					<point id="CenterPoint">
-						<int id="x">[x+450/]</int>
-						<int id="y">[y+75*(i-1)/]</int>
-					</point>
-				</class>
-			</class>
-			[comment TODO: is it possible to model success prob?/]
-			<int id="NumberOfCases">2</int>
-			<vector id="CaseDistributions">
-				<string id="0">return([attack.name/]_success_prob);\t// Attack succeeds</string>
-				<string id="1">return(1.0 - [attack.name/]_success_prob);\t// Attack fails</string>
-			</vector>[addToGlobalVars(attack.name.concat('_success_prob'), globalvars)/]
-		</class>
-	</class>
-	<class id="Mobius.AtomicModels.San.PlacePanelObject">
-		<int id="ClassVersion">1</int>
-		<class id="Mobius.BaseClasses.BaseVertexClass">
-			<int id="ClassVersion">3</int>
-			<class id="Mobius.BaseClasses.BasePanelObjectClass">
-				<int id="ClassVersion">5</int>
-				<string id="Name">[attack.name/]_success</string>
-				<boolean id="ContainsLabel">true</boolean>
-				<boolean id="IsLabelShown">true</boolean>
-			</class>
-			<point id="CenterPoint">
-				<int id="x">[x+650/]</int>
-				<int id="y">[y+75*(i-1)/]</int>
-			</point>
-		</class>
-		<boolean id="ReadOnly">false</boolean>
-		<boolean id="ConstantMarking">true</boolean>
-		<int id="InitialState">0</int>
-	</class>
-	[comment edges/]
-	<class id="Mobius.BaseClasses.BaseEdgeClass">
-		<int id="ClassVersion">3</int>
-		<int id="LineType">0</int>
-		<string id="StartVertex">[altFragmentName/]Activity</string>
-		<string id="FinishVertex">End[altFragmentName/]</string>
-		<boolean id="Arrows">true</boolean>
-		<vector id="PointList">
-			<point id="0">
-				<int id="x">[x+150/]</int>
-				<int id="y">[y - getAltOffset(operands->size()-i, operands->size())/]</int>
-			</point>
-			<point id="1">
-				<int id="x">[x+250/]</int>
-				<int id="y">[y+operands->size()*75/]</int>
-			</point>
-		</vector>
-	</class>
-	<class id="Mobius.BaseClasses.BaseEdgeClass">
-		<int id="ClassVersion">3</int>
-		<int id="LineType">0</int>
-		<string id="StartVertex">[altFragmentName/]Activity</string>
-		<string id="FinishVertex">[attack.name/]</string>
-		<boolean id="Arrows">true</boolean>
-		<vector id="PointList">
-			<point id="0">
-				<int id="x">[x+150/]</int>
-				<int id="y">[y - getAltOffset(operands->size()-i, operands->size())/]</int>
-			</point>
-			<point id="1">
-				<int id="x">[x+250/]</int>
-				<int id="y">[y+75*(i-1)/]</int>
-			</point>
-		</vector>
-	</class>
-	<class id="Mobius.BaseClasses.BaseEdgeClass">
-		<int id="ClassVersion">3</int>
-		<int id="LineType">0</int>
-		<string id="StartVertex">[attack.name/]</string>
-		<string id="FinishVertex">[attack.name/]_activity</string>
-		<boolean id="Arrows">true</boolean>
-		<vector id="PointList">
-			<point id="0">
-				<int id="x">[x+250/]</int>
-				<int id="y">[y+75*(i-1)/]</int>
-			</point>
-			<point id="1">
-				<int id="x">[x+450/]</int>
-				<int id="y">[y+75*(i-1)/]</int>
-			</point>
-		</vector>
-	</class>
-	<class id="Mobius.BaseClasses.BaseEdgeClass">
-		<int id="ClassVersion">3</int>
-		<int id="LineType">0</int>
-		<string id="StartVertex">[attack.name/]_activity</string>
-		<string id="FinishVertex">[attack.name/]_success</string>
-		<boolean id="Arrows">true</boolean>
-		<vector id="PointList">
-			<point id="0">
-				<int id="x">[x+450/]</int>
-				<int id="y">[y+75*(i-1)-15/]</int>
-			</point>
-			<point id="1">
-				<int id="x">[x+650/]</int>
-				<int id="y">[y+75*(i-1)/]</int>
-			</point>
-		</vector>
-	</class>
-	<class id="Mobius.BaseClasses.BaseEdgeClass">
-		<int id="ClassVersion">3</int>
-		<int id="LineType">0</int>
-		<string id="StartVertex">[attack.name/]_activity</string>
-		<string id="FinishVertex">[altFragmentName/]_failed</string>
-		<boolean id="Arrows">true</boolean>
-		<vector id="PointList">
-			<point id="0">
-				<int id="x">[x+450/]</int>
-				<int id="y">[y+75*(i-1)/]</int>
-			</point>
-			<point id="1">
-				<int id="x">[x+750/]</int>
-				<int id="y">[y+operands->size()*75/]</int>
-			</point>
-		</vector>
-	</class>
-	[/let]
-	[/for]
-	[comment: start place is previous fragment end place/]	
-	<class id="Mobius.BaseClasses.BaseEdgeClass">
-		<int id="ClassVersion">3</int>
-		<int id="LineType">0</int>
-		<string id="StartVertex">[startPlace/]</string>
-		<string id="FinishVertex">[altFragmentName/]Activity</string>
-		<boolean id="Arrows">true</boolean>
-		<vector id="PointList">
-			<point id="0">
-				<int id="x">[startX/]</int>
-				<int id="y">[startY/]</int>
-			</point>
-			<point id="1">
-				<int id="x">[x+150/]</int>
-				<int id="y">[y/]</int>
-			</point>
-		</vector>
-	</class>
-	[/let]
-	[/let]
-	[/let]
-	[/let]
-[/template]
-
-[query public getPredicate(operand : InteractionOperand) : String =
-invoke('org.polarsys.chess.mobius.utils.TransformationUtil', 'getPredicate(org.eclipse.uml2.uml.InteractionOperand)', Sequence{operand})/]
-
-[query public getOperandAttack(operand : InteractionOperand) : Message =
-invoke('org.polarsys.chess.mobius.utils.TransformationUtil', 'getOperandAttack(org.eclipse.uml2.uml.InteractionOperand)', Sequence{operand})/]
-
-[query public resetPredicateList(ctx : OclAny) : OclAny =
-invoke('org.polarsys.chess.mobius.utils.TransformationUtil', 'resetPredicateList()', Sequence{})/]
-
-[query public getAltOffset(index : Integer, size : Integer) : Integer =
-invoke('org.polarsys.chess.mobius.utils.TransformationUtil', 'getAltOffset(java.lang.Integer, java.lang.Integer)', Sequence{index, size})/]
\ No newline at end of file
diff --git a/plugins/mobius/org.polarsys.chess.mobius/src/org/polarsys/chess/mobius/templates/AtomicComponentTemplate.java b/plugins/mobius/org.polarsys.chess.mobius/src/org/polarsys/chess/mobius/templates/AtomicComponentTemplate.java
deleted file mode 100644
index fcb0782..0000000
--- a/plugins/mobius/org.polarsys.chess.mobius/src/org/polarsys/chess/mobius/templates/AtomicComponentTemplate.java
+++ /dev/null
@@ -1,409 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2012 Obeo.
- * 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:
- *     Obeo - initial API and implementation
- *******************************************************************************/
-package org.polarsys.chess.mobius.templates;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.acceleo.engine.event.IAcceleoTextGenerationListener;
-import org.eclipse.acceleo.engine.generation.strategy.IAcceleoGenerationStrategy;
-import org.eclipse.acceleo.engine.service.AbstractAcceleoGenerator;
-import org.eclipse.emf.common.util.BasicMonitor;
-import org.eclipse.emf.common.util.Monitor;
-import org.eclipse.emf.common.util.URI;
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emf.ecore.resource.ResourceSet;
-
-/**
- * Entry point of the 'AtomicComponentTemplate' generation module.
- *
- * @generated
- */
-public class AtomicComponentTemplate extends AbstractAcceleoGenerator {
-    /**
-     * The name of the module.
-     *
-     * @generated
-     */
-    public static final String MODULE_FILE_NAME = "/org/polarsys/chess/mobius/templates/atomicComponentTemplate";
-    
-    /**
-     * The name of the templates that are to be generated.
-     *
-     * @generated
-     */
-    public static final String[] TEMPLATE_NAMES = { "atomicComponentTemplate" };
-    
-    /**
-     * The list of properties files from the launch parameters (Launch configuration).
-     *
-     * @generated
-     */
-    private List<String> propertiesFiles = new ArrayList<String>();
-
-    /**
-     * Allows the public constructor to be used. Note that a generator created
-     * this way cannot be used to launch generations before one of
-     * {@link #initialize(EObject, File, List)} or
-     * {@link #initialize(URI, File, List)} is called.
-     * <p>
-     * The main reason for this constructor is to allow clients of this
-     * generation to call it from another Java file, as it allows for the
-     * retrieval of {@link #getProperties()} and
-     * {@link #getGenerationListeners()}.
-     * </p>
-     *
-     * @generated
-     */
-    public AtomicComponentTemplate() {
-        // Empty implementation
-    }
-
-    /**
-     * This allows clients to instantiates a generator with all required information.
-     * 
-     * @param modelURI
-     *            URI where the model on which this generator will be used is located.
-     * @param targetFolder
-     *            This will be used as the output folder for this generation : it will be the base path
-     *            against which all file block URLs will be resolved.
-     * @param arguments
-     *            If the template which will be called requires more than one argument taken from the model,
-     *            pass them here.
-     * @throws IOException
-     *             This can be thrown in three scenarios : the module cannot be found, it cannot be loaded, or
-     *             the model cannot be loaded.
-     * @generated
-     */
-    public AtomicComponentTemplate(URI modelURI, File targetFolder,
-            List<? extends Object> arguments) throws IOException {
-        initialize(modelURI, targetFolder, arguments);
-    }
-
-    /**
-     * This allows clients to instantiates a generator with all required information.
-     * 
-     * @param model
-     *            We'll iterate over the content of this element to find Objects matching the first parameter
-     *            of the template we need to call.
-     * @param targetFolder
-     *            This will be used as the output folder for this generation : it will be the base path
-     *            against which all file block URLs will be resolved.
-     * @param arguments
-     *            If the template which will be called requires more than one argument taken from the model,
-     *            pass them here.
-     * @throws IOException
-     *             This can be thrown in two scenarios : the module cannot be found, or it cannot be loaded.
-     * @generated
-     */
-    public AtomicComponentTemplate(EObject model, File targetFolder,
-            List<? extends Object> arguments) throws IOException {
-        initialize(model, targetFolder, arguments);
-    }
-    
-    /**
-     * This can be used to launch the generation from a standalone application.
-     * 
-     * @param args
-     *            Arguments of the generation.
-     * @generated
-     */
-    public static void main(String[] args) {
-        try {
-            if (args.length < 2) {
-                System.out.println("Arguments not valid : {model, folder}.");
-            } else {
-                URI modelURI = URI.createFileURI(args[0]);
-                File folder = new File(args[1]);
-                
-                List<String> arguments = new ArrayList<String>();
-                
-                /*
-                 * If you want to change the content of this method, do NOT forget to change the "@generated"
-                 * tag in the Javadoc of this method to "@generated NOT". Without this new tag, any compilation
-                 * of the Acceleo module with the main template that has caused the creation of this class will
-                 * revert your modifications.
-                 */
-
-                /*
-                 * Add in this list all the arguments used by the starting point of the generation
-                 * If your main template is called on an element of your model and a String, you can
-                 * add in "arguments" this "String" attribute.
-                 */
-                
-                AtomicComponentTemplate generator = new AtomicComponentTemplate(modelURI, folder, arguments);
-                
-                /*
-                 * Add the properties from the launch arguments.
-                 * If you want to programmatically add new properties, add them in "propertiesFiles"
-                 * You can add the absolute path of a properties files, or even a project relative path.
-                 * If you want to add another "protocol" for your properties files, please override 
-                 * "getPropertiesLoaderService(AcceleoService)" in order to return a new property loader.
-                 * The behavior of the properties loader service is explained in the Acceleo documentation
-                 * (Help -> Help Contents).
-                 */
-                 
-                for (int i = 2; i < args.length; i++) {
-                    generator.addPropertiesFile(args[i]);
-                }
-                
-                generator.doGenerate(new BasicMonitor());
-            }
-        } catch (IOException e) {
-            e.printStackTrace();
-        }
-    }
-
-    /**
-     * Launches the generation described by this instance.
-     * 
-     * @param monitor
-     *            This will be used to display progress information to the user.
-     * @throws IOException
-     *             This will be thrown if any of the output files cannot be saved to disk.
-     * @generated
-     */
-    @Override
-    public void doGenerate(Monitor monitor) throws IOException {
-        /*
-         * TODO if you wish to change the generation as a whole, override this. The default behavior should
-         * be sufficient in most cases. If you want to change the content of this method, do NOT forget to
-         * change the "@generated" tag in the Javadoc of this method to "@generated NOT". Without this new tag,
-         * any compilation of the Acceleo module with the main template that has caused the creation of this
-         * class will revert your modifications. If you encounter a problem with an unresolved proxy during the
-         * generation, you can remove the comments in the following instructions to check for problems. Please
-         * note that those instructions may have a significant impact on the performances.
-         */
-
-        //org.eclipse.emf.ecore.util.EcoreUtil.resolveAll(model);
-
-        /*
-         * If you want to check for potential errors in your models before the launch of the generation, you
-         * use the code below.
-         */
-
-        //if (model != null && model.eResource() != null) {
-        //    List<org.eclipse.emf.ecore.resource.Resource.Diagnostic> errors = model.eResource().getErrors();
-        //    for (org.eclipse.emf.ecore.resource.Resource.Diagnostic diagnostic : errors) {
-        //        System.err.println(diagnostic.toString());
-        //    }
-        //}
-
-        super.doGenerate(monitor);
-    }
-    
-    /**
-     * If this generator needs to listen to text generation events, listeners can be returned from here.
-     * 
-     * @return List of listeners that are to be notified when text is generated through this launch.
-     * @generated
-     */
-    @Override
-    public List<IAcceleoTextGenerationListener> getGenerationListeners() {
-        List<IAcceleoTextGenerationListener> listeners = super.getGenerationListeners();
-        /*
-         * TODO if you need to listen to generation event, add listeners to the list here. If you want to change
-         * the content of this method, do NOT forget to change the "@generated" tag in the Javadoc of this method
-         * to "@generated NOT". Without this new tag, any compilation of the Acceleo module with the main template
-         * that has caused the creation of this class will revert your modifications.
-         */
-        return listeners;
-    }
-    
-    /**
-     * If you need to change the way files are generated, this is your entry point.
-     * <p>
-     * The default is {@link org.eclipse.acceleo.engine.generation.strategy.DefaultStrategy}; it generates
-     * files on the fly. If you only need to preview the results, return a new
-     * {@link org.eclipse.acceleo.engine.generation.strategy.PreviewStrategy}. Both of these aren't aware of
-     * the running Eclipse and can be used standalone.
-     * </p>
-     * <p>
-     * If you need the file generation to be aware of the workspace (A typical example is when you wanna
-     * override files that are under clear case or any other VCS that could forbid the overriding), then
-     * return a new {@link org.eclipse.acceleo.engine.generation.strategy.WorkspaceAwareStrategy}.
-     * <b>Note</b>, however, that this <b>cannot</b> be used standalone.
-     * </p>
-     * <p>
-     * All three of these default strategies support merging through JMerge.
-     * </p>
-     * 
-     * @return The generation strategy that is to be used for generations launched through this launcher.
-     * @generated
-     */
-    @Override
-    public IAcceleoGenerationStrategy getGenerationStrategy() {
-        return super.getGenerationStrategy();
-    }
-    
-    /**
-     * This will be called in order to find and load the module that will be launched through this launcher.
-     * We expect this name not to contain file extension, and the module to be located beside the launcher.
-     * 
-     * @return The name of the module that is to be launched.
-     * @generated
-     */
-    @Override
-    public String getModuleName() {
-        return MODULE_FILE_NAME;
-    }
-    
-    /**
-     * If the module(s) called by this launcher require properties files, return their qualified path from
-     * here.Take note that the first added properties files will take precedence over subsequent ones if they
-     * contain conflicting keys.
-     * 
-     * @return The list of properties file we need to add to the generation context.
-     * @see java.util.ResourceBundle#getBundle(String)
-     * @generated
-     */
-    @Override
-    public List<String> getProperties() {
-        /*
-         * If you want to change the content of this method, do NOT forget to change the "@generated"
-         * tag in the Javadoc of this method to "@generated NOT". Without this new tag, any compilation
-         * of the Acceleo module with the main template that has caused the creation of this class will
-         * revert your modifications.
-         */
-
-        /*
-         * TODO if your generation module requires access to properties files, add their qualified path to the list here.
-         * 
-         * Properties files can be located in an Eclipse plug-in or in the file system (all Acceleo projects are Eclipse
-         * plug-in). In order to use properties files located in an Eclipse plugin, you need to add the path of the properties
-         * files to the "propertiesFiles" list:
-         * 
-         * final String prefix = "platform:/plugin/";
-         * final String pluginName = "org.eclipse.acceleo.module.sample";
-         * final String packagePath = "/org/eclipse/acceleo/module/sample/properties/";
-         * final String fileName = "default.properties";
-         * propertiesFiles.add(prefix + pluginName + packagePath + fileName);
-         * 
-         * With this mechanism, you can load properties files from your plugin or from another plugin.
-         * 
-         * You may want to load properties files from the file system, for that you need to add the absolute path of the file:
-         * 
-         * propertiesFiles.add("C:\Users\MyName\MyFile.properties");
-         * 
-         * If you want to let your users add properties files located in the same folder as the model:
-         *
-         * if (EMFPlugin.IS_ECLIPSE_RUNNING && model != null && model.eResource() != null) { 
-         *     propertiesFiles.addAll(AcceleoEngineUtils.getPropertiesFilesNearModel(model.eResource()));
-         * }
-         * 
-         * To learn more about Properties Files, have a look at the Acceleo documentation (Help -> Help Contents).
-         */
-        return propertiesFiles;
-    }
-    
-    /**
-     * Adds a properties file in the list of properties files.
-     * 
-     * @param propertiesFile
-     *            The properties file to add.
-     * @generated
-     * @since 3.1
-     */
-    @Override
-    public void addPropertiesFile(String propertiesFile) {
-        this.propertiesFiles.add(propertiesFile);
-    }
-    
-    /**
-     * This will be used to get the list of templates that are to be launched by this launcher.
-     * 
-     * @return The list of templates to call on the module {@link #getModuleName()}.
-     * @generated
-     */
-    @Override
-    public String[] getTemplateNames() {
-        return TEMPLATE_NAMES;
-    }
-    
-    /**
-     * This can be used to update the resource set's package registry with all needed EPackages.
-     * 
-     * @param resourceSet
-     *            The resource set which registry has to be updated.
-     * @generated
-     */
-    @Override
-    public void registerPackages(ResourceSet resourceSet) {
-        super.registerPackages(resourceSet);
-        if (!isInWorkspace(org.eclipse.uml2.uml.UMLPackage.class)) {
-            resourceSet.getPackageRegistry().put(org.eclipse.uml2.uml.UMLPackage.eINSTANCE.getNsURI(), org.eclipse.uml2.uml.UMLPackage.eINSTANCE);
-        }
-        
-        /*
-         * If you want to change the content of this method, do NOT forget to change the "@generated"
-         * tag in the Javadoc of this method to "@generated NOT". Without this new tag, any compilation
-         * of the Acceleo module with the main template that has caused the creation of this class will
-         * revert your modifications.
-         */
-        
-        /*
-         * If you need additional package registrations, you can register them here. The following line
-         * (in comment) is an example of the package registration for UML.
-         * 
-         * You can use the method  "isInWorkspace(Class c)" to check if the package that you are about to
-         * register is in the workspace.
-         * 
-         * To register a package properly, please follow the following conventions:
-         *
-         * If the package is located in another plug-in, already installed in Eclipse. The following content should
-         * have been generated at the beginning of this method. Do not register the package using this mechanism if
-         * the metamodel is located in the workspace.
-         *  
-         * if (!isInWorkspace(UMLPackage.class)) {
-         *     // The normal package registration if your metamodel is in a plugin.
-         *     resourceSet.getPackageRegistry().put(UMLPackage.eNS_URI, UMLPackage.eINSTANCE);
-         * }
-         * 
-         * If the package is located in another project in your workspace, the plugin containing the package has not
-         * been register by EMF and Acceleo should register it automatically. If you want to use the generator in
-         * stand alone, the regular registration (seen a couple lines before) is needed.
-         * 
-         * To learn more about Package Registration, have a look at the Acceleo documentation (Help -> Help Contents).
-         */
-    }
-
-    /**
-     * This can be used to update the resource set's resource factory registry with all needed factories.
-     * 
-     * @param resourceSet
-     *            The resource set which registry has to be updated.
-     * @generated
-     */
-    @Override
-    public void registerResourceFactories(ResourceSet resourceSet) {
-        super.registerResourceFactories(resourceSet);
-        /*
-         * If you want to change the content of this method, do NOT forget to change the "@generated"
-         * tag in the Javadoc of this method to "@generated NOT". Without this new tag, any compilation
-         * of the Acceleo module with the main template that has caused the creation of this class will
-         * revert your modifications.
-         */
-        
-        /*
-         * TODO If you need additional resource factories registrations, you can register them here. the following line
-         * (in comment) is an example of the resource factory registration for UML.
-         *
-         * If you want to use the generator in stand alone, the resource factory registration will be required.
-         *  
-         * To learn more about the registration of Resource Factories, have a look at the Acceleo documentation (Help -> Help Contents). 
-         */ 
-        
-        // resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put(UMLResource.FILE_EXTENSION, UMLResource.Factory.INSTANCE);
-    }
-    
-}
diff --git a/plugins/mobius/org.polarsys.chess.mobius/src/org/polarsys/chess/mobius/templates/AtomicComponentTemplate_sanmodel.java b/plugins/mobius/org.polarsys.chess.mobius/src/org/polarsys/chess/mobius/templates/AtomicComponentTemplate_sanmodel.java
index b651c90..a3a1557 100644
--- a/plugins/mobius/org.polarsys.chess.mobius/src/org/polarsys/chess/mobius/templates/AtomicComponentTemplate_sanmodel.java
+++ b/plugins/mobius/org.polarsys.chess.mobius/src/org/polarsys/chess/mobius/templates/AtomicComponentTemplate_sanmodel.java
@@ -340,9 +340,6 @@
     @Override
     public void registerPackages(ResourceSet resourceSet) {
         super.registerPackages(resourceSet);
-        if (!isInWorkspace(org.polarsys.chess.mobius.model.SAN.SANModelPackage.class)) {
-            resourceSet.getPackageRegistry().put(org.polarsys.chess.mobius.model.SAN.SANModelPackage.eINSTANCE.getNsURI(), org.polarsys.chess.mobius.model.SAN.SANModelPackage.eINSTANCE);
-        }
         
         /*
          * If you want to change the content of this method, do NOT forget to change the "@generated"
diff --git a/plugins/mobius/org.polarsys.chess.mobius/src/org/polarsys/chess/mobius/templates/AttackScenarioTemplate.java b/plugins/mobius/org.polarsys.chess.mobius/src/org/polarsys/chess/mobius/templates/AttackScenarioTemplate.java
deleted file mode 100644
index 419d411..0000000
--- a/plugins/mobius/org.polarsys.chess.mobius/src/org/polarsys/chess/mobius/templates/AttackScenarioTemplate.java
+++ /dev/null
@@ -1,409 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2012 Obeo.
- * 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:
- *     Obeo - initial API and implementation
- *******************************************************************************/
-package org.polarsys.chess.mobius.templates;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.acceleo.engine.event.IAcceleoTextGenerationListener;
-import org.eclipse.acceleo.engine.generation.strategy.IAcceleoGenerationStrategy;
-import org.eclipse.acceleo.engine.service.AbstractAcceleoGenerator;
-import org.eclipse.emf.common.util.BasicMonitor;
-import org.eclipse.emf.common.util.Monitor;
-import org.eclipse.emf.common.util.URI;
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emf.ecore.resource.ResourceSet;
-
-/**
- * Entry point of the 'AttackScenarioTemplate' generation module.
- *
- * @generated
- */
-public class AttackScenarioTemplate extends AbstractAcceleoGenerator {
-    /**
-     * The name of the module.
-     *
-     * @generated
-     */
-    public static final String MODULE_FILE_NAME = "/org/polarsys/chess/mobius/templates/AttackScenarioTemplate";
-    
-    /**
-     * The name of the templates that are to be generated.
-     *
-     * @generated
-     */
-    public static final String[] TEMPLATE_NAMES = { "AttackScenarioTemplate" };
-    
-    /**
-     * The list of properties files from the launch parameters (Launch configuration).
-     *
-     * @generated
-     */
-    private List<String> propertiesFiles = new ArrayList<String>();
-
-    /**
-     * Allows the public constructor to be used. Note that a generator created
-     * this way cannot be used to launch generations before one of
-     * {@link #initialize(EObject, File, List)} or
-     * {@link #initialize(URI, File, List)} is called.
-     * <p>
-     * The main reason for this constructor is to allow clients of this
-     * generation to call it from another Java file, as it allows for the
-     * retrieval of {@link #getProperties()} and
-     * {@link #getGenerationListeners()}.
-     * </p>
-     *
-     * @generated
-     */
-    public AttackScenarioTemplate() {
-        // Empty implementation
-    }
-
-    /**
-     * This allows clients to instantiates a generator with all required information.
-     * 
-     * @param modelURI
-     *            URI where the model on which this generator will be used is located.
-     * @param targetFolder
-     *            This will be used as the output folder for this generation : it will be the base path
-     *            against which all file block URLs will be resolved.
-     * @param arguments
-     *            If the template which will be called requires more than one argument taken from the model,
-     *            pass them here.
-     * @throws IOException
-     *             This can be thrown in three scenarios : the module cannot be found, it cannot be loaded, or
-     *             the model cannot be loaded.
-     * @generated
-     */
-    public AttackScenarioTemplate(URI modelURI, File targetFolder,
-            List<? extends Object> arguments) throws IOException {
-        initialize(modelURI, targetFolder, arguments);
-    }
-
-    /**
-     * This allows clients to instantiates a generator with all required information.
-     * 
-     * @param model
-     *            We'll iterate over the content of this element to find Objects matching the first parameter
-     *            of the template we need to call.
-     * @param targetFolder
-     *            This will be used as the output folder for this generation : it will be the base path
-     *            against which all file block URLs will be resolved.
-     * @param arguments
-     *            If the template which will be called requires more than one argument taken from the model,
-     *            pass them here.
-     * @throws IOException
-     *             This can be thrown in two scenarios : the module cannot be found, or it cannot be loaded.
-     * @generated
-     */
-    public AttackScenarioTemplate(EObject model, File targetFolder,
-            List<? extends Object> arguments) throws IOException {
-        initialize(model, targetFolder, arguments);
-    }
-    
-    /**
-     * This can be used to launch the generation from a standalone application.
-     * 
-     * @param args
-     *            Arguments of the generation.
-     * @generated
-     */
-    public static void main(String[] args) {
-        try {
-            if (args.length < 2) {
-                System.out.println("Arguments not valid : {model, folder}.");
-            } else {
-                URI modelURI = URI.createFileURI(args[0]);
-                File folder = new File(args[1]);
-                
-                List<String> arguments = new ArrayList<String>();
-                
-                /*
-                 * If you want to change the content of this method, do NOT forget to change the "@generated"
-                 * tag in the Javadoc of this method to "@generated NOT". Without this new tag, any compilation
-                 * of the Acceleo module with the main template that has caused the creation of this class will
-                 * revert your modifications.
-                 */
-
-                /*
-                 * Add in this list all the arguments used by the starting point of the generation
-                 * If your main template is called on an element of your model and a String, you can
-                 * add in "arguments" this "String" attribute.
-                 */
-                
-                AttackScenarioTemplate generator = new AttackScenarioTemplate(modelURI, folder, arguments);
-                
-                /*
-                 * Add the properties from the launch arguments.
-                 * If you want to programmatically add new properties, add them in "propertiesFiles"
-                 * You can add the absolute path of a properties files, or even a project relative path.
-                 * If you want to add another "protocol" for your properties files, please override 
-                 * "getPropertiesLoaderService(AcceleoService)" in order to return a new property loader.
-                 * The behavior of the properties loader service is explained in the Acceleo documentation
-                 * (Help -> Help Contents).
-                 */
-                 
-                for (int i = 2; i < args.length; i++) {
-                    generator.addPropertiesFile(args[i]);
-                }
-                
-                generator.doGenerate(new BasicMonitor());
-            }
-        } catch (IOException e) {
-            e.printStackTrace();
-        }
-    }
-
-    /**
-     * Launches the generation described by this instance.
-     * 
-     * @param monitor
-     *            This will be used to display progress information to the user.
-     * @throws IOException
-     *             This will be thrown if any of the output files cannot be saved to disk.
-     * @generated
-     */
-    @Override
-    public void doGenerate(Monitor monitor) throws IOException {
-        /*
-         * TODO if you wish to change the generation as a whole, override this. The default behavior should
-         * be sufficient in most cases. If you want to change the content of this method, do NOT forget to
-         * change the "@generated" tag in the Javadoc of this method to "@generated NOT". Without this new tag,
-         * any compilation of the Acceleo module with the main template that has caused the creation of this
-         * class will revert your modifications. If you encounter a problem with an unresolved proxy during the
-         * generation, you can remove the comments in the following instructions to check for problems. Please
-         * note that those instructions may have a significant impact on the performances.
-         */
-
-        //org.eclipse.emf.ecore.util.EcoreUtil.resolveAll(model);
-
-        /*
-         * If you want to check for potential errors in your models before the launch of the generation, you
-         * use the code below.
-         */
-
-        //if (model != null && model.eResource() != null) {
-        //    List<org.eclipse.emf.ecore.resource.Resource.Diagnostic> errors = model.eResource().getErrors();
-        //    for (org.eclipse.emf.ecore.resource.Resource.Diagnostic diagnostic : errors) {
-        //        System.err.println(diagnostic.toString());
-        //    }
-        //}
-
-        super.doGenerate(monitor);
-    }
-    
-    /**
-     * If this generator needs to listen to text generation events, listeners can be returned from here.
-     * 
-     * @return List of listeners that are to be notified when text is generated through this launch.
-     * @generated
-     */
-    @Override
-    public List<IAcceleoTextGenerationListener> getGenerationListeners() {
-        List<IAcceleoTextGenerationListener> listeners = super.getGenerationListeners();
-        /*
-         * TODO if you need to listen to generation event, add listeners to the list here. If you want to change
-         * the content of this method, do NOT forget to change the "@generated" tag in the Javadoc of this method
-         * to "@generated NOT". Without this new tag, any compilation of the Acceleo module with the main template
-         * that has caused the creation of this class will revert your modifications.
-         */
-        return listeners;
-    }
-    
-    /**
-     * If you need to change the way files are generated, this is your entry point.
-     * <p>
-     * The default is {@link org.eclipse.acceleo.engine.generation.strategy.DefaultStrategy}; it generates
-     * files on the fly. If you only need to preview the results, return a new
-     * {@link org.eclipse.acceleo.engine.generation.strategy.PreviewStrategy}. Both of these aren't aware of
-     * the running Eclipse and can be used standalone.
-     * </p>
-     * <p>
-     * If you need the file generation to be aware of the workspace (A typical example is when you wanna
-     * override files that are under clear case or any other VCS that could forbid the overriding), then
-     * return a new {@link org.eclipse.acceleo.engine.generation.strategy.WorkspaceAwareStrategy}.
-     * <b>Note</b>, however, that this <b>cannot</b> be used standalone.
-     * </p>
-     * <p>
-     * All three of these default strategies support merging through JMerge.
-     * </p>
-     * 
-     * @return The generation strategy that is to be used for generations launched through this launcher.
-     * @generated
-     */
-    @Override
-    public IAcceleoGenerationStrategy getGenerationStrategy() {
-        return super.getGenerationStrategy();
-    }
-    
-    /**
-     * This will be called in order to find and load the module that will be launched through this launcher.
-     * We expect this name not to contain file extension, and the module to be located beside the launcher.
-     * 
-     * @return The name of the module that is to be launched.
-     * @generated
-     */
-    @Override
-    public String getModuleName() {
-        return MODULE_FILE_NAME;
-    }
-    
-    /**
-     * If the module(s) called by this launcher require properties files, return their qualified path from
-     * here.Take note that the first added properties files will take precedence over subsequent ones if they
-     * contain conflicting keys.
-     * 
-     * @return The list of properties file we need to add to the generation context.
-     * @see java.util.ResourceBundle#getBundle(String)
-     * @generated
-     */
-    @Override
-    public List<String> getProperties() {
-        /*
-         * If you want to change the content of this method, do NOT forget to change the "@generated"
-         * tag in the Javadoc of this method to "@generated NOT". Without this new tag, any compilation
-         * of the Acceleo module with the main template that has caused the creation of this class will
-         * revert your modifications.
-         */
-
-        /*
-         * TODO if your generation module requires access to properties files, add their qualified path to the list here.
-         * 
-         * Properties files can be located in an Eclipse plug-in or in the file system (all Acceleo projects are Eclipse
-         * plug-in). In order to use properties files located in an Eclipse plugin, you need to add the path of the properties
-         * files to the "propertiesFiles" list:
-         * 
-         * final String prefix = "platform:/plugin/";
-         * final String pluginName = "org.eclipse.acceleo.module.sample";
-         * final String packagePath = "/org/eclipse/acceleo/module/sample/properties/";
-         * final String fileName = "default.properties";
-         * propertiesFiles.add(prefix + pluginName + packagePath + fileName);
-         * 
-         * With this mechanism, you can load properties files from your plugin or from another plugin.
-         * 
-         * You may want to load properties files from the file system, for that you need to add the absolute path of the file:
-         * 
-         * propertiesFiles.add("C:\Users\MyName\MyFile.properties");
-         * 
-         * If you want to let your users add properties files located in the same folder as the model:
-         *
-         * if (EMFPlugin.IS_ECLIPSE_RUNNING && model != null && model.eResource() != null) { 
-         *     propertiesFiles.addAll(AcceleoEngineUtils.getPropertiesFilesNearModel(model.eResource()));
-         * }
-         * 
-         * To learn more about Properties Files, have a look at the Acceleo documentation (Help -> Help Contents).
-         */
-        return propertiesFiles;
-    }
-    
-    /**
-     * Adds a properties file in the list of properties files.
-     * 
-     * @param propertiesFile
-     *            The properties file to add.
-     * @generated
-     * @since 3.1
-     */
-    @Override
-    public void addPropertiesFile(String propertiesFile) {
-        this.propertiesFiles.add(propertiesFile);
-    }
-    
-    /**
-     * This will be used to get the list of templates that are to be launched by this launcher.
-     * 
-     * @return The list of templates to call on the module {@link #getModuleName()}.
-     * @generated
-     */
-    @Override
-    public String[] getTemplateNames() {
-        return TEMPLATE_NAMES;
-    }
-    
-    /**
-     * This can be used to update the resource set's package registry with all needed EPackages.
-     * 
-     * @param resourceSet
-     *            The resource set which registry has to be updated.
-     * @generated
-     */
-    @Override
-    public void registerPackages(ResourceSet resourceSet) {
-        super.registerPackages(resourceSet);
-        if (!isInWorkspace(org.eclipse.uml2.uml.UMLPackage.class)) {
-            resourceSet.getPackageRegistry().put(org.eclipse.uml2.uml.UMLPackage.eINSTANCE.getNsURI(), org.eclipse.uml2.uml.UMLPackage.eINSTANCE);
-        }
-        
-        /*
-         * If you want to change the content of this method, do NOT forget to change the "@generated"
-         * tag in the Javadoc of this method to "@generated NOT". Without this new tag, any compilation
-         * of the Acceleo module with the main template that has caused the creation of this class will
-         * revert your modifications.
-         */
-        
-        /*
-         * If you need additional package registrations, you can register them here. The following line
-         * (in comment) is an example of the package registration for UML.
-         * 
-         * You can use the method  "isInWorkspace(Class c)" to check if the package that you are about to
-         * register is in the workspace.
-         * 
-         * To register a package properly, please follow the following conventions:
-         *
-         * If the package is located in another plug-in, already installed in Eclipse. The following content should
-         * have been generated at the beginning of this method. Do not register the package using this mechanism if
-         * the metamodel is located in the workspace.
-         *  
-         * if (!isInWorkspace(UMLPackage.class)) {
-         *     // The normal package registration if your metamodel is in a plugin.
-         *     resourceSet.getPackageRegistry().put(UMLPackage.eNS_URI, UMLPackage.eINSTANCE);
-         * }
-         * 
-         * If the package is located in another project in your workspace, the plugin containing the package has not
-         * been register by EMF and Acceleo should register it automatically. If you want to use the generator in
-         * stand alone, the regular registration (seen a couple lines before) is needed.
-         * 
-         * To learn more about Package Registration, have a look at the Acceleo documentation (Help -> Help Contents).
-         */
-    }
-
-    /**
-     * This can be used to update the resource set's resource factory registry with all needed factories.
-     * 
-     * @param resourceSet
-     *            The resource set which registry has to be updated.
-     * @generated
-     */
-    @Override
-    public void registerResourceFactories(ResourceSet resourceSet) {
-        super.registerResourceFactories(resourceSet);
-        /*
-         * If you want to change the content of this method, do NOT forget to change the "@generated"
-         * tag in the Javadoc of this method to "@generated NOT". Without this new tag, any compilation
-         * of the Acceleo module with the main template that has caused the creation of this class will
-         * revert your modifications.
-         */
-        
-        /*
-         * TODO If you need additional resource factories registrations, you can register them here. the following line
-         * (in comment) is an example of the resource factory registration for UML.
-         *
-         * If you want to use the generator in stand alone, the resource factory registration will be required.
-         *  
-         * To learn more about the registration of Resource Factories, have a look at the Acceleo documentation (Help -> Help Contents). 
-         */ 
-        
-        // resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put(UMLResource.FILE_EXTENSION, UMLResource.Factory.INSTANCE);
-    }
-    
-}
diff --git a/plugins/mobius/org.polarsys.chess.mobius/src/org/polarsys/chess/mobius/templates/AttackScenarioTemplate.mtl b/plugins/mobius/org.polarsys.chess.mobius/src/org/polarsys/chess/mobius/templates/AttackScenarioTemplate.mtl
deleted file mode 100644
index 48b7120..0000000
--- a/plugins/mobius/org.polarsys.chess.mobius/src/org/polarsys/chess/mobius/templates/AttackScenarioTemplate.mtl
+++ /dev/null
@@ -1,439 +0,0 @@
-[comment
-/*********************************************************************
-* Copyright (c) 2019 Intecs Solutions SpA
-*
-* This program and the accompanying materials are made
-* available under the terms of the Eclipse Public License 2.0
-* which is available at https://www.eclipse.org/legal/epl-2.0/
-*
-* SPDX-License-Identifier: EPL-2.0
-*
-* Contributors: 
-*   Intecs Solutions - Initial API and implementation
-*   
-**********************************************************************/
-/]
-[comment encoding = UTF-8 /]
-[module AttackScenarioTemplate('http://www.eclipse.org/uml2/3.0.0/UML')/]
-[import org::polarsys::chess::mobius::templates::projectFileTemplate /]
-[import org::polarsys::chess::mobius::templates::SingleAttackTemplate /]
-[import org::polarsys::chess::mobius::templates::AltFragmentTemplate /]
-[import org::polarsys::chess::mobius::templates::OptFragmentTemplate /]
-[import org::polarsys::chess::mobius::templates::LoopFragmentTemplate /]
-[import org::polarsys::chess::mobius::templates::DelayTemplate /]
-
-[template public AttackScenarioTemplate(model : Model, scenarioQN : String)]
-	[comment @main /]
-	[let scenarioName : String = getNameFromQN(scenarioQN)]
-	[file (scenarioName.concat('.san'), false, 'UTF-8')]
-	[let globalvars : Set(String) = getEmptyStringSet()]
-	[let x : Integer = 50]
-	[let y : Integer = 100]
-	[comment the first part is the "start" attack fragment /]
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<class id="Mobius.AtomicModels.San.SanInterface">
-	<int id="ClassVersion">1</int>
-	<class id="Mobius.BaseClasses.BaseInterfaceClass">
-		<int id="ClassVersion">3</int>
-		<string id="ModelName">[scenarioName/]</string>
-		<class id="Mobius.AtomicModels.San.SanInfoClass">
-			<int id="ClassVersion">5</int>
-			<class id="Mobius.BaseClasses.BaseInfoClass">
-				<int id="ClassVersion">2</int>
-			</class>
-			<class id="Mobius.AtomicModels.San.SanTypeManager">
-				<int id="ClassVersion">1</int>
-				<int id="typeListModelSize">0</int>
-			</class>
-			<string id="CustomInitialization"></string>
-		</class>
-		<class id="Mobius.AtomicModels.San.SanEditor">
-			<int id="ClassVersion">3</int>
-			<class id="Mobius.BaseClasses.BaseEditorClass">
-				<int id="ClassVersion">3</int>
-				<boolean id="HasPanel">true</boolean>
-				<class id="Mobius.BaseClasses.BasePanelClass">
-					<int id="ClassVersion">2</int>
-					<point id="Size of Panel">
-						<int id="x">1000</int>
-						<int id="y">1000</int>
-					</point>
-					<double id="ZoomFactor">1.0</double>
-					<boolean id="ShowGridEnabled">true</boolean>
-					<int id="ShowGridStep">10</int>
-					<boolean id="SnapGridEnabled">true</boolean>
-					<int id="SnapGridStep">10</int>
-					<class id="Mobius.AtomicModels.San.PlacePanelObject">
-						<int id="ClassVersion">1</int>
-						<class id="Mobius.BaseClasses.BaseVertexClass">
-							<int id="ClassVersion">3</int>
-							<class id="Mobius.BaseClasses.BasePanelObjectClass">
-								<int id="ClassVersion">5</int>
-								<string id="Name">Idle</string>
-								<boolean id="ContainsLabel">true</boolean>
-								<boolean id="IsLabelShown">true</boolean>
-							</class>
-							<point id="CenterPoint">
-								<int id="x">[x/]</int>
-								<int id="y">[y/]</int>
-							</point>
-						</class>
-						<boolean id="ReadOnly">false</boolean>
-						<boolean id="ConstantMarking">true</boolean>
-						<int id="InitialState">1</int>
-					</class>
-					<class id="Mobius.AtomicModels.San.PlacePanelObject">
-						<int id="ClassVersion">1</int>
-						<class id="Mobius.BaseClasses.BaseVertexClass">
-							<int id="ClassVersion">3</int>
-							<class id="Mobius.BaseClasses.BasePanelObjectClass">
-								<int id="ClassVersion">5</int>
-								<string id="Name">[scenarioName/]Attempted</string>
-								<boolean id="ContainsLabel">true</boolean>
-								<boolean id="IsLabelShown">true</boolean>
-							</class>
-							<point id="CenterPoint">
-								<int id="x">[x + 300/]</int>
-								<int id="y">[y/]</int>
-							</point>
-						</class>
-						<boolean id="ReadOnly">false</boolean>
-						<boolean id="ConstantMarking">true</boolean>
-						<int id="InitialState">0</int>
-					</class>
-					[comment the "launched" place is the end/]
-					<class id="Mobius.AtomicModels.San.PlacePanelObject">
-						<int id="ClassVersion">1</int>
-						<class id="Mobius.BaseClasses.BaseVertexClass">
-							<int id="ClassVersion">3</int>
-							<class id="Mobius.BaseClasses.BasePanelObjectClass">
-								<int id="ClassVersion">5</int>
-								<string id="Name">[scenarioName/]Launched</string>[setStartPlace(scenarioName.concat('Launched'))/]
-								<boolean id="ContainsLabel">true</boolean>
-								<boolean id="IsLabelShown">true</boolean>
-							</class>
-							<point id="CenterPoint">
-								<int id="x">[x + 600/]</int>[setStartX(x+600)/]
-								<int id="y">[y - 50/]</int>[setStartY(y+50)/]
-							</point>
-						</class>
-						<boolean id="ReadOnly">false</boolean>
-						<boolean id="ConstantMarking">true</boolean>
-						<int id="InitialState">0</int>
-					</class>
-					<class id="Mobius.AtomicModels.San.PlacePanelObject">
-						<int id="ClassVersion">1</int>
-						<class id="Mobius.BaseClasses.BaseVertexClass">
-							<int id="ClassVersion">3</int>
-							<class id="Mobius.BaseClasses.BasePanelObjectClass">
-								<int id="ClassVersion">5</int>
-								<string id="Name">[scenarioName/]Blocked</string>
-								<boolean id="ContainsLabel">true</boolean>
-								<boolean id="IsLabelShown">true</boolean>
-							</class>
-							<point id="CenterPoint">
-								<int id="x">[x + 600/]</int>
-								<int id="y">[y + 50/]</int>
-							</point>
-						</class>
-						<boolean id="ReadOnly">false</boolean>
-						<boolean id="ConstantMarking">true</boolean>
-						<int id="InitialState">0</int>
-					</class>
-					<class id="Mobius.AtomicModels.San.OutputGatePanelObject">
-						<int id="ClassVersion">1</int>
-						<class id="Mobius.BaseClasses.BaseVertexClass">
-							<int id="ClassVersion">3</int>
-							<class id="Mobius.BaseClasses.BasePanelObjectClass">
-								<int id="ClassVersion">5</int>
-								<string id="Name">[scenarioName/]OutputGate</string>
-								<boolean id="ContainsLabel">true</boolean>
-								<boolean id="IsLabelShown">true</boolean>
-							</class>
-							<point id="CenterPoint">
-								<int id="x">[x + 250/]</int>
-								<int id="y">[y - 50/]</int>
-							</point>
-						</class>
-						<boolean id="MirrorImage">false</boolean>
-						<string id="Function">
-							Idle-&gt;Mark() = 1;\t// Implies continuous attacks with giv
-							en intensity;
-						</string>
-					</class>
-					<class id="Mobius.AtomicModels.San.TimedActivityPanelObject">
-						<int id="ClassVersion">2</int>
-						<class id="Mobius.AtomicModels.San.ActivityPanelObject">
-							<int id="ClassVersion">1</int>
-							<class id="Mobius.BaseClasses.ExtendedBaseVertexClass">
-								<int id="ClassVersion">1</int>
-								<class id="Mobius.BaseClasses.BaseVertexClass">
-									<int id="ClassVersion">3</int>
-									<class id="Mobius.BaseClasses.BasePanelObjectClass">
-										<int id="ClassVersion">5</int>
-										<string id="Name">[scenarioName/]_AttackActivity</string>
-										<boolean id="ContainsLabel">true</boolean>
-										<boolean id="IsLabelShown">true</boolean>
-									</class>
-									<point id="CenterPoint">
-										<int id="x">[x + 150/]</int>
-										<int id="y">[y/]</int>
-									</point>
-								</class>
-							</class>
-							<int id="NumberOfCases">1</int>
-							<vector id="CaseDistributions">
-								<string id="0"></string>
-							</vector>
-						</class>
-						<class id="Mobius.BaseClasses.Distributions.DistributionFunction">
-							<int id="ClassVersion">1</int>
-							<string id="Name">Exponential</string>
-							<vector id="MetaParameters">
-							</vector>
-							<vector id="Parameters">
-								[let attack_scenario_freq : String = getAttackScenarioFrequency(model, scenarioName)]
-								[if (attack_scenario_freq.size() = 0)]
-								<string id="0">return([scenarioName/]_intensity);</string>[addToGlobalVars(scenarioName.concat('_intensity'), globalvars)/]
-								[else]
-								<string id="0">return([attack_scenario_freq/]);</string>
-								[/if]
-								[/let]
-							</vector>
-						</class>
-						<string id="Activation"></string>
-						<string id="Reactivation"></string>
-					</class>
-					<class id="Mobius.AtomicModels.San.InstantaneousActivityPanelObject">
-						<int id="ClassVersion">1</int>
-						<class id="Mobius.AtomicModels.San.ActivityPanelObject">
-							<int id="ClassVersion">1</int>
-							<class id="Mobius.BaseClasses.ExtendedBaseVertexClass">
-								<int id="ClassVersion">1</int>
-								<class id="Mobius.BaseClasses.BaseVertexClass">
-									<int id="ClassVersion">3</int>
-									<class id="Mobius.BaseClasses.BasePanelObjectClass">
-										<int id="ClassVersion">5</int>
-										<string id="Name">[scenarioName/]_BlockActivity</string>
-										<boolean id="ContainsLabel">true</boolean>
-										<boolean id="IsLabelShown">true</boolean>
-									</class>
-									<point id="CenterPoint">
-										<int id="x">[x + 450/]</int>
-										<int id="y">[y/]</int>
-									</point>
-								</class>
-							</class>
-							<int id="NumberOfCases">2</int>
-							<vector id="CaseDistributions">
-								[let attack_scenario_prob : String = getAttackScenarioProbSuccess(model, scenarioName)]
-									[if (attack_scenario_prob.size() = 0)]
-								<string id="0">return([scenarioName/]_succ_prob);</string>
-								<string id="1">return(1.0 - [scenarioName/]_succ_prob);\t\t// Attacked blocked.</string>[addToGlobalVars(scenarioName.concat('_succ_prob'), globalvars)/]
-									[else]
-								<string id="0">return([attack_scenario_prob/]);</string>
-								<string id="1">return([getAttackScenarioProbUnsuccess(model, attack_scenario_prob)/]);\t\t// Attacked blocked.</string>								
-									[/if]
-								[/let]
-							</vector>
-						</class>
-					</class>
-					<class id="Mobius.BaseClasses.BaseEdgeClass">
-						<int id="ClassVersion">3</int>
-						<int id="LineType">0</int>
-						<string id="StartVertex">[scenarioName/]_AttackActivity</string>
-						<string id="FinishVertex">[scenarioName/]Attempted</string>
-						<boolean id="Arrows">true</boolean>
-						<vector id="PointList">
-							<point id="0">
-								<int id="x">[x+150/]</int>
-								<int id="y">[y/]</int>
-							</point>
-							<point id="1">
-								<int id="x">[x+300/]</int>
-								<int id="y">[y/]</int>
-							</point>
-						</vector>
-					</class>
-					<class id="Mobius.BaseClasses.BaseEdgeClass">
-						<int id="ClassVersion">3</int>
-						<int id="LineType">0</int>
-						<string id="StartVertex">[scenarioName/]_BlockActivity</string>
-						<string id="FinishVertex">[scenarioName/]Launched</string>
-						<boolean id="Arrows">true</boolean>
-						<vector id="PointList">
-							<point id="0">
-								<int id="x">[x+450/]</int>
-								<int id="y">[y-15/]</int>
-							</point>
-							<point id="1">
-								<int id="x">[x+600/]</int>
-								<int id="y">[y-50/]/</int>
-							</point>
-						</vector>
-					</class>
-					<class id="Mobius.BaseClasses.BaseEdgeClass">
-						<int id="ClassVersion">3</int>
-						<int id="LineType">0</int>
-						<string id="StartVertex">[scenarioName/]_BlockActivity</string>
-						<string id="FinishVertex">[scenarioName/]Blocked</string>
-						<boolean id="Arrows">true</boolean>
-						<vector id="PointList">
-							<point id="0">
-								<int id="x">[x+450/]</int>
-								<int id="y">[y/]</int>
-							</point>
-							<point id="1">
-								<int id="x">[x+600/]</int>
-								<int id="y">[y+50/]/</int>
-							</point>
-						</vector>
-					</class>
-					<class id="Mobius.BaseClasses.BaseEdgeClass">
-						<int id="ClassVersion">3</int>
-						<int id="LineType">0</int>
-						<string id="StartVertex">[scenarioName/]_AttackActivity</string>
-						<string id="FinishVertex">[scenarioName/]OutputGate</string>
-						<boolean id="Arrows">false</boolean>
-						<vector id="PointList">
-							<point id="0">
-								<int id="x">[x+150/]</int>
-								<int id="y">[y/]</int>
-							</point>
-							<point id="1">
-								<int id="x">[x + 250/]</int>
-								<int id="y">[y-50/]/</int>
-							</point>
-						</vector>
-					</class>
-					<class id="Mobius.BaseClasses.BaseEdgeClass">
-						<int id="ClassVersion">3</int>
-						<int id="LineType">0</int>
-						<string id="StartVertex">Idle</string>
-						<string id="FinishVertex">[scenarioName/]_AttackActivity</string>
-						<boolean id="Arrows">true</boolean>
-						<vector id="PointList">
-							<point id="0">
-								<int id="x">[x/]</int>
-								<int id="y">[y/]</int>
-							</point>
-							<point id="1">
-								<int id="x">[x+150/]</int>
-								<int id="y">[y/]</int>
-							</point>
-						</vector>
-					</class>
-					<class id="Mobius.BaseClasses.BaseEdgeClass">
-						<int id="ClassVersion">3</int>
-						<int id="LineType">0</int>
-						<string id="StartVertex">[scenarioName/]Attempted</string>
-						<string id="FinishVertex">[scenarioName/]_BlockActivity</string>
-						<boolean id="Arrows">true</boolean>
-						<vector id="PointList">
-							<point id="0">
-								<int id="x">[x+300/]</int>
-								<int id="y">[y/]</int>
-							</point>
-							<point id="1">
-								<int id="x">[x+450/]</int>
-								<int id="y">[y/]</int>
-							</point>
-						</vector>
-					</class>
-					[comment now read the ordered list of element and generate the fragments accordingly /]
-					[let scenario : Interaction = getScenario(model, scenarioName)]
-					[let orderedList : Sequence(NamedElement) = getOrderedAttacksAndFragments(scenario)]
-					[for (elem : NamedElement | orderedList)]
-					[comment compute current start place x and y/]
-					[let startPlace : String = getStartPlace()]
-					[let startX : Integer = getStartX()]
-					[let startY : Integer = getStartY()]
-					[comment a Message -> single attack /]
-					[if (elem.oclIsTypeOf(Message))]
-					[SingleAttackTemplate(elem.oclAsType(Message), i, globalvars, startPlace, startX, startY)/]
-					[/if]
-					[comment a CombinedFragment -> alt/opt/loop fragment /]
-					[if (elem.oclIsTypeOf(CombinedFragment))]
-					[let combFrag : CombinedFragment = elem.oclAsType(CombinedFragment)]
-					[let operator : String = combFrag.interactionOperator.toString()]
-						[if (operator.equalsIgnoreCase('alt'))]
-					[AltFragmentTemplate(combFrag, i, globalvars, startPlace, startX, startY)/]
-						[elseif (operator.equalsIgnoreCase('opt'))]
-					[OptFragmentTemplate(combFrag, i, globalvars, startPlace, startX, startY)/]
-						[elseif (operator.equalsIgnoreCase('loop'))]
-					[LoopFragmentTemplate(combFrag, i, globalvars, startPlace, startX, startY)/]
-						[/if]
-					[/let]
-					[/let]
-					[/if]
-					[comment a DurationConstraint -> delay /]
-					[if (elem.oclIsTypeOf(DurationConstraint))]
-					[DelayTemplate(elem.oclAsType(DurationConstraint), i, globalvars, startPlace, startX, startY)/]
-					[/if]
-					[/let]
-					[/let]
-					[/let]
-					[/for]
-					[/let]
-					[/let]
-				</class>
-				<vector id="LocalGlobalNamesList">
-				[for (globalvar : String | globalvars)]
-					<string id="[i-1/]">[globalvar/]</string>
-				[/for]
-				</vector>
-				<vector id="LocalGlobalTypesList">
-				[for (globalvar : String | globalvars)]
-					<string id="[i-1/]">[getVarType(model, globalvar)/]</string>
-				[/for]
-				</vector>
-				<boolean id="DisplayToolTips">true</boolean>
-			</class>
-		</class>
-		<boolean id="Valid">true</boolean>
-	</class>
-</class>
-	[/let]
-	[/let]
-	[/let]
-	[/file]
-	[/let]
-[/template]
-
-[query public getPlaces(block : Classifier) : Sequence(State) =
-invoke('org.polarsys.chess.mobius.utils.TransformationUtil', 'getPlaces(org.eclipse.uml2.uml.Classifier)', Sequence{block})/]
-
-[query public getActivities(block : Classifier) : Sequence(Transition) =
-invoke('org.polarsys.chess.mobius.utils.TransformationUtil', 'getActivities(org.eclipse.uml2.uml.Classifier)', Sequence{block})/]
-
-[query public getActivityName(tr : Transition) : String =  tr.source.name + '__' + tr.target.name/]
-
-[query public getRate(tr : Transition) : String =
-invoke('org.polarsys.chess.mobius.utils.TransformationUtil', 'getRate(org.eclipse.uml2.uml.Transition)', Sequence{tr})/]
-
-[query public getScenario(model : Model, scenarioName : String) : Interaction =
-invoke('org.polarsys.chess.mobius.utils.TransformationUtil', 'getScenario(org.eclipse.uml2.uml.Model, java.lang.String)', Sequence{model, scenarioName})/]
-
-[query public getOrderedAttacksAndFragments(scenario : Interaction) : Sequence(NamedElement) =
-invoke('org.polarsys.chess.mobius.utils.TransformationUtil', 'getOrderedAttacksAndFragments(org.eclipse.uml2.uml.Interaction)', Sequence{scenario})/]
-
-[query public addToCurrentAlt(attack : Message) : String =
-invoke('org.polarsys.chess.mobius.utils.TransformationUtil', 'addToCurrentAlt(org.eclipse.uml2.uml.Message)', Sequence{attack})/]
-
-[query public clearCurrentAlt(ctx : OclAny) : String =
-invoke('org.polarsys.chess.mobius.utils.TransformationUtil', 'clearCurrentAlt()', Sequence{})/]
-
-[query public isCurrentAltEmpty(ctx : OclAny) : Boolean =
-invoke('org.polarsys.chess.mobius.utils.TransformationUtil', 'isCurrentAltEmpty()', Sequence{})/]
-
-[query public getAttackScenarioFrequency(model : Model, scenarioName : String) : String =
-invoke('org.polarsys.chess.mobius.utils.TransformationUtil', 'getAttackScenarioFrequency(org.eclipse.uml2.uml.Model, java.lang.String)', Sequence{model, scenarioName})/]
-
-[query public getAttackScenarioProbSuccess(model : Model, scenarioName : String) : String =
-invoke('org.polarsys.chess.mobius.utils.TransformationUtil', 'getAttackScenarioProbSuccess(org.eclipse.uml2.uml.Model, java.lang.String)', Sequence{model, scenarioName})/]
-
-[query public getAttackScenarioProbUnsuccess(model : Model, probSuccess : String) : String =
-invoke('org.polarsys.chess.mobius.utils.TransformationUtil', 'getAttackScenarioProbUnsuccess(org.eclipse.uml2.uml.Model, java.lang.String)', Sequence{model, probSuccess})/]
-
-[query public getVarType(model : Model, globalvar : String) : String =
-invoke('org.polarsys.chess.mobius.utils.TransformationUtil', 'getVarType(org.eclipse.uml2.uml.Model, java.lang.String)', Sequence{model, globalvar})/]
\ No newline at end of file
diff --git a/plugins/mobius/org.polarsys.chess.mobius/src/org/polarsys/chess/mobius/templates/ComposedComponentTemplate.java b/plugins/mobius/org.polarsys.chess.mobius/src/org/polarsys/chess/mobius/templates/ComposedComponentTemplate.java
deleted file mode 100644
index 2797f99..0000000
--- a/plugins/mobius/org.polarsys.chess.mobius/src/org/polarsys/chess/mobius/templates/ComposedComponentTemplate.java
+++ /dev/null
@@ -1,409 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2012 Obeo.
- * 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:
- *     Obeo - initial API and implementation
- *******************************************************************************/
-package org.polarsys.chess.mobius.templates;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.acceleo.engine.event.IAcceleoTextGenerationListener;
-import org.eclipse.acceleo.engine.generation.strategy.IAcceleoGenerationStrategy;
-import org.eclipse.acceleo.engine.service.AbstractAcceleoGenerator;
-import org.eclipse.emf.common.util.BasicMonitor;
-import org.eclipse.emf.common.util.Monitor;
-import org.eclipse.emf.common.util.URI;
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emf.ecore.resource.ResourceSet;
-
-/**
- * Entry point of the 'ComposedComponentTemplate' generation module.
- *
- * @generated
- */
-public class ComposedComponentTemplate extends AbstractAcceleoGenerator {
-    /**
-     * The name of the module.
-     *
-     * @generated
-     */
-    public static final String MODULE_FILE_NAME = "/org/polarsys/chess/mobius/templates/composedComponentTemplate";
-    
-    /**
-     * The name of the templates that are to be generated.
-     *
-     * @generated
-     */
-    public static final String[] TEMPLATE_NAMES = { "composedComponentTemplate" };
-    
-    /**
-     * The list of properties files from the launch parameters (Launch configuration).
-     *
-     * @generated
-     */
-    private List<String> propertiesFiles = new ArrayList<String>();
-
-    /**
-     * Allows the public constructor to be used. Note that a generator created
-     * this way cannot be used to launch generations before one of
-     * {@link #initialize(EObject, File, List)} or
-     * {@link #initialize(URI, File, List)} is called.
-     * <p>
-     * The main reason for this constructor is to allow clients of this
-     * generation to call it from another Java file, as it allows for the
-     * retrieval of {@link #getProperties()} and
-     * {@link #getGenerationListeners()}.
-     * </p>
-     *
-     * @generated
-     */
-    public ComposedComponentTemplate() {
-        // Empty implementation
-    }
-
-    /**
-     * This allows clients to instantiates a generator with all required information.
-     * 
-     * @param modelURI
-     *            URI where the model on which this generator will be used is located.
-     * @param targetFolder
-     *            This will be used as the output folder for this generation : it will be the base path
-     *            against which all file block URLs will be resolved.
-     * @param arguments
-     *            If the template which will be called requires more than one argument taken from the model,
-     *            pass them here.
-     * @throws IOException
-     *             This can be thrown in three scenarios : the module cannot be found, it cannot be loaded, or
-     *             the model cannot be loaded.
-     * @generated
-     */
-    public ComposedComponentTemplate(URI modelURI, File targetFolder,
-            List<? extends Object> arguments) throws IOException {
-        initialize(modelURI, targetFolder, arguments);
-    }
-
-    /**
-     * This allows clients to instantiates a generator with all required information.
-     * 
-     * @param model
-     *            We'll iterate over the content of this element to find Objects matching the first parameter
-     *            of the template we need to call.
-     * @param targetFolder
-     *            This will be used as the output folder for this generation : it will be the base path
-     *            against which all file block URLs will be resolved.
-     * @param arguments
-     *            If the template which will be called requires more than one argument taken from the model,
-     *            pass them here.
-     * @throws IOException
-     *             This can be thrown in two scenarios : the module cannot be found, or it cannot be loaded.
-     * @generated
-     */
-    public ComposedComponentTemplate(EObject model, File targetFolder,
-            List<? extends Object> arguments) throws IOException {
-        initialize(model, targetFolder, arguments);
-    }
-    
-    /**
-     * This can be used to launch the generation from a standalone application.
-     * 
-     * @param args
-     *            Arguments of the generation.
-     * @generated
-     */
-    public static void main(String[] args) {
-        try {
-            if (args.length < 2) {
-                System.out.println("Arguments not valid : {model, folder}.");
-            } else {
-                URI modelURI = URI.createFileURI(args[0]);
-                File folder = new File(args[1]);
-                
-                List<String> arguments = new ArrayList<String>();
-                
-                /*
-                 * If you want to change the content of this method, do NOT forget to change the "@generated"
-                 * tag in the Javadoc of this method to "@generated NOT". Without this new tag, any compilation
-                 * of the Acceleo module with the main template that has caused the creation of this class will
-                 * revert your modifications.
-                 */
-
-                /*
-                 * Add in this list all the arguments used by the starting point of the generation
-                 * If your main template is called on an element of your model and a String, you can
-                 * add in "arguments" this "String" attribute.
-                 */
-                
-                ComposedComponentTemplate generator = new ComposedComponentTemplate(modelURI, folder, arguments);
-                
-                /*
-                 * Add the properties from the launch arguments.
-                 * If you want to programmatically add new properties, add them in "propertiesFiles"
-                 * You can add the absolute path of a properties files, or even a project relative path.
-                 * If you want to add another "protocol" for your properties files, please override 
-                 * "getPropertiesLoaderService(AcceleoService)" in order to return a new property loader.
-                 * The behavior of the properties loader service is explained in the Acceleo documentation
-                 * (Help -> Help Contents).
-                 */
-                 
-                for (int i = 2; i < args.length; i++) {
-                    generator.addPropertiesFile(args[i]);
-                }
-                
-                generator.doGenerate(new BasicMonitor());
-            }
-        } catch (IOException e) {
-            e.printStackTrace();
-        }
-    }
-
-    /**
-     * Launches the generation described by this instance.
-     * 
-     * @param monitor
-     *            This will be used to display progress information to the user.
-     * @throws IOException
-     *             This will be thrown if any of the output files cannot be saved to disk.
-     * @generated
-     */
-    @Override
-    public void doGenerate(Monitor monitor) throws IOException {
-        /*
-         * TODO if you wish to change the generation as a whole, override this. The default behavior should
-         * be sufficient in most cases. If you want to change the content of this method, do NOT forget to
-         * change the "@generated" tag in the Javadoc of this method to "@generated NOT". Without this new tag,
-         * any compilation of the Acceleo module with the main template that has caused the creation of this
-         * class will revert your modifications. If you encounter a problem with an unresolved proxy during the
-         * generation, you can remove the comments in the following instructions to check for problems. Please
-         * note that those instructions may have a significant impact on the performances.
-         */
-
-        //org.eclipse.emf.ecore.util.EcoreUtil.resolveAll(model);
-
-        /*
-         * If you want to check for potential errors in your models before the launch of the generation, you
-         * use the code below.
-         */
-
-        //if (model != null && model.eResource() != null) {
-        //    List<org.eclipse.emf.ecore.resource.Resource.Diagnostic> errors = model.eResource().getErrors();
-        //    for (org.eclipse.emf.ecore.resource.Resource.Diagnostic diagnostic : errors) {
-        //        System.err.println(diagnostic.toString());
-        //    }
-        //}
-
-        super.doGenerate(monitor);
-    }
-    
-    /**
-     * If this generator needs to listen to text generation events, listeners can be returned from here.
-     * 
-     * @return List of listeners that are to be notified when text is generated through this launch.
-     * @generated
-     */
-    @Override
-    public List<IAcceleoTextGenerationListener> getGenerationListeners() {
-        List<IAcceleoTextGenerationListener> listeners = super.getGenerationListeners();
-        /*
-         * TODO if you need to listen to generation event, add listeners to the list here. If you want to change
-         * the content of this method, do NOT forget to change the "@generated" tag in the Javadoc of this method
-         * to "@generated NOT". Without this new tag, any compilation of the Acceleo module with the main template
-         * that has caused the creation of this class will revert your modifications.
-         */
-        return listeners;
-    }
-    
-    /**
-     * If you need to change the way files are generated, this is your entry point.
-     * <p>
-     * The default is {@link org.eclipse.acceleo.engine.generation.strategy.DefaultStrategy}; it generates
-     * files on the fly. If you only need to preview the results, return a new
-     * {@link org.eclipse.acceleo.engine.generation.strategy.PreviewStrategy}. Both of these aren't aware of
-     * the running Eclipse and can be used standalone.
-     * </p>
-     * <p>
-     * If you need the file generation to be aware of the workspace (A typical example is when you wanna
-     * override files that are under clear case or any other VCS that could forbid the overriding), then
-     * return a new {@link org.eclipse.acceleo.engine.generation.strategy.WorkspaceAwareStrategy}.
-     * <b>Note</b>, however, that this <b>cannot</b> be used standalone.
-     * </p>
-     * <p>
-     * All three of these default strategies support merging through JMerge.
-     * </p>
-     * 
-     * @return The generation strategy that is to be used for generations launched through this launcher.
-     * @generated
-     */
-    @Override
-    public IAcceleoGenerationStrategy getGenerationStrategy() {
-        return super.getGenerationStrategy();
-    }
-    
-    /**
-     * This will be called in order to find and load the module that will be launched through this launcher.
-     * We expect this name not to contain file extension, and the module to be located beside the launcher.
-     * 
-     * @return The name of the module that is to be launched.
-     * @generated
-     */
-    @Override
-    public String getModuleName() {
-        return MODULE_FILE_NAME;
-    }
-    
-    /**
-     * If the module(s) called by this launcher require properties files, return their qualified path from
-     * here.Take note that the first added properties files will take precedence over subsequent ones if they
-     * contain conflicting keys.
-     * 
-     * @return The list of properties file we need to add to the generation context.
-     * @see java.util.ResourceBundle#getBundle(String)
-     * @generated
-     */
-    @Override
-    public List<String> getProperties() {
-        /*
-         * If you want to change the content of this method, do NOT forget to change the "@generated"
-         * tag in the Javadoc of this method to "@generated NOT". Without this new tag, any compilation
-         * of the Acceleo module with the main template that has caused the creation of this class will
-         * revert your modifications.
-         */
-
-        /*
-         * TODO if your generation module requires access to properties files, add their qualified path to the list here.
-         * 
-         * Properties files can be located in an Eclipse plug-in or in the file system (all Acceleo projects are Eclipse
-         * plug-in). In order to use properties files located in an Eclipse plugin, you need to add the path of the properties
-         * files to the "propertiesFiles" list:
-         * 
-         * final String prefix = "platform:/plugin/";
-         * final String pluginName = "org.eclipse.acceleo.module.sample";
-         * final String packagePath = "/org/eclipse/acceleo/module/sample/properties/";
-         * final String fileName = "default.properties";
-         * propertiesFiles.add(prefix + pluginName + packagePath + fileName);
-         * 
-         * With this mechanism, you can load properties files from your plugin or from another plugin.
-         * 
-         * You may want to load properties files from the file system, for that you need to add the absolute path of the file:
-         * 
-         * propertiesFiles.add("C:\Users\MyName\MyFile.properties");
-         * 
-         * If you want to let your users add properties files located in the same folder as the model:
-         *
-         * if (EMFPlugin.IS_ECLIPSE_RUNNING && model != null && model.eResource() != null) { 
-         *     propertiesFiles.addAll(AcceleoEngineUtils.getPropertiesFilesNearModel(model.eResource()));
-         * }
-         * 
-         * To learn more about Properties Files, have a look at the Acceleo documentation (Help -> Help Contents).
-         */
-        return propertiesFiles;
-    }
-    
-    /**
-     * Adds a properties file in the list of properties files.
-     * 
-     * @param propertiesFile
-     *            The properties file to add.
-     * @generated
-     * @since 3.1
-     */
-    @Override
-    public void addPropertiesFile(String propertiesFile) {
-        this.propertiesFiles.add(propertiesFile);
-    }
-    
-    /**
-     * This will be used to get the list of templates that are to be launched by this launcher.
-     * 
-     * @return The list of templates to call on the module {@link #getModuleName()}.
-     * @generated
-     */
-    @Override
-    public String[] getTemplateNames() {
-        return TEMPLATE_NAMES;
-    }
-    
-    /**
-     * This can be used to update the resource set's package registry with all needed EPackages.
-     * 
-     * @param resourceSet
-     *            The resource set which registry has to be updated.
-     * @generated
-     */
-    @Override
-    public void registerPackages(ResourceSet resourceSet) {
-        super.registerPackages(resourceSet);
-        if (!isInWorkspace(org.eclipse.uml2.uml.UMLPackage.class)) {
-            resourceSet.getPackageRegistry().put(org.eclipse.uml2.uml.UMLPackage.eINSTANCE.getNsURI(), org.eclipse.uml2.uml.UMLPackage.eINSTANCE);
-        }
-        
-        /*
-         * If you want to change the content of this method, do NOT forget to change the "@generated"
-         * tag in the Javadoc of this method to "@generated NOT". Without this new tag, any compilation
-         * of the Acceleo module with the main template that has caused the creation of this class will
-         * revert your modifications.
-         */
-        
-        /*
-         * If you need additional package registrations, you can register them here. The following line
-         * (in comment) is an example of the package registration for UML.
-         * 
-         * You can use the method  "isInWorkspace(Class c)" to check if the package that you are about to
-         * register is in the workspace.
-         * 
-         * To register a package properly, please follow the following conventions:
-         *
-         * If the package is located in another plug-in, already installed in Eclipse. The following content should
-         * have been generated at the beginning of this method. Do not register the package using this mechanism if
-         * the metamodel is located in the workspace.
-         *  
-         * if (!isInWorkspace(UMLPackage.class)) {
-         *     // The normal package registration if your metamodel is in a plugin.
-         *     resourceSet.getPackageRegistry().put(UMLPackage.eNS_URI, UMLPackage.eINSTANCE);
-         * }
-         * 
-         * If the package is located in another project in your workspace, the plugin containing the package has not
-         * been register by EMF and Acceleo should register it automatically. If you want to use the generator in
-         * stand alone, the regular registration (seen a couple lines before) is needed.
-         * 
-         * To learn more about Package Registration, have a look at the Acceleo documentation (Help -> Help Contents).
-         */
-    }
-
-    /**
-     * This can be used to update the resource set's resource factory registry with all needed factories.
-     * 
-     * @param resourceSet
-     *            The resource set which registry has to be updated.
-     * @generated
-     */
-    @Override
-    public void registerResourceFactories(ResourceSet resourceSet) {
-        super.registerResourceFactories(resourceSet);
-        /*
-         * If you want to change the content of this method, do NOT forget to change the "@generated"
-         * tag in the Javadoc of this method to "@generated NOT". Without this new tag, any compilation
-         * of the Acceleo module with the main template that has caused the creation of this class will
-         * revert your modifications.
-         */
-        
-        /*
-         * TODO If you need additional resource factories registrations, you can register them here. the following line
-         * (in comment) is an example of the resource factory registration for UML.
-         *
-         * If you want to use the generator in stand alone, the resource factory registration will be required.
-         *  
-         * To learn more about the registration of Resource Factories, have a look at the Acceleo documentation (Help -> Help Contents). 
-         */ 
-        
-        // resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put(UMLResource.FILE_EXTENSION, UMLResource.Factory.INSTANCE);
-    }
-    
-}
diff --git a/plugins/mobius/org.polarsys.chess.mobius/src/org/polarsys/chess/mobius/templates/ComposedComponentTemplate_sanmodel.java b/plugins/mobius/org.polarsys.chess.mobius/src/org/polarsys/chess/mobius/templates/ComposedComponentTemplate_sanmodel.java
index f74dab3..fc804c7 100644
--- a/plugins/mobius/org.polarsys.chess.mobius/src/org/polarsys/chess/mobius/templates/ComposedComponentTemplate_sanmodel.java
+++ b/plugins/mobius/org.polarsys.chess.mobius/src/org/polarsys/chess/mobius/templates/ComposedComponentTemplate_sanmodel.java
@@ -340,9 +340,6 @@
     @Override
     public void registerPackages(ResourceSet resourceSet) {
         super.registerPackages(resourceSet);
-        if (!isInWorkspace(org.polarsys.chess.mobius.model.SAN.SANModelPackage.class)) {
-            resourceSet.getPackageRegistry().put(org.polarsys.chess.mobius.model.SAN.SANModelPackage.eINSTANCE.getNsURI(), org.polarsys.chess.mobius.model.SAN.SANModelPackage.eINSTANCE);
-        }
         
         /*
          * If you want to change the content of this method, do NOT forget to change the "@generated"
diff --git a/plugins/mobius/org.polarsys.chess.mobius/src/org/polarsys/chess/mobius/templates/DelayTemplate.mtl b/plugins/mobius/org.polarsys.chess.mobius/src/org/polarsys/chess/mobius/templates/DelayTemplate.mtl
deleted file mode 100644
index 2c7d976..0000000
--- a/plugins/mobius/org.polarsys.chess.mobius/src/org/polarsys/chess/mobius/templates/DelayTemplate.mtl
+++ /dev/null
@@ -1,125 +0,0 @@
-[comment
-/*********************************************************************
-* Copyright (c) 2019 Intecs Solutions SpA
-*
-* This program and the accompanying materials are made
-* available under the terms of the Eclipse Public License 2.0
-* which is available at https://www.eclipse.org/legal/epl-2.0/
-*
-* SPDX-License-Identifier: EPL-2.0
-*
-* Contributors: 
-*   Intecs Solutions - Initial API and implementation
-*   
-**********************************************************************/
-/]
-[comment encoding = UTF-8 /]
-[module DelayTemplate('http://www.eclipse.org/uml2/3.0.0/UML')/]
-[import org::polarsys::chess::mobius::templates::projectFileTemplate /]
-
-[template public DelayTemplate(durConstr : DurationConstraint, index : Integer, globalvars : Set(String), startPlace : String, startX : Integer, startY : Integer)]
-	[let delayName : String = durConstr.name]
-	[let x : Integer = 50]
-	[let y : Integer = 250*index]
-	[comment  places and activities /]
-	[comment this is the end place /]
-	<class id="Mobius.AtomicModels.San.PlacePanelObject">
-		<int id="ClassVersion">1</int>
-		<class id="Mobius.BaseClasses.BaseVertexClass">
-			<int id="ClassVersion">3</int>
-			<class id="Mobius.BaseClasses.BasePanelObjectClass">
-				<int id="ClassVersion">5</int>
-				<string id="Name">End[delayName/]</string>[setStartPlace('End'.concat(delayName))/]
-				<boolean id="ContainsLabel">true</boolean>
-				<boolean id="IsLabelShown">true</boolean>
-			</class>
-			<point id="CenterPoint">
-				<int id="x">[x+300/]</int>[setStartX(x+300)/]
-				<int id="y">[y/]</int>[setStartX(y)/]
-			</point>
-		</class>
-		<boolean id="ReadOnly">false</boolean>
-		<boolean id="ConstantMarking">true</boolean>
-		<int id="InitialState">0</int>
-	</class>
-	<class id="Mobius.AtomicModels.San.TimedActivityPanelObject">
-		<int id="ClassVersion">2</int>
-		<class id="Mobius.AtomicModels.San.ActivityPanelObject">
-			<int id="ClassVersion">1</int>
-			<class id="Mobius.BaseClasses.ExtendedBaseVertexClass">
-				<int id="ClassVersion">1</int>
-				<class id="Mobius.BaseClasses.BaseVertexClass">
-					<int id="ClassVersion">3</int>
-					<class id="Mobius.BaseClasses.BasePanelObjectClass">
-						<int id="ClassVersion">5</int>
-						<string id="Name">[delayName/]Activity</string>
-						<boolean id="ContainsLabel">true</boolean>
-						<boolean id="IsLabelShown">true</boolean>
-					</class>
-					<point id="CenterPoint">
-						<int id="x">[x+150/]</int>
-						<int id="y">[y/]</int>
-					</point>
-				</class>
-			</class>
-			<int id="NumberOfCases">1</int>
-			<vector id="CaseDistributions">
-				<string id="0"></string>
-			</vector>
-		</class>
-		<class id="Mobius.BaseClasses.Distributions.DistributionFunction">
-			<int id="ClassVersion">1</int>
-			<string id="Name">Exponential</string>
-			<vector id="MetaParameters">
-			</vector>
-			<vector id="Parameters">
-				[let delay_rate : String = getDelay(durConstr)]
-				<string id="0">return([delay_rate/]);</string>[addToGlobalVars(delay_rate, globalvars)/]
-				[/let]
-			</vector>
-		</class>
-		<string id="Activation"></string>
-		<string id="Reactivation"></string>
-	</class>
-	<class id="Mobius.BaseClasses.BaseEdgeClass">
-		<int id="ClassVersion">3</int>
-		<int id="LineType">0</int>
-		<string id="StartVertex">[delayName/]Activity</string>
-		<string id="FinishVertex">End[delayName/]</string>
-		<boolean id="Arrows">true</boolean>
-		<vector id="PointList">
-			<point id="0">
-				<int id="x">[x+150/]</int>
-				<int id="y">[y/]</int>
-			</point>
-			<point id="1">
-				<int id="x">[x+300/]</int>
-				<int id="y">[y/]</int>
-			</point>
-		</vector>
-	</class>
-	[comment: start place is previous fragment end place/]	
-	<class id="Mobius.BaseClasses.BaseEdgeClass">
-		<int id="ClassVersion">3</int>
-		<int id="LineType">0</int>
-		<string id="StartVertex">[startPlace/]</string>
-		<string id="FinishVertex">[delayName/]Activity</string>
-		<boolean id="Arrows">true</boolean>
-		<vector id="PointList">
-			<point id="0">
-				<int id="x">[startX/]</int>
-				<int id="y">[startY/]</int>
-			</point>
-			<point id="1">
-				<int id="x">[x+150/]</int>
-				<int id="y">[y/]</int>
-			</point>
-		</vector>
-	</class>
-	[/let]
-	[/let]
-	[/let]
-[/template]
-
-[query public getDelay(durConstr : DurationConstraint) : String =
-invoke('org.polarsys.chess.mobius.utils.TransformationUtil', 'getDelay(org.eclipse.uml2.uml.DurationConstraint)', Sequence{durConstr})/]
diff --git a/plugins/mobius/org.polarsys.chess.mobius/src/org/polarsys/chess/mobius/templates/LoopFragmentTemplate.mtl b/plugins/mobius/org.polarsys.chess.mobius/src/org/polarsys/chess/mobius/templates/LoopFragmentTemplate.mtl
deleted file mode 100644
index 261c702..0000000
--- a/plugins/mobius/org.polarsys.chess.mobius/src/org/polarsys/chess/mobius/templates/LoopFragmentTemplate.mtl
+++ /dev/null
@@ -1,353 +0,0 @@
-[comment
-/*********************************************************************
-* Copyright (c) 2019 Intecs Solutions SpA
-*
-* This program and the accompanying materials are made
-* available under the terms of the Eclipse Public License 2.0
-* which is available at https://www.eclipse.org/legal/epl-2.0/
-*
-* SPDX-License-Identifier: EPL-2.0
-*
-* Contributors: 
-*   Intecs Solutions - Initial API and implementation
-*   
-**********************************************************************/
-/]
-[comment encoding = UTF-8 /]
-[module LoopFragmentTemplate('http://www.eclipse.org/uml2/3.0.0/UML')/]
-[import org::polarsys::chess::mobius::templates::projectFileTemplate /]
-[import org::polarsys::chess::mobius::templates::AltFragmentTemplate /]
-
-[template public LoopFragmentTemplate(combFrag : CombinedFragment, index : Integer, globalvars : Set(String), startPlace : String, startX : Integer, startY : Integer)]
-	[let loopFragmentName : String = combFrag.name]
-	[let operand : InteractionOperand = combFrag.operand->first()]
-	[let attack : Message = getOperandAttack(operand)]
-	[let x : Integer = 50]
-	[let y : Integer = 300*index]
-	[comment places, activities and gates /]
-	<class id="Mobius.AtomicModels.San.InstantaneousActivityPanelObject">
-		<int id="ClassVersion">1</int>
-		<class id="Mobius.AtomicModels.San.ActivityPanelObject">
-			<int id="ClassVersion">1</int>
-			<class id="Mobius.BaseClasses.ExtendedBaseVertexClass">
-				<int id="ClassVersion">1</int>
-				<class id="Mobius.BaseClasses.BaseVertexClass">
-					<int id="ClassVersion">3</int>
-					<class id="Mobius.BaseClasses.BasePanelObjectClass">
-						<int id="ClassVersion">5</int>
-						<string id="Name">SetUp[loopFragmentName/]</string>
-						<boolean id="ContainsLabel">true</boolean>
-						<boolean id="IsLabelShown">true</boolean>
-					</class>
-					<point id="CenterPoint">
-						<int id="x">[x+200/]</int>
-						<int id="y">[y/]</int>
-					</point>
-				</class>
-			</class>
-			<int id="NumberOfCases">1</int>
-			<vector id="CaseDistributions">
-				<string id="0"></string>
-			</vector>
-		</class>
-	</class>
-	<class id="Mobius.AtomicModels.San.OutputGatePanelObject">
-		<int id="ClassVersion">1</int>
-		<class id="Mobius.BaseClasses.BaseVertexClass">
-			<int id="ClassVersion">3</int>
-			<class id="Mobius.BaseClasses.BasePanelObjectClass">
-				<int id="ClassVersion">5</int>
-				<string id="Name">[loopFragmentName/]SetCounter</string>
-				<boolean id="ContainsLabel">true</boolean>
-				<boolean id="IsLabelShown">true</boolean>
-			</class>
-			<point id="CenterPoint">
-				<int id="x">[x+250/]</int>
-				<int id="y">[y-50/]</int>
-			</point>
-		</class>
-		[let counter : String = getLoopCounter(operand)]
-		<boolean id="MirrorImage">false</boolean>[addToGlobalVars(counter, globalvars)/]
-		<string id="Function">[loopFragmentName/]Counter-&gt;Mark() = [counter/];</string>
-		[/let]
-	</class>
-	<class id="Mobius.AtomicModels.San.PlacePanelObject">
-		<int id="ClassVersion">1</int>
-		<class id="Mobius.BaseClasses.BaseVertexClass">
-			<int id="ClassVersion">3</int>
-			<class id="Mobius.BaseClasses.BasePanelObjectClass">
-				<int id="ClassVersion">5</int>
-				<string id="Name">[loopFragmentName/]Counter</string>
-				<boolean id="ContainsLabel">true</boolean>
-				<boolean id="IsLabelShown">true</boolean>
-			</class>
-			<point id="CenterPoint">
-				<int id="x">[x+475/]</int>
-				<int id="y">[y-50/]</int>
-			</point>
-		</class>
-		<boolean id="ReadOnly">false</boolean>
-		<boolean id="ConstantMarking">true</boolean>
-		<int id="InitialState">0</int>
-	</class>
-	<class id="Mobius.AtomicModels.San.PlacePanelObject">
-		<int id="ClassVersion">1</int>
-		<class id="Mobius.BaseClasses.BaseVertexClass">
-			<int id="ClassVersion">3</int>
-			<class id="Mobius.BaseClasses.BasePanelObjectClass">
-				<int id="ClassVersion">5</int>
-				<string id="Name">[loopFragmentName/]_loop</string>
-				<boolean id="ContainsLabel">true</boolean>
-				<boolean id="IsLabelShown">true</boolean>
-			</class>
-			<point id="CenterPoint">
-				<int id="x">[x+350/]</int>
-				<int id="y">[y/]</int>
-			</point>
-		</class>
-		<boolean id="ReadOnly">false</boolean>
-		<boolean id="ConstantMarking">true</boolean>
-		<int id="InitialState">0</int>
-	</class>
-	<class id="Mobius.AtomicModels.San.TimedActivityPanelObject">
-		<int id="ClassVersion">2</int>
-		<class id="Mobius.AtomicModels.San.ActivityPanelObject">
-			<int id="ClassVersion">1</int>
-			<class id="Mobius.BaseClasses.ExtendedBaseVertexClass">
-				<int id="ClassVersion">1</int>
-				<class id="Mobius.BaseClasses.BaseVertexClass">
-					<int id="ClassVersion">3</int>
-					<class id="Mobius.BaseClasses.BasePanelObjectClass">
-						<int id="ClassVersion">5</int>
-						<string id="Name">[loopFragmentName/]_loop_delay</string>
-						<boolean id="ContainsLabel">true</boolean>
-						<boolean id="IsLabelShown">true</boolean>
-					</class>
-					<point id="CenterPoint">
-						<int id="x">[x+525/]</int>
-						<int id="y">[y/]</int>
-					</point>
-				</class>
-			</class>
-			[comment TODO: is it possible to model success prob?/]
-			<int id="NumberOfCases">2</int>
-			<vector id="CaseDistributions">
-				<string id="0">return([attack.name/]_success_prob);\t// Attack succeeds</string>
-				<string id="1">return(1.0 - [attack.name/]_success_prob);\t// Attack fails</string>
-			</vector>[addToGlobalVars(attack.name.concat('_success_prob'), globalvars)/]
-		</class>
-		<class id="Mobius.BaseClasses.Distributions.DistributionFunction">
-			<int id="ClassVersion">1</int>
-			<string id="Name">Exponential</string>
-			<vector id="MetaParameters">
-			</vector>
-			<vector id="Parameters">
-				<string id="0">return([loopFragmentName/]_attack_delay);</string>
-			</vector>[addToGlobalVars(loopFragmentName.concat('_attack_delay'), globalvars)/]
-		</class>
-		<string id="Activation"></string>
-		<string id="Reactivation"></string>
-	</class>
-	[comment this is the end place /]
-	<class id="Mobius.AtomicModels.San.PlacePanelObject">
-		<int id="ClassVersion">1</int>
-		<class id="Mobius.BaseClasses.BaseVertexClass">
-			<int id="ClassVersion">3</int>
-			<class id="Mobius.BaseClasses.BasePanelObjectClass">
-				<int id="ClassVersion">5</int>
-				<string id="Name">End[loopFragmentName/]</string>[setStartPlace('End'.concat(loopFragmentName))/]
-				<boolean id="ContainsLabel">true</boolean>
-				<boolean id="IsLabelShown">true</boolean>
-			</class>
-			<point id="CenterPoint">
-				<int id="x">[x+800/]</int>[setStartX(x+800)/]
-				<int id="y">[y/]</int>[setStartY(y)/]
-			</point>
-		</class>
-		<boolean id="ReadOnly">false</boolean>
-		<boolean id="ConstantMarking">true</boolean>
-		<int id="InitialState">0</int>
-	</class>
-	<class id="Mobius.AtomicModels.San.OutputGatePanelObject">
-		<int id="ClassVersion">1</int>
-		<class id="Mobius.BaseClasses.BaseVertexClass">
-			<int id="ClassVersion">3</int>
-			<class id="Mobius.BaseClasses.BasePanelObjectClass">
-				<int id="ClassVersion">5</int>
-				<string id="Name">[loopFragmentName/]_success</string>
-				<boolean id="ContainsLabel">true</boolean>
-				<boolean id="IsLabelShown">true</boolean>
-			</class>
-			<point id="CenterPoint">
-				<int id="x">[x+675/]</int>
-				<int id="y">[y-25/]</int>
-			</point>
-		</class>
-		<boolean id="MirrorImage">false</boolean>
-		<string id="Function">
-			[loopFragmentName/]Counter-&gt;Mark()--;\nif([loopFragmentName/]Counter-&gt;Mark() &gt; 0)
-			\n  {\n    [attack.name/]_success-&gt;Mark()++;\t// Add an attack. 
-			This place may be shared among many instances.\n\t\t\t\t\t
-			// The token will be taken by one of the instances: 
-			they will compete for the token.\n    [loopFragmentName/]_loop-&gt;Mar
-			k() = 1;\t// Continue with the loop\n  }\nelse\n  End[loopFragmentName/]
-			-&gt;Mark() = 1;\t// Exit from the loop
-		</string>
-	</class>
-	<class id="Mobius.AtomicModels.San.OutputGatePanelObject">
-		<int id="ClassVersion">1</int>
-		<class id="Mobius.BaseClasses.BaseVertexClass">
-			<int id="ClassVersion">3</int>
-			<class id="Mobius.BaseClasses.BasePanelObjectClass">
-				<int id="ClassVersion">5</int>
-				<string id="Name">[loopFragmentName/]_blocked</string>
-				<boolean id="ContainsLabel">true</boolean>
-				<boolean id="IsLabelShown">true</boolean>
-			</class>
-			<point id="CenterPoint">
-				<int id="x">[x+675/]</int>
-				<int id="y">[y+25/]</int>
-			</point>
-		</class>
-		<boolean id="MirrorImage">false</boolean>
-		<string id="Function">
-			[loopFragmentName/]Counter-&gt;Mark()--;\nif([loopFragmentName/]Counter-&gt;Mark() &gt; 0)
-			\n  {\n// This is the branch which corresponds to unsuccessf
-			ul attacks on component.\n// Hence no token is added to att
-			ack place \n    [loopFragmentName/]_loop-&gt;Mark() = 1;\t// Continue
-			 with the loop\n  }\nelse\n  End[loopFragmentName/]-&gt;Mark() = 1;\t/
-			/ Exit from the loop
-		</string>
-	</class>
-	<class id="Mobius.AtomicModels.San.PlacePanelObject">
-		<int id="ClassVersion">1</int>
-		<class id="Mobius.BaseClasses.BaseVertexClass">
-			<int id="ClassVersion">3</int>
-			<class id="Mobius.BaseClasses.BasePanelObjectClass">
-				<int id="ClassVersion">5</int>
-				<string id="Name">[attack.name/]_success</string>
-				<boolean id="ContainsLabel">true</boolean>
-				<boolean id="IsLabelShown">true</boolean>
-			</class>
-			<point id="CenterPoint">
-				<int id="x">[x+800/]</int>
-				<int id="y">[y-50/]</int>
-			</point>
-		</class>
-		<boolean id="ReadOnly">false</boolean>
-		<boolean id="ConstantMarking">true</boolean>
-		<int id="InitialState">0</int>
-	</class>
-	[comment edges /]
-	<class id="Mobius.BaseClasses.BaseEdgeClass">
-		<int id="ClassVersion">3</int>
-		<int id="LineType">0</int>
-		<string id="StartVertex">SetUp[loopFragmentName/]</string>
-		<string id="FinishVertex">[loopFragmentName/]SetCounter</string>
-		<boolean id="Arrows">false</boolean>
-		<vector id="PointList">
-			<point id="0">
-				<int id="x">[x+200/]</int>
-				<int id="y">[y/]</int>
-			</point>
-			<point id="1">
-				<int id="x">[x+250/]</int>
-				<int id="y">[y-50/]</int>
-			</point>
-		</vector>
-	</class>
-	<class id="Mobius.BaseClasses.BaseEdgeClass">
-		<int id="ClassVersion">3</int>
-		<int id="LineType">0</int>
-		<string id="StartVertex">SetUp[loopFragmentName/]</string>
-		<string id="FinishVertex">[loopFragmentName/]_loop</string>
-		<boolean id="Arrows">true</boolean>
-		<vector id="PointList">
-			<point id="0">
-				<int id="x">[x+200/]</int>
-				<int id="y">[y/]</int>
-			</point>
-			<point id="1">
-				<int id="x">[x+350/]</int>
-				<int id="y">[y/]</int>
-			</point>
-		</vector>
-	</class>
-	<class id="Mobius.BaseClasses.BaseEdgeClass">
-		<int id="ClassVersion">3</int>
-		<int id="LineType">0</int>
-		<string id="StartVertex">[loopFragmentName/]_loop</string>
-		<string id="FinishVertex">[loopFragmentName/]_loop_delay</string>
-		<boolean id="Arrows">true</boolean>
-		<vector id="PointList">
-			<point id="0">
-				<int id="x">[x+350/]</int>
-				<int id="y">[y/]</int>
-			</point>
-			<point id="1">
-				<int id="x">[x+525/]</int>
-				<int id="y">[y/]</int>
-			</point>
-		</vector>
-	</class>
-		<class id="Mobius.BaseClasses.BaseEdgeClass">
-		<int id="ClassVersion">3</int>
-		<int id="LineType">0</int>
-		<string id="StartVertex">[loopFragmentName/]_loop_delay</string>
-		<string id="FinishVertex">[loopFragmentName/]_success</string>
-		<boolean id="Arrows">false</boolean>
-		<vector id="PointList">
-			<point id="0">
-				<int id="x">[x+525/]</int>
-				<int id="y">[y-15/]</int>
-			</point>
-			<point id="1">
-				<int id="x">[x+675/]</int>
-				<int id="y">[y+25/]</int>
-			</point>
-		</vector>
-	</class>
-		<class id="Mobius.BaseClasses.BaseEdgeClass">
-		<int id="ClassVersion">3</int>
-		<int id="LineType">0</int>
-		<string id="StartVertex">[loopFragmentName/]_loop_delay</string>
-		<string id="FinishVertex">[loopFragmentName/]_blocked</string>
-		<boolean id="Arrows">false</boolean>
-		<vector id="PointList">
-			<point id="0">
-				<int id="x">[x+525/]</int>
-				<int id="y">[y/]</int>
-			</point>
-			<point id="1">
-				<int id="x">[x+675/]</int>
-				<int id="y">[y+25/]</int>
-			</point>
-		</vector>
-	</class>
-	[comment: start place is previous fragment end place/]	
-	<class id="Mobius.BaseClasses.BaseEdgeClass">
-		<int id="ClassVersion">3</int>
-		<int id="LineType">0</int>
-		<string id="StartVertex">[startPlace/]</string>
-		<string id="FinishVertex">SetUp[loopFragmentName/]</string>
-		<boolean id="Arrows">true</boolean>
-		<vector id="PointList">
-			<point id="0">
-				<int id="x">[startX/]</int>
-				<int id="y">[startY/]</int>
-			</point>
-			<point id="1">
-				<int id="x">[x+200/]</int>
-				<int id="y">[y/]</int>
-			</point>
-		</vector>
-	</class>
-	[/let]
-	[/let]
-	[/let]
-	[/let]
-	[/let]
-[/template]
-
-[query public getLoopCounter(operand : InteractionOperand) : String =
-invoke('org.polarsys.chess.mobius.utils.TransformationUtil', 'getLoopCounter(org.eclipse.uml2.uml.InteractionOperand)', Sequence{operand})/]
diff --git a/plugins/mobius/org.polarsys.chess.mobius/src/org/polarsys/chess/mobius/templates/OptFragmentTemplate.mtl b/plugins/mobius/org.polarsys.chess.mobius/src/org/polarsys/chess/mobius/templates/OptFragmentTemplate.mtl
deleted file mode 100644
index 0aecbad..0000000
--- a/plugins/mobius/org.polarsys.chess.mobius/src/org/polarsys/chess/mobius/templates/OptFragmentTemplate.mtl
+++ /dev/null
@@ -1,271 +0,0 @@
-[comment
-/*********************************************************************
-* Copyright (c) 2019 Intecs Solutions SpA
-*
-* This program and the accompanying materials are made
-* available under the terms of the Eclipse Public License 2.0
-* which is available at https://www.eclipse.org/legal/epl-2.0/
-*
-* SPDX-License-Identifier: EPL-2.0
-*
-* Contributors: 
-*   Intecs Solutions - Initial API and implementation
-*   
-**********************************************************************/
-/]
-[comment encoding = UTF-8 /]
-[module OptFragmentTemplate('http://www.eclipse.org/uml2/3.0.0/UML')/]
-[import org::polarsys::chess::mobius::templates::projectFileTemplate /]
-[import org::polarsys::chess::mobius::templates::AltFragmentTemplate /]
-
-[template public OptFragmentTemplate(combFrag : CombinedFragment, index : Integer, globalvars : Set(String), startPlace : String, startX : Integer, startY : Integer)]
-	[let optFragmentName : String = combFrag.name]
-	[let operand : InteractionOperand = combFrag.operand->first()]
-	[let attack : Message = getOperandAttack(operand)]
-	[let x : Integer = 50]
-	[let y : Integer = 250*index]
-	[comment an opt fragment is very much alike an alt one, but with just a single operand/]
-	[comment this is the end place /]
-	<class id="Mobius.AtomicModels.San.PlacePanelObject">
-		<int id="ClassVersion">1</int>
-		<class id="Mobius.BaseClasses.BaseVertexClass">
-			<int id="ClassVersion">3</int>
-			<class id="Mobius.BaseClasses.BasePanelObjectClass">
-				<int id="ClassVersion">5</int>
-				<string id="Name">End[optFragmentName/]</string>[setStartPlace('End'.concat(optFragmentName))/]
-				<boolean id="ContainsLabel">true</boolean>
-				<boolean id="IsLabelShown">true</boolean>
-			</class>
-			<point id="CenterPoint">
-				<int id="x">[x+250/]</int>[setStartX(x+250)/]
-				<int id="y">[y+50/]</int>[setStartY(y+50)/]
-			</point>
-		</class>
-		<boolean id="ReadOnly">false</boolean>
-		<boolean id="ConstantMarking">true</boolean>
-		<int id="InitialState">0</int>
-	</class>
-	[comment other places and activities/]
-	<class id="Mobius.AtomicModels.San.InstantaneousActivityPanelObject">
-		<int id="ClassVersion">1</int>
-		<class id="Mobius.AtomicModels.San.ActivityPanelObject">
-			<int id="ClassVersion">1</int>
-			<class id="Mobius.BaseClasses.ExtendedBaseVertexClass">
-				<int id="ClassVersion">1</int>
-				<class id="Mobius.BaseClasses.BaseVertexClass">
-					<int id="ClassVersion">3</int>
-					<class id="Mobius.BaseClasses.BasePanelObjectClass">
-						<int id="ClassVersion">5</int>
-						<string id="Name">[optFragmentName/]Activity</string>
-						<boolean id="ContainsLabel">true</boolean>
-						<boolean id="IsLabelShown">true</boolean>
-					</class>
-					<point id="CenterPoint">
-						<int id="x">[x+150/]</int>
-						<int id="y">[y/]</int>
-					</point>
-				</class>
-			</class>
-			<int id="NumberOfCases">2</int>
-			<vector id="CaseDistributions">
-			[let predicate : String = getPredicate(operand)]
-			<string id="0">return([predicate/]);</string>[addToGlobalVars(predicate, globalvars)/]
-			<string id="0">return(1.0 - [predicate/]);</string>
-			[/let]
-			</vector>[resetPredicateList()/]
-		</class>
-	</class>
-	<class id="Mobius.AtomicModels.San.PlacePanelObject">
-		<int id="ClassVersion">1</int>
-		<class id="Mobius.BaseClasses.BaseVertexClass">
-			<int id="ClassVersion">3</int>
-			<class id="Mobius.BaseClasses.BasePanelObjectClass">
-				<int id="ClassVersion">5</int>
-				<string id="Name">[attack.name/]</string>
-				<boolean id="ContainsLabel">true</boolean>
-				<boolean id="IsLabelShown">true</boolean>
-			</class>
-			<point id="CenterPoint">
-				<int id="x">[x+250/]</int>
-				<int id="y">[y/]</int>
-			</point>
-		</class>
-		<boolean id="ReadOnly">false</boolean>
-		<boolean id="ConstantMarking">true</boolean>
-		<int id="InitialState">0</int>
-	</class>
-	<class id="Mobius.AtomicModels.San.InstantaneousActivityPanelObject">
-		<int id="ClassVersion">1</int>
-		<class id="Mobius.AtomicModels.San.ActivityPanelObject">
-			<int id="ClassVersion">1</int>
-			<class id="Mobius.BaseClasses.ExtendedBaseVertexClass">
-				<int id="ClassVersion">1</int>
-				<class id="Mobius.BaseClasses.BaseVertexClass">
-					<int id="ClassVersion">3</int>
-					<class id="Mobius.BaseClasses.BasePanelObjectClass">
-						<int id="ClassVersion">5</int>
-						<string id="Name">[attack.name/]_activity</string>
-						<boolean id="ContainsLabel">true</boolean>
-						<boolean id="IsLabelShown">true</boolean>
-					</class>
-					<point id="CenterPoint">
-						<int id="x">[x+450/]</int>
-						<int id="y">[y/]</int>
-					</point>
-				</class>
-			</class>
-			[comment TODO: is it possible to model success prob?/]
-			<int id="NumberOfCases">2</int>
-			<vector id="CaseDistributions">
-				<string id="0">return([attack.name/]_success_prob);\t// Attack succeeds</string>
-				<string id="1">return(1.0 - [attack.name/]_success_prob);\t// Attack fails</string>
-			</vector>[addToGlobalVars(attack.name.concat('_success_prob'), globalvars)/]
-		</class>
-	</class>
-	<class id="Mobius.AtomicModels.San.PlacePanelObject">
-		<int id="ClassVersion">1</int>
-		<class id="Mobius.BaseClasses.BaseVertexClass">
-			<int id="ClassVersion">3</int>
-			<class id="Mobius.BaseClasses.BasePanelObjectClass">
-				<int id="ClassVersion">5</int>
-				<string id="Name">[attack.name/]_success</string>
-				<boolean id="ContainsLabel">true</boolean>
-				<boolean id="IsLabelShown">true</boolean>
-			</class>
-			<point id="CenterPoint">
-				<int id="x">[x+600/]</int>
-				<int id="y">[y-25/]</int>
-			</point>
-		</class>
-		<boolean id="ReadOnly">false</boolean>
-		<boolean id="ConstantMarking">true</boolean>
-		<int id="InitialState">0</int>
-	</class>
-		<class id="Mobius.AtomicModels.San.PlacePanelObject">
-		<int id="ClassVersion">1</int>
-		<class id="Mobius.BaseClasses.BaseVertexClass">
-			<int id="ClassVersion">3</int>
-			<class id="Mobius.BaseClasses.BasePanelObjectClass">
-				<int id="ClassVersion">5</int>
-				<string id="Name">[attack.name/]_failed</string>
-				<boolean id="ContainsLabel">true</boolean>
-				<boolean id="IsLabelShown">true</boolean>
-			</class>
-			<point id="CenterPoint">
-				<int id="x">[x+600/]</int>
-				<int id="y">[y+25/]</int>
-			</point>
-		</class>
-		<boolean id="ReadOnly">false</boolean>
-		<boolean id="ConstantMarking">true</boolean>
-		<int id="InitialState">0</int>
-	</class>
-	<class id="Mobius.BaseClasses.BaseEdgeClass">
-		<int id="ClassVersion">3</int>
-		<int id="LineType">0</int>
-		<string id="StartVertex">[attack.name/]_activity</string>
-		<string id="FinishVertex">[attack.name/]_success</string>
-		<boolean id="Arrows">true</boolean>
-		<vector id="PointList">
-			<point id="0">
-				<int id="x">[x+450/]</int>
-				<int id="y">[y-15/]</int>
-			</point>
-			<point id="1">
-				<int id="x">[x+600/]</int>
-				<int id="y">[y-25/]</int>
-			</point>
-		</vector>
-	</class>
-	<class id="Mobius.BaseClasses.BaseEdgeClass">
-		<int id="ClassVersion">3</int>
-		<int id="LineType">0</int>
-		<string id="StartVertex">[attack.name/]_activity</string>
-		<string id="FinishVertex">[attack.name/]_failed</string>
-		<boolean id="Arrows">true</boolean>
-		<vector id="PointList">
-			<point id="0">
-				<int id="x">[x+450/]</int>
-				<int id="y">[y/]</int>
-			</point>
-			<point id="1">
-				<int id="x">[x+600/]</int>
-				<int id="y">[y+25/]</int>
-			</point>
-		</vector>
-	</class>
-	<class id="Mobius.BaseClasses.BaseEdgeClass">
-		<int id="ClassVersion">3</int>
-		<int id="LineType">0</int>
-		<string id="StartVertex">[attack.name/]</string>
-		<string id="FinishVertex">[attack.name/]_activity</string>
-		<boolean id="Arrows">true</boolean>
-		<vector id="PointList">
-			<point id="0">
-				<int id="x">[x+250/]</int>
-				<int id="y">[y/]</int>
-			</point>
-			<point id="1">
-				<int id="x">[x+450/]</int>
-				<int id="y">[y/]</int>
-			</point>
-		</vector>
-	</class>
-	<class id="Mobius.BaseClasses.BaseEdgeClass">
-		<int id="ClassVersion">3</int>
-		<int id="LineType">0</int>
-		<string id="StartVertex">[optFragmentName/]Activity</string>
-		<string id="FinishVertex">End[optFragmentName/]</string>
-		<boolean id="Arrows">true</boolean>
-		<vector id="PointList">
-			<point id="0">
-				<int id="x">[x+150/]</int>
-				<int id="y">[y/]</int>
-			</point>
-			<point id="1">
-				<int id="x">[x+250/]</int>
-				<int id="y">[y+50/]</int>>
-			</point>
-		</vector>
-	</class>
-	<class id="Mobius.BaseClasses.BaseEdgeClass">
-		<int id="ClassVersion">3</int>
-		<int id="LineType">0</int>
-		<string id="StartVertex">[optFragmentName/]Activity</string>
-		<string id="FinishVertex">[attack.name/]</string>
-		<boolean id="Arrows">true</boolean>
-		<vector id="PointList">
-			<point id="0">
-				<int id="x">[x+150/]</int>
-				<int id="y">[y-15/]</int>
-			</point>
-			<point id="1">
-				<int id="x">[x+250/]</int>
-				<int id="y">[y/]</int>
-			</point>
-		</vector>
-	</class>
-	[comment: start place is previous fragment end place/]	
-	<class id="Mobius.BaseClasses.BaseEdgeClass">
-		<int id="ClassVersion">3</int>
-		<int id="LineType">0</int>
-		<string id="StartVertex">[startPlace/]</string>
-		<string id="FinishVertex">[optFragmentName/]Activity</string>
-		<boolean id="Arrows">true</boolean>
-		<vector id="PointList">
-			<point id="0">
-				<int id="x">[startX/]</int>
-				<int id="y">[startY/]</int>
-			</point>
-			<point id="1">
-				<int id="x">[x+150/]</int>
-				<int id="y">[y/]</int>
-			</point>
-		</vector>
-	</class>
-	[/let]
-	[/let]
-	[/let]
-	[/let]
-	[/let]
-[/template]
\ No newline at end of file
diff --git a/plugins/mobius/org.polarsys.chess.mobius/src/org/polarsys/chess/mobius/templates/ProjectFileTemplate.java b/plugins/mobius/org.polarsys.chess.mobius/src/org/polarsys/chess/mobius/templates/ProjectFileTemplate.java
deleted file mode 100644
index 44269c5..0000000
--- a/plugins/mobius/org.polarsys.chess.mobius/src/org/polarsys/chess/mobius/templates/ProjectFileTemplate.java
+++ /dev/null
@@ -1,409 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2012 Obeo.
- * 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:
- *     Obeo - initial API and implementation
- *******************************************************************************/
-package org.polarsys.chess.mobius.templates;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.acceleo.engine.event.IAcceleoTextGenerationListener;
-import org.eclipse.acceleo.engine.generation.strategy.IAcceleoGenerationStrategy;
-import org.eclipse.acceleo.engine.service.AbstractAcceleoGenerator;
-import org.eclipse.emf.common.util.BasicMonitor;
-import org.eclipse.emf.common.util.Monitor;
-import org.eclipse.emf.common.util.URI;
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emf.ecore.resource.ResourceSet;
-
-/**
- * Entry point of the 'ProjectFileTemplate' generation module.
- *
- * @generated
- */
-public class ProjectFileTemplate extends AbstractAcceleoGenerator {
-    /**
-     * The name of the module.
-     *
-     * @generated
-     */
-    public static final String MODULE_FILE_NAME = "/org/polarsys/chess/mobius/templates/projectFileTemplate";
-    
-    /**
-     * The name of the templates that are to be generated.
-     *
-     * @generated
-     */
-    public static final String[] TEMPLATE_NAMES = { "projectFileTemplate" };
-    
-    /**
-     * The list of properties files from the launch parameters (Launch configuration).
-     *
-     * @generated
-     */
-    private List<String> propertiesFiles = new ArrayList<String>();
-
-    /**
-     * Allows the public constructor to be used. Note that a generator created
-     * this way cannot be used to launch generations before one of
-     * {@link #initialize(EObject, File, List)} or
-     * {@link #initialize(URI, File, List)} is called.
-     * <p>
-     * The main reason for this constructor is to allow clients of this
-     * generation to call it from another Java file, as it allows for the
-     * retrieval of {@link #getProperties()} and
-     * {@link #getGenerationListeners()}.
-     * </p>
-     *
-     * @generated
-     */
-    public ProjectFileTemplate() {
-        // Empty implementation
-    }
-
-    /**
-     * This allows clients to instantiates a generator with all required information.
-     * 
-     * @param modelURI
-     *            URI where the model on which this generator will be used is located.
-     * @param targetFolder
-     *            This will be used as the output folder for this generation : it will be the base path
-     *            against which all file block URLs will be resolved.
-     * @param arguments
-     *            If the template which will be called requires more than one argument taken from the model,
-     *            pass them here.
-     * @throws IOException
-     *             This can be thrown in three scenarios : the module cannot be found, it cannot be loaded, or
-     *             the model cannot be loaded.
-     * @generated
-     */
-    public ProjectFileTemplate(URI modelURI, File targetFolder,
-            List<? extends Object> arguments) throws IOException {
-        initialize(modelURI, targetFolder, arguments);
-    }
-
-    /**
-     * This allows clients to instantiates a generator with all required information.
-     * 
-     * @param model
-     *            We'll iterate over the content of this element to find Objects matching the first parameter
-     *            of the template we need to call.
-     * @param targetFolder
-     *            This will be used as the output folder for this generation : it will be the base path
-     *            against which all file block URLs will be resolved.
-     * @param arguments
-     *            If the template which will be called requires more than one argument taken from the model,
-     *            pass them here.
-     * @throws IOException
-     *             This can be thrown in two scenarios : the module cannot be found, or it cannot be loaded.
-     * @generated
-     */
-    public ProjectFileTemplate(EObject model, File targetFolder,
-            List<? extends Object> arguments) throws IOException {
-        initialize(model, targetFolder, arguments);
-    }
-    
-    /**
-     * This can be used to launch the generation from a standalone application.
-     * 
-     * @param args
-     *            Arguments of the generation.
-     * @generated
-     */
-    public static void main(String[] args) {
-        try {
-            if (args.length < 2) {
-                System.out.println("Arguments not valid : {model, folder}.");
-            } else {
-                URI modelURI = URI.createFileURI(args[0]);
-                File folder = new File(args[1]);
-                
-                List<String> arguments = new ArrayList<String>();
-                
-                /*
-                 * If you want to change the content of this method, do NOT forget to change the "@generated"
-                 * tag in the Javadoc of this method to "@generated NOT". Without this new tag, any compilation
-                 * of the Acceleo module with the main template that has caused the creation of this class will
-                 * revert your modifications.
-                 */
-
-                /*
-                 * Add in this list all the arguments used by the starting point of the generation
-                 * If your main template is called on an element of your model and a String, you can
-                 * add in "arguments" this "String" attribute.
-                 */
-                
-                ProjectFileTemplate generator = new ProjectFileTemplate(modelURI, folder, arguments);
-                
-                /*
-                 * Add the properties from the launch arguments.
-                 * If you want to programmatically add new properties, add them in "propertiesFiles"
-                 * You can add the absolute path of a properties files, or even a project relative path.
-                 * If you want to add another "protocol" for your properties files, please override 
-                 * "getPropertiesLoaderService(AcceleoService)" in order to return a new property loader.
-                 * The behavior of the properties loader service is explained in the Acceleo documentation
-                 * (Help -> Help Contents).
-                 */
-                 
-                for (int i = 2; i < args.length; i++) {
-                    generator.addPropertiesFile(args[i]);
-                }
-                
-                generator.doGenerate(new BasicMonitor());
-            }
-        } catch (IOException e) {
-            e.printStackTrace();
-        }
-    }
-
-    /**
-     * Launches the generation described by this instance.
-     * 
-     * @param monitor
-     *            This will be used to display progress information to the user.
-     * @throws IOException
-     *             This will be thrown if any of the output files cannot be saved to disk.
-     * @generated
-     */
-    @Override
-    public void doGenerate(Monitor monitor) throws IOException {
-        /*
-         * TODO if you wish to change the generation as a whole, override this. The default behavior should
-         * be sufficient in most cases. If you want to change the content of this method, do NOT forget to
-         * change the "@generated" tag in the Javadoc of this method to "@generated NOT". Without this new tag,
-         * any compilation of the Acceleo module with the main template that has caused the creation of this
-         * class will revert your modifications. If you encounter a problem with an unresolved proxy during the
-         * generation, you can remove the comments in the following instructions to check for problems. Please
-         * note that those instructions may have a significant impact on the performances.
-         */
-
-        //org.eclipse.emf.ecore.util.EcoreUtil.resolveAll(model);
-
-        /*
-         * If you want to check for potential errors in your models before the launch of the generation, you
-         * use the code below.
-         */
-
-        //if (model != null && model.eResource() != null) {
-        //    List<org.eclipse.emf.ecore.resource.Resource.Diagnostic> errors = model.eResource().getErrors();
-        //    for (org.eclipse.emf.ecore.resource.Resource.Diagnostic diagnostic : errors) {
-        //        System.err.println(diagnostic.toString());
-        //    }
-        //}
-
-        super.doGenerate(monitor);
-    }
-    
-    /**
-     * If this generator needs to listen to text generation events, listeners can be returned from here.
-     * 
-     * @return List of listeners that are to be notified when text is generated through this launch.
-     * @generated
-     */
-    @Override
-    public List<IAcceleoTextGenerationListener> getGenerationListeners() {
-        List<IAcceleoTextGenerationListener> listeners = super.getGenerationListeners();
-        /*
-         * TODO if you need to listen to generation event, add listeners to the list here. If you want to change
-         * the content of this method, do NOT forget to change the "@generated" tag in the Javadoc of this method
-         * to "@generated NOT". Without this new tag, any compilation of the Acceleo module with the main template
-         * that has caused the creation of this class will revert your modifications.
-         */
-        return listeners;
-    }
-    
-    /**
-     * If you need to change the way files are generated, this is your entry point.
-     * <p>
-     * The default is {@link org.eclipse.acceleo.engine.generation.strategy.DefaultStrategy}; it generates
-     * files on the fly. If you only need to preview the results, return a new
-     * {@link org.eclipse.acceleo.engine.generation.strategy.PreviewStrategy}. Both of these aren't aware of
-     * the running Eclipse and can be used standalone.
-     * </p>
-     * <p>
-     * If you need the file generation to be aware of the workspace (A typical example is when you wanna
-     * override files that are under clear case or any other VCS that could forbid the overriding), then
-     * return a new {@link org.eclipse.acceleo.engine.generation.strategy.WorkspaceAwareStrategy}.
-     * <b>Note</b>, however, that this <b>cannot</b> be used standalone.
-     * </p>
-     * <p>
-     * All three of these default strategies support merging through JMerge.
-     * </p>
-     * 
-     * @return The generation strategy that is to be used for generations launched through this launcher.
-     * @generated
-     */
-    @Override
-    public IAcceleoGenerationStrategy getGenerationStrategy() {
-        return super.getGenerationStrategy();
-    }
-    
-    /**
-     * This will be called in order to find and load the module that will be launched through this launcher.
-     * We expect this name not to contain file extension, and the module to be located beside the launcher.
-     * 
-     * @return The name of the module that is to be launched.
-     * @generated
-     */
-    @Override
-    public String getModuleName() {
-        return MODULE_FILE_NAME;
-    }
-    
-    /**
-     * If the module(s) called by this launcher require properties files, return their qualified path from
-     * here.Take note that the first added properties files will take precedence over subsequent ones if they
-     * contain conflicting keys.
-     * 
-     * @return The list of properties file we need to add to the generation context.
-     * @see java.util.ResourceBundle#getBundle(String)
-     * @generated
-     */
-    @Override
-    public List<String> getProperties() {
-        /*
-         * If you want to change the content of this method, do NOT forget to change the "@generated"
-         * tag in the Javadoc of this method to "@generated NOT". Without this new tag, any compilation
-         * of the Acceleo module with the main template that has caused the creation of this class will
-         * revert your modifications.
-         */
-
-        /*
-         * TODO if your generation module requires access to properties files, add their qualified path to the list here.
-         * 
-         * Properties files can be located in an Eclipse plug-in or in the file system (all Acceleo projects are Eclipse
-         * plug-in). In order to use properties files located in an Eclipse plugin, you need to add the path of the properties
-         * files to the "propertiesFiles" list:
-         * 
-         * final String prefix = "platform:/plugin/";
-         * final String pluginName = "org.eclipse.acceleo.module.sample";
-         * final String packagePath = "/org/eclipse/acceleo/module/sample/properties/";
-         * final String fileName = "default.properties";
-         * propertiesFiles.add(prefix + pluginName + packagePath + fileName);
-         * 
-         * With this mechanism, you can load properties files from your plugin or from another plugin.
-         * 
-         * You may want to load properties files from the file system, for that you need to add the absolute path of the file:
-         * 
-         * propertiesFiles.add("C:\Users\MyName\MyFile.properties");
-         * 
-         * If you want to let your users add properties files located in the same folder as the model:
-         *
-         * if (EMFPlugin.IS_ECLIPSE_RUNNING && model != null && model.eResource() != null) { 
-         *     propertiesFiles.addAll(AcceleoEngineUtils.getPropertiesFilesNearModel(model.eResource()));
-         * }
-         * 
-         * To learn more about Properties Files, have a look at the Acceleo documentation (Help -> Help Contents).
-         */
-        return propertiesFiles;
-    }
-    
-    /**
-     * Adds a properties file in the list of properties files.
-     * 
-     * @param propertiesFile
-     *            The properties file to add.
-     * @generated
-     * @since 3.1
-     */
-    @Override
-    public void addPropertiesFile(String propertiesFile) {
-        this.propertiesFiles.add(propertiesFile);
-    }
-    
-    /**
-     * This will be used to get the list of templates that are to be launched by this launcher.
-     * 
-     * @return The list of templates to call on the module {@link #getModuleName()}.
-     * @generated
-     */
-    @Override
-    public String[] getTemplateNames() {
-        return TEMPLATE_NAMES;
-    }
-    
-    /**
-     * This can be used to update the resource set's package registry with all needed EPackages.
-     * 
-     * @param resourceSet
-     *            The resource set which registry has to be updated.
-     * @generated
-     */
-    @Override
-    public void registerPackages(ResourceSet resourceSet) {
-        super.registerPackages(resourceSet);
-        if (!isInWorkspace(org.eclipse.uml2.uml.UMLPackage.class)) {
-            resourceSet.getPackageRegistry().put(org.eclipse.uml2.uml.UMLPackage.eINSTANCE.getNsURI(), org.eclipse.uml2.uml.UMLPackage.eINSTANCE);
-        }
-        
-        /*
-         * If you want to change the content of this method, do NOT forget to change the "@generated"
-         * tag in the Javadoc of this method to "@generated NOT". Without this new tag, any compilation
-         * of the Acceleo module with the main template that has caused the creation of this class will
-         * revert your modifications.
-         */
-        
-        /*
-         * If you need additional package registrations, you can register them here. The following line
-         * (in comment) is an example of the package registration for UML.
-         * 
-         * You can use the method  "isInWorkspace(Class c)" to check if the package that you are about to
-         * register is in the workspace.
-         * 
-         * To register a package properly, please follow the following conventions:
-         *
-         * If the package is located in another plug-in, already installed in Eclipse. The following content should
-         * have been generated at the beginning of this method. Do not register the package using this mechanism if
-         * the metamodel is located in the workspace.
-         *  
-         * if (!isInWorkspace(UMLPackage.class)) {
-         *     // The normal package registration if your metamodel is in a plugin.
-         *     resourceSet.getPackageRegistry().put(UMLPackage.eNS_URI, UMLPackage.eINSTANCE);
-         * }
-         * 
-         * If the package is located in another project in your workspace, the plugin containing the package has not
-         * been register by EMF and Acceleo should register it automatically. If you want to use the generator in
-         * stand alone, the regular registration (seen a couple lines before) is needed.
-         * 
-         * To learn more about Package Registration, have a look at the Acceleo documentation (Help -> Help Contents).
-         */
-    }
-
-    /**
-     * This can be used to update the resource set's resource factory registry with all needed factories.
-     * 
-     * @param resourceSet
-     *            The resource set which registry has to be updated.
-     * @generated
-     */
-    @Override
-    public void registerResourceFactories(ResourceSet resourceSet) {
-        super.registerResourceFactories(resourceSet);
-        /*
-         * If you want to change the content of this method, do NOT forget to change the "@generated"
-         * tag in the Javadoc of this method to "@generated NOT". Without this new tag, any compilation
-         * of the Acceleo module with the main template that has caused the creation of this class will
-         * revert your modifications.
-         */
-        
-        /*
-         * TODO If you need additional resource factories registrations, you can register them here. the following line
-         * (in comment) is an example of the resource factory registration for UML.
-         *
-         * If you want to use the generator in stand alone, the resource factory registration will be required.
-         *  
-         * To learn more about the registration of Resource Factories, have a look at the Acceleo documentation (Help -> Help Contents). 
-         */ 
-        
-        // resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put(UMLResource.FILE_EXTENSION, UMLResource.Factory.INSTANCE);
-    }
-    
-}
diff --git a/plugins/mobius/org.polarsys.chess.mobius/src/org/polarsys/chess/mobius/templates/ProjectFileTemplate_sanmodel.java b/plugins/mobius/org.polarsys.chess.mobius/src/org/polarsys/chess/mobius/templates/ProjectFileTemplate_sanmodel.java
index b44f69c..5cc8e47 100644
--- a/plugins/mobius/org.polarsys.chess.mobius/src/org/polarsys/chess/mobius/templates/ProjectFileTemplate_sanmodel.java
+++ b/plugins/mobius/org.polarsys.chess.mobius/src/org/polarsys/chess/mobius/templates/ProjectFileTemplate_sanmodel.java
@@ -340,9 +340,6 @@
     @Override
     public void registerPackages(ResourceSet resourceSet) {
         super.registerPackages(resourceSet);
-        if (!isInWorkspace(org.polarsys.chess.mobius.model.SAN.SANModelPackage.class)) {
-            resourceSet.getPackageRegistry().put(org.polarsys.chess.mobius.model.SAN.SANModelPackage.eINSTANCE.getNsURI(), org.polarsys.chess.mobius.model.SAN.SANModelPackage.eINSTANCE);
-        }
         
         /*
          * If you want to change the content of this method, do NOT forget to change the "@generated"
diff --git a/plugins/mobius/org.polarsys.chess.mobius/src/org/polarsys/chess/mobius/templates/RewardTemplate.java b/plugins/mobius/org.polarsys.chess.mobius/src/org/polarsys/chess/mobius/templates/RewardTemplate.java
deleted file mode 100644
index 749811b..0000000
--- a/plugins/mobius/org.polarsys.chess.mobius/src/org/polarsys/chess/mobius/templates/RewardTemplate.java
+++ /dev/null
@@ -1,409 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2012 Obeo.
- * 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:
- *     Obeo - initial API and implementation
- *******************************************************************************/
-package org.polarsys.chess.mobius.templates;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.acceleo.engine.event.IAcceleoTextGenerationListener;
-import org.eclipse.acceleo.engine.generation.strategy.IAcceleoGenerationStrategy;
-import org.eclipse.acceleo.engine.service.AbstractAcceleoGenerator;
-import org.eclipse.emf.common.util.BasicMonitor;
-import org.eclipse.emf.common.util.Monitor;
-import org.eclipse.emf.common.util.URI;
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emf.ecore.resource.ResourceSet;
-
-/**
- * Entry point of the 'RewardTemplate' generation module.
- *
- * @generated
- */
-public class RewardTemplate extends AbstractAcceleoGenerator {
-    /**
-     * The name of the module.
-     *
-     * @generated
-     */
-    public static final String MODULE_FILE_NAME = "/org/polarsys/chess/mobius/templates/RewardTemplate";
-    
-    /**
-     * The name of the templates that are to be generated.
-     *
-     * @generated
-     */
-    public static final String[] TEMPLATE_NAMES = { "RewardTemplate" };
-    
-    /**
-     * The list of properties files from the launch parameters (Launch configuration).
-     *
-     * @generated
-     */
-    private List<String> propertiesFiles = new ArrayList<String>();
-
-    /**
-     * Allows the public constructor to be used. Note that a generator created
-     * this way cannot be used to launch generations before one of
-     * {@link #initialize(EObject, File, List)} or
-     * {@link #initialize(URI, File, List)} is called.
-     * <p>
-     * The main reason for this constructor is to allow clients of this
-     * generation to call it from another Java file, as it allows for the
-     * retrieval of {@link #getProperties()} and
-     * {@link #getGenerationListeners()}.
-     * </p>
-     *
-     * @generated
-     */
-    public RewardTemplate() {
-        // Empty implementation
-    }
-
-    /**
-     * This allows clients to instantiates a generator with all required information.
-     * 
-     * @param modelURI
-     *            URI where the model on which this generator will be used is located.
-     * @param targetFolder
-     *            This will be used as the output folder for this generation : it will be the base path
-     *            against which all file block URLs will be resolved.
-     * @param arguments
-     *            If the template which will be called requires more than one argument taken from the model,
-     *            pass them here.
-     * @throws IOException
-     *             This can be thrown in three scenarios : the module cannot be found, it cannot be loaded, or
-     *             the model cannot be loaded.
-     * @generated
-     */
-    public RewardTemplate(URI modelURI, File targetFolder,
-            List<? extends Object> arguments) throws IOException {
-        initialize(modelURI, targetFolder, arguments);
-    }
-
-    /**
-     * This allows clients to instantiates a generator with all required information.
-     * 
-     * @param model
-     *            We'll iterate over the content of this element to find Objects matching the first parameter
-     *            of the template we need to call.
-     * @param targetFolder
-     *            This will be used as the output folder for this generation : it will be the base path
-     *            against which all file block URLs will be resolved.
-     * @param arguments
-     *            If the template which will be called requires more than one argument taken from the model,
-     *            pass them here.
-     * @throws IOException
-     *             This can be thrown in two scenarios : the module cannot be found, or it cannot be loaded.
-     * @generated
-     */
-    public RewardTemplate(EObject model, File targetFolder,
-            List<? extends Object> arguments) throws IOException {
-        initialize(model, targetFolder, arguments);
-    }
-    
-    /**
-     * This can be used to launch the generation from a standalone application.
-     * 
-     * @param args
-     *            Arguments of the generation.
-     * @generated
-     */
-    public static void main(String[] args) {
-        try {
-            if (args.length < 2) {
-                System.out.println("Arguments not valid : {model, folder}.");
-            } else {
-                URI modelURI = URI.createFileURI(args[0]);
-                File folder = new File(args[1]);
-                
-                List<String> arguments = new ArrayList<String>();
-                
-                /*
-                 * If you want to change the content of this method, do NOT forget to change the "@generated"
-                 * tag in the Javadoc of this method to "@generated NOT". Without this new tag, any compilation
-                 * of the Acceleo module with the main template that has caused the creation of this class will
-                 * revert your modifications.
-                 */
-
-                /*
-                 * Add in this list all the arguments used by the starting point of the generation
-                 * If your main template is called on an element of your model and a String, you can
-                 * add in "arguments" this "String" attribute.
-                 */
-                
-                RewardTemplate generator = new RewardTemplate(modelURI, folder, arguments);
-                
-                /*
-                 * Add the properties from the launch arguments.
-                 * If you want to programmatically add new properties, add them in "propertiesFiles"
-                 * You can add the absolute path of a properties files, or even a project relative path.
-                 * If you want to add another "protocol" for your properties files, please override 
-                 * "getPropertiesLoaderService(AcceleoService)" in order to return a new property loader.
-                 * The behavior of the properties loader service is explained in the Acceleo documentation
-                 * (Help -> Help Contents).
-                 */
-                 
-                for (int i = 2; i < args.length; i++) {
-                    generator.addPropertiesFile(args[i]);
-                }
-                
-                generator.doGenerate(new BasicMonitor());
-            }
-        } catch (IOException e) {
-            e.printStackTrace();
-        }
-    }
-
-    /**
-     * Launches the generation described by this instance.
-     * 
-     * @param monitor
-     *            This will be used to display progress information to the user.
-     * @throws IOException
-     *             This will be thrown if any of the output files cannot be saved to disk.
-     * @generated
-     */
-    @Override
-    public void doGenerate(Monitor monitor) throws IOException {
-        /*
-         * TODO if you wish to change the generation as a whole, override this. The default behavior should
-         * be sufficient in most cases. If you want to change the content of this method, do NOT forget to
-         * change the "@generated" tag in the Javadoc of this method to "@generated NOT". Without this new tag,
-         * any compilation of the Acceleo module with the main template that has caused the creation of this
-         * class will revert your modifications. If you encounter a problem with an unresolved proxy during the
-         * generation, you can remove the comments in the following instructions to check for problems. Please
-         * note that those instructions may have a significant impact on the performances.
-         */
-
-        //org.eclipse.emf.ecore.util.EcoreUtil.resolveAll(model);
-
-        /*
-         * If you want to check for potential errors in your models before the launch of the generation, you
-         * use the code below.
-         */
-
-        //if (model != null && model.eResource() != null) {
-        //    List<org.eclipse.emf.ecore.resource.Resource.Diagnostic> errors = model.eResource().getErrors();
-        //    for (org.eclipse.emf.ecore.resource.Resource.Diagnostic diagnostic : errors) {
-        //        System.err.println(diagnostic.toString());
-        //    }
-        //}
-
-        super.doGenerate(monitor);
-    }
-    
-    /**
-     * If this generator needs to listen to text generation events, listeners can be returned from here.
-     * 
-     * @return List of listeners that are to be notified when text is generated through this launch.
-     * @generated
-     */
-    @Override
-    public List<IAcceleoTextGenerationListener> getGenerationListeners() {
-        List<IAcceleoTextGenerationListener> listeners = super.getGenerationListeners();
-        /*
-         * TODO if you need to listen to generation event, add listeners to the list here. If you want to change
-         * the content of this method, do NOT forget to change the "@generated" tag in the Javadoc of this method
-         * to "@generated NOT". Without this new tag, any compilation of the Acceleo module with the main template
-         * that has caused the creation of this class will revert your modifications.
-         */
-        return listeners;
-    }
-    
-    /**
-     * If you need to change the way files are generated, this is your entry point.
-     * <p>
-     * The default is {@link org.eclipse.acceleo.engine.generation.strategy.DefaultStrategy}; it generates
-     * files on the fly. If you only need to preview the results, return a new
-     * {@link org.eclipse.acceleo.engine.generation.strategy.PreviewStrategy}. Both of these aren't aware of
-     * the running Eclipse and can be used standalone.
-     * </p>
-     * <p>
-     * If you need the file generation to be aware of the workspace (A typical example is when you wanna
-     * override files that are under clear case or any other VCS that could forbid the overriding), then
-     * return a new {@link org.eclipse.acceleo.engine.generation.strategy.WorkspaceAwareStrategy}.
-     * <b>Note</b>, however, that this <b>cannot</b> be used standalone.
-     * </p>
-     * <p>
-     * All three of these default strategies support merging through JMerge.
-     * </p>
-     * 
-     * @return The generation strategy that is to be used for generations launched through this launcher.
-     * @generated
-     */
-    @Override
-    public IAcceleoGenerationStrategy getGenerationStrategy() {
-        return super.getGenerationStrategy();
-    }
-    
-    /**
-     * This will be called in order to find and load the module that will be launched through this launcher.
-     * We expect this name not to contain file extension, and the module to be located beside the launcher.
-     * 
-     * @return The name of the module that is to be launched.
-     * @generated
-     */
-    @Override
-    public String getModuleName() {
-        return MODULE_FILE_NAME;
-    }
-    
-    /**
-     * If the module(s) called by this launcher require properties files, return their qualified path from
-     * here.Take note that the first added properties files will take precedence over subsequent ones if they
-     * contain conflicting keys.
-     * 
-     * @return The list of properties file we need to add to the generation context.
-     * @see java.util.ResourceBundle#getBundle(String)
-     * @generated
-     */
-    @Override
-    public List<String> getProperties() {
-        /*
-         * If you want to change the content of this method, do NOT forget to change the "@generated"
-         * tag in the Javadoc of this method to "@generated NOT". Without this new tag, any compilation
-         * of the Acceleo module with the main template that has caused the creation of this class will
-         * revert your modifications.
-         */
-
-        /*
-         * TODO if your generation module requires access to properties files, add their qualified path to the list here.
-         * 
-         * Properties files can be located in an Eclipse plug-in or in the file system (all Acceleo projects are Eclipse
-         * plug-in). In order to use properties files located in an Eclipse plugin, you need to add the path of the properties
-         * files to the "propertiesFiles" list:
-         * 
-         * final String prefix = "platform:/plugin/";
-         * final String pluginName = "org.eclipse.acceleo.module.sample";
-         * final String packagePath = "/org/eclipse/acceleo/module/sample/properties/";
-         * final String fileName = "default.properties";
-         * propertiesFiles.add(prefix + pluginName + packagePath + fileName);
-         * 
-         * With this mechanism, you can load properties files from your plugin or from another plugin.
-         * 
-         * You may want to load properties files from the file system, for that you need to add the absolute path of the file:
-         * 
-         * propertiesFiles.add("C:\Users\MyName\MyFile.properties");
-         * 
-         * If you want to let your users add properties files located in the same folder as the model:
-         *
-         * if (EMFPlugin.IS_ECLIPSE_RUNNING && model != null && model.eResource() != null) { 
-         *     propertiesFiles.addAll(AcceleoEngineUtils.getPropertiesFilesNearModel(model.eResource()));
-         * }
-         * 
-         * To learn more about Properties Files, have a look at the Acceleo documentation (Help -> Help Contents).
-         */
-        return propertiesFiles;
-    }
-    
-    /**
-     * Adds a properties file in the list of properties files.
-     * 
-     * @param propertiesFile
-     *            The properties file to add.
-     * @generated
-     * @since 3.1
-     */
-    @Override
-    public void addPropertiesFile(String propertiesFile) {
-        this.propertiesFiles.add(propertiesFile);
-    }
-    
-    /**
-     * This will be used to get the list of templates that are to be launched by this launcher.
-     * 
-     * @return The list of templates to call on the module {@link #getModuleName()}.
-     * @generated
-     */
-    @Override
-    public String[] getTemplateNames() {
-        return TEMPLATE_NAMES;
-    }
-    
-    /**
-     * This can be used to update the resource set's package registry with all needed EPackages.
-     * 
-     * @param resourceSet
-     *            The resource set which registry has to be updated.
-     * @generated
-     */
-    @Override
-    public void registerPackages(ResourceSet resourceSet) {
-        super.registerPackages(resourceSet);
-        if (!isInWorkspace(org.eclipse.uml2.uml.UMLPackage.class)) {
-            resourceSet.getPackageRegistry().put(org.eclipse.uml2.uml.UMLPackage.eINSTANCE.getNsURI(), org.eclipse.uml2.uml.UMLPackage.eINSTANCE);
-        }
-        
-        /*
-         * If you want to change the content of this method, do NOT forget to change the "@generated"
-         * tag in the Javadoc of this method to "@generated NOT". Without this new tag, any compilation
-         * of the Acceleo module with the main template that has caused the creation of this class will
-         * revert your modifications.
-         */
-        
-        /*
-         * If you need additional package registrations, you can register them here. The following line
-         * (in comment) is an example of the package registration for UML.
-         * 
-         * You can use the method  "isInWorkspace(Class c)" to check if the package that you are about to
-         * register is in the workspace.
-         * 
-         * To register a package properly, please follow the following conventions:
-         *
-         * If the package is located in another plug-in, already installed in Eclipse. The following content should
-         * have been generated at the beginning of this method. Do not register the package using this mechanism if
-         * the metamodel is located in the workspace.
-         *  
-         * if (!isInWorkspace(UMLPackage.class)) {
-         *     // The normal package registration if your metamodel is in a plugin.
-         *     resourceSet.getPackageRegistry().put(UMLPackage.eNS_URI, UMLPackage.eINSTANCE);
-         * }
-         * 
-         * If the package is located in another project in your workspace, the plugin containing the package has not
-         * been register by EMF and Acceleo should register it automatically. If you want to use the generator in
-         * stand alone, the regular registration (seen a couple lines before) is needed.
-         * 
-         * To learn more about Package Registration, have a look at the Acceleo documentation (Help -> Help Contents).
-         */
-    }
-
-    /**
-     * This can be used to update the resource set's resource factory registry with all needed factories.
-     * 
-     * @param resourceSet
-     *            The resource set which registry has to be updated.
-     * @generated
-     */
-    @Override
-    public void registerResourceFactories(ResourceSet resourceSet) {
-        super.registerResourceFactories(resourceSet);
-        /*
-         * If you want to change the content of this method, do NOT forget to change the "@generated"
-         * tag in the Javadoc of this method to "@generated NOT". Without this new tag, any compilation
-         * of the Acceleo module with the main template that has caused the creation of this class will
-         * revert your modifications.
-         */
-        
-        /*
-         * TODO If you need additional resource factories registrations, you can register them here. the following line
-         * (in comment) is an example of the resource factory registration for UML.
-         *
-         * If you want to use the generator in stand alone, the resource factory registration will be required.
-         *  
-         * To learn more about the registration of Resource Factories, have a look at the Acceleo documentation (Help -> Help Contents). 
-         */ 
-        
-        // resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put(UMLResource.FILE_EXTENSION, UMLResource.Factory.INSTANCE);
-    }
-    
-}
diff --git a/plugins/mobius/org.polarsys.chess.mobius/src/org/polarsys/chess/mobius/templates/SingleAttackTemplate.java b/plugins/mobius/org.polarsys.chess.mobius/src/org/polarsys/chess/mobius/templates/SingleAttackTemplate.java
deleted file mode 100644
index 669a64a..0000000
--- a/plugins/mobius/org.polarsys.chess.mobius/src/org/polarsys/chess/mobius/templates/SingleAttackTemplate.java
+++ /dev/null
@@ -1,409 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2012 Obeo.
- * 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:
- *     Obeo - initial API and implementation
- *******************************************************************************/
-package org.polarsys.chess.mobius.templates;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.acceleo.engine.event.IAcceleoTextGenerationListener;
-import org.eclipse.acceleo.engine.generation.strategy.IAcceleoGenerationStrategy;
-import org.eclipse.acceleo.engine.service.AbstractAcceleoGenerator;
-import org.eclipse.emf.common.util.BasicMonitor;
-import org.eclipse.emf.common.util.Monitor;
-import org.eclipse.emf.common.util.URI;
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emf.ecore.resource.ResourceSet;
-
-/**
- * Entry point of the 'AttackTemplate' generation module.
- *
- * @generated
- */
-public class SingleAttackTemplate extends AbstractAcceleoGenerator {
-    /**
-     * The name of the module.
-     *
-     * @generated
-     */
-    public static final String MODULE_FILE_NAME = "/org/polarsys/chess/mobius/templates/attackSimpleTemplate";
-    
-    /**
-     * The name of the templates that are to be generated.
-     *
-     * @generated
-     */
-    public static final String[] TEMPLATE_NAMES = { "attackSimpleTemplate" };
-    
-    /**
-     * The list of properties files from the launch parameters (Launch configuration).
-     *
-     * @generated
-     */
-    private List<String> propertiesFiles = new ArrayList<String>();
-
-    /**
-     * Allows the public constructor to be used. Note that a generator created
-     * this way cannot be used to launch generations before one of
-     * {@link #initialize(EObject, File, List)} or
-     * {@link #initialize(URI, File, List)} is called.
-     * <p>
-     * The main reason for this constructor is to allow clients of this
-     * generation to call it from another Java file, as it allows for the
-     * retrieval of {@link #getProperties()} and
-     * {@link #getGenerationListeners()}.
-     * </p>
-     *
-     * @generated
-     */
-    public SingleAttackTemplate() {
-        // Empty implementation
-    }
-
-    /**
-     * This allows clients to instantiates a generator with all required information.
-     * 
-     * @param modelURI
-     *            URI where the model on which this generator will be used is located.
-     * @param targetFolder
-     *            This will be used as the output folder for this generation : it will be the base path
-     *            against which all file block URLs will be resolved.
-     * @param arguments
-     *            If the template which will be called requires more than one argument taken from the model,
-     *            pass them here.
-     * @throws IOException
-     *             This can be thrown in three scenarios : the module cannot be found, it cannot be loaded, or
-     *             the model cannot be loaded.
-     * @generated
-     */
-    public SingleAttackTemplate(URI modelURI, File targetFolder,
-            List<? extends Object> arguments) throws IOException {
-        initialize(modelURI, targetFolder, arguments);
-    }
-
-    /**
-     * This allows clients to instantiates a generator with all required information.
-     * 
-     * @param model
-     *            We'll iterate over the content of this element to find Objects matching the first parameter
-     *            of the template we need to call.
-     * @param targetFolder
-     *            This will be used as the output folder for this generation : it will be the base path
-     *            against which all file block URLs will be resolved.
-     * @param arguments
-     *            If the template which will be called requires more than one argument taken from the model,
-     *            pass them here.
-     * @throws IOException
-     *             This can be thrown in two scenarios : the module cannot be found, or it cannot be loaded.
-     * @generated
-     */
-    public SingleAttackTemplate(EObject model, File targetFolder,
-            List<? extends Object> arguments) throws IOException {
-        initialize(model, targetFolder, arguments);
-    }
-    
-    /**
-     * This can be used to launch the generation from a standalone application.
-     * 
-     * @param args
-     *            Arguments of the generation.
-     * @generated
-     */
-    public static void main(String[] args) {
-        try {
-            if (args.length < 2) {
-                System.out.println("Arguments not valid : {model, folder}.");
-            } else {
-                URI modelURI = URI.createFileURI(args[0]);
-                File folder = new File(args[1]);
-                
-                List<String> arguments = new ArrayList<String>();
-                
-                /*
-                 * If you want to change the content of this method, do NOT forget to change the "@generated"
-                 * tag in the Javadoc of this method to "@generated NOT". Without this new tag, any compilation
-                 * of the Acceleo module with the main template that has caused the creation of this class will
-                 * revert your modifications.
-                 */
-
-                /*
-                 * Add in this list all the arguments used by the starting point of the generation
-                 * If your main template is called on an element of your model and a String, you can
-                 * add in "arguments" this "String" attribute.
-                 */
-                
-                SingleAttackTemplate generator = new SingleAttackTemplate(modelURI, folder, arguments);
-                
-                /*
-                 * Add the properties from the launch arguments.
-                 * If you want to programmatically add new properties, add them in "propertiesFiles"
-                 * You can add the absolute path of a properties files, or even a project relative path.
-                 * If you want to add another "protocol" for your properties files, please override 
-                 * "getPropertiesLoaderService(AcceleoService)" in order to return a new property loader.
-                 * The behavior of the properties loader service is explained in the Acceleo documentation
-                 * (Help -> Help Contents).
-                 */
-                 
-                for (int i = 2; i < args.length; i++) {
-                    generator.addPropertiesFile(args[i]);
-                }
-                
-                generator.doGenerate(new BasicMonitor());
-            }
-        } catch (IOException e) {
-            e.printStackTrace();
-        }
-    }
-
-    /**
-     * Launches the generation described by this instance.
-     * 
-     * @param monitor
-     *            This will be used to display progress information to the user.
-     * @throws IOException
-     *             This will be thrown if any of the output files cannot be saved to disk.
-     * @generated
-     */
-    @Override
-    public void doGenerate(Monitor monitor) throws IOException {
-        /*
-         * TODO if you wish to change the generation as a whole, override this. The default behavior should
-         * be sufficient in most cases. If you want to change the content of this method, do NOT forget to
-         * change the "@generated" tag in the Javadoc of this method to "@generated NOT". Without this new tag,
-         * any compilation of the Acceleo module with the main template that has caused the creation of this
-         * class will revert your modifications. If you encounter a problem with an unresolved proxy during the
-         * generation, you can remove the comments in the following instructions to check for problems. Please
-         * note that those instructions may have a significant impact on the performances.
-         */
-
-        //org.eclipse.emf.ecore.util.EcoreUtil.resolveAll(model);
-
-        /*
-         * If you want to check for potential errors in your models before the launch of the generation, you
-         * use the code below.
-         */
-
-        //if (model != null && model.eResource() != null) {
-        //    List<org.eclipse.emf.ecore.resource.Resource.Diagnostic> errors = model.eResource().getErrors();
-        //    for (org.eclipse.emf.ecore.resource.Resource.Diagnostic diagnostic : errors) {
-        //        System.err.println(diagnostic.toString());
-        //    }
-        //}
-
-        super.doGenerate(monitor);
-    }
-    
-    /**
-     * If this generator needs to listen to text generation events, listeners can be returned from here.
-     * 
-     * @return List of listeners that are to be notified when text is generated through this launch.
-     * @generated
-     */
-    @Override
-    public List<IAcceleoTextGenerationListener> getGenerationListeners() {
-        List<IAcceleoTextGenerationListener> listeners = super.getGenerationListeners();
-        /*
-         * TODO if you need to listen to generation event, add listeners to the list here. If you want to change
-         * the content of this method, do NOT forget to change the "@generated" tag in the Javadoc of this method
-         * to "@generated NOT". Without this new tag, any compilation of the Acceleo module with the main template
-         * that has caused the creation of this class will revert your modifications.
-         */
-        return listeners;
-    }
-    
-    /**
-     * If you need to change the way files are generated, this is your entry point.
-     * <p>
-     * The default is {@link org.eclipse.acceleo.engine.generation.strategy.DefaultStrategy}; it generates
-     * files on the fly. If you only need to preview the results, return a new
-     * {@link org.eclipse.acceleo.engine.generation.strategy.PreviewStrategy}. Both of these aren't aware of
-     * the running Eclipse and can be used standalone.
-     * </p>
-     * <p>
-     * If you need the file generation to be aware of the workspace (A typical example is when you wanna
-     * override files that are under clear case or any other VCS that could forbid the overriding), then
-     * return a new {@link org.eclipse.acceleo.engine.generation.strategy.WorkspaceAwareStrategy}.
-     * <b>Note</b>, however, that this <b>cannot</b> be used standalone.
-     * </p>
-     * <p>
-     * All three of these default strategies support merging through JMerge.
-     * </p>
-     * 
-     * @return The generation strategy that is to be used for generations launched through this launcher.
-     * @generated
-     */
-    @Override
-    public IAcceleoGenerationStrategy getGenerationStrategy() {
-        return super.getGenerationStrategy();
-    }
-    
-    /**
-     * This will be called in order to find and load the module that will be launched through this launcher.
-     * We expect this name not to contain file extension, and the module to be located beside the launcher.
-     * 
-     * @return The name of the module that is to be launched.
-     * @generated
-     */
-    @Override
-    public String getModuleName() {
-        return MODULE_FILE_NAME;
-    }
-    
-    /**
-     * If the module(s) called by this launcher require properties files, return their qualified path from
-     * here.Take note that the first added properties files will take precedence over subsequent ones if they
-     * contain conflicting keys.
-     * 
-     * @return The list of properties file we need to add to the generation context.
-     * @see java.util.ResourceBundle#getBundle(String)
-     * @generated
-     */
-    @Override
-    public List<String> getProperties() {
-        /*
-         * If you want to change the content of this method, do NOT forget to change the "@generated"
-         * tag in the Javadoc of this method to "@generated NOT". Without this new tag, any compilation
-         * of the Acceleo module with the main template that has caused the creation of this class will
-         * revert your modifications.
-         */
-
-        /*
-         * TODO if your generation module requires access to properties files, add their qualified path to the list here.
-         * 
-         * Properties files can be located in an Eclipse plug-in or in the file system (all Acceleo projects are Eclipse
-         * plug-in). In order to use properties files located in an Eclipse plugin, you need to add the path of the properties
-         * files to the "propertiesFiles" list:
-         * 
-         * final String prefix = "platform:/plugin/";
-         * final String pluginName = "org.eclipse.acceleo.module.sample";
-         * final String packagePath = "/org/eclipse/acceleo/module/sample/properties/";
-         * final String fileName = "default.properties";
-         * propertiesFiles.add(prefix + pluginName + packagePath + fileName);
-         * 
-         * With this mechanism, you can load properties files from your plugin or from another plugin.
-         * 
-         * You may want to load properties files from the file system, for that you need to add the absolute path of the file:
-         * 
-         * propertiesFiles.add("C:\Users\MyName\MyFile.properties");
-         * 
-         * If you want to let your users add properties files located in the same folder as the model:
-         *
-         * if (EMFPlugin.IS_ECLIPSE_RUNNING && model != null && model.eResource() != null) { 
-         *     propertiesFiles.addAll(AcceleoEngineUtils.getPropertiesFilesNearModel(model.eResource()));
-         * }
-         * 
-         * To learn more about Properties Files, have a look at the Acceleo documentation (Help -> Help Contents).
-         */
-        return propertiesFiles;
-    }
-    
-    /**
-     * Adds a properties file in the list of properties files.
-     * 
-     * @param propertiesFile
-     *            The properties file to add.
-     * @generated
-     * @since 3.1
-     */
-    @Override
-    public void addPropertiesFile(String propertiesFile) {
-        this.propertiesFiles.add(propertiesFile);
-    }
-    
-    /**
-     * This will be used to get the list of templates that are to be launched by this launcher.
-     * 
-     * @return The list of templates to call on the module {@link #getModuleName()}.
-     * @generated
-     */
-    @Override
-    public String[] getTemplateNames() {
-        return TEMPLATE_NAMES;
-    }
-    
-    /**
-     * This can be used to update the resource set's package registry with all needed EPackages.
-     * 
-     * @param resourceSet
-     *            The resource set which registry has to be updated.
-     * @generated
-     */
-    @Override
-    public void registerPackages(ResourceSet resourceSet) {
-        super.registerPackages(resourceSet);
-        if (!isInWorkspace(org.eclipse.uml2.uml.UMLPackage.class)) {
-            resourceSet.getPackageRegistry().put(org.eclipse.uml2.uml.UMLPackage.eINSTANCE.getNsURI(), org.eclipse.uml2.uml.UMLPackage.eINSTANCE);
-        }
-        
-        /*
-         * If you want to change the content of this method, do NOT forget to change the "@generated"
-         * tag in the Javadoc of this method to "@generated NOT". Without this new tag, any compilation
-         * of the Acceleo module with the main template that has caused the creation of this class will
-         * revert your modifications.
-         */
-        
-        /*
-         * If you need additional package registrations, you can register them here. The following line
-         * (in comment) is an example of the package registration for UML.
-         * 
-         * You can use the method  "isInWorkspace(Class c)" to check if the package that you are about to
-         * register is in the workspace.
-         * 
-         * To register a package properly, please follow the following conventions:
-         *
-         * If the package is located in another plug-in, already installed in Eclipse. The following content should
-         * have been generated at the beginning of this method. Do not register the package using this mechanism if
-         * the metamodel is located in the workspace.
-         *  
-         * if (!isInWorkspace(UMLPackage.class)) {
-         *     // The normal package registration if your metamodel is in a plugin.
-         *     resourceSet.getPackageRegistry().put(UMLPackage.eNS_URI, UMLPackage.eINSTANCE);
-         * }
-         * 
-         * If the package is located in another project in your workspace, the plugin containing the package has not
-         * been register by EMF and Acceleo should register it automatically. If you want to use the generator in
-         * stand alone, the regular registration (seen a couple lines before) is needed.
-         * 
-         * To learn more about Package Registration, have a look at the Acceleo documentation (Help -> Help Contents).
-         */
-    }
-
-    /**
-     * This can be used to update the resource set's resource factory registry with all needed factories.
-     * 
-     * @param resourceSet
-     *            The resource set which registry has to be updated.
-     * @generated
-     */
-    @Override
-    public void registerResourceFactories(ResourceSet resourceSet) {
-        super.registerResourceFactories(resourceSet);
-        /*
-         * If you want to change the content of this method, do NOT forget to change the "@generated"
-         * tag in the Javadoc of this method to "@generated NOT". Without this new tag, any compilation
-         * of the Acceleo module with the main template that has caused the creation of this class will
-         * revert your modifications.
-         */
-        
-        /*
-         * TODO If you need additional resource factories registrations, you can register them here. the following line
-         * (in comment) is an example of the resource factory registration for UML.
-         *
-         * If you want to use the generator in stand alone, the resource factory registration will be required.
-         *  
-         * To learn more about the registration of Resource Factories, have a look at the Acceleo documentation (Help -> Help Contents). 
-         */ 
-        
-        // resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put(UMLResource.FILE_EXTENSION, UMLResource.Factory.INSTANCE);
-    }
-    
-}
diff --git a/plugins/mobius/org.polarsys.chess.mobius/src/org/polarsys/chess/mobius/templates/SingleAttackTemplate.mtl b/plugins/mobius/org.polarsys.chess.mobius/src/org/polarsys/chess/mobius/templates/SingleAttackTemplate.mtl
deleted file mode 100644
index 5222541..0000000
--- a/plugins/mobius/org.polarsys.chess.mobius/src/org/polarsys/chess/mobius/templates/SingleAttackTemplate.mtl
+++ /dev/null
@@ -1,201 +0,0 @@
-[comment
-/*********************************************************************
-* Copyright (c) 2019 Intecs Solutions SpA
-*
-* This program and the accompanying materials are made
-* available under the terms of the Eclipse Public License 2.0
-* which is available at https://www.eclipse.org/legal/epl-2.0/
-*
-* SPDX-License-Identifier: EPL-2.0
-*
-* Contributors: 
-*   Intecs Solutions - Initial API and implementation
-*   
-**********************************************************************/
-/]
-[comment encoding = UTF-8 /]
-[module SingleAttackTemplate('http://www.eclipse.org/uml2/3.0.0/UML')/]
-[import org::polarsys::chess::mobius::templates::projectFileTemplate /]
-
-[template public SingleAttackTemplate(attack : Message, index : Integer, globalvars : Set(String), startPlace : String, startX : Integer, startY : Integer)]
-	[let attackName : String = attack.name]
-	[let x : Integer = 50]
-	[let y : Integer = 250*index]
-	[comment  places and activities /]
-	<class id="Mobius.AtomicModels.San.PlacePanelObject">
-		<int id="ClassVersion">1</int>
-		<class id="Mobius.BaseClasses.BaseVertexClass">
-			<int id="ClassVersion">3</int>
-			<class id="Mobius.BaseClasses.BasePanelObjectClass">
-				<int id="ClassVersion">5</int>
-				<string id="Name">[attackName/]_failed</string>
-				<boolean id="ContainsLabel">true</boolean>
-				<boolean id="IsLabelShown">true</boolean>
-			</class>
-			<point id="CenterPoint">
-				<int id="x">[x+300/]</int>
-				<int id="y">[y+50/]</int>
-			</point>
-		</class>
-		<boolean id="ReadOnly">false</boolean>
-		<boolean id="ConstantMarking">true</boolean>
-		<int id="InitialState">0</int>
-	</class>
-	<class id="Mobius.AtomicModels.San.PlacePanelObject">
-		<int id="ClassVersion">1</int>
-		<class id="Mobius.BaseClasses.BaseVertexClass">
-			<int id="ClassVersion">3</int>
-			<class id="Mobius.BaseClasses.BasePanelObjectClass">
-				<int id="ClassVersion">5</int>
-				<string id="Name">[attackName/]_success</string>
-				<boolean id="ContainsLabel">true</boolean>
-				<boolean id="IsLabelShown">true</boolean>
-			</class>
-			<point id="CenterPoint">
-				<int id="x">[x+300/]</int>
-				<int id="y">[y-50/]</int>
-			</point>
-		</class>
-		<boolean id="ReadOnly">false</boolean>
-		<boolean id="ConstantMarking">true</boolean>
-		<int id="InitialState">0</int>
-	</class>
-	[comment end place /]
-	<class id="Mobius.AtomicModels.San.PlacePanelObject">
-		<int id="ClassVersion">1</int>
-		<class id="Mobius.BaseClasses.BaseVertexClass">
-			<int id="ClassVersion">3</int>
-			<class id="Mobius.BaseClasses.BasePanelObjectClass">
-				<int id="ClassVersion">5</int>
-				<string id="Name">End[attackName/]</string>[setStartPlace('End'.concat(attackName))/]
-				<boolean id="ContainsLabel">true</boolean>
-				<boolean id="IsLabelShown">true</boolean>
-			</class>
-			<point id="CenterPoint">
-				<int id="x">[x+300/]</int>[setStartX(x+300)/]
-				<int id="y">[y+100/]</int>[setStartY(y+100)/]
-			</point>
-		</class>
-		<boolean id="ReadOnly">false</boolean>
-		<boolean id="ConstantMarking">true</boolean>
-		<int id="InitialState">0</int>
-	</class>
-	<class id="Mobius.AtomicModels.San.InstantaneousActivityPanelObject">
-		<int id="ClassVersion">1</int>
-		<class id="Mobius.AtomicModels.San.ActivityPanelObject">
-			<int id="ClassVersion">1</int>
-			<class id="Mobius.BaseClasses.ExtendedBaseVertexClass">
-				<int id="ClassVersion">1</int>
-				<class id="Mobius.BaseClasses.BaseVertexClass">
-					<int id="ClassVersion">3</int>
-					<class id="Mobius.BaseClasses.BasePanelObjectClass">
-						<int id="ClassVersion">5</int>
-						<string id="Name">[attackName/]_activity</string>
-						<boolean id="ContainsLabel">true</boolean>
-						<boolean id="IsLabelShown">true</boolean>
-					</class>
-					<point id="CenterPoint">
-						<int id="x">[x+150/]</int>
-						<int id="y">[y/]</int>
-					</point>
-				</class>
-			</class>
-			[comment TODO: is it possible to model success prob?/]
-			<int id="NumberOfCases">2</int>
-			<vector id="CaseDistributions">
-				<string id="0">return([attackName/]_success_prob);\t// Attack succeeds</string>
-				<string id="1">return(1.0 - [attackName/]_success_prob);\t// Attack fails</string>
-			</vector>[addToGlobalVars(attackName.concat('_success_prob'), globalvars)/]
-		</class>
-	</class>
-	[comment edges /]
-	<class id="Mobius.BaseClasses.BaseEdgeClass">
-		<int id="ClassVersion">3</int>
-		<int id="LineType">0</int>
-		<string id="StartVertex">[attackName/]_activity</string>
-		<string id="FinishVertex">[attackName/]_failed</string>
-		<boolean id="Arrows">true</boolean>
-		<vector id="PointList">
-			<point id="0">
-				<int id="x">[x+150/]</int>
-				<int id="y">[y/]</int>
-			</point>
-			<point id="1">
-				<int id="x">[x+300/]</int>
-				<int id="y">[y+50/]</int>
-			</point>
-		</vector>
-	</class>
-	<class id="Mobius.BaseClasses.BaseEdgeClass">
-		<int id="ClassVersion">3</int>
-		<int id="LineType">0</int>
-		<string id="StartVertex">[attackName/]_activity</string>
-		<string id="FinishVertex">[attackName/]_success</string>
-		<boolean id="Arrows">true</boolean>
-		<vector id="PointList">
-			<point id="0">
-				<int id="x">[x+150/]</int>
-				<int id="y">[y-15/]</int>
-			</point>
-			<point id="1">
-				<int id="x">[x+300/]</int>
-				<int id="y">[y-50/]</int>
-			</point>
-		</vector>
-	</class>
-	<class id="Mobius.BaseClasses.BaseEdgeClass">
-		<int id="ClassVersion">3</int>
-		<int id="LineType">0</int>
-		<string id="StartVertex">[attackName/]_activity</string>
-		<string id="FinishVertex">End[attackName/]</string>
-		<boolean id="Arrows">true</boolean>
-		<vector id="PointList">
-			<point id="0">
-				<int id="x">[x+150/]</int>
-				<int id="y">[y/]</int>
-			</point>
-			<point id="1">
-				<int id="x">[x+300/]</int>
-				<int id="y">[y+100/]</int>
-			</point>
-		</vector>
-	</class>
-	<class id="Mobius.BaseClasses.BaseEdgeClass">
-		<int id="ClassVersion">3</int>
-		<int id="LineType">0</int>
-		<string id="StartVertex">[attackName/]_activity</string>
-		<string id="FinishVertex">End[attackName/]</string>
-		<boolean id="Arrows">true</boolean>
-		<vector id="PointList">
-			<point id="0">
-				<int id="x">[x+150/]</int>
-				<int id="y">[y-15/]</int>
-			</point>
-			<point id="1">
-				<int id="x">[x+300/]</int>
-				<int id="y">[y+100/]</int>
-			</point>
-		</vector>
-	</class>
-	[comment: start place is previous fragment end place/]	
-	<class id="Mobius.BaseClasses.BaseEdgeClass">
-		<int id="ClassVersion">3</int>
-		<int id="LineType">0</int>
-		<string id="StartVertex">[startPlace/]</string>
-		<string id="FinishVertex">[attackName/]_activity</string>
-		<boolean id="Arrows">true</boolean>
-		<vector id="PointList">
-			<point id="0">
-				<int id="x">[startX/]</int>
-				<int id="y">[startY/]</int>
-			</point>
-			<point id="1">
-				<int id="x">[x+150/]</int>
-				<int id="y">[y/]</int>
-			</point>
-		</vector>
-	</class>
-	[/let]
-	[/let]
-	[/let]
-[/template]
\ No newline at end of file
diff --git a/plugins/mobius/org.polarsys.chess.mobius/src/org/polarsys/chess/mobius/templates/VulnerableComponentsTemplate.java b/plugins/mobius/org.polarsys.chess.mobius/src/org/polarsys/chess/mobius/templates/VulnerableComponentsTemplate.java
deleted file mode 100644
index f018197..0000000
--- a/plugins/mobius/org.polarsys.chess.mobius/src/org/polarsys/chess/mobius/templates/VulnerableComponentsTemplate.java
+++ /dev/null
@@ -1,409 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2012 Obeo.
- * 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:
- *     Obeo - initial API and implementation
- *******************************************************************************/
-package org.polarsys.chess.mobius.templates;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.acceleo.engine.event.IAcceleoTextGenerationListener;
-import org.eclipse.acceleo.engine.generation.strategy.IAcceleoGenerationStrategy;
-import org.eclipse.acceleo.engine.service.AbstractAcceleoGenerator;
-import org.eclipse.emf.common.util.BasicMonitor;
-import org.eclipse.emf.common.util.Monitor;
-import org.eclipse.emf.common.util.URI;
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emf.ecore.resource.ResourceSet;
-
-/**
- * Entry point of the 'VulnerableComponentsTemplate' generation module.
- *
- * @generated
- */
-public class VulnerableComponentsTemplate extends AbstractAcceleoGenerator {
-    /**
-     * The name of the module.
-     *
-     * @generated
-     */
-    public static final String MODULE_FILE_NAME = "/org/polarsys/chess/mobius/templates/vulnerableComponentsTemplate";
-    
-    /**
-     * The name of the templates that are to be generated.
-     *
-     * @generated
-     */
-    public static final String[] TEMPLATE_NAMES = { "vulnerableComponentsTemplate" };
-    
-    /**
-     * The list of properties files from the launch parameters (Launch configuration).
-     *
-     * @generated
-     */
-    private List<String> propertiesFiles = new ArrayList<String>();
-
-    /**
-     * Allows the public constructor to be used. Note that a generator created
-     * this way cannot be used to launch generations before one of
-     * {@link #initialize(EObject, File, List)} or
-     * {@link #initialize(URI, File, List)} is called.
-     * <p>
-     * The main reason for this constructor is to allow clients of this
-     * generation to call it from another Java file, as it allows for the
-     * retrieval of {@link #getProperties()} and
-     * {@link #getGenerationListeners()}.
-     * </p>
-     *
-     * @generated
-     */
-    public VulnerableComponentsTemplate() {
-        // Empty implementation
-    }
-
-    /**
-     * This allows clients to instantiates a generator with all required information.
-     * 
-     * @param modelURI
-     *            URI where the model on which this generator will be used is located.
-     * @param targetFolder
-     *            This will be used as the output folder for this generation : it will be the base path
-     *            against which all file block URLs will be resolved.
-     * @param arguments
-     *            If the template which will be called requires more than one argument taken from the model,
-     *            pass them here.
-     * @throws IOException
-     *             This can be thrown in three scenarios : the module cannot be found, it cannot be loaded, or
-     *             the model cannot be loaded.
-     * @generated
-     */
-    public VulnerableComponentsTemplate(URI modelURI, File targetFolder,
-            List<? extends Object> arguments) throws IOException {
-        initialize(modelURI, targetFolder, arguments);
-    }
-
-    /**
-     * This allows clients to instantiates a generator with all required information.
-     * 
-     * @param model
-     *            We'll iterate over the content of this element to find Objects matching the first parameter
-     *            of the template we need to call.
-     * @param targetFolder
-     *            This will be used as the output folder for this generation : it will be the base path
-     *            against which all file block URLs will be resolved.
-     * @param arguments
-     *            If the template which will be called requires more than one argument taken from the model,
-     *            pass them here.
-     * @throws IOException
-     *             This can be thrown in two scenarios : the module cannot be found, or it cannot be loaded.
-     * @generated
-     */
-    public VulnerableComponentsTemplate(EObject model, File targetFolder,
-            List<? extends Object> arguments) throws IOException {
-        initialize(model, targetFolder, arguments);
-    }
-    
-    /**
-     * This can be used to launch the generation from a standalone application.
-     * 
-     * @param args
-     *            Arguments of the generation.
-     * @generated
-     */
-    public static void main(String[] args) {
-        try {
-            if (args.length < 2) {
-                System.out.println("Arguments not valid : {model, folder}.");
-            } else {
-                URI modelURI = URI.createFileURI(args[0]);
-                File folder = new File(args[1]);
-                
-                List<String> arguments = new ArrayList<String>();
-                
-                /*
-                 * If you want to change the content of this method, do NOT forget to change the "@generated"
-                 * tag in the Javadoc of this method to "@generated NOT". Without this new tag, any compilation
-                 * of the Acceleo module with the main template that has caused the creation of this class will
-                 * revert your modifications.
-                 */
-
-                /*
-                 * Add in this list all the arguments used by the starting point of the generation
-                 * If your main template is called on an element of your model and a String, you can
-                 * add in "arguments" this "String" attribute.
-                 */
-                
-                VulnerableComponentsTemplate generator = new VulnerableComponentsTemplate(modelURI, folder, arguments);
-                
-                /*
-                 * Add the properties from the launch arguments.
-                 * If you want to programmatically add new properties, add them in "propertiesFiles"
-                 * You can add the absolute path of a properties files, or even a project relative path.
-                 * If you want to add another "protocol" for your properties files, please override 
-                 * "getPropertiesLoaderService(AcceleoService)" in order to return a new property loader.
-                 * The behavior of the properties loader service is explained in the Acceleo documentation
-                 * (Help -> Help Contents).
-                 */
-                 
-                for (int i = 2; i < args.length; i++) {
-                    generator.addPropertiesFile(args[i]);
-                }
-                
-                generator.doGenerate(new BasicMonitor());
-            }
-        } catch (IOException e) {
-            e.printStackTrace();
-        }
-    }
-
-    /**
-     * Launches the generation described by this instance.
-     * 
-     * @param monitor
-     *            This will be used to display progress information to the user.
-     * @throws IOException
-     *             This will be thrown if any of the output files cannot be saved to disk.
-     * @generated
-     */
-    @Override
-    public void doGenerate(Monitor monitor) throws IOException {
-        /*
-         * TODO if you wish to change the generation as a whole, override this. The default behavior should
-         * be sufficient in most cases. If you want to change the content of this method, do NOT forget to
-         * change the "@generated" tag in the Javadoc of this method to "@generated NOT". Without this new tag,
-         * any compilation of the Acceleo module with the main template that has caused the creation of this
-         * class will revert your modifications. If you encounter a problem with an unresolved proxy during the
-         * generation, you can remove the comments in the following instructions to check for problems. Please
-         * note that those instructions may have a significant impact on the performances.
-         */
-
-        //org.eclipse.emf.ecore.util.EcoreUtil.resolveAll(model);
-
-        /*
-         * If you want to check for potential errors in your models before the launch of the generation, you
-         * use the code below.
-         */
-
-        //if (model != null && model.eResource() != null) {
-        //    List<org.eclipse.emf.ecore.resource.Resource.Diagnostic> errors = model.eResource().getErrors();
-        //    for (org.eclipse.emf.ecore.resource.Resource.Diagnostic diagnostic : errors) {
-        //        System.err.println(diagnostic.toString());
-        //    }
-        //}
-
-        super.doGenerate(monitor);
-    }
-    
-    /**
-     * If this generator needs to listen to text generation events, listeners can be returned from here.
-     * 
-     * @return List of listeners that are to be notified when text is generated through this launch.
-     * @generated
-     */
-    @Override
-    public List<IAcceleoTextGenerationListener> getGenerationListeners() {
-        List<IAcceleoTextGenerationListener> listeners = super.getGenerationListeners();
-        /*
-         * TODO if you need to listen to generation event, add listeners to the list here. If you want to change
-         * the content of this method, do NOT forget to change the "@generated" tag in the Javadoc of this method
-         * to "@generated NOT". Without this new tag, any compilation of the Acceleo module with the main template
-         * that has caused the creation of this class will revert your modifications.
-         */
-        return listeners;
-    }
-    
-    /**
-     * If you need to change the way files are generated, this is your entry point.
-     * <p>
-     * The default is {@link org.eclipse.acceleo.engine.generation.strategy.DefaultStrategy}; it generates
-     * files on the fly. If you only need to preview the results, return a new
-     * {@link org.eclipse.acceleo.engine.generation.strategy.PreviewStrategy}. Both of these aren't aware of
-     * the running Eclipse and can be used standalone.
-     * </p>
-     * <p>
-     * If you need the file generation to be aware of the workspace (A typical example is when you wanna
-     * override files that are under clear case or any other VCS that could forbid the overriding), then
-     * return a new {@link org.eclipse.acceleo.engine.generation.strategy.WorkspaceAwareStrategy}.
-     * <b>Note</b>, however, that this <b>cannot</b> be used standalone.
-     * </p>
-     * <p>
-     * All three of these default strategies support merging through JMerge.
-     * </p>
-     * 
-     * @return The generation strategy that is to be used for generations launched through this launcher.
-     * @generated
-     */
-    @Override
-    public IAcceleoGenerationStrategy getGenerationStrategy() {
-        return super.getGenerationStrategy();
-    }
-    
-    /**
-     * This will be called in order to find and load the module that will be launched through this launcher.
-     * We expect this name not to contain file extension, and the module to be located beside the launcher.
-     * 
-     * @return The name of the module that is to be launched.
-     * @generated
-     */
-    @Override
-    public String getModuleName() {
-        return MODULE_FILE_NAME;
-    }
-    
-    /**
-     * If the module(s) called by this launcher require properties files, return their qualified path from
-     * here.Take note that the first added properties files will take precedence over subsequent ones if they
-     * contain conflicting keys.
-     * 
-     * @return The list of properties file we need to add to the generation context.
-     * @see java.util.ResourceBundle#getBundle(String)
-     * @generated
-     */
-    @Override
-    public List<String> getProperties() {
-        /*
-         * If you want to change the content of this method, do NOT forget to change the "@generated"
-         * tag in the Javadoc of this method to "@generated NOT". Without this new tag, any compilation
-         * of the Acceleo module with the main template that has caused the creation of this class will
-         * revert your modifications.
-         */
-
-        /*
-         * TODO if your generation module requires access to properties files, add their qualified path to the list here.
-         * 
-         * Properties files can be located in an Eclipse plug-in or in the file system (all Acceleo projects are Eclipse
-         * plug-in). In order to use properties files located in an Eclipse plugin, you need to add the path of the properties
-         * files to the "propertiesFiles" list:
-         * 
-         * final String prefix = "platform:/plugin/";
-         * final String pluginName = "org.eclipse.acceleo.module.sample";
-         * final String packagePath = "/org/eclipse/acceleo/module/sample/properties/";
-         * final String fileName = "default.properties";
-         * propertiesFiles.add(prefix + pluginName + packagePath + fileName);
-         * 
-         * With this mechanism, you can load properties files from your plugin or from another plugin.
-         * 
-         * You may want to load properties files from the file system, for that you need to add the absolute path of the file:
-         * 
-         * propertiesFiles.add("C:\Users\MyName\MyFile.properties");
-         * 
-         * If you want to let your users add properties files located in the same folder as the model:
-         *
-         * if (EMFPlugin.IS_ECLIPSE_RUNNING && model != null && model.eResource() != null) { 
-         *     propertiesFiles.addAll(AcceleoEngineUtils.getPropertiesFilesNearModel(model.eResource()));
-         * }
-         * 
-         * To learn more about Properties Files, have a look at the Acceleo documentation (Help -> Help Contents).
-         */
-        return propertiesFiles;
-    }
-    
-    /**
-     * Adds a properties file in the list of properties files.
-     * 
-     * @param propertiesFile
-     *            The properties file to add.
-     * @generated
-     * @since 3.1
-     */
-    @Override
-    public void addPropertiesFile(String propertiesFile) {
-        this.propertiesFiles.add(propertiesFile);
-    }
-    
-    /**
-     * This will be used to get the list of templates that are to be launched by this launcher.
-     * 
-     * @return The list of templates to call on the module {@link #getModuleName()}.
-     * @generated
-     */
-    @Override
-    public String[] getTemplateNames() {
-        return TEMPLATE_NAMES;
-    }
-    
-    /**
-     * This can be used to update the resource set's package registry with all needed EPackages.
-     * 
-     * @param resourceSet
-     *            The resource set which registry has to be updated.
-     * @generated
-     */
-    @Override
-    public void registerPackages(ResourceSet resourceSet) {
-        super.registerPackages(resourceSet);
-        if (!isInWorkspace(org.eclipse.uml2.uml.UMLPackage.class)) {
-            resourceSet.getPackageRegistry().put(org.eclipse.uml2.uml.UMLPackage.eINSTANCE.getNsURI(), org.eclipse.uml2.uml.UMLPackage.eINSTANCE);
-        }
-        
-        /*
-         * If you want to change the content of this method, do NOT forget to change the "@generated"
-         * tag in the Javadoc of this method to "@generated NOT". Without this new tag, any compilation
-         * of the Acceleo module with the main template that has caused the creation of this class will
-         * revert your modifications.
-         */
-        
-        /*
-         * If you need additional package registrations, you can register them here. The following line
-         * (in comment) is an example of the package registration for UML.
-         * 
-         * You can use the method  "isInWorkspace(Class c)" to check if the package that you are about to
-         * register is in the workspace.
-         * 
-         * To register a package properly, please follow the following conventions:
-         *
-         * If the package is located in another plug-in, already installed in Eclipse. The following content should
-         * have been generated at the beginning of this method. Do not register the package using this mechanism if
-         * the metamodel is located in the workspace.
-         *  
-         * if (!isInWorkspace(UMLPackage.class)) {
-         *     // The normal package registration if your metamodel is in a plugin.
-         *     resourceSet.getPackageRegistry().put(UMLPackage.eNS_URI, UMLPackage.eINSTANCE);
-         * }
-         * 
-         * If the package is located in another project in your workspace, the plugin containing the package has not
-         * been register by EMF and Acceleo should register it automatically. If you want to use the generator in
-         * stand alone, the regular registration (seen a couple lines before) is needed.
-         * 
-         * To learn more about Package Registration, have a look at the Acceleo documentation (Help -> Help Contents).
-         */
-    }
-
-    /**
-     * This can be used to update the resource set's resource factory registry with all needed factories.
-     * 
-     * @param resourceSet
-     *            The resource set which registry has to be updated.
-     * @generated
-     */
-    @Override
-    public void registerResourceFactories(ResourceSet resourceSet) {
-        super.registerResourceFactories(resourceSet);
-        /*
-         * If you want to change the content of this method, do NOT forget to change the "@generated"
-         * tag in the Javadoc of this method to "@generated NOT". Without this new tag, any compilation
-         * of the Acceleo module with the main template that has caused the creation of this class will
-         * revert your modifications.
-         */
-        
-        /*
-         * TODO If you need additional resource factories registrations, you can register them here. the following line
-         * (in comment) is an example of the resource factory registration for UML.
-         *
-         * If you want to use the generator in stand alone, the resource factory registration will be required.
-         *  
-         * To learn more about the registration of Resource Factories, have a look at the Acceleo documentation (Help -> Help Contents). 
-         */ 
-        
-        // resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put(UMLResource.FILE_EXTENSION, UMLResource.Factory.INSTANCE);
-    }
-    
-}
diff --git a/plugins/mobius/org.polarsys.chess.mobius/src/org/polarsys/chess/mobius/templates/atomicComponentTemplate.mtl b/plugins/mobius/org.polarsys.chess.mobius/src/org/polarsys/chess/mobius/templates/atomicComponentTemplate.mtl
deleted file mode 100644
index 584fbda..0000000
--- a/plugins/mobius/org.polarsys.chess.mobius/src/org/polarsys/chess/mobius/templates/atomicComponentTemplate.mtl
+++ /dev/null
@@ -1,465 +0,0 @@
-[comment
-/*********************************************************************
-* Copyright (c) 2019 Intecs Solutions SpA
-*
-* This program and the accompanying materials are made
-* available under the terms of the Eclipse Public License 2.0
-* which is available at https://www.eclipse.org/legal/epl-2.0/
-*
-* SPDX-License-Identifier: EPL-2.0
-*
-* Contributors: 
-*   Intecs Solutions - Initial API and implementation
-*   
-**********************************************************************/
-/]
-[comment encoding = UTF-8 /]
-[module atomicComponentTemplate('http://www.eclipse.org/uml2/3.0.0/UML')/]
-[import org::polarsys::chess::mobius::templates::projectFileTemplate /]
-
-[template public atomicComponentTemplate(model : Model, componentQN : String){
-	BlockQN : String = 'SysML::Blocks::Block';
-	ErrorModelBehaviorQN : String = 'CHESS::Dependability::DependableComponent::ErrorModelBehavior';
-	NormalStateQN : String = 'CHESS::Dependability::ThreatsPropagation::NormalState';
-	ErrorStateQN : String = 'CHESS::Dependability::ThreatsPropagation::ErrorState';
-	CompromisedStateQN : String = 'CHESS::Dependability::ThreatsPropagation::CompromisedState';
-	InternalFaultQN : String = 'CHESS::Dependability::ThreatsPropagation::InternalFault';
-	AttackQN : String = 'CHESS::Dependability::ThreatsPropagation::Attack';
-}]
-	
-	[comment @main /]
-	[let componentName : String = getNameFromQN(componentQN)]
-	[file (componentName.concat('.san'), false, 'UTF-8')]
- 	[let globalvars : Set(String) = getEmptyStringSet()]
-	[let placeX : Integer = 0]
-	[let placeY : Integer = 75]
-	[let activityX : Integer = 50]
-	[let activityY : Integer = 150]
-	[let attackX : Integer = 100]
-	[let attackY : Integer = 200]
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<class id="Mobius.AtomicModels.San.SanInterface">
-	<int id="ClassVersion">1</int>
-	<class id="Mobius.BaseClasses.BaseInterfaceClass">
-		<int id="ClassVersion">3</int>
-		<string id="ModelName">[componentName/]</string>
-		<class id="Mobius.AtomicModels.San.SanInfoClass">
-			<int id="ClassVersion">5</int>
-			<class id="Mobius.BaseClasses.BaseInfoClass">
-				<int id="ClassVersion">2</int>
-			</class>
-			<class id="Mobius.AtomicModels.San.SanTypeManager">
-				<int id="ClassVersion">1</int>
-				<int id="typeListModelSize">0</int>
-			</class>
-			<string id="CustomInitialization"></string>
-		</class>
-		<class id="Mobius.AtomicModels.San.SanEditor">
-			<int id="ClassVersion">3</int>
-			<class id="Mobius.BaseClasses.BaseEditorClass">
-				<int id="ClassVersion">3</int>
-				<boolean id="HasPanel">true</boolean>
-				<class id="Mobius.BaseClasses.BasePanelClass">
-					<int id="ClassVersion">2</int>
-					<point id="Size of Panel">
-						<int id="x">900</int>
-						<int id="y">400</int>
-					</point>
-					<double id="ZoomFactor">1.0</double>
-					<boolean id="ShowGridEnabled">true</boolean>
-					<int id="ShowGridStep">10</int>
-					<boolean id="SnapGridEnabled">true</boolean>
-					<int id="SnapGridStep">10</int>
-					[let atomicBlocks :  Sequence(Classifier) = getAtomicBlocks(model)]
-					[let atomicBlock : Classifier = getBlockFromQN(atomicBlocks, componentQN)]
-					[if(atomicBlock.getAppliedStereotype(ErrorModelBehaviorQN)->notEmpty())]
-					[let places : Sequence(State) = getPlaces(atomicBlock)]
-					[for (place : State | places)]
-					[comment places /]
-					<class id="Mobius.AtomicModels.San.PlacePanelObject">
-						<int id="ClassVersion">1</int>
-						<class id="Mobius.BaseClasses.BaseVertexClass">
-							<int id="ClassVersion">3</int>
-							<class id="Mobius.BaseClasses.BasePanelObjectClass">
-								<int id="ClassVersion">5</int>
-								<string id="Name">[place.name/]</string>
-								<boolean id="ContainsLabel">true</boolean>
-								<boolean id="IsLabelShown">true</boolean>
-							</class>
-							<point id="CenterPoint">
-								[comment: TODO save X and Y of the normal place/]
-								<int id="x">[placeX + i*150/]</int> [setOkX(placeX + i*150)/]
-								<int id="y">[placeY/]</int> [setOkY(placeY)/]
-							</point>
-						</class>
-						<boolean id="ReadOnly">false</boolean>
-						<boolean id="ConstantMarking">true</boolean>
-						[comment normal place starts with one token /]
-						[if(place.getAppliedStereotype(NormalStateQN)->notEmpty())]
-						<int id="InitialState">1</int>
-						[else]
-						<int id="InitialState">0</int>
-						[/if]
-					</class>
-					[/for]
-					[/let]
-					[let activities : Sequence(Transition) = getActivities(atomicBlock)]
-					[for (activity : Transition | activities)]
-					[if(activity.getAppliedStereotype(InternalFaultQN)->notEmpty())]
-					[comment an internalFault transition is a TimedActivity with a rate /]
-					[let timedActivityName : String = getActivityName(activity)]
-					<class id="Mobius.AtomicModels.San.TimedActivityPanelObject">
-						<int id="ClassVersion">2</int>
-						<class id="Mobius.AtomicModels.San.ActivityPanelObject">
-							<int id="ClassVersion">1</int>
-							<class id="Mobius.BaseClasses.ExtendedBaseVertexClass">
-								<int id="ClassVersion">1</int>
-								<class id="Mobius.BaseClasses.BaseVertexClass">
-									<int id="ClassVersion">3</int>
-									<class id="Mobius.BaseClasses.BasePanelObjectClass">
-										<int id="ClassVersion">5</int>
-										<string id="Name">[timedActivityName/]</string>
-										<boolean id="ContainsLabel">true</boolean>
-										<boolean id="IsLabelShown">true</boolean>
-									</class>
-									<point id="CenterPoint">
-										<int id="x">[activityX + i*150/]</int>
-										<int id="y">[activityY/]</int>
-									</point>
-								</class>
-							</class>
-							<int id="NumberOfCases">1</int>
-							<vector id="CaseDistributions">
-								<string id="0"></string>
-							</vector>
-						</class>
-						[comment TODO? always Exponential for the moment/]
-						[let rate : String = getRate(activity)]
-						<class id="Mobius.BaseClasses.Distributions.DistributionFunction">
-							<int id="ClassVersion">1</int>
-							<string id="Name">Exponential</string>
-							<vector id="MetaParameters">
-							</vector>
-							<vector id="Parameters">
-								[if (rate.size() = 0)]
-								[comment global variable/]
-								[addToGlobalVars(timedActivityName.concat('Rate'), globalvars)/]
-								<string id="0">[timedActivityName/]Rate</string>
-								[else] 
-								<string id="0">[rate/]</string>
-								[/if]
-							</vector>
-						</class>
-						[/let]
-						<string id="Activation"></string>
-						<string id="Reactivation"></string>
-					</class>
-					[comment links for the timed activity/]
-					<class id="Mobius.BaseClasses.BaseEdgeClass">
-						<int id="ClassVersion">3</int>
-						<int id="LineType">0</int>
-						<string id="StartVertex">[timedActivityName/]</string>
-						<string id="FinishVertex">[activity.target.name/]</string>
-						<boolean id="Arrows">true</boolean>
-						<vector id="PointList">
-							<point id="0">
-								<int id="x">[activityX + i*150/]</int>
-								<int id="y">[activityY/]</int>
-							</point>
-							<point id="1">
-								<int id="x">[placeX + i*150/]</int>
-								<int id="y">[placeY/]</int>
-							</point>
-						</vector>
-					</class>
-					<class id="Mobius.BaseClasses.BaseEdgeClass">
-						<int id="ClassVersion">3</int>
-						<int id="LineType">0</int>
-						<string id="StartVertex">[activity.source.name/]</string>
-						<string id="FinishVertex">[timedActivityName/]</string>
-						<boolean id="Arrows">true</boolean>
-						<vector id="PointList">
-							<point id="0">
-								<int id="x">[placeX + i*150/]</int>
-								<int id="y">[placeY/]</int>
-							</point>
-							<point id="1">
-								<int id="x">[activityX + i*150/]</int>
-								<int id="y">[activityY/]</int>
-							</point>
-						</vector>
-					</class>
-					[/let]
-					[/if]
-					[if(activity.getAppliedStereotype(AttackQN)->notEmpty())]
-					[comment an Attack transition is an instantaneous activity /]
-					[let instActivityName : String = getActivityName(activity)]	
-					<class id="Mobius.AtomicModels.San.InstantaneousActivityPanelObject">
-						<int id="ClassVersion">1</int>
-						<class id="Mobius.AtomicModels.San.ActivityPanelObject">
-							<int id="ClassVersion">1</int>
-							<class id="Mobius.BaseClasses.ExtendedBaseVertexClass">
-								<int id="ClassVersion">1</int>
-								<class id="Mobius.BaseClasses.BaseVertexClass">
-									<int id="ClassVersion">3</int>
-									<class id="Mobius.BaseClasses.BasePanelObjectClass">
-										<int id="ClassVersion">5</int>
-										<string id="Name">[instActivityName/]</string>
-										<boolean id="ContainsLabel">true</boolean>
-										<boolean id="IsLabelShown">true</boolean>
-									</class>
-									<point id="CenterPoint">
-										<int id="x">[activityX + i*150/]</int>
-										<int id="y">[activityY/]</int>
-									</point>
-								</class>
-							</class>
-							<int id="NumberOfCases">1</int>
-							<vector id="CaseDistributions">
-								<string id="0"></string>
-							</vector>
-						</class>
-					</class>
-					[comment links for the instantaneous activity/]
-					<class id="Mobius.BaseClasses.BaseEdgeClass">
-						<int id="ClassVersion">3</int>
-						<int id="LineType">0</int>
-						<string id="StartVertex">[instActivityName/]</string>
-						<string id="FinishVertex">[activity.target.name/]</string>
-						<boolean id="Arrows">true</boolean>
-						<vector id="PointList">
-							<point id="0">
-								<int id="x">[activityX + i*150/]</int>
-								<int id="y">[activityY/]</int>
-							</point>
-							<point id="1">
-								<int id="x">[placeX + i*150/]</int>
-								<int id="y">[placeY/]</int>
-							</point>
-						</vector>
-					</class>
-					<class id="Mobius.BaseClasses.BaseEdgeClass">
-						<int id="ClassVersion">3</int>
-						<int id="LineType">0</int>
-						<string id="StartVertex">[activity.source.name/]</string>
-						<string id="FinishVertex">[instActivityName/]</string>
-						<boolean id="Arrows">true</boolean>
-						<vector id="PointList">
-							<point id="0">
-								<int id="x">[placeX + i*150/]</int>
-								<int id="y">[placeY/]</int>
-							</point>
-							<point id="1">
-								<int id="x">[activityX + i*150/]</int>
-								<int id="y">[activityY/]</int>
-							</point>
-						</vector>
-					</class>
-					[comment TODO WIP: for each attack success:
-					add one place for attack_success,
-					add one place for attack_confirmed,
-					add an input attack_gate,
-					connect attack_success with attack_gate,
-					connect OK(normal state) with attack_gate,
-					connect attack_confirmed with attack_gate,
-					connect attack_confirmed with instActivityName/]
-					[let attackSuccPlaceNames : Sequence(String) = getAttackSuccName(activity)]	
-					[let outerIndex : Integer = i]
-					[let normalStateName : String = getNormalState(atomicBlock).name]
-					[for (attackSuccPlaceName : String | attackSuccPlaceNames)]
-					<class id="Mobius.AtomicModels.San.PlacePanelObject">
-						<int id="ClassVersion">1</int>
-						<class id="Mobius.BaseClasses.BaseVertexClass">
-							<int id="ClassVersion">3</int>
-							<class id="Mobius.BaseClasses.BasePanelObjectClass">
-								<int id="ClassVersion">5</int>
-								<string id="Name">[attackSuccPlaceName/]_success</string>
-								<boolean id="ContainsLabel">true</boolean>
-								<boolean id="IsLabelShown">true</boolean>
-							</class>
-							<point id="CenterPoint">
-								<int id="x">[attackX + outerIndex*150 + i*50/]</int>
-								<int id="y">[attackY + 100 /]</int>
-							</point>
-						</class>
-						<boolean id="ReadOnly">false</boolean>
-						<boolean id="ConstantMarking">true</boolean>
-						<int id="InitialState">0</int>
-					</class>
-					<class id="Mobius.AtomicModels.San.PlacePanelObject">
-						<int id="ClassVersion">1</int>
-						<class id="Mobius.BaseClasses.BaseVertexClass">
-							<int id="ClassVersion">3</int>
-							<class id="Mobius.BaseClasses.BasePanelObjectClass">
-								<int id="ClassVersion">5</int>
-								<string id="Name">[attackSuccPlaceName/]_confirmed</string>
-								<boolean id="ContainsLabel">true</boolean>
-								<boolean id="IsLabelShown">true</boolean>
-							</class>
-							<point id="CenterPoint">
-								<int id="x">[attackX + outerIndex*150 + i*50/]</int>
-								<int id="y">[attackY/]</int>
-							</point>
-						</class>
-						<boolean id="ReadOnly">false</boolean>
-						<boolean id="ConstantMarking">true</boolean>
-						<int id="InitialState">0</int>
-					</class>
-					<class id="Mobius.AtomicModels.San.InputGatePanelObject">
-						<int id="ClassVersion">1</int>
-						<class id="Mobius.BaseClasses.BaseVertexClass">
-							<int id="ClassVersion">3</int>
-							<class id="Mobius.BaseClasses.BasePanelObjectClass">
-								<int id="ClassVersion">5</int>
-								<string id="Name">[attackSuccPlaceName/]Gate</string>
-								<boolean id="ContainsLabel">true</boolean>
-								<boolean id="IsLabelShown">true</boolean>
-							</class>
-							<point id="CenterPoint">
-								<int id="x">[attackX + outerIndex*150 + i*50/]</int>
-								<int id="y">[attackY + 50/]</int>
-							</point>
-						</class>
-						<boolean id="MirrorImage">false</boolean>
-						<string id="Predicate">
-						[comment predicate and function/]
-							([attackSuccPlaceName/]_success-&gt;Mark() &gt; 0) &amp;&amp; ([normalStateName/]-&gt;Mar
-							k() &gt; 0) &amp;&amp; ([attackSuccPlaceName/]_confirmed-&gt;Mark() == 0))
-						</string>
-						<string id="Function">[attackSuccPlaceName/]_confirmed-&gt;Mark() = 1;</string>
-					</class>
-					<class id="Mobius.BaseClasses.BaseEdgeClass">
-						<int id="ClassVersion">3</int>
-						<int id="LineType">0</int>
-						<string id="StartVertex">[attackSuccPlaceName/]_success</string>
-						<string id="FinishVertex">[attackSuccPlaceName/]Gate</string>
-						<boolean id="Arrows">false</boolean>
-						<vector id="PointList">
-							<point id="0">
-								<int id="x">[attackX + outerIndex*150 + i*50/]</int>
-								<int id="y">[attackY + 100 /]</int>
-							</point>
-							<point id="1">
-								<int id="x">[attackX + outerIndex*150 + i*50/]</int>
-								<int id="y">[attackY + 50/]</int>
-							</point>
-						</vector>
-					</class>
-					<class id="Mobius.BaseClasses.BaseEdgeClass">
-						<int id="ClassVersion">3</int>
-						<int id="LineType">0</int>
-						<string id="StartVertex">[normalStateName/]</string>
-						<string id="FinishVertex">[attackSuccPlaceName/]Gate</string>
-						<boolean id="Arrows">false</boolean>
-						<vector id="PointList">
-							<point id="0">
-								<int id="x">[getOkX()/]</int>
-								<int id="y">[getOkY()/]</int>
-							</point>
-							<point id="1">
-								<int id="x">[attackX + outerIndex*150 + i*50/]</int>
-								<int id="y">[attackY + 50/]</int>
-							</point>
-						</vector>
-					</class>
-					<class id="Mobius.BaseClasses.BaseEdgeClass">
-						<int id="ClassVersion">3</int>
-						<int id="LineType">0</int>
-						<string id="StartVertex">[attackSuccPlaceName/]_confirmed</string>
-						<string id="FinishVertex">[attackSuccPlaceName/]Gate</string>
-						<boolean id="Arrows">false</boolean>
-						<vector id="PointList">
-							<point id="0">
-								<int id="x">[attackX + outerIndex*150 + i*50/]</int>
-								<int id="y">[attackY/]</int>
-							</point>
-							<point id="1">
-								<int id="x">[attackX + outerIndex*150 + i*50/]</int>
-								<int id="y">[attackY + 50/]</int>
-							</point>
-						</vector>
-					</class>
-					<class id="Mobius.BaseClasses.BaseEdgeClass">
-						<int id="ClassVersion">3</int>
-						<int id="LineType">0</int>
-						<string id="StartVertex">[attackSuccPlaceName/]_confirmed</string>
-						<string id="FinishVertex">[instActivityName/]</string>
-						<boolean id="Arrows">true</boolean>
-						<vector id="PointList">
-							<point id="0">
-								<int id="x">[attackX + outerIndex*150 + i*50/]</int>
-								<int id="y">[attackY/]</int>
-							</point>
-							<point id="1">
-								<int id="x">[activityX + outerIndex*150/]</int>
-								<int id="y">[activityY/]</int>
-							</point>
-						</vector>
-					</class>
-					[/for]
-					[/let]
-					[/let]
-					[/let]
-					[/let]
-					[/if]		
-					[/for]
-					[/let]					
-					[/if]
-					[/let]
-					[/let]
-				</class>
-				<vector id="LocalGlobalNamesList">
-				[for (globalvar : String | globalvars)]
-					<string id="[i/]">[globalvar/]</string>
-				[/for]
-				</vector>
-				<vector id="LocalGlobalTypesList">
-				[for (globalvar : String | globalvars)]
-					<string id="[i/]">double</string>
-				[/for]
-				</vector>
-				<boolean id="DisplayToolTips">true</boolean>
-			</class>
-		</class>
-		<boolean id="Valid">true</boolean>
-	</class>
-</class>
-	[/let]
-	[/let]
-	[/let]
-	[/let]
-	[/let]
-	[/let]
-	[/let]
-	[/file]
-	[/let]
-[/template]
-
-[query public getPlaces(block : Classifier) : Sequence(State) =
-invoke('org.polarsys.chess.mobius.utils.TransformationUtil', 'getPlaces(org.eclipse.uml2.uml.Classifier)', Sequence{block})/]
-
-[query public getActivities(block : Classifier) : Sequence(Transition) =
-invoke('org.polarsys.chess.mobius.utils.TransformationUtil', 'getActivities(org.eclipse.uml2.uml.Classifier)', Sequence{block})/]
-
-[query public getActivityName(tr : Transition) : String =  tr.source.name + '__' + tr.target.name/]
-
-[query public getRate(tr : Transition) : String =
-invoke('org.polarsys.chess.mobius.utils.TransformationUtil', 'getRate(org.eclipse.uml2.uml.Transition)', Sequence{tr})/]
-
-[query public getAttackSuccName(tr : Transition) : Sequence(String) =
-invoke('org.polarsys.chess.mobius.utils.TransformationUtil', 'getAttackSuccName(org.eclipse.uml2.uml.Transition)', Sequence{tr})/]
-
-[query public getNormalState(block : Classifier) : State =
-invoke('org.polarsys.chess.mobius.utils.TransformationUtil', 'getNormalState(org.eclipse.uml2.uml.Classifier)', Sequence{block})/]
-
-[query public getOkX(ctx : OclAny) : Integer =
-invoke('org.polarsys.chess.mobius.utils.TransformationUtil', 'getOkX()', Sequence{})/]
-
-[query public getOkY(ctx : OclAny) : Integer =
-invoke('org.polarsys.chess.mobius.utils.TransformationUtil', 'getOkY()', Sequence{})/]
-
-[query public setOkX(okX : Integer) : OclAny =
-invoke('org.polarsys.chess.mobius.utils.TransformationUtil', 'setOkX(java.lang.Integer)', Sequence{okX})/]
-
-[query public setOkY(okY : Integer) : OclAny =
-invoke('org.polarsys.chess.mobius.utils.TransformationUtil', 'setOkY(java.lang.Integer)', Sequence{okY})/]
\ No newline at end of file
diff --git a/plugins/mobius/org.polarsys.chess.mobius/src/org/polarsys/chess/mobius/templates/atomicComponentTemplate_sanmodel.mtl b/plugins/mobius/org.polarsys.chess.mobius/src/org/polarsys/chess/mobius/templates/atomicComponentTemplate_sanmodel.mtl
index 79e7e68..0dc6f71 100644
--- a/plugins/mobius/org.polarsys.chess.mobius/src/org/polarsys/chess/mobius/templates/atomicComponentTemplate_sanmodel.mtl
+++ b/plugins/mobius/org.polarsys.chess.mobius/src/org/polarsys/chess/mobius/templates/atomicComponentTemplate_sanmodel.mtl
@@ -15,7 +15,7 @@
 /]
 [comment encoding = UTF-8 /]
 [module atomicComponentTemplate_sanmodel('http://www.polarsys.org/chess/SAN')/]
-[import org::polarsys::chess::mobius::templates::projectFileTemplate /]
+[import org::polarsys::chess::mobius::templates::projectFileTemplate_sanmodel /]
 
 [template public atomicComponentTemplate_sanmodel(sanModel : SANModel, componentQN : String)]
 	
diff --git a/plugins/mobius/org.polarsys.chess.mobius/src/org/polarsys/chess/mobius/templates/composedComponentTemplate.mtl b/plugins/mobius/org.polarsys.chess.mobius/src/org/polarsys/chess/mobius/templates/composedComponentTemplate.mtl
deleted file mode 100644
index 1b8bf9e..0000000
--- a/plugins/mobius/org.polarsys.chess.mobius/src/org/polarsys/chess/mobius/templates/composedComponentTemplate.mtl
+++ /dev/null
@@ -1,206 +0,0 @@
-[comment
-/*********************************************************************
-* Copyright (c) 2019 Intecs Solutions SpA
-*
-* This program and the accompanying materials are made
-* available under the terms of the Eclipse Public License 2.0
-* which is available at https://www.eclipse.org/legal/epl-2.0/
-*
-* SPDX-License-Identifier: EPL-2.0
-*
-* Contributors: 
-*   Intecs Solutions - Initial API and implementation
-*   
-**********************************************************************/
-/]
-[comment encoding = UTF-8 /]
-[module composedComponentTemplate('http://www.eclipse.org/uml2/5.0.0/UML')/]
-[import org::polarsys::chess::mobius::templates::projectFileTemplate /]
-
-[template public composedComponentTemplate(model : Model, componentQN : String){
-	BlockQN : String = 'SysML::Blocks::Block';
-}]
-	
-	[comment @main /]
-	[let componentName : String = getNameFromQN(componentQN)]
-	[file (componentName.concat('.cmp'), false, 'UTF-8')]
-    [let globalvars : Set(String) = getEmptyStringSet()]
-	[let x : Integer = 75]
-	[let y : Integer = 50]
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<class id="Mobius.ComposedModels.RepJoin.RepJoinInterface">
-	<int id="ClassVersion">1</int>
-	<class id="Mobius.BaseClasses.BaseInterfaceClass">
-		<int id="ClassVersion">3</int>
-		<string id="ModelName">[componentName/]</string>
-		<class id="Mobius.BaseClasses.BaseInfoClass">
-			<int id="ClassVersion">2</int>
-		</class>
-		<class id="Mobius.BaseClasses.BaseEditorClass">
-			<int id="ClassVersion">3</int>
-			<boolean id="HasPanel">true</boolean>
-			<class id="Mobius.BaseClasses.BasePanelClass">
-				<int id="ClassVersion">2</int>
-				<point id="Size of Panel">
-					<int id="x">500</int>
-					<int id="y">400</int>
-				</point>
-				<double id="ZoomFactor">1.0</double>
-				<boolean id="ShowGridEnabled">true</boolean>
-				<int id="ShowGridStep">10</int>
-				<boolean id="SnapGridEnabled">true</boolean>
-				<int id="SnapGridStep">10</int>
-				[comment join node /]
-				<class id="Mobius.ComposedModels.Common.JoinPanelObject">
-					<int id="ClassVersion">3</int>
-					<class id="Mobius.BaseClasses.BaseVertexClass">
-						<int id="ClassVersion">3</int>
-						<class id="Mobius.BaseClasses.BasePanelObjectClass">
-							<int id="ClassVersion">5</int>
-							<string id="Name">[componentName/]</string>
-							<boolean id="ContainsLabel">true</boolean>
-							<boolean id="IsLabelShown">true</boolean>
-						</class>
-						<point id="CenterPoint">
-							<int id="x">[x/]</int>
-							<int id="y">[y/]</int>
-						</point>
-					</class>
-					<int id="SharingInfoSize">0</int>
-				</class>
-				[comment submodels /]
-				[let composedBlocks :  Sequence(Classifier) = getComposedBlocks(model)]
-				[let parent : Classifier = getBlockFromQN(composedBlocks, componentQN)]
-				[for (subsystem : Classifier | getSubsystems(parent))]
-				<class id="Mobius.ComposedModels.Common.AtomicPanelObject">
-					<int id="ClassVersion">3</int>
-					<class id="Mobius.BaseClasses.BaseVertexClass">
-						<int id="ClassVersion">3</int>
-						<class id="Mobius.BaseClasses.BasePanelObjectClass">
-							<int id="ClassVersion">5</int>
-							<string id="Name">[subsystem.name/]</string>
-							<boolean id="ContainsLabel">true</boolean>
-							<boolean id="IsLabelShown">true</boolean>
-						</class>
-						<point id="CenterPoint">
-							<int id="x">[x + 150*i/]</int>
-							<int id="y">[y/]</int>
-						</point>
-					</class>
-					<string id="Model Name">[subsystem.name/]</string>
-				</class>
-				[comment rep(s), if any/]
-				[if(isReplicated(subsystem, parent))]
-				<class id="Mobius.ComposedModels.RepJoin.RepPanelObject">
-					<int id="ClassVersion">1</int>
-					<class id="Mobius.BaseClasses.BaseVertexClass">
-						<int id="ClassVersion">3</int>
-						<class id="Mobius.BaseClasses.BasePanelObjectClass">
-							<int id="ClassVersion">5</int>
-							<string id="Name">Rep[subsystem.name/]</string>
-							<boolean id="ContainsLabel">true</boolean>
-							<boolean id="IsLabelShown">true</boolean>
-						</class>
-						<point id="CenterPoint">
-							<int id="x">[x + 150*i/]</int>
-							<int id="y">[y + 50/]</int>
-						</point>
-					</class>
-					<string id="RepCount">Num[subsystem.name/]</string>
-					<int id="SharingInfoSize">0</int>
-				</class>
-				[addToGlobalVars('Num'.concat(subsystem.name), globalvars)/]
-				[/if]
-				[/for]
-				[comment links /]
-				[for (subsystem : Classifier | getSubsystems(parent))]
-				[if(isReplicated(subsystem, parent))]
-				[comment link join to rep /]
-				<class id="Mobius.BaseClasses.BaseEdgeClass">
-					<int id="ClassVersion">3</int>
-					<int id="LineType">0</int>
-					<string id="StartVertex">[componentName/]</string>
-					<string id="FinishVertex">Rep[subsystem.name/]</string>
-					<boolean id="Arrows">false</boolean>
-					<vector id="PointList">
-						<point id="0">
-							<int id="x">[x/]</int>
-							<int id="y">[y/]</int>
-						</point>
-						<point id="1">
-							<int id="x">[x + 150*i/]</int>
-							<int id="y">[y + 50/]</int>
-						</point>
-					</vector>
-				</class>
-				[comment link rep to subsys /]
-				<class id="Mobius.BaseClasses.BaseEdgeClass">
-					<int id="ClassVersion">3</int>
-					<int id="LineType">0</int>
-					<string id="StartVertex">Rep[subsystem.name/]</string>
-					<string id="FinishVertex">[subsystem.name/]</string>
-					<boolean id="Arrows">false</boolean>
-					<vector id="PointList">
-						<point id="0">
-							<int id="x">[x + 150*i/]</int>
-							<int id="y">[y + 50/]</int>
-						</point>
-						<point id="1">
-							<int id="x">[x + 150*i/]</int>
-							<int id="y">[y/]</int>
-						</point>
-					</vector>
-				</class>
-				[else]
-				<class id="Mobius.BaseClasses.BaseEdgeClass">
-					<int id="ClassVersion">3</int>
-					<int id="LineType">0</int>
-					<string id="StartVertex">[componentName/]</string>
-					<string id="FinishVertex">[subsystem.name/]</string>
-					<boolean id="Arrows">false</boolean>
-					<vector id="PointList">
-						<point id="0">
-							<int id="x">[x/]</int>
-							<int id="y">[y/]</int>
-						</point>
-						<point id="1">
-							<int id="x">[x + 150*i/]</int>
-							<int id="y">[y/]</int>
-						</point>
-					</vector>
-				</class>
-				[/if]
-				[/for]
-				[/let]
-				[/let]
-			</class>
-			<vector id="LocalGlobalNamesList">
-			[for (globalvar : String | globalvars)]
-				<string id="[i/]">[globalvar/]</string>
-			[/for]
-			</vector>
-			<vector id="LocalGlobalTypesList">
-			[for (globalvar : String | globalvars)]
-				<string id="[i/]">short</string>
-			[/for]
-			</vector>
-			<boolean id="DisplayToolTips">true</boolean>
-		</class>
-		<boolean id="Valid">true</boolean>
-	</class>
-</class>
-	[/let]
-	[/let]
-	[/let]
-	[/file]
-	[/let]
-[/template]
-
-[query public getSubsystems(parent : Classifier) : Sequence(Classifier) =
-invoke('org.polarsys.chess.mobius.utils.TransformationUtil', 'getSubsystems(org.eclipse.uml2.uml.Classifier)', Sequence{parent})/]
-
-[query public isReplicated(block : Classifier, parent : Classifier) : Boolean =
-invoke('org.polarsys.chess.mobius.utils.TransformationUtil', 'isReplicated(org.eclipse.uml2.uml.Classifier, org.eclipse.uml2.uml.Classifier)', Sequence{block, parent})/]
-
-[comment [query public getReplication(block : Classifier, parent : Classifier) : String =
-invoke('org.polarsys.chess.mobius.utils.TransformationUtil', 'getReplication(org.eclipse.uml2.uml.Classifier, org.eclipse.uml2.uml.Classifier)', Sequence{block, parent})/]
\ No newline at end of file
diff --git a/plugins/mobius/org.polarsys.chess.mobius/src/org/polarsys/chess/mobius/templates/composedComponentTemplate_sanmodel.mtl b/plugins/mobius/org.polarsys.chess.mobius/src/org/polarsys/chess/mobius/templates/composedComponentTemplate_sanmodel.mtl
index 2ba67e2..44fc873 100644
--- a/plugins/mobius/org.polarsys.chess.mobius/src/org/polarsys/chess/mobius/templates/composedComponentTemplate_sanmodel.mtl
+++ b/plugins/mobius/org.polarsys.chess.mobius/src/org/polarsys/chess/mobius/templates/composedComponentTemplate_sanmodel.mtl
@@ -15,7 +15,7 @@
 /]
 [comment encoding = UTF-8 /]
 [module composedComponentTemplate_sanmodel('http://www.polarsys.org/chess/SAN')/]
-[import org::polarsys::chess::mobius::templates::projectFileTemplate /]
+[import org::polarsys::chess::mobius::templates::projectFileTemplate_sanmodel /]
 
 [template public composedComponentTemplate_sanmodel(sanModel : SANModel, componentQN : String){
 	BlockQN : String = 'SysML::Blocks::Block';
@@ -158,7 +158,6 @@
 						[/if]
 					[/for]
 				</class>
-				[comment addToGlobalVars('Num'.concat(node.name.replaceAll('\\.', '_')), globalvars)/]
 				[/if]
 				[for (var : GlobalVariable | node.globalVariable)]
 					[addToGlobalVars(var.name.replaceAll('\\.', '_'), globalvars)/]
diff --git a/plugins/mobius/org.polarsys.chess.mobius/src/org/polarsys/chess/mobius/templates/projectFileTemplate.mtl b/plugins/mobius/org.polarsys.chess.mobius/src/org/polarsys/chess/mobius/templates/projectFileTemplate.mtl
deleted file mode 100644
index 9b48267..0000000
--- a/plugins/mobius/org.polarsys.chess.mobius/src/org/polarsys/chess/mobius/templates/projectFileTemplate.mtl
+++ /dev/null
@@ -1,113 +0,0 @@
-[comment
-/*********************************************************************
-* Copyright (c) 2019 Intecs Solutions SpA
-*
-* This program and the accompanying materials are made
-* available under the terms of the Eclipse Public License 2.0
-* which is available at https://www.eclipse.org/legal/epl-2.0/
-*
-* SPDX-License-Identifier: EPL-2.0
-*
-* Contributors: 
-*   Intecs Solutions - Initial API and implementation
-*   
-**********************************************************************/
-/]
-[comment encoding = UTF-8 /]
-[module projectFileTemplate('http://www.eclipse.org/uml2/5.0.0/UML')/]
-
-
-[template public projectFileTemplate(model : Model, projectName : String)]
-	
-	[comment @main /]
-	[file (projectName.concat('.prj'), false, 'UTF-8')]
-<?xml version="1.0" encoding="ASCII"?>
-<models:Project xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:models="http://www.mobius.illinois.edu/projects" name="[projectName/]" lastSavedVersion="2.5.9.201902201008">
-	[let atomicBlocks :  Sequence(Classifier) = getAtomicBlocks(model)]
-		[for (block : Classifier | atomicBlocks)]
-   <atomic key="[block.name/]">
-      <value name="[block.name/]" type="SAN Model"/>
-   </atomic>
-		[/for]
-	[/let]
-	[let attackScenarios :  Sequence(Interaction) = getAttackScenarios(model)]
-		[for (scenario : Interaction | attackScenarios)]
-   <atomic key="[scenario.name/]">
-      <value name="[scenario.name/]" type="SAN Model"/>
-   </atomic>
-		[/for]
-	[/let]
-	[let composedBlocks :  Sequence(Classifier) = getComposedBlocks(model)]
-		[for (block : Classifier | composedBlocks)]
-   <composed key="[block.name/]">
-      <value name="[block.name/]" category="Composed" type="Rep/Join Model"/>	
-   </composed>
-		[/for]
-	[/let]
-	[comment vulnerable Components/]
-	[let vulnerableComponents :  Set(Classifier) = getVulnerableComponents(model)]
-		[for (block : Classifier | vulnerableComponents)]
-   <composed key="Vulnerable[block.name/]">
-      <value name="Vulnerable[block.name/]" category="Composed" type="Rep/Join Model"/>	
-   </composed>
-		[/for]
-	[/let]
-</models:Project>
-	[/file]
-[/template]
-
-[query public getNameFromQN(qualifiedName : String) : String = qualifiedName.substring(qualifiedName.lastIndex(':')+1)/]
-
-[query public getAtomicBlocks(model : Model) : Sequence(Classifier) =
-invoke('org.polarsys.chess.mobius.utils.TransformationUtil', 'getAtomicBlocks()', Sequence{model})/]
-	
-[query public getComposedBlocks(model : Model) : Sequence(Classifier) =
-invoke('org.polarsys.chess.mobius.utils.TransformationUtil', 'getComposedBlocks()', Sequence{model})/]
-
-[query public getAttacks(model : Model) : Sequence(Message) =
-invoke('org.polarsys.chess.mobius.utils.TransformationUtil', 'getAttacks()', Sequence{model})/]
-
-[query public getAttackScenarios(model : Model) : Sequence(Interaction) =
-invoke('org.polarsys.chess.mobius.utils.TransformationUtil', 'getAttackScenarios()', Sequence{model})/]
-
-[query public getVulnerableComponents(model : Model) : Set(Classifier) =
-invoke('org.polarsys.chess.mobius.utils.TransformationUtil', 'getVulnerableComponents()', Sequence{model})/]
-
-[query public getBlockFromQN(blocks : Sequence(Classifier), qualifiedName : String) : Classifier =
-invoke('org.polarsys.chess.mobius.utils.TransformationUtil', 'getBlockFromQN(java.util.List, java.lang.String)', Sequence{blocks, qualifiedName})/]
-
-[query public getEmptyStringSet(traceCtx : OclAny) : Set(String) = 
-invoke('org.polarsys.chess.mobius.utils.TransformationUtil', 'getEmptyStringSet()', Sequence{}) /]
-
-[query public addToGlobalVars(name : String, globalvars : Set(String)) : OclAny = 
-invoke('org.polarsys.chess.mobius.utils.TransformationUtil', 'addToGlobalVars(java.lang.String, java.util.Set)', Sequence{name, globalvars}) /]
-
-[query public getPlaces(block : Classifier) : Sequence(State) =
-invoke('org.polarsys.chess.mobius.utils.TransformationUtil', 'getPlaces(org.eclipse.uml2.uml.Classifier)', Sequence{block})/]
-
-[query public getActivities(block : Classifier) : Sequence(Transition) =
-invoke('org.polarsys.chess.mobius.utils.TransformationUtil', 'getActivities(org.eclipse.uml2.uml.Classifier)', Sequence{block})/]
-
-[query public getActivityName(tr : Transition) : String =  tr.source.name + '__' + tr.target.name/]
-
-[query public getRate(tr : Transition) : String =
-invoke('org.polarsys.chess.mobius.utils.TransformationUtil', 'getRate(org.eclipse.uml2.uml.Transition)', Sequence{tr})/]
-
-[comment  to handle start place of fragments in a sequence diagram /]
-[query public getStartPlace(ctx : OclAny) : String =
-invoke('org.polarsys.chess.mobius.utils.TransformationUtil', 'getStartPlace()', Sequence{})/]
-
-[query public getStartX(ctx : OclAny) : Integer =
-invoke('org.polarsys.chess.mobius.utils.TransformationUtil', 'getStartX()', Sequence{})/]
-
-[query public getStartY(ctx : OclAny) : Integer =
-invoke('org.polarsys.chess.mobius.utils.TransformationUtil', 'getStartY()', Sequence{})/]
-
-[query public setStartPlace(startPlace : String) : OclAny =
-invoke('org.polarsys.chess.mobius.utils.TransformationUtil', 'setStartPlace(java.lang.String)', Sequence{startPlace})/]
-
-[query public setStartX(startX : Integer) : OclAny =
-invoke('org.polarsys.chess.mobius.utils.TransformationUtil', 'setStartX(java.lang.Integer)', Sequence{startX})/]
-
-[query public setStartY(startY : Integer) : OclAny =
-invoke('org.polarsys.chess.mobius.utils.TransformationUtil', 'setStartY(java.lang.Integer)', Sequence{startY})/]
\ No newline at end of file
diff --git a/plugins/mobius/org.polarsys.chess.mobius/src/org/polarsys/chess/mobius/templates/projectFileTemplate_sanmodel.mtl b/plugins/mobius/org.polarsys.chess.mobius/src/org/polarsys/chess/mobius/templates/projectFileTemplate_sanmodel.mtl
index b0fa0f1..2ad40a4 100644
--- a/plugins/mobius/org.polarsys.chess.mobius/src/org/polarsys/chess/mobius/templates/projectFileTemplate_sanmodel.mtl
+++ b/plugins/mobius/org.polarsys.chess.mobius/src/org/polarsys/chess/mobius/templates/projectFileTemplate_sanmodel.mtl
@@ -64,4 +64,10 @@
 invoke('org.polarsys.chess.mobius.utils.TransformationUtil', 'setStartX(java.lang.Integer)', Sequence{startX})/]
 
 [query public setStartY(startY : Integer) : OclAny =
-invoke('org.polarsys.chess.mobius.utils.TransformationUtil', 'setStartY(java.lang.Integer)', Sequence{startY})/]
\ No newline at end of file
+invoke('org.polarsys.chess.mobius.utils.TransformationUtil', 'setStartY(java.lang.Integer)', Sequence{startY})/]
+
+[query public getEmptyStringSet(traceCtx : OclAny) : Set(String) = 
+invoke('org.polarsys.chess.mobius.utils.TransformationUtil', 'getEmptyStringSet()', Sequence{}) /]
+
+[query public addToGlobalVars(name : String, globalvars : Set(String)) : OclAny = 
+invoke('org.polarsys.chess.mobius.utils.TransformationUtil', 'addToGlobalVars(java.lang.String, java.util.Set)', Sequence{name, globalvars}) /]
\ No newline at end of file
diff --git a/plugins/mobius/org.polarsys.chess.mobius/src/org/polarsys/chess/mobius/templates/vulnerableComponentsTemplate.mtl b/plugins/mobius/org.polarsys.chess.mobius/src/org/polarsys/chess/mobius/templates/vulnerableComponentsTemplate.mtl
deleted file mode 100644
index 83084b9..0000000
--- a/plugins/mobius/org.polarsys.chess.mobius/src/org/polarsys/chess/mobius/templates/vulnerableComponentsTemplate.mtl
+++ /dev/null
@@ -1,181 +0,0 @@
-[comment
-/*********************************************************************
-* Copyright (c) 2019 Intecs Solutions SpA
-*
-* This program and the accompanying materials are made
-* available under the terms of the Eclipse Public License 2.0
-* which is available at https://www.eclipse.org/legal/epl-2.0/
-*
-* SPDX-License-Identifier: EPL-2.0
-**********************************************************************/
-/]
-[comment encoding = UTF-8 /]
-[module vulnerableComponentsTemplate('http://www.eclipse.org/uml2/5.0.0/UML')]
-[import org::polarsys::chess::mobius::templates::projectFileTemplate /]
-
-[template public vulnerableComponentsTemplate(model : Model, componentQN : String)]
-[comment @main/]
-	[let componentName : String = getNameFromQN(componentQN)]
-	[file ('Vulnerable'.concat(componentName.concat('.cmp')), false, 'UTF-8')]
-	[let x : Integer = 100]
-	[let y : Integer = 150]
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<class id="Mobius.ComposedModels.RepJoin.RepJoinInterface">
-	<int id="ClassVersion">1</int>
-	<class id="Mobius.BaseClasses.BaseInterfaceClass">
-		<int id="ClassVersion">3</int>
-		<string id="ModelName">Vulnerable[componentName/]</string>
-		<class id="Mobius.BaseClasses.BaseInfoClass">
-			<int id="ClassVersion">2</int>
-		</class>
-		<class id="Mobius.BaseClasses.BaseEditorClass">
-			<int id="ClassVersion">3</int>
-			<boolean id="HasPanel">true</boolean>
-			<class id="Mobius.BaseClasses.BasePanelClass">
-				<int id="ClassVersion">2</int>
-				<point id="Size of Panel">
-					<int id="x">500</int>
-					<int id="y">400</int>
-				</point>
-				<double id="ZoomFactor">1.0</double>
-				<boolean id="ShowGridEnabled">true</boolean>
-				<int id="ShowGridStep">10</int>
-				<boolean id="SnapGridEnabled">true</boolean>
-				<int id="SnapGridStep">10</int>
-				[comment stuff goes here /]
-				[let atomicBlocks : Sequence(Classifier) = getAtomicBlocks(model)]
-				[let block : Classifier = getBlockFromQN(atomicBlocks, componentQN)]
-				[let scenarios : Sequence(String) = getBlockAttackScenarios(block)]		
-				<class id="Mobius.ComposedModels.Common.JoinPanelObject">
-					<int id="ClassVersion">3</int>
-					<class id="Mobius.BaseClasses.BaseVertexClass">
-						<int id="ClassVersion">3</int>
-						<class id="Mobius.BaseClasses.BasePanelObjectClass">
-							<int id="ClassVersion">5</int>
-							<string id="Name">Vulnerable[componentName/]</string>
-							<boolean id="ContainsLabel">true</boolean>
-							<boolean id="IsLabelShown">true</boolean>
-						</class>
-						<point id="CenterPoint">
-							<int id="x">100</int>
-							<int id="y">50</int>
-						</point>
-					</class>
-					[comment shared variables/]
-					[let allBlockAttacks : Sequence(String) = getAllBlockAttacks(block)]
-					<int id="SharingInfoSize">[allBlockAttacks->size()/]</int>
-					[/let]
-					[for(scenarioName : String | scenarios)]
-					[let attacks : Sequence(String) = getBlockAttacks(block, scenarioName)]		
-					[for(attackName : String | attacks)]
-					<string id="NewSharedObjName">[attackName/]_success</string>
-					<string id="Function"></string>
-					<int id="FunctionIndex">-1</int>
-					<boolean id="actionFlag">false</boolean>
-					<vector id="FullAccessPathStrings">
-						<string id="0">[componentName/]-&gt;[attackName/]_success</string>
-						<string id="1">[scenarioName/]-&gt;[attackName/]_success</string>
-					</vector>
-					[/for]
-					[/let]
-					[/for]
-				</class>
-				[comment the affected component /]
-				<class id="Mobius.ComposedModels.Common.AtomicPanelObject">
-					<int id="ClassVersion">3</int>
-					<class id="Mobius.BaseClasses.BaseVertexClass">
-						<int id="ClassVersion">3</int>
-						<class id="Mobius.BaseClasses.BasePanelObjectClass">
-							<int id="ClassVersion">5</int>
-							<string id="Name">[componentName/]</string>
-							<boolean id="ContainsLabel">true</boolean>
-							<boolean id="IsLabelShown">true</boolean>
-						</class>
-						<point id="CenterPoint">
-							<int id="x">[x/]</int>
-							<int id="y">[y/]</int>
-						</point>
-					</class>
-					<string id="Model Name">[componentName/]</string>
-				</class>
-				<class id="Mobius.BaseClasses.BaseEdgeClass">
-					<int id="ClassVersion">3</int>
-					<int id="LineType">0</int>
-					<string id="StartVertex">Vulnerable[componentName/]</string>
-					<string id="FinishVertex">[componentName/]</string>
-					<boolean id="Arrows">false</boolean>
-					<vector id="PointList">
-						<point id="0">
-							<int id="x">100</int>
-							<int id="y">50</int>
-						</point>
-						<point id="1">
-							<int id="x">[x/]</int>
-							<int id="y">[y/]</int>
-						</point>
-					</vector>
-				</class>
-				[comment the attack scenarios /]
-				[for(scenarioName : String | scenarios)]
-				<class id="Mobius.ComposedModels.Common.AtomicPanelObject">
-					<int id="ClassVersion">3</int>
-					<class id="Mobius.BaseClasses.BaseVertexClass">
-						<int id="ClassVersion">3</int>
-						<class id="Mobius.BaseClasses.BasePanelObjectClass">
-							<int id="ClassVersion">5</int>
-							<string id="Name">[scenarioName/]</string>
-							<boolean id="ContainsLabel">true</boolean>
-							<boolean id="IsLabelShown">true</boolean>
-						</class>
-						<point id="CenterPoint">
-							<int id="x">[x + i*150/]</int>
-							<int id="y">[y/]</int>
-						</point>
-					</class>
-					<string id="Model Name">[scenarioName/]</string>
-				</class>
-				<class id="Mobius.BaseClasses.BaseEdgeClass">
-					<int id="ClassVersion">3</int>
-					<int id="LineType">0</int>
-					<string id="StartVertex">Vulnerable[componentName/]</string>
-					<string id="FinishVertex">[scenarioName/]</string>
-					<boolean id="Arrows">false</boolean>
-					<vector id="PointList">
-						<point id="0">
-							<int id="x">100</int>
-							<int id="y">50</int>
-						</point>
-						<point id="1">
-							<int id="x">[x + i*150/]</int>
-							<int id="y">[y/]</int>
-						</point>
-					</vector>
-				</class>
-				[/for]
-				[/let]
-				[/let]
-				[/let]
-			</class>
-			<vector id="LocalGlobalNamesList">
-			</vector>
-			<vector id="LocalGlobalTypesList">
-			</vector>
-			<boolean id="DisplayToolTips">true</boolean>
-		</class>
-		<boolean id="Valid">true</boolean>
-	</class>
-</class>
-	[/let]
-	[/let]
-	[/file]
-	[/let]
-[/template]
-
-[query public getAllBlockAttacks(block : Classifier) : Sequence(String) =
-invoke('org.polarsys.chess.mobius.utils.TransformationUtil', 'getAllBlockAttacks( org.eclipse.uml2.uml.Classifier)', Sequence{block})/]
-
-[query public getBlockAttackScenarios(block : Classifier) : Sequence(String) =
-invoke('org.polarsys.chess.mobius.utils.TransformationUtil', 'getBlockAttackScenarios( org.eclipse.uml2.uml.Classifier)', Sequence{block})/]
-
-[query public getBlockAttacks(block : Classifier, scenarioName : String) : Sequence(String) =
-invoke('org.polarsys.chess.mobius.utils.TransformationUtil', 'getBlockAttacks( org.eclipse.uml2.uml.Classifier, java.lang.String)', Sequence{block, scenarioName})/]
diff --git a/plugins/mobius/org.polarsys.chess.mobius/transformations/CHESS2SAN.qvto b/plugins/mobius/org.polarsys.chess.mobius/transformations/CHESS2SAN.qvto
index 053834c..fe983be 100644
--- a/plugins/mobius/org.polarsys.chess.mobius/transformations/CHESS2SAN.qvto
+++ b/plugins/mobius/org.polarsys.chess.mobius/transformations/CHESS2SAN.qvto
@@ -821,6 +821,10 @@
 	operands -> forEach(operand){

 		i:= i+1;

 		var attack : Message = operand.getOperationAttack(ownerInteraction);

+		if (attack = null){

+			log("*********WARNING: "+self.name+" -> no attack for operand : "+operand.name);

+			continue;

+		};

 		var attackPlace : SAN::Place := object SAN::Place{name:=attack.name;x:=x1+250;y:=y1+75*(i-1)};

 		atomicNode.place += attackPlace;

 		

@@ -830,7 +834,7 @@
 		attackInstActivity._case += "return("+attack.name+"_success_prob);\t// Attack succeeds";

 		attackInstActivity._case += "return(1.0 - "+attack.name+"_success_prob);\t// Attack fails";

 		atomicNode.addDoubleGlobalVariable(attack.name.concat('_success_prob'), atomicNode);

-		

+				

 		//I need a map for the success place to be able to retrieve later for the shared variables creation...

 		//TODO should I  use a mapping (instance, message)->place?

 		var successPlace : SAN::Place := attack.map UMLAttackMessage2AttackSuccessPlaceScenario(atomicNode);

@@ -1499,7 +1503,7 @@
 

 	var analysis : CHESS::StateBasedAnalysis::SANAnalysis := self.getStereotypeApplication(SANANALYSIS_STEREOTYPE).oclAsType(CHESS::StateBasedAnalysis::SANAnalysis);

 	--log("attack scenario QN : "+analysis.condition);

-	var  workloads : Set(MARTE::GQAMMARTE_AnalysisModel::GQAM::GaWorkloadBehavior) := analysis.workload->asSet();

+	var  workloads : Set(MARTE::GQAM::GaWorkloadBehavior) := analysis.workload->asSet();

 	

 	workloads -> forEach(workload){

 		var named :=workload.base_NamedElement;