diff --git a/docs/publications/EclipseCon2011Tutorial/org.eclipse.ocl.tutorial.eclipsecon2011.playspace/.cvsignore b/docs/publications/EclipseCon2011Tutorial/org.eclipse.ocl.tutorial.eclipsecon2011.playspace/.cvsignore
index ba077a4..3184578 100644
--- a/docs/publications/EclipseCon2011Tutorial/org.eclipse.ocl.tutorial.eclipsecon2011.playspace/.cvsignore
+++ b/docs/publications/EclipseCon2011Tutorial/org.eclipse.ocl.tutorial.eclipsecon2011.playspace/.cvsignore
@@ -1 +1,3 @@
 bin
+flattened.states
+flattened.xmi
diff --git a/docs/publications/EclipseCon2011Tutorial/org.eclipse.ocl.tutorial.eclipsecon2011.flattenstates/Flatten States to XMI.launch b/docs/publications/EclipseCon2011Tutorial/org.eclipse.ocl.tutorial.eclipsecon2011.playspace/.settings/Flatten States to XMI.launch
similarity index 93%
rename from docs/publications/EclipseCon2011Tutorial/org.eclipse.ocl.tutorial.eclipsecon2011.flattenstates/Flatten States to XMI.launch
rename to docs/publications/EclipseCon2011Tutorial/org.eclipse.ocl.tutorial.eclipsecon2011.playspace/.settings/Flatten States to XMI.launch
index 7ebff3b..348b0ec 100644
--- a/docs/publications/EclipseCon2011Tutorial/org.eclipse.ocl.tutorial.eclipsecon2011.flattenstates/Flatten States to XMI.launch
+++ b/docs/publications/EclipseCon2011Tutorial/org.eclipse.ocl.tutorial.eclipsecon2011.playspace/.settings/Flatten States to XMI.launch
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <launchConfiguration type="org.eclipse.m2m.qvt.oml.QvtTransformation">
 <booleanAttribute key="org.eclipse.m2m.qvt.oml.interpreter.clearContents1" value="true"/>
 <booleanAttribute key="org.eclipse.m2m.qvt.oml.interpreter.clearContents2" value="true"/>
@@ -7,7 +7,7 @@
 <stringAttribute key="org.eclipse.m2m.qvt.oml.interpreter.featureName1" value=""/>
 <stringAttribute key="org.eclipse.m2m.qvt.oml.interpreter.featureName2" value=""/>
 <stringAttribute key="org.eclipse.m2m.qvt.oml.interpreter.module" value="platform:/resource/org.eclipse.ocl.tutorial.eclipsecon2011.flattenstates/FlattenStates.qvto"/>
-<stringAttribute key="org.eclipse.m2m.qvt.oml.interpreter.targetModel1" value="platform:/resource/org.eclipse.ocl.tutorial.eclipsecon2011.flattenstates/compound.states"/>
+<stringAttribute key="org.eclipse.m2m.qvt.oml.interpreter.targetModel1" value="platform:/resource/org.eclipse.ocl.tutorial.eclipsecon2011.playspace/model/compound.states"/>
 <stringAttribute key="org.eclipse.m2m.qvt.oml.interpreter.targetModel2" value="platform:/resource/org.eclipse.ocl.tutorial.eclipsecon2011.playspace/flattened.xmi"/>
 <stringAttribute key="org.eclipse.m2m.qvt.oml.interpreter.targetType1" value="NEW_MODEL"/>
 <stringAttribute key="org.eclipse.m2m.qvt.oml.interpreter.targetType2" value="NEW_MODEL"/>
diff --git a/docs/publications/EclipseCon2011Tutorial/org.eclipse.ocl.tutorial.eclipsecon2011.flattenstates/Flatten States.launch b/docs/publications/EclipseCon2011Tutorial/org.eclipse.ocl.tutorial.eclipsecon2011.playspace/.settings/Flatten States.launch
similarity index 93%
rename from docs/publications/EclipseCon2011Tutorial/org.eclipse.ocl.tutorial.eclipsecon2011.flattenstates/Flatten States.launch
rename to docs/publications/EclipseCon2011Tutorial/org.eclipse.ocl.tutorial.eclipsecon2011.playspace/.settings/Flatten States.launch
index d1b0858..eb7db58 100644
--- a/docs/publications/EclipseCon2011Tutorial/org.eclipse.ocl.tutorial.eclipsecon2011.flattenstates/Flatten States.launch
+++ b/docs/publications/EclipseCon2011Tutorial/org.eclipse.ocl.tutorial.eclipsecon2011.playspace/.settings/Flatten States.launch
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <launchConfiguration type="org.eclipse.m2m.qvt.oml.QvtTransformation">
 <booleanAttribute key="org.eclipse.m2m.qvt.oml.interpreter.clearContents1" value="true"/>
 <booleanAttribute key="org.eclipse.m2m.qvt.oml.interpreter.clearContents2" value="true"/>
@@ -7,7 +7,7 @@
 <stringAttribute key="org.eclipse.m2m.qvt.oml.interpreter.featureName1" value=""/>
 <stringAttribute key="org.eclipse.m2m.qvt.oml.interpreter.featureName2" value=""/>
 <stringAttribute key="org.eclipse.m2m.qvt.oml.interpreter.module" value="platform:/resource/org.eclipse.ocl.tutorial.eclipsecon2011.flattenstates/FlattenStates.qvto"/>
-<stringAttribute key="org.eclipse.m2m.qvt.oml.interpreter.targetModel1" value="platform:/resource/org.eclipse.ocl.tutorial.eclipsecon2011.flattenstates/compound.states"/>
+<stringAttribute key="org.eclipse.m2m.qvt.oml.interpreter.targetModel1" value="platform:/resource/org.eclipse.ocl.tutorial.eclipsecon2011.playspace/model/compound.states"/>
 <stringAttribute key="org.eclipse.m2m.qvt.oml.interpreter.targetModel2" value="platform:/resource/org.eclipse.ocl.tutorial.eclipsecon2011.playspace/flattened.states"/>
 <stringAttribute key="org.eclipse.m2m.qvt.oml.interpreter.targetType1" value="NEW_MODEL"/>
 <stringAttribute key="org.eclipse.m2m.qvt.oml.interpreter.targetType2" value="NEW_MODEL"/>
diff --git a/docs/publications/EclipseCon2011Tutorial/org.eclipse.ocl.tutorial.eclipsecon2011.playspace/.settings/Generate BadSimple States.launch b/docs/publications/EclipseCon2011Tutorial/org.eclipse.ocl.tutorial.eclipsecon2011.playspace/.settings/Generate BadSimple States.launch
new file mode 100644
index 0000000..2a6bf62
--- /dev/null
+++ b/docs/publications/EclipseCon2011Tutorial/org.eclipse.ocl.tutorial.eclipsecon2011.playspace/.settings/Generate BadSimple States.launch
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.acceleo.ide.ui.launching.launchConfigurationType">
+<stringAttribute key="org.eclipse.acceleo.ide.ui.ARGUMENTS" value=""/>
+<booleanAttribute key="org.eclipse.acceleo.ide.ui.COMPUTE_PROFILING" value="false"/>
+<booleanAttribute key="org.eclipse.acceleo.ide.ui.COMPUTE_TRACEABILITY" value="false"/>
+<stringAttribute key="org.eclipse.acceleo.ide.ui.LAUNCHING_STRATEGY_DESCRIPTION" value="Acceleo Plug-in Application"/>
+<stringAttribute key="org.eclipse.acceleo.ide.ui.MODEL_PATH" value="/org.eclipse.ocl.tutorial.eclipsecon2011.playspace/model/badsimple.states"/>
+<stringAttribute key="org.eclipse.acceleo.ide.ui.TARGET_PATH" value="/org.eclipse.ocl.tutorial.eclipsecon2011.playspace/src/badsimple/states"/>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/org.eclipse.ocl.tutorial.eclipsecon2011.states2classes/src/org/eclipse/ocl/tutorial/eclipsecon2011/states2classes/files/Generate.java"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="1"/>
+</listAttribute>
+<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.eclipse.ocl.tutorial.eclipsecon2011.states2classes.files.Generate"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="&quot;C:/Development/EclipseCon/runtime-EclipseApplication/org.eclipse.ocl.tutorial.eclipsecon2011.playspace/model/badsimple.states&quot; &quot;C:/Development/EclipseCon/runtime-EclipseApplication/org.eclipse.ocl.tutorial.eclipsecon2011.playspace/src/badsimple/states&quot;"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.ocl.tutorial.eclipsecon2011.states2classes"/>
+</launchConfiguration>
diff --git a/docs/publications/EclipseCon2011Tutorial/org.eclipse.ocl.tutorial.eclipsecon2011.playspace/.settings/Generate Flattened States.launch b/docs/publications/EclipseCon2011Tutorial/org.eclipse.ocl.tutorial.eclipsecon2011.playspace/.settings/Generate Flattened States.launch
index d0f06b3..9cee24e 100644
--- a/docs/publications/EclipseCon2011Tutorial/org.eclipse.ocl.tutorial.eclipsecon2011.playspace/.settings/Generate Flattened States.launch
+++ b/docs/publications/EclipseCon2011Tutorial/org.eclipse.ocl.tutorial.eclipsecon2011.playspace/.settings/Generate Flattened States.launch
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <launchConfiguration type="org.eclipse.acceleo.ide.ui.launching.launchConfigurationType">
 <stringAttribute key="org.eclipse.acceleo.ide.ui.ARGUMENTS" value=""/>
 <booleanAttribute key="org.eclipse.acceleo.ide.ui.COMPUTE_PROFILING" value="false"/>
@@ -13,6 +13,6 @@
 <listEntry value="1"/>
 </listAttribute>
 <stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.eclipse.ocl.tutorial.eclipsecon2011.states2classes.files.Generate"/>
-<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="&quot;C:/Development/HartLibrary/runtime-EclipseApplication/org.eclipse.ocl.tutorial.eclipsecon2011.playspace/flattened.states&quot; &quot;C:/Development/HartLibrary/runtime-EclipseApplication/org.eclipse.ocl.tutorial.eclipsecon2011.playspace/src/flattened/compound/states&quot;"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="&quot;C:/Development/EclipseCon/runtime-EclipseApplication/org.eclipse.ocl.tutorial.eclipsecon2011.playspace/flattened.states&quot; &quot;C:/Development/EclipseCon/runtime-EclipseApplication/org.eclipse.ocl.tutorial.eclipsecon2011.playspace/src/flattened/compound/states&quot;"/>
 <stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.ocl.tutorial.eclipsecon2011.states2classes"/>
 </launchConfiguration>
diff --git a/docs/publications/EclipseCon2011Tutorial/org.eclipse.ocl.tutorial.eclipsecon2011.playspace/flattened.states b/docs/publications/EclipseCon2011Tutorial/org.eclipse.ocl.tutorial.eclipsecon2011.playspace/flattened.states
deleted file mode 100644
index 14dbe3a..0000000
--- a/docs/publications/EclipseCon2011Tutorial/org.eclipse.ocl.tutorial.eclipsecon2011.playspace/flattened.states
+++ /dev/null
@@ -1,40 +0,0 @@
-module "flattened.compound.states"
-
-statemachine Outer
-{
-	events RIGHT LEFT START STOP;
-
-	initial state Start value 4
-	{
-		START => CompoundA_Left
-	}
-
-	state Stop value 5
-	{
-		STOP => CompoundB_Left
-	}
-
-	state CompoundA_Left value 1
-	{
-		LEFT => CompoundA_Right
-		START => Stop
-	}
-
-	state CompoundA_Right
-	{
-		RIGHT => CompoundA_Left
-		START => Stop
-	}
-
-	state CompoundB_Right
-	{
-		RIGHT => CompoundB_Left
-		STOP => Stop
-	}
-
-	state CompoundB_Left value 1
-	{
-		LEFT => CompoundB_Right
-		STOP => Stop
-	}
-}
\ No newline at end of file
diff --git a/docs/publications/EclipseCon2011Tutorial/org.eclipse.ocl.tutorial.eclipsecon2011.playspace/flattened.xmi b/docs/publications/EclipseCon2011Tutorial/org.eclipse.ocl.tutorial.eclipsecon2011.playspace/flattened.xmi
deleted file mode 100644
index e54d8c4..0000000
--- a/docs/publications/EclipseCon2011Tutorial/org.eclipse.ocl.tutorial.eclipsecon2011.playspace/flattened.xmi
+++ /dev/null
@@ -1,63 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:states="http://ocl.eclipse.org/tutorial/eclipsecon2011/States">
-  <states:Module name="flattened.compound.states">
-    <machines name="Outer">
-      <events name="RIGHT"/>
-      <events name="START"/>
-      <events name="LEFT"/>
-      <events name="STOP"/>
-      <states xsi:type="states:SimpleState" initial="true" name="Start" value="4">
-        <transitions event="/0/@machines.0/@events.1" state="/0/@machines.0/@states.3"/>
-      </states>
-      <states xsi:type="states:SimpleState" name="Stop" value="5">
-        <transitions event="/0/@machines.0/@events.3" state="/0/@machines.0/@states.5"/>
-      </states>
-      <states xsi:type="states:SimpleState" name="CompoundA_Right">
-        <transitions event="/0/@machines.0/@events.0" state="/0/@machines.0/@states.3"/>
-        <transitions event="/0/@machines.0/@events.1" state="/0/@machines.0/@states.1"/>
-      </states>
-      <states xsi:type="states:SimpleState" name="CompoundA_Left" value="1">
-        <transitions event="/0/@machines.0/@events.2" state="/0/@machines.0/@states.2"/>
-        <transitions event="/0/@machines.0/@events.1" state="/0/@machines.0/@states.1"/>
-      </states>
-      <states xsi:type="states:SimpleState" name="CompoundB_Right">
-        <transitions event="/0/@machines.0/@events.0" state="/0/@machines.0/@states.5"/>
-        <transitions event="/0/@machines.0/@events.3" state="/0/@machines.0/@states.1"/>
-      </states>
-      <states xsi:type="states:SimpleState" name="CompoundB_Left" value="1">
-        <transitions event="/0/@machines.0/@events.2" state="/0/@machines.0/@states.4"/>
-        <transitions event="/0/@machines.0/@events.3" state="/0/@machines.0/@states.1"/>
-      </states>
-    </machines>
-  </states:Module>
-  <states:Module name="flattened.compound.states">
-    <machines name="Outer">
-      <events name="RIGHT"/>
-      <events name="STOP"/>
-      <events name="LEFT"/>
-      <events name="START"/>
-      <states xsi:type="states:SimpleState" initial="true" name="Start" value="4">
-        <transitions event="/1/@machines.0/@events.3" state="/1/@machines.0/@states.3"/>
-      </states>
-      <states xsi:type="states:SimpleState" name="Stop" value="5">
-        <transitions event="/1/@machines.0/@events.1" state="/1/@machines.0/@states.5"/>
-      </states>
-      <states xsi:type="states:SimpleState" name="CompoundA_Right">
-        <transitions event="/1/@machines.0/@events.0" state="/1/@machines.0/@states.3"/>
-        <transitions event="/1/@machines.0/@events.3" state="/1/@machines.0/@states.1"/>
-      </states>
-      <states xsi:type="states:SimpleState" name="CompoundA_Left" value="1">
-        <transitions event="/1/@machines.0/@events.2" state="/1/@machines.0/@states.2"/>
-        <transitions event="/1/@machines.0/@events.3" state="/1/@machines.0/@states.1"/>
-      </states>
-      <states xsi:type="states:SimpleState" name="CompoundB_Right">
-        <transitions event="/1/@machines.0/@events.0" state="/1/@machines.0/@states.5"/>
-        <transitions event="/1/@machines.0/@events.1" state="/1/@machines.0/@states.1"/>
-      </states>
-      <states xsi:type="states:SimpleState" name="CompoundB_Left" value="1">
-        <transitions event="/1/@machines.0/@events.2" state="/1/@machines.0/@states.4"/>
-        <transitions event="/1/@machines.0/@events.1" state="/1/@machines.0/@states.1"/>
-      </states>
-    </machines>
-  </states:Module>
-</xmi:XMI>
diff --git a/docs/publications/EclipseCon2011Tutorial/org.eclipse.ocl.tutorial.eclipsecon2011.flattenstates/compound.states b/docs/publications/EclipseCon2011Tutorial/org.eclipse.ocl.tutorial.eclipsecon2011.playspace/model/badcompound.states
similarity index 86%
rename from docs/publications/EclipseCon2011Tutorial/org.eclipse.ocl.tutorial.eclipsecon2011.flattenstates/compound.states
rename to docs/publications/EclipseCon2011Tutorial/org.eclipse.ocl.tutorial.eclipsecon2011.playspace/model/badcompound.states
index 7e387bf..b28b0f4 100644
--- a/docs/publications/EclipseCon2011Tutorial/org.eclipse.ocl.tutorial.eclipsecon2011.flattenstates/compound.states
+++ b/docs/publications/EclipseCon2011Tutorial/org.eclipse.ocl.tutorial.eclipsecon2011.playspace/model/badcompound.states
@@ -7,20 +7,24 @@
 	initial state Start value 4
 	{
 		START => CompoundA
+		STOP => Stop
 	}
 
 	state Stop value 5
 	{
+		START => Start
 		STOP => CompoundB
 	}
 
 	compound state CompoundA machine Inner
 	{
 		START => Stop
+		STOP => Stop
 	}
 
 	compound state CompoundB machine Inner
 	{
+		START => Stop
 		STOP => Stop
 	}
 }
@@ -31,11 +35,11 @@
 
 	initial state Left value 1
 	{
-		LEFT => Right
+		RIGHT => Left
 	}
 
 	state Right
 	{
-		RIGHT => Left
+		LEFT => Right
 	}
 }
\ No newline at end of file
diff --git a/docs/publications/EclipseCon2011Tutorial/org.eclipse.ocl.tutorial.eclipsecon2011.playspace/model/badsimple.states b/docs/publications/EclipseCon2011Tutorial/org.eclipse.ocl.tutorial.eclipsecon2011.playspace/model/badsimple.states
new file mode 100644
index 0000000..8782f3e
--- /dev/null
+++ b/docs/publications/EclipseCon2011Tutorial/org.eclipse.ocl.tutorial.eclipsecon2011.playspace/model/badsimple.states
@@ -0,0 +1,14 @@
+module "badsimple.states"
+
+statemachine Machine
+{
+    events START STOP;
+    state Start
+    {
+        STOP  => Stop
+    }
+    state Stop 
+    {
+        START  => Start
+ }  
+}
\ No newline at end of file
diff --git a/docs/publications/EclipseCon2011Tutorial/org.eclipse.ocl.tutorial.eclipsecon2011.flattenstates/compound.states b/docs/publications/EclipseCon2011Tutorial/org.eclipse.ocl.tutorial.eclipsecon2011.playspace/model/compound.states
similarity index 72%
copy from docs/publications/EclipseCon2011Tutorial/org.eclipse.ocl.tutorial.eclipsecon2011.flattenstates/compound.states
copy to docs/publications/EclipseCon2011Tutorial/org.eclipse.ocl.tutorial.eclipsecon2011.playspace/model/compound.states
index 7e387bf..e800c97 100644
--- a/docs/publications/EclipseCon2011Tutorial/org.eclipse.ocl.tutorial.eclipsecon2011.flattenstates/compound.states
+++ b/docs/publications/EclipseCon2011Tutorial/org.eclipse.ocl.tutorial.eclipsecon2011.playspace/model/compound.states
@@ -7,20 +7,28 @@
 	initial state Start value 4
 	{
 		START => CompoundA
+		LEFT => Start
+		RIGHT => Start
+		STOP => Stop
 	}
 
 	state Stop value 5
 	{
+		START => Start
 		STOP => CompoundB
+		LEFT => Stop
+		RIGHT => Stop
 	}
 
 	compound state CompoundA machine Inner
 	{
 		START => Stop
+		STOP => Stop
 	}
 
 	compound state CompoundB machine Inner
 	{
+		START => Stop
 		STOP => Stop
 	}
 }
@@ -32,10 +40,12 @@
 	initial state Left value 1
 	{
 		LEFT => Right
+		RIGHT => Left
 	}
 
 	state Right
 	{
+		LEFT => Right
 		RIGHT => Left
 	}
 }
\ No newline at end of file
diff --git a/docs/publications/EclipseCon2011Tutorial/org.eclipse.ocl.tutorial.eclipsecon2011.playspace/model/simple.states b/docs/publications/EclipseCon2011Tutorial/org.eclipse.ocl.tutorial.eclipsecon2011.playspace/model/simple.states
index e4ccd9c..0fe2813 100644
--- a/docs/publications/EclipseCon2011Tutorial/org.eclipse.ocl.tutorial.eclipsecon2011.playspace/model/simple.states
+++ b/docs/publications/EclipseCon2011Tutorial/org.eclipse.ocl.tutorial.eclipsecon2011.playspace/model/simple.states
@@ -8,7 +8,7 @@
         START  => Start
         STOP  => Stop
     }
-    state Stop 
+    initial state Stop 
     {
         START  => Start
         STOP  => Stop
diff --git a/docs/publications/EclipseCon2011Tutorial/org.eclipse.ocl.tutorial.eclipsecon2011.playspace/src/badsimple/states/.cvsignore b/docs/publications/EclipseCon2011Tutorial/org.eclipse.ocl.tutorial.eclipsecon2011.playspace/src/badsimple/states/.cvsignore
new file mode 100644
index 0000000..27d1535
--- /dev/null
+++ b/docs/publications/EclipseCon2011Tutorial/org.eclipse.ocl.tutorial.eclipsecon2011.playspace/src/badsimple/states/.cvsignore
@@ -0,0 +1 @@
+*.java
diff --git a/docs/publications/EclipseCon2011Tutorial/org.eclipse.ocl.tutorial.eclipsecon2011.playspace/src/flattened/compound/states/CompoundA_Left.java b/docs/publications/EclipseCon2011Tutorial/org.eclipse.ocl.tutorial.eclipsecon2011.playspace/src/flattened/compound/states/CompoundA_Left.java
index 8022a62..1a0668c 100644
--- a/docs/publications/EclipseCon2011Tutorial/org.eclipse.ocl.tutorial.eclipsecon2011.playspace/src/flattened/compound/states/CompoundA_Left.java
+++ b/docs/publications/EclipseCon2011Tutorial/org.eclipse.ocl.tutorial.eclipsecon2011.playspace/src/flattened/compound/states/CompoundA_Left.java
@@ -7,6 +7,10 @@
     }
     public void doLEFT()
         { sm.setState(STATES.STATE_CompoundA_Right); }
+    public void doRIGHT()
+        { sm.setState(STATES.STATE_CompoundA_Left); }
+    public void doSTOP()
+        { sm.setState(STATES.STATE_Stop); }
     public void doSTART()
         { sm.setState(STATES.STATE_Stop); }
 }    
diff --git a/docs/publications/EclipseCon2011Tutorial/org.eclipse.ocl.tutorial.eclipsecon2011.playspace/src/flattened/compound/states/CompoundA_Right.java b/docs/publications/EclipseCon2011Tutorial/org.eclipse.ocl.tutorial.eclipsecon2011.playspace/src/flattened/compound/states/CompoundA_Right.java
index 034acb4..f6ed7dd 100644
--- a/docs/publications/EclipseCon2011Tutorial/org.eclipse.ocl.tutorial.eclipsecon2011.playspace/src/flattened/compound/states/CompoundA_Right.java
+++ b/docs/publications/EclipseCon2011Tutorial/org.eclipse.ocl.tutorial.eclipsecon2011.playspace/src/flattened/compound/states/CompoundA_Right.java
@@ -5,8 +5,12 @@
     public CompoundA_Right(Outer sm) {
         this.sm = sm;
     }
+    public void doLEFT()
+        { sm.setState(STATES.STATE_CompoundA_Right); }
     public void doRIGHT()
         { sm.setState(STATES.STATE_CompoundA_Left); }
+    public void doSTOP()
+        { sm.setState(STATES.STATE_Stop); }
     public void doSTART()
         { sm.setState(STATES.STATE_Stop); }
 }    
diff --git a/docs/publications/EclipseCon2011Tutorial/org.eclipse.ocl.tutorial.eclipsecon2011.playspace/src/flattened/compound/states/CompoundB_Left.java b/docs/publications/EclipseCon2011Tutorial/org.eclipse.ocl.tutorial.eclipsecon2011.playspace/src/flattened/compound/states/CompoundB_Left.java
index 6cf97c1..232109d 100644
--- a/docs/publications/EclipseCon2011Tutorial/org.eclipse.ocl.tutorial.eclipsecon2011.playspace/src/flattened/compound/states/CompoundB_Left.java
+++ b/docs/publications/EclipseCon2011Tutorial/org.eclipse.ocl.tutorial.eclipsecon2011.playspace/src/flattened/compound/states/CompoundB_Left.java
@@ -7,6 +7,10 @@
     }
     public void doLEFT()
         { sm.setState(STATES.STATE_CompoundB_Right); }
+    public void doRIGHT()
+        { sm.setState(STATES.STATE_CompoundB_Left); }
     public void doSTOP()
         { sm.setState(STATES.STATE_Stop); }
+    public void doSTART()
+        { sm.setState(STATES.STATE_Stop); }
 }    
diff --git a/docs/publications/EclipseCon2011Tutorial/org.eclipse.ocl.tutorial.eclipsecon2011.playspace/src/flattened/compound/states/CompoundB_Right.java b/docs/publications/EclipseCon2011Tutorial/org.eclipse.ocl.tutorial.eclipsecon2011.playspace/src/flattened/compound/states/CompoundB_Right.java
index 02d1acf..d1eac48 100644
--- a/docs/publications/EclipseCon2011Tutorial/org.eclipse.ocl.tutorial.eclipsecon2011.playspace/src/flattened/compound/states/CompoundB_Right.java
+++ b/docs/publications/EclipseCon2011Tutorial/org.eclipse.ocl.tutorial.eclipsecon2011.playspace/src/flattened/compound/states/CompoundB_Right.java
@@ -5,8 +5,12 @@
     public CompoundB_Right(Outer sm) {
         this.sm = sm;
     }
+    public void doLEFT()
+        { sm.setState(STATES.STATE_CompoundB_Right); }
     public void doRIGHT()
         { sm.setState(STATES.STATE_CompoundB_Left); }
     public void doSTOP()
         { sm.setState(STATES.STATE_Stop); }
+    public void doSTART()
+        { sm.setState(STATES.STATE_Stop); }
 }    
diff --git a/docs/publications/EclipseCon2011Tutorial/org.eclipse.ocl.tutorial.eclipsecon2011.playspace/src/flattened/compound/states/Outer.java b/docs/publications/EclipseCon2011Tutorial/org.eclipse.ocl.tutorial.eclipsecon2011.playspace/src/flattened/compound/states/Outer.java
index fffba34..37c4311 100644
--- a/docs/publications/EclipseCon2011Tutorial/org.eclipse.ocl.tutorial.eclipsecon2011.playspace/src/flattened/compound/states/Outer.java
+++ b/docs/publications/EclipseCon2011Tutorial/org.eclipse.ocl.tutorial.eclipsecon2011.playspace/src/flattened/compound/states/Outer.java
@@ -4,29 +4,29 @@
 {
     public interface State
     {
-        public void doRIGHT();
         public void doLEFT();
-        public void doSTART();
         public void doSTOP();
+        public void doRIGHT();
+        public void doSTART();
 
         enum STATES
         {
             STATE_Start,
             STATE_Stop,
-            STATE_CompoundA_Left,
             STATE_CompoundA_Right,
-            STATE_CompoundB_Right,
-            STATE_CompoundB_Left
+            STATE_CompoundA_Left,
+            STATE_CompoundB_Left,
+            STATE_CompoundB_Right
         }
     }
 
     private final State[] states = new State[] {
         new Start(this),
         new Stop(this),
-        new CompoundA_Left(this),
         new CompoundA_Right(this),
-        new CompoundB_Right(this),
-        new CompoundB_Left(this)
+        new CompoundA_Left(this),
+        new CompoundB_Left(this),
+        new CompoundB_Right(this)
     };
 
     private State state;
@@ -39,8 +39,8 @@
         this.state = states[state.ordinal()];
     }
 
-    public void doRIGHT() { state.doRIGHT(); }
     public void doLEFT() { state.doLEFT(); }
-    public void doSTART() { state.doSTART(); }
     public void doSTOP() { state.doSTOP(); }
+    public void doRIGHT() { state.doRIGHT(); }
+    public void doSTART() { state.doSTART(); }
 }    
diff --git a/docs/publications/EclipseCon2011Tutorial/org.eclipse.ocl.tutorial.eclipsecon2011.playspace/src/flattened/compound/states/Start.java b/docs/publications/EclipseCon2011Tutorial/org.eclipse.ocl.tutorial.eclipsecon2011.playspace/src/flattened/compound/states/Start.java
index 73c323e..494b33f 100644
--- a/docs/publications/EclipseCon2011Tutorial/org.eclipse.ocl.tutorial.eclipsecon2011.playspace/src/flattened/compound/states/Start.java
+++ b/docs/publications/EclipseCon2011Tutorial/org.eclipse.ocl.tutorial.eclipsecon2011.playspace/src/flattened/compound/states/Start.java
@@ -7,4 +7,10 @@
     }
     public void doSTART()
         { sm.setState(STATES.STATE_CompoundA_Left); }
+    public void doLEFT()
+        { sm.setState(STATES.STATE_Start); }
+    public void doRIGHT()
+        { sm.setState(STATES.STATE_Start); }
+    public void doSTOP()
+        { sm.setState(STATES.STATE_Stop); }
 }    
diff --git a/docs/publications/EclipseCon2011Tutorial/org.eclipse.ocl.tutorial.eclipsecon2011.playspace/src/flattened/compound/states/Stop.java b/docs/publications/EclipseCon2011Tutorial/org.eclipse.ocl.tutorial.eclipsecon2011.playspace/src/flattened/compound/states/Stop.java
index 9887a25..8f088c4 100644
--- a/docs/publications/EclipseCon2011Tutorial/org.eclipse.ocl.tutorial.eclipsecon2011.playspace/src/flattened/compound/states/Stop.java
+++ b/docs/publications/EclipseCon2011Tutorial/org.eclipse.ocl.tutorial.eclipsecon2011.playspace/src/flattened/compound/states/Stop.java
@@ -5,6 +5,12 @@
     public Stop(Outer sm) {
         this.sm = sm;
     }
+    public void doSTART()
+        { sm.setState(STATES.STATE_Start); }
     public void doSTOP()
         { sm.setState(STATES.STATE_CompoundB_Left); }
+    public void doLEFT()
+        { sm.setState(STATES.STATE_Stop); }
+    public void doRIGHT()
+        { sm.setState(STATES.STATE_Stop); }
 }    
diff --git a/docs/publications/EclipseCon2011Tutorial/org.eclipse.ocl.tutorial.eclipsecon2011.playspace/src/simple/states/Machine.java b/docs/publications/EclipseCon2011Tutorial/org.eclipse.ocl.tutorial.eclipsecon2011.playspace/src/simple/states/Machine.java
index 3a20f5c..a7dd734 100644
--- a/docs/publications/EclipseCon2011Tutorial/org.eclipse.ocl.tutorial.eclipsecon2011.playspace/src/simple/states/Machine.java
+++ b/docs/publications/EclipseCon2011Tutorial/org.eclipse.ocl.tutorial.eclipsecon2011.playspace/src/simple/states/Machine.java
@@ -22,7 +22,7 @@
     private State state;
 
     public Machine() {
-        setState(State.STATES.STATE_org.eclipse.emf.ecore.impl.DynamicEObjectImpl@658c79 (eClass: org.eclipse.emf.ecore.impl.EClassImpl@e97bef (name: OclInvalid_Class) (instanceClassName: null) (abstract: false, interface: false)));
+        setState(State.STATES.STATE_Stop);
     }
 
     public void setState(State.STATES state) {
diff --git a/docs/publications/EclipseCon2011Tutorial/org.eclipse.ocl.tutorial.eclipsecon2011.states2classes/src/org/eclipse/ocl/tutorial/eclipsecon2011/states2classes/files/Generate.java b/docs/publications/EclipseCon2011Tutorial/org.eclipse.ocl.tutorial.eclipsecon2011.states2classes/src/org/eclipse/ocl/tutorial/eclipsecon2011/states2classes/files/Generate.java
index d360e78..6bc6937 100644
--- a/docs/publications/EclipseCon2011Tutorial/org.eclipse.ocl.tutorial.eclipsecon2011.states2classes/src/org/eclipse/ocl/tutorial/eclipsecon2011/states2classes/files/Generate.java
+++ b/docs/publications/EclipseCon2011Tutorial/org.eclipse.ocl.tutorial.eclipsecon2011.states2classes/src/org/eclipse/ocl/tutorial/eclipsecon2011/states2classes/files/Generate.java
@@ -43,12 +43,7 @@
 	 *
 	 * @generated
 	 */
-	public static final String[] TEMPLATE_NAMES = { "generate" };
-
-	/**
-     * The list of properties files from the launch parameters (Launch configuration).
-     */
-    private List<String> propertiesFiles = new ArrayList<String>();
+	public static final String[] TEMPLATE_NAMES = { "generate", };
 
   /**
 	 * Allows the public constructor to be used. Note that a generator created
@@ -65,8 +60,8 @@
 	 * @generated
 	 */
 	public Generate() {
-        // Empty implementation
-    }
+    // Empty implementation
+  }
 
 	/**
 	 * This allows clients to instantiates a generator with all required information.
@@ -86,8 +81,8 @@
 	 */
 	public Generate(URI modelURI, File targetFolder,
 			List<? extends Object> arguments) throws IOException {
-        initialize(modelURI, targetFolder, arguments);
-    }
+    initialize(modelURI, targetFolder, arguments);
+  }
 
 	/**
 	 * This allows clients to instantiates a generator with all required information.
@@ -107,8 +102,8 @@
 	 */
 	public Generate(EObject model, File targetFolder,
 			List<? extends Object> arguments) throws IOException {
-        initialize(model, targetFolder, arguments);
-    }
+    initialize(model, targetFolder, arguments);
+  }
 	
 	/**
 	 * This can be used to launch the generation from a standalone application.
@@ -118,45 +113,23 @@
 	 * @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>();
-                
-                /*
-                 * 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.
-                 */
-                
-                Generate generator = new Generate(modelURI, folder, arguments);
-                
-                /*
-                 * Add the properties from the launch arguments.
-                 * If you want to programmatically add new arguments, 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 basic properties loader will look for properties in the current project if the path
-                 * of the properties file is like this "packagea.packageb.packagec.default" for a properties
-                 * file named default.properties, or if the path is an absolute path. With a new property
-                 * loader you could for example, look for properties files in a bundle.
-                 */
-                 
-                for (int i = 2; i < args.length; i++) {
-                    generator.addPropertiesFile(args[i]);
-                }
-                
-                generator.doGenerate(new BasicMonitor());
-            }
-        } catch (IOException e) {
-            e.printStackTrace();
+    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>();
+        for (int i = 2; i < args.length; i++) {
+          arguments.add(args[i]);
         }
+        Generate generator = new Generate(modelURI, folder, arguments);
+        generator.doGenerate(new BasicMonitor());
+      }
+    } catch (IOException e) {
+      e.printStackTrace();
     }
+  }
 
 	/**
 	 * Launches the generation described by this instance.
@@ -169,12 +142,12 @@
 	 */
 	@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.
-         */
-        super.doGenerate(monitor);
-    }
+    /*
+     * TODO if you wish to change the generation as a whole, override this.
+     * The default behavior should be sufficient in most cases.
+     */
+    super.doGenerate(monitor);
+  }
 	
 	/**
 	 * If this generator needs to listen to text generation events, listeners can be returned from here.
@@ -184,10 +157,10 @@
 	 */
 	@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
-        return listeners;
-    }
+    List<IAcceleoTextGenerationListener> listeners = super.getGenerationListeners();
+    // TODO if you need to listen to generation event, add listeners to the list here
+    return listeners;
+  }
 	
 	/**
 	 * If you need to change the way files are generated, this is your entry point.
@@ -211,8 +184,8 @@
 	 * @generated
 	 */
 	public IAcceleoGenerationStrategy getGenerationStrategy() {
-        return super.getGenerationStrategy();
-    }
+    return super.getGenerationStrategy();
+  }
 	
 	/**
 	 * This will be called in order to find and load the module that will be launched through this launcher.
@@ -223,8 +196,8 @@
 	 */
 	@Override
 	public String getModuleName() {
-        return MODULE_FILE_NAME;
-    }
+    return MODULE_FILE_NAME;
+  }
 	
 	/**
 	 * If the module(s) called by this launcher require properties files, return their qualified path from
@@ -243,29 +216,18 @@
 	 */
 	@Override
 	public List<String> getProperties() {
-        /*
-         * TODO if your generation module requires access to properties files,
-         * add their qualified path to the list here. Properties files are
-         * expected to be in source folders, and the path here to be the
-         * qualified path as if referring to a Java class. For example, if you
-         * have a file named "messages.properties" in package
-         * "org.eclipse.acceleo.sample", the path that needs be added to this
-         * list is "org.eclipse.acceleo.sample.messages".
-         */
-        return propertiesFiles;
-    }
-	
-	/**
-     * Adds a properties file in the list of properties files.
-     * 
-     * @param propertiesFile
-     *            The properties file to add.
-     * @since 3.1
+    List<String> propertiesFiles = super.getProperties();
+    /*
+     * TODO if your generation module requires access to properties files,
+     * add their qualified path to the list here. Properties files are
+     * expected to be in source folders, and the path here to be the
+     * qualified path as if referring to a Java class. For example, if you
+     * have a file named "messages.properties" in package
+     * "org.eclipse.acceleo.sample", the path that needs be added to this
+     * list is "org.eclipse.acceleo.sample.messages".
      */
-    @Override
-    public void addPropertiesFile(String propertiesFile) {
-        this.propertiesFiles.add(propertiesFile);
-    }
+    return propertiesFiles;
+  }
 
   /**
 	 * This will be used to get the list of templates that are to be launched by this launcher.
@@ -275,8 +237,8 @@
 	 */
 	@Override
 	public String[] getTemplateNames() {
-        return TEMPLATE_NAMES;
-    }
+    return TEMPLATE_NAMES;
+  }
 	
 	/**
 	 * This can be used to update the resource set's package registry with all needed EPackages.
@@ -303,9 +265,9 @@
 	 */
 	@Override
 	public void registerResourceFactories(ResourceSet resourceSet) {
-        super.registerResourceFactories(resourceSet);
-        // TODO If you need additional resource factories registrations, do them here. The following line is an example for UML.
-        // resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put(UMLResource.FILE_EXTENSION, UMLResource.Factory.INSTANCE);
-    }
+    super.registerResourceFactories(resourceSet);
+    // TODO If you need additional resource factories registrations, do them here. The following line is an example for UML.
+    // resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put(UMLResource.FILE_EXTENSION, UMLResource.Factory.INSTANCE);
+  }
 	
 }
