diff --git a/core/contexts/org.eclipse.rcptt.ctx.preferences/gen-src/org/eclipse/rcptt/preferences/ListPrefData.java b/core/contexts/org.eclipse.rcptt.ctx.preferences/gen-src/org/eclipse/rcptt/preferences/ListPrefData.java
index 8c1aa35..57ac255 100644
--- a/core/contexts/org.eclipse.rcptt.ctx.preferences/gen-src/org/eclipse/rcptt/preferences/ListPrefData.java
+++ b/core/contexts/org.eclipse.rcptt.ctx.preferences/gen-src/org/eclipse/rcptt/preferences/ListPrefData.java
@@ -1,13 +1,9 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
+ * $Id$
+ */
 package org.eclipse.rcptt.preferences;
 
 import org.eclipse.emf.common.util.EList;
diff --git a/core/contexts/org.eclipse.rcptt.ctx.preferences/gen-src/org/eclipse/rcptt/preferences/PrefData.java b/core/contexts/org.eclipse.rcptt.ctx.preferences/gen-src/org/eclipse/rcptt/preferences/PrefData.java
index 887a096..ae36a08 100644
--- a/core/contexts/org.eclipse.rcptt.ctx.preferences/gen-src/org/eclipse/rcptt/preferences/PrefData.java
+++ b/core/contexts/org.eclipse.rcptt.ctx.preferences/gen-src/org/eclipse/rcptt/preferences/PrefData.java
@@ -1,13 +1,9 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
+ * $Id$
+ */
 package org.eclipse.rcptt.preferences;
 
 import org.eclipse.emf.ecore.EObject;
diff --git a/core/contexts/org.eclipse.rcptt.ctx.preferences/gen-src/org/eclipse/rcptt/preferences/PrefNode.java b/core/contexts/org.eclipse.rcptt.ctx.preferences/gen-src/org/eclipse/rcptt/preferences/PrefNode.java
index f94fde8..b2495af 100644
--- a/core/contexts/org.eclipse.rcptt.ctx.preferences/gen-src/org/eclipse/rcptt/preferences/PrefNode.java
+++ b/core/contexts/org.eclipse.rcptt.ctx.preferences/gen-src/org/eclipse/rcptt/preferences/PrefNode.java
@@ -1,13 +1,9 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
+ * $Id$
+ */
 package org.eclipse.rcptt.preferences;
 
 import org.eclipse.emf.common.util.EList;
diff --git a/core/contexts/org.eclipse.rcptt.ctx.preferences/gen-src/org/eclipse/rcptt/preferences/PreferencesContext.java b/core/contexts/org.eclipse.rcptt.ctx.preferences/gen-src/org/eclipse/rcptt/preferences/PreferencesContext.java
index d3585c0..84c1fbe 100644
--- a/core/contexts/org.eclipse.rcptt.ctx.preferences/gen-src/org/eclipse/rcptt/preferences/PreferencesContext.java
+++ b/core/contexts/org.eclipse.rcptt.ctx.preferences/gen-src/org/eclipse/rcptt/preferences/PreferencesContext.java
@@ -1,19 +1,15 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
+ * $Id$
+ */
 package org.eclipse.rcptt.preferences;
 
-import org.eclipse.rcptt.core.scenario.Context;
-
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.rcptt.core.scenario.Context;
+
 /**
  * <!-- begin-user-doc -->
  * A representation of the model object '<em><b>Context</b></em>'.
diff --git a/core/contexts/org.eclipse.rcptt.ctx.preferences/gen-src/org/eclipse/rcptt/preferences/PreferencesFactory.java b/core/contexts/org.eclipse.rcptt.ctx.preferences/gen-src/org/eclipse/rcptt/preferences/PreferencesFactory.java
index cce8763..9e62172 100644
--- a/core/contexts/org.eclipse.rcptt.ctx.preferences/gen-src/org/eclipse/rcptt/preferences/PreferencesFactory.java
+++ b/core/contexts/org.eclipse.rcptt.ctx.preferences/gen-src/org/eclipse/rcptt/preferences/PreferencesFactory.java
@@ -1,13 +1,9 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
+ * $Id$
+ */
 package org.eclipse.rcptt.preferences;
 
 import org.eclipse.emf.ecore.EFactory;
diff --git a/core/contexts/org.eclipse.rcptt.ctx.preferences/gen-src/org/eclipse/rcptt/preferences/PreferencesPackage.java b/core/contexts/org.eclipse.rcptt.ctx.preferences/gen-src/org/eclipse/rcptt/preferences/PreferencesPackage.java
index 2e3476d..436dbb6 100644
--- a/core/contexts/org.eclipse.rcptt.ctx.preferences/gen-src/org/eclipse/rcptt/preferences/PreferencesPackage.java
+++ b/core/contexts/org.eclipse.rcptt.ctx.preferences/gen-src/org/eclipse/rcptt/preferences/PreferencesPackage.java
@@ -1,22 +1,18 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
+ * $Id$
+ */
 package org.eclipse.rcptt.preferences;
 
-import org.eclipse.rcptt.core.scenario.ScenarioPackage;
-
 import org.eclipse.emf.ecore.EAttribute;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.EPackage;
 import org.eclipse.emf.ecore.EReference;
 
+import org.eclipse.rcptt.core.scenario.ScenarioPackage;
+
 /**
  * <!-- begin-user-doc -->
  * The <b>Package</b> for the model.
diff --git a/core/contexts/org.eclipse.rcptt.ctx.preferences/gen-src/org/eclipse/rcptt/preferences/SecurePrefNode.java b/core/contexts/org.eclipse.rcptt.ctx.preferences/gen-src/org/eclipse/rcptt/preferences/SecurePrefNode.java
index be18680..d5d7a9a 100644
--- a/core/contexts/org.eclipse.rcptt.ctx.preferences/gen-src/org/eclipse/rcptt/preferences/SecurePrefNode.java
+++ b/core/contexts/org.eclipse.rcptt.ctx.preferences/gen-src/org/eclipse/rcptt/preferences/SecurePrefNode.java
@@ -1,13 +1,9 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
+ * $Id$
+ */
 package org.eclipse.rcptt.preferences;
 
 
diff --git a/core/contexts/org.eclipse.rcptt.ctx.preferences/gen-src/org/eclipse/rcptt/preferences/SettingsNode.java b/core/contexts/org.eclipse.rcptt.ctx.preferences/gen-src/org/eclipse/rcptt/preferences/SettingsNode.java
index 9dfb011..cc4da8a 100644
--- a/core/contexts/org.eclipse.rcptt.ctx.preferences/gen-src/org/eclipse/rcptt/preferences/SettingsNode.java
+++ b/core/contexts/org.eclipse.rcptt.ctx.preferences/gen-src/org/eclipse/rcptt/preferences/SettingsNode.java
@@ -1,13 +1,9 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
+ * $Id$
+ */
 package org.eclipse.rcptt.preferences;
 
 
diff --git a/core/contexts/org.eclipse.rcptt.ctx.preferences/gen-src/org/eclipse/rcptt/preferences/StringPrefData.java b/core/contexts/org.eclipse.rcptt.ctx.preferences/gen-src/org/eclipse/rcptt/preferences/StringPrefData.java
index c076741..9950233 100644
--- a/core/contexts/org.eclipse.rcptt.ctx.preferences/gen-src/org/eclipse/rcptt/preferences/StringPrefData.java
+++ b/core/contexts/org.eclipse.rcptt.ctx.preferences/gen-src/org/eclipse/rcptt/preferences/StringPrefData.java
@@ -1,13 +1,9 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
+ * $Id$
+ */
 package org.eclipse.rcptt.preferences;
 
 
diff --git a/core/contexts/org.eclipse.rcptt.ctx.preferences/gen-src/org/eclipse/rcptt/preferences/impl/ListPrefDataImpl.java b/core/contexts/org.eclipse.rcptt.ctx.preferences/gen-src/org/eclipse/rcptt/preferences/impl/ListPrefDataImpl.java
index d077a0e..de0b286 100644
--- a/core/contexts/org.eclipse.rcptt.ctx.preferences/gen-src/org/eclipse/rcptt/preferences/impl/ListPrefDataImpl.java
+++ b/core/contexts/org.eclipse.rcptt.ctx.preferences/gen-src/org/eclipse/rcptt/preferences/impl/ListPrefDataImpl.java
@@ -1,18 +1,11 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
+ * $Id$
+ */
 package org.eclipse.rcptt.preferences.impl;
 
-import org.eclipse.rcptt.preferences.ListPrefData;
-import org.eclipse.rcptt.preferences.PreferencesPackage;
-
 import java.util.Collection;
 
 import org.eclipse.emf.common.notify.Notification;
@@ -26,6 +19,9 @@
 
 import org.eclipse.emf.ecore.util.EDataTypeUniqueEList;
 
+import org.eclipse.rcptt.preferences.ListPrefData;
+import org.eclipse.rcptt.preferences.PreferencesPackage;
+
 /**
  * <!-- begin-user-doc -->
  * An implementation of the model object '<em><b>List Pref Data</b></em>'.
diff --git a/core/contexts/org.eclipse.rcptt.ctx.preferences/gen-src/org/eclipse/rcptt/preferences/impl/PrefNodeImpl.java b/core/contexts/org.eclipse.rcptt.ctx.preferences/gen-src/org/eclipse/rcptt/preferences/impl/PrefNodeImpl.java
index fd94086..119262d 100644
--- a/core/contexts/org.eclipse.rcptt.ctx.preferences/gen-src/org/eclipse/rcptt/preferences/impl/PrefNodeImpl.java
+++ b/core/contexts/org.eclipse.rcptt.ctx.preferences/gen-src/org/eclipse/rcptt/preferences/impl/PrefNodeImpl.java
@@ -1,19 +1,11 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
+ * $Id$
+ */
 package org.eclipse.rcptt.preferences.impl;
 
-import org.eclipse.rcptt.preferences.PrefData;
-import org.eclipse.rcptt.preferences.PrefNode;
-import org.eclipse.rcptt.preferences.PreferencesPackage;
-
 import java.util.Collection;
 
 import org.eclipse.emf.common.notify.Notification;
@@ -30,6 +22,10 @@
 import org.eclipse.emf.ecore.util.EObjectContainmentEList;
 import org.eclipse.emf.ecore.util.InternalEList;
 
+import org.eclipse.rcptt.preferences.PrefData;
+import org.eclipse.rcptt.preferences.PrefNode;
+import org.eclipse.rcptt.preferences.PreferencesPackage;
+
 /**
  * <!-- begin-user-doc -->
  * An implementation of the model object '<em><b>Pref Node</b></em>'.
diff --git a/core/contexts/org.eclipse.rcptt.ctx.preferences/gen-src/org/eclipse/rcptt/preferences/impl/PreferencesContextImpl.java b/core/contexts/org.eclipse.rcptt.ctx.preferences/gen-src/org/eclipse/rcptt/preferences/impl/PreferencesContextImpl.java
index f8ed69f..ad01359 100644
--- a/core/contexts/org.eclipse.rcptt.ctx.preferences/gen-src/org/eclipse/rcptt/preferences/impl/PreferencesContextImpl.java
+++ b/core/contexts/org.eclipse.rcptt.ctx.preferences/gen-src/org/eclipse/rcptt/preferences/impl/PreferencesContextImpl.java
@@ -1,22 +1,11 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
+ * $Id$
+ */
 package org.eclipse.rcptt.preferences.impl;
 
-import org.eclipse.rcptt.core.scenario.impl.ContextImpl;
-
-import org.eclipse.rcptt.preferences.PrefNode;
-import org.eclipse.rcptt.preferences.PreferencesContext;
-import org.eclipse.rcptt.preferences.PreferencesPackage;
-import org.eclipse.rcptt.preferences.SettingsNode;
-
 import java.util.Collection;
 
 import org.eclipse.emf.common.notify.Notification;
@@ -32,6 +21,13 @@
 import org.eclipse.emf.ecore.util.EObjectContainmentEList;
 import org.eclipse.emf.ecore.util.InternalEList;
 
+import org.eclipse.rcptt.core.scenario.impl.ContextImpl;
+
+import org.eclipse.rcptt.preferences.PrefNode;
+import org.eclipse.rcptt.preferences.PreferencesContext;
+import org.eclipse.rcptt.preferences.PreferencesPackage;
+import org.eclipse.rcptt.preferences.SettingsNode;
+
 /**
  * <!-- begin-user-doc -->
  * An implementation of the model object '<em><b>Context</b></em>'.
diff --git a/core/contexts/org.eclipse.rcptt.ctx.preferences/gen-src/org/eclipse/rcptt/preferences/impl/PreferencesFactoryImpl.java b/core/contexts/org.eclipse.rcptt.ctx.preferences/gen-src/org/eclipse/rcptt/preferences/impl/PreferencesFactoryImpl.java
index 15887a2..75d6d03 100644
--- a/core/contexts/org.eclipse.rcptt.ctx.preferences/gen-src/org/eclipse/rcptt/preferences/impl/PreferencesFactoryImpl.java
+++ b/core/contexts/org.eclipse.rcptt.ctx.preferences/gen-src/org/eclipse/rcptt/preferences/impl/PreferencesFactoryImpl.java
@@ -1,17 +1,11 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
+ * $Id$
+ */
 package org.eclipse.rcptt.preferences.impl;
 
-import org.eclipse.rcptt.preferences.*;
-
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.emf.ecore.EPackage;
@@ -20,6 +14,8 @@
 
 import org.eclipse.emf.ecore.plugin.EcorePlugin;
 
+import org.eclipse.rcptt.preferences.*;
+
 /**
  * <!-- begin-user-doc -->
  * An implementation of the model <b>Factory</b>.
diff --git a/core/contexts/org.eclipse.rcptt.ctx.preferences/gen-src/org/eclipse/rcptt/preferences/impl/PreferencesPackageImpl.java b/core/contexts/org.eclipse.rcptt.ctx.preferences/gen-src/org/eclipse/rcptt/preferences/impl/PreferencesPackageImpl.java
index 1d81176..5c7c670 100644
--- a/core/contexts/org.eclipse.rcptt.ctx.preferences/gen-src/org/eclipse/rcptt/preferences/impl/PreferencesPackageImpl.java
+++ b/core/contexts/org.eclipse.rcptt.ctx.preferences/gen-src/org/eclipse/rcptt/preferences/impl/PreferencesPackageImpl.java
@@ -1,15 +1,18 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
+ * $Id$
+ */
 package org.eclipse.rcptt.preferences.impl;
 
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+
 import org.eclipse.rcptt.core.scenario.ScenarioPackage;
 
 import org.eclipse.rcptt.preferences.ListPrefData;
@@ -22,13 +25,6 @@
 import org.eclipse.rcptt.preferences.SettingsNode;
 import org.eclipse.rcptt.preferences.StringPrefData;
 
-import org.eclipse.emf.ecore.EAttribute;
-import org.eclipse.emf.ecore.EClass;
-import org.eclipse.emf.ecore.EPackage;
-import org.eclipse.emf.ecore.EReference;
-
-import org.eclipse.emf.ecore.impl.EPackageImpl;
-
 /**
  * <!-- begin-user-doc -->
  * An implementation of the model <b>Package</b>.
diff --git a/core/contexts/org.eclipse.rcptt.ctx.preferences/gen-src/org/eclipse/rcptt/preferences/impl/SecurePrefNodeImpl.java b/core/contexts/org.eclipse.rcptt.ctx.preferences/gen-src/org/eclipse/rcptt/preferences/impl/SecurePrefNodeImpl.java
index 0e587f4..26118ad 100644
--- a/core/contexts/org.eclipse.rcptt.ctx.preferences/gen-src/org/eclipse/rcptt/preferences/impl/SecurePrefNodeImpl.java
+++ b/core/contexts/org.eclipse.rcptt.ctx.preferences/gen-src/org/eclipse/rcptt/preferences/impl/SecurePrefNodeImpl.java
@@ -1,20 +1,16 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
+ * $Id$
+ */
 package org.eclipse.rcptt.preferences.impl;
 
+import org.eclipse.emf.ecore.EClass;
+
 import org.eclipse.rcptt.preferences.PreferencesPackage;
 import org.eclipse.rcptt.preferences.SecurePrefNode;
 
-import org.eclipse.emf.ecore.EClass;
-
 /**
  * <!-- begin-user-doc -->
  * An implementation of the model object '<em><b>Secure Pref Node</b></em>'.
diff --git a/core/contexts/org.eclipse.rcptt.ctx.preferences/gen-src/org/eclipse/rcptt/preferences/impl/SettingsNodeImpl.java b/core/contexts/org.eclipse.rcptt.ctx.preferences/gen-src/org/eclipse/rcptt/preferences/impl/SettingsNodeImpl.java
index 1ccc8f4..04ddc1b 100644
--- a/core/contexts/org.eclipse.rcptt.ctx.preferences/gen-src/org/eclipse/rcptt/preferences/impl/SettingsNodeImpl.java
+++ b/core/contexts/org.eclipse.rcptt.ctx.preferences/gen-src/org/eclipse/rcptt/preferences/impl/SettingsNodeImpl.java
@@ -1,20 +1,16 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
+ * $Id$
+ */
 package org.eclipse.rcptt.preferences.impl;
 
+import org.eclipse.emf.ecore.EClass;
+
 import org.eclipse.rcptt.preferences.PreferencesPackage;
 import org.eclipse.rcptt.preferences.SettingsNode;
 
-import org.eclipse.emf.ecore.EClass;
-
 /**
  * <!-- begin-user-doc -->
  * An implementation of the model object '<em><b>Settings Node</b></em>'.
diff --git a/core/contexts/org.eclipse.rcptt.ctx.preferences/gen-src/org/eclipse/rcptt/preferences/impl/StringPrefDataImpl.java b/core/contexts/org.eclipse.rcptt.ctx.preferences/gen-src/org/eclipse/rcptt/preferences/impl/StringPrefDataImpl.java
index 8589385..cc85ec8 100644
--- a/core/contexts/org.eclipse.rcptt.ctx.preferences/gen-src/org/eclipse/rcptt/preferences/impl/StringPrefDataImpl.java
+++ b/core/contexts/org.eclipse.rcptt.ctx.preferences/gen-src/org/eclipse/rcptt/preferences/impl/StringPrefDataImpl.java
@@ -1,18 +1,11 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
+ * $Id$
+ */
 package org.eclipse.rcptt.preferences.impl;
 
-import org.eclipse.rcptt.preferences.PreferencesPackage;
-import org.eclipse.rcptt.preferences.StringPrefData;
-
 import org.eclipse.emf.common.notify.Notification;
 
 import org.eclipse.emf.ecore.EClass;
@@ -20,6 +13,9 @@
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
 import org.eclipse.emf.ecore.impl.EObjectImpl;
 
+import org.eclipse.rcptt.preferences.PreferencesPackage;
+import org.eclipse.rcptt.preferences.StringPrefData;
+
 /**
  * <!-- begin-user-doc -->
  * An implementation of the model object '<em><b>String Pref Data</b></em>'.
diff --git a/core/contexts/org.eclipse.rcptt.ctx.preferences/gen-src/org/eclipse/rcptt/preferences/util/PreferencesAdapterFactory.java b/core/contexts/org.eclipse.rcptt.ctx.preferences/gen-src/org/eclipse/rcptt/preferences/util/PreferencesAdapterFactory.java
index 25af4aa..e6a315f 100644
--- a/core/contexts/org.eclipse.rcptt.ctx.preferences/gen-src/org/eclipse/rcptt/preferences/util/PreferencesAdapterFactory.java
+++ b/core/contexts/org.eclipse.rcptt.ctx.preferences/gen-src/org/eclipse/rcptt/preferences/util/PreferencesAdapterFactory.java
@@ -1,20 +1,11 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
+ * $Id$
+ */
 package org.eclipse.rcptt.preferences.util;
 
-import org.eclipse.rcptt.core.scenario.Context;
-import org.eclipse.rcptt.core.scenario.NamedElement;
-
-import org.eclipse.rcptt.preferences.*;
-
 import org.eclipse.emf.common.notify.Adapter;
 import org.eclipse.emf.common.notify.Notifier;
 
@@ -22,6 +13,11 @@
 
 import org.eclipse.emf.ecore.EObject;
 
+import org.eclipse.rcptt.core.scenario.Context;
+import org.eclipse.rcptt.core.scenario.NamedElement;
+
+import org.eclipse.rcptt.preferences.*;
+
 /**
  * <!-- begin-user-doc -->
  * The <b>Adapter Factory</b> for the model.
diff --git a/core/contexts/org.eclipse.rcptt.ctx.preferences/gen-src/org/eclipse/rcptt/preferences/util/PreferencesSwitch.java b/core/contexts/org.eclipse.rcptt.ctx.preferences/gen-src/org/eclipse/rcptt/preferences/util/PreferencesSwitch.java
index 231243d..bc9b821 100644
--- a/core/contexts/org.eclipse.rcptt.ctx.preferences/gen-src/org/eclipse/rcptt/preferences/util/PreferencesSwitch.java
+++ b/core/contexts/org.eclipse.rcptt.ctx.preferences/gen-src/org/eclipse/rcptt/preferences/util/PreferencesSwitch.java
@@ -1,26 +1,20 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
+ * $Id$
+ */
 package org.eclipse.rcptt.preferences.util;
 
-import org.eclipse.rcptt.core.scenario.Context;
-import org.eclipse.rcptt.core.scenario.NamedElement;
-
-import org.eclipse.rcptt.preferences.*;
-
 import java.util.List;
 
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emf.ecore.EPackage;
-import org.eclipse.emf.ecore.util.Switch;
+
+import org.eclipse.rcptt.core.scenario.Context;
+import org.eclipse.rcptt.core.scenario.NamedElement;
+
+import org.eclipse.rcptt.preferences.*;
 
 /**
  * <!-- begin-user-doc -->
@@ -35,7 +29,7 @@
  * @see org.eclipse.rcptt.preferences.PreferencesPackage
  * @generated
  */
-public class PreferencesSwitch<T> extends Switch<T> {
+public class PreferencesSwitch<T> {
 	/**
 	 * The cached model package
 	 * <!-- begin-user-doc -->
@@ -57,16 +51,14 @@
 	}
 
 	/**
-	 * Checks whether this is a switch for the given package.
+	 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @parameter ePackage the package in question.
-	 * @return whether this is a switch for the given package.
+	 * @return the first non-null result returned by a <code>caseXXX</code> call.
 	 * @generated
 	 */
-	@Override
-	protected boolean isSwitchFor(EPackage ePackage) {
-		return ePackage == modelPackage;
+	public T doSwitch(EObject theEObject) {
+		return doSwitch(theEObject.eClass(), theEObject);
 	}
 
 	/**
@@ -76,7 +68,26 @@
 	 * @return the first non-null result returned by a <code>caseXXX</code> call.
 	 * @generated
 	 */
-	@Override
+	protected T doSwitch(EClass theEClass, EObject theEObject) {
+		if (theEClass.eContainer() == modelPackage) {
+			return doSwitch(theEClass.getClassifierID(), theEObject);
+		}
+		else {
+			List<EClass> eSuperTypes = theEClass.getESuperTypes();
+			return
+				eSuperTypes.isEmpty() ?
+					defaultCase(theEObject) :
+					doSwitch(eSuperTypes.get(0), theEObject);
+		}
+	}
+
+	/**
+	 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the first non-null result returned by a <code>caseXXX</code> call.
+	 * @generated
+	 */
 	protected T doSwitch(int classifierID, EObject theEObject) {
 		switch (classifierID) {
 			case PreferencesPackage.PREFERENCES_CONTEXT: {
@@ -277,7 +288,6 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject)
 	 * @generated
 	 */
-	@Override
 	public T defaultCase(EObject object) {
 		return null;
 	}
diff --git a/core/contexts/org.eclipse.rcptt.ctx.preferences/models/preferences.genmodel b/core/contexts/org.eclipse.rcptt.ctx.preferences/models/preferences.genmodel
index 360ec65..490da6e 100644
--- a/core/contexts/org.eclipse.rcptt.ctx.preferences/models/preferences.genmodel
+++ b/core/contexts/org.eclipse.rcptt.ctx.preferences/models/preferences.genmodel
@@ -3,7 +3,7 @@
     xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
     xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" modelDirectory="/org.eclipse.rcptt.ctx.preferences/gen-src"
     modelPluginID="org.eclipse.rcptt.ctx.preferences" modelName="Preferences" importerID="org.eclipse.emf.importer.ecore"
-    complianceLevel="5.0" copyrightFields="false" usedGenPackages="../../org.eclipse.rcptt.core.scenario/models/scenario.genmodel#//scenario">
+    complianceLevel="5.0" copyrightFields="false" runtimeVersion="2.5" usedGenPackages="../../org.eclipse.rcptt.core.scenario/models/scenario.genmodel#//scenario">
   <foreignModel>preferences.ecore</foreignModel>
   <genPackages prefix="Preferences" basePackage="org.eclipse.rcptt" disposableProviderFactory="true"
       ecorePackage="preferences.ecore#/">
diff --git a/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/ActivateDirectEdit.java b/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/ActivateDirectEdit.java
index 97e1796..770c633 100644
--- a/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/ActivateDirectEdit.java
+++ b/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/ActivateDirectEdit.java
@@ -1,19 +1,15 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
+ * $Id$
+ */
 package org.eclipse.rcptt.tesla.core.protocol.diagram;
 
-import org.eclipse.rcptt.tesla.core.protocol.ElementCommand;
-
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.rcptt.tesla.core.protocol.ElementCommand;
+
 /**
  * <!-- begin-user-doc -->
  * A representation of the model object '<em><b>Activate Direct Edit</b></em>'.
diff --git a/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/AssertFigureExists.java b/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/AssertFigureExists.java
index a398a47..2310fd3 100644
--- a/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/AssertFigureExists.java
+++ b/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/AssertFigureExists.java
@@ -1,19 +1,15 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
+ * $Id$
+ */
 package org.eclipse.rcptt.tesla.core.protocol.diagram;
 
-import org.eclipse.rcptt.tesla.core.protocol.ElementCommand;
-
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.rcptt.tesla.core.protocol.ElementCommand;
+
 /**
  * <!-- begin-user-doc -->
  * A representation of the model object '<em><b>Assert Figure Exists</b></em>'.
diff --git a/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/CancelDirectEdit.java b/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/CancelDirectEdit.java
index 74ecb23..480d666 100644
--- a/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/CancelDirectEdit.java
+++ b/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/CancelDirectEdit.java
@@ -1,13 +1,9 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
+ * $Id$
+ */
 package org.eclipse.rcptt.tesla.core.protocol.diagram;
 
 import org.eclipse.rcptt.tesla.core.protocol.ElementCommand;
diff --git a/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/CommitDirectEdit.java b/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/CommitDirectEdit.java
index b6a5482..c3cc3ad 100644
--- a/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/CommitDirectEdit.java
+++ b/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/CommitDirectEdit.java
@@ -1,13 +1,9 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
+ * $Id$
+ */
 package org.eclipse.rcptt.tesla.core.protocol.diagram;
 
 import org.eclipse.rcptt.tesla.core.protocol.ElementCommand;
diff --git a/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/CreateConnection.java b/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/CreateConnection.java
index 4b9754a..5539ce0 100644
--- a/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/CreateConnection.java
+++ b/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/CreateConnection.java
@@ -1,13 +1,9 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
+ * $Id$
+ */
 package org.eclipse.rcptt.tesla.core.protocol.diagram;
 
 import org.eclipse.rcptt.tesla.core.protocol.ElementCommand;
diff --git a/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/CreateConnectionResponse.java b/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/CreateConnectionResponse.java
index 4b1f121..46d14e9 100644
--- a/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/CreateConnectionResponse.java
+++ b/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/CreateConnectionResponse.java
@@ -1,20 +1,16 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
+ * $Id$
+ */
 package org.eclipse.rcptt.tesla.core.protocol.diagram;
 
+import org.eclipse.emf.common.util.EList;
+
 import org.eclipse.rcptt.tesla.core.protocol.raw.Element;
 import org.eclipse.rcptt.tesla.core.protocol.raw.Response;
 
-import org.eclipse.emf.common.util.EList;
-
 /**
  * <!-- begin-user-doc -->
  * A representation of the model object '<em><b>Create Connection Response</b></em>'.
diff --git a/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/CreateFigure.java b/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/CreateFigure.java
index 4923ab4..cae90fa 100644
--- a/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/CreateFigure.java
+++ b/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/CreateFigure.java
@@ -1,13 +1,9 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
+ * $Id$
+ */
 package org.eclipse.rcptt.tesla.core.protocol.diagram;
 
 import org.eclipse.rcptt.tesla.core.protocol.ElementCommand;
diff --git a/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/CreateFigureResponse.java b/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/CreateFigureResponse.java
index f262c01..729ec10 100644
--- a/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/CreateFigureResponse.java
+++ b/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/CreateFigureResponse.java
@@ -1,20 +1,16 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
+ * $Id$
+ */
 package org.eclipse.rcptt.tesla.core.protocol.diagram;
 
+import org.eclipse.emf.common.util.EList;
+
 import org.eclipse.rcptt.tesla.core.protocol.raw.Element;
 import org.eclipse.rcptt.tesla.core.protocol.raw.Response;
 
-import org.eclipse.emf.common.util.EList;
-
 /**
  * <!-- begin-user-doc -->
  * A representation of the model object '<em><b>Create Figure Response</b></em>'.
diff --git a/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/DiagramFactory.java b/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/DiagramFactory.java
index 956f3a5..e9a57eb 100644
--- a/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/DiagramFactory.java
+++ b/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/DiagramFactory.java
@@ -1,13 +1,9 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
+ * $Id$
+ */
 package org.eclipse.rcptt.tesla.core.protocol.diagram;
 
 import org.eclipse.emf.ecore.EFactory;
diff --git a/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/DiagramPackage.java b/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/DiagramPackage.java
index 25d7d31..e4634f3 100644
--- a/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/DiagramPackage.java
+++ b/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/DiagramPackage.java
@@ -1,25 +1,21 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
+ * $Id$
+ */
 package org.eclipse.rcptt.tesla.core.protocol.diagram;
 
-import org.eclipse.rcptt.tesla.core.protocol.ProtocolPackage;
-
-import org.eclipse.rcptt.tesla.core.protocol.raw.RawPackage;
-
 import org.eclipse.emf.ecore.EAttribute;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.EEnum;
 import org.eclipse.emf.ecore.EPackage;
 import org.eclipse.emf.ecore.EReference;
 
+import org.eclipse.rcptt.tesla.core.protocol.ProtocolPackage;
+
+import org.eclipse.rcptt.tesla.core.protocol.raw.RawPackage;
+
 /**
  * <!-- begin-user-doc -->
  * The <b>Package</b> for the model.
diff --git a/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/FigureMouseCommand.java b/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/FigureMouseCommand.java
index 6cd48ea..4f35747 100644
--- a/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/FigureMouseCommand.java
+++ b/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/FigureMouseCommand.java
@@ -1,19 +1,15 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
+ * $Id$
+ */
 package org.eclipse.rcptt.tesla.core.protocol.diagram;
 
-import org.eclipse.rcptt.tesla.core.protocol.ElementCommand;
-
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.rcptt.tesla.core.protocol.ElementCommand;
+
 /**
  * <!-- begin-user-doc -->
  * A representation of the model object '<em><b>Figure Mouse Command</b></em>'.
diff --git a/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/GetFigures.java b/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/GetFigures.java
index 69ba0d4..d75a770 100644
--- a/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/GetFigures.java
+++ b/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/GetFigures.java
@@ -1,13 +1,9 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
+ * $Id$
+ */
 package org.eclipse.rcptt.tesla.core.protocol.diagram;
 
 import org.eclipse.rcptt.tesla.core.protocol.ElementCommand;
diff --git a/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/GetFiguresResponse.java b/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/GetFiguresResponse.java
index 5928be6..206d753 100644
--- a/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/GetFiguresResponse.java
+++ b/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/GetFiguresResponse.java
@@ -1,20 +1,16 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
+ * $Id$
+ */
 package org.eclipse.rcptt.tesla.core.protocol.diagram;
 
+import org.eclipse.emf.common.util.EList;
+
 import org.eclipse.rcptt.tesla.core.protocol.raw.Element;
 import org.eclipse.rcptt.tesla.core.protocol.raw.Response;
 
-import org.eclipse.emf.common.util.EList;
-
 /**
  * <!-- begin-user-doc -->
  * A representation of the model object '<em><b>Get Figures Response</b></em>'.
diff --git a/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/MouseCommand.java b/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/MouseCommand.java
index 3176d8d..b523b90 100644
--- a/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/MouseCommand.java
+++ b/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/MouseCommand.java
@@ -1,13 +1,9 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
+ * $Id$
+ */
 package org.eclipse.rcptt.tesla.core.protocol.diagram;
 
 import org.eclipse.rcptt.tesla.core.protocol.ElementCommand;
diff --git a/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/MouseCommandKind.java b/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/MouseCommandKind.java
index f3456c1..7eb1c4b 100644
--- a/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/MouseCommandKind.java
+++ b/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/MouseCommandKind.java
@@ -1,13 +1,9 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
+ * $Id$
+ */
 package org.eclipse.rcptt.tesla.core.protocol.diagram;
 
 import java.util.Arrays;
diff --git a/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/MoveFigure.java b/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/MoveFigure.java
index bd8a6da..53be967 100644
--- a/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/MoveFigure.java
+++ b/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/MoveFigure.java
@@ -1,13 +1,9 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
+ * $Id$
+ */
 package org.eclipse.rcptt.tesla.core.protocol.diagram;
 
 import org.eclipse.rcptt.tesla.core.protocol.ElementCommand;
diff --git a/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/ResizeFigure.java b/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/ResizeFigure.java
index 121dfea..1e5cd2a 100644
--- a/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/ResizeFigure.java
+++ b/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/ResizeFigure.java
@@ -1,13 +1,9 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
+ * $Id$
+ */
 package org.eclipse.rcptt.tesla.core.protocol.diagram;
 
 import org.eclipse.rcptt.tesla.core.protocol.ElementCommand;
diff --git a/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/SetFigureSelection.java b/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/SetFigureSelection.java
index abf6b91..fed95c4 100644
--- a/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/SetFigureSelection.java
+++ b/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/SetFigureSelection.java
@@ -1,21 +1,17 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
+ * $Id$
+ */
 package org.eclipse.rcptt.tesla.core.protocol.diagram;
 
+import org.eclipse.emf.common.util.EList;
+
 import org.eclipse.rcptt.tesla.core.protocol.ElementCommand;
 
 import org.eclipse.rcptt.tesla.core.protocol.raw.Element;
 
-import org.eclipse.emf.common.util.EList;
-
 /**
  * <!-- begin-user-doc -->
  * A representation of the model object '<em><b>Set Figure Selection</b></em>'.
diff --git a/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/impl/ActivateDirectEditImpl.java b/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/impl/ActivateDirectEditImpl.java
index 33397d5..f5cea5e 100644
--- a/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/impl/ActivateDirectEditImpl.java
+++ b/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/impl/ActivateDirectEditImpl.java
@@ -1,20 +1,11 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
+ * $Id$
+ */
 package org.eclipse.rcptt.tesla.core.protocol.diagram.impl;
 
-import org.eclipse.rcptt.tesla.core.protocol.diagram.ActivateDirectEdit;
-import org.eclipse.rcptt.tesla.core.protocol.diagram.DiagramPackage;
-
-import org.eclipse.rcptt.tesla.core.protocol.raw.Element;
-
 import java.util.Collection;
 
 import org.eclipse.emf.common.notify.Notification;
@@ -30,6 +21,11 @@
 
 import org.eclipse.emf.ecore.util.EDataTypeEList;
 
+import org.eclipse.rcptt.tesla.core.protocol.diagram.ActivateDirectEdit;
+import org.eclipse.rcptt.tesla.core.protocol.diagram.DiagramPackage;
+
+import org.eclipse.rcptt.tesla.core.protocol.raw.Element;
+
 /**
  * <!-- begin-user-doc -->
  * An implementation of the model object '<em><b>Activate Direct Edit</b></em>'.
diff --git a/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/impl/AssertFigureExistsImpl.java b/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/impl/AssertFigureExistsImpl.java
index 1792720..7f87917 100644
--- a/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/impl/AssertFigureExistsImpl.java
+++ b/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/impl/AssertFigureExistsImpl.java
@@ -1,20 +1,11 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
+ * $Id$
+ */
 package org.eclipse.rcptt.tesla.core.protocol.diagram.impl;
 
-import org.eclipse.rcptt.tesla.core.protocol.diagram.AssertFigureExists;
-import org.eclipse.rcptt.tesla.core.protocol.diagram.DiagramPackage;
-
-import org.eclipse.rcptt.tesla.core.protocol.raw.Element;
-
 import java.util.Collection;
 
 import org.eclipse.emf.common.notify.Notification;
@@ -30,6 +21,11 @@
 
 import org.eclipse.emf.ecore.util.EDataTypeEList;
 
+import org.eclipse.rcptt.tesla.core.protocol.diagram.AssertFigureExists;
+import org.eclipse.rcptt.tesla.core.protocol.diagram.DiagramPackage;
+
+import org.eclipse.rcptt.tesla.core.protocol.raw.Element;
+
 /**
  * <!-- begin-user-doc -->
  * An implementation of the model object '<em><b>Assert Figure Exists</b></em>'.
diff --git a/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/impl/CancelDirectEditImpl.java b/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/impl/CancelDirectEditImpl.java
index bf9c2d4..e637725 100644
--- a/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/impl/CancelDirectEditImpl.java
+++ b/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/impl/CancelDirectEditImpl.java
@@ -1,20 +1,11 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
+ * $Id$
+ */
 package org.eclipse.rcptt.tesla.core.protocol.diagram.impl;
 
-import org.eclipse.rcptt.tesla.core.protocol.diagram.CancelDirectEdit;
-import org.eclipse.rcptt.tesla.core.protocol.diagram.DiagramPackage;
-
-import org.eclipse.rcptt.tesla.core.protocol.raw.Element;
-
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.common.notify.NotificationChain;
 
@@ -24,6 +15,11 @@
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
 import org.eclipse.emf.ecore.impl.EObjectImpl;
 
+import org.eclipse.rcptt.tesla.core.protocol.diagram.CancelDirectEdit;
+import org.eclipse.rcptt.tesla.core.protocol.diagram.DiagramPackage;
+
+import org.eclipse.rcptt.tesla.core.protocol.raw.Element;
+
 /**
  * <!-- begin-user-doc -->
  * An implementation of the model object '<em><b>Cancel Direct Edit</b></em>'.
diff --git a/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/impl/CommitDirectEditImpl.java b/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/impl/CommitDirectEditImpl.java
index 1052cf4..3e83e62 100644
--- a/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/impl/CommitDirectEditImpl.java
+++ b/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/impl/CommitDirectEditImpl.java
@@ -1,20 +1,11 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
+ * $Id$
+ */
 package org.eclipse.rcptt.tesla.core.protocol.diagram.impl;
 
-import org.eclipse.rcptt.tesla.core.protocol.diagram.CommitDirectEdit;
-import org.eclipse.rcptt.tesla.core.protocol.diagram.DiagramPackage;
-
-import org.eclipse.rcptt.tesla.core.protocol.raw.Element;
-
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.common.notify.NotificationChain;
 
@@ -24,6 +15,11 @@
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
 import org.eclipse.emf.ecore.impl.EObjectImpl;
 
+import org.eclipse.rcptt.tesla.core.protocol.diagram.CommitDirectEdit;
+import org.eclipse.rcptt.tesla.core.protocol.diagram.DiagramPackage;
+
+import org.eclipse.rcptt.tesla.core.protocol.raw.Element;
+
 /**
  * <!-- begin-user-doc -->
  * An implementation of the model object '<em><b>Commit Direct Edit</b></em>'.
diff --git a/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/impl/CreateConnectionImpl.java b/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/impl/CreateConnectionImpl.java
index 011211c..fc305e9 100644
--- a/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/impl/CreateConnectionImpl.java
+++ b/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/impl/CreateConnectionImpl.java
@@ -1,20 +1,11 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
+ * $Id$
+ */
 package org.eclipse.rcptt.tesla.core.protocol.diagram.impl;
 
-import org.eclipse.rcptt.tesla.core.protocol.diagram.CreateConnection;
-import org.eclipse.rcptt.tesla.core.protocol.diagram.DiagramPackage;
-
-import org.eclipse.rcptt.tesla.core.protocol.raw.Element;
-
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.common.notify.NotificationChain;
 
@@ -24,6 +15,11 @@
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
 import org.eclipse.emf.ecore.impl.EObjectImpl;
 
+import org.eclipse.rcptt.tesla.core.protocol.diagram.CreateConnection;
+import org.eclipse.rcptt.tesla.core.protocol.diagram.DiagramPackage;
+
+import org.eclipse.rcptt.tesla.core.protocol.raw.Element;
+
 /**
  * <!-- begin-user-doc -->
  * An implementation of the model object '<em><b>Create Connection</b></em>'.
diff --git a/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/impl/CreateConnectionResponseImpl.java b/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/impl/CreateConnectionResponseImpl.java
index cae0848..f6aa297 100644
--- a/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/impl/CreateConnectionResponseImpl.java
+++ b/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/impl/CreateConnectionResponseImpl.java
@@ -1,22 +1,11 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
+ * $Id$
+ */
 package org.eclipse.rcptt.tesla.core.protocol.diagram.impl;
 
-import org.eclipse.rcptt.tesla.core.protocol.diagram.CreateConnectionResponse;
-import org.eclipse.rcptt.tesla.core.protocol.diagram.DiagramPackage;
-
-import org.eclipse.rcptt.tesla.core.protocol.raw.Element;
-
-import org.eclipse.rcptt.tesla.core.protocol.raw.impl.ResponseImpl;
-
 import java.util.Collection;
 
 import org.eclipse.emf.common.notify.NotificationChain;
@@ -29,6 +18,13 @@
 import org.eclipse.emf.ecore.util.EObjectContainmentEList;
 import org.eclipse.emf.ecore.util.InternalEList;
 
+import org.eclipse.rcptt.tesla.core.protocol.diagram.CreateConnectionResponse;
+import org.eclipse.rcptt.tesla.core.protocol.diagram.DiagramPackage;
+
+import org.eclipse.rcptt.tesla.core.protocol.raw.Element;
+
+import org.eclipse.rcptt.tesla.core.protocol.raw.impl.ResponseImpl;
+
 /**
  * <!-- begin-user-doc -->
  * An implementation of the model object '<em><b>Create Connection Response</b></em>'.
diff --git a/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/impl/CreateFigureImpl.java b/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/impl/CreateFigureImpl.java
index 12aac3f..9a69b9d 100644
--- a/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/impl/CreateFigureImpl.java
+++ b/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/impl/CreateFigureImpl.java
@@ -1,20 +1,11 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
+ * $Id$
+ */
 package org.eclipse.rcptt.tesla.core.protocol.diagram.impl;
 
-import org.eclipse.rcptt.tesla.core.protocol.diagram.CreateFigure;
-import org.eclipse.rcptt.tesla.core.protocol.diagram.DiagramPackage;
-
-import org.eclipse.rcptt.tesla.core.protocol.raw.Element;
-
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.common.notify.NotificationChain;
 
@@ -24,6 +15,11 @@
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
 import org.eclipse.emf.ecore.impl.EObjectImpl;
 
+import org.eclipse.rcptt.tesla.core.protocol.diagram.CreateFigure;
+import org.eclipse.rcptt.tesla.core.protocol.diagram.DiagramPackage;
+
+import org.eclipse.rcptt.tesla.core.protocol.raw.Element;
+
 /**
  * <!-- begin-user-doc -->
  * An implementation of the model object '<em><b>Create Figure</b></em>'.
diff --git a/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/impl/CreateFigureResponseImpl.java b/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/impl/CreateFigureResponseImpl.java
index 6642191..40b371a 100644
--- a/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/impl/CreateFigureResponseImpl.java
+++ b/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/impl/CreateFigureResponseImpl.java
@@ -1,22 +1,11 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
+ * $Id$
+ */
 package org.eclipse.rcptt.tesla.core.protocol.diagram.impl;
 
-import org.eclipse.rcptt.tesla.core.protocol.diagram.CreateFigureResponse;
-import org.eclipse.rcptt.tesla.core.protocol.diagram.DiagramPackage;
-
-import org.eclipse.rcptt.tesla.core.protocol.raw.Element;
-
-import org.eclipse.rcptt.tesla.core.protocol.raw.impl.ResponseImpl;
-
 import java.util.Collection;
 
 import org.eclipse.emf.common.notify.NotificationChain;
@@ -29,6 +18,13 @@
 import org.eclipse.emf.ecore.util.EObjectContainmentEList;
 import org.eclipse.emf.ecore.util.InternalEList;
 
+import org.eclipse.rcptt.tesla.core.protocol.diagram.CreateFigureResponse;
+import org.eclipse.rcptt.tesla.core.protocol.diagram.DiagramPackage;
+
+import org.eclipse.rcptt.tesla.core.protocol.raw.Element;
+
+import org.eclipse.rcptt.tesla.core.protocol.raw.impl.ResponseImpl;
+
 /**
  * <!-- begin-user-doc -->
  * An implementation of the model object '<em><b>Create Figure Response</b></em>'.
diff --git a/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/impl/DiagramFactoryImpl.java b/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/impl/DiagramFactoryImpl.java
index f1d232b..5faa6ad 100644
--- a/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/impl/DiagramFactoryImpl.java
+++ b/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/impl/DiagramFactoryImpl.java
@@ -1,17 +1,11 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
+ * $Id$
+ */
 package org.eclipse.rcptt.tesla.core.protocol.diagram.impl;
 
-import org.eclipse.rcptt.tesla.core.protocol.diagram.*;
-
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.EDataType;
 import org.eclipse.emf.ecore.EObject;
@@ -21,6 +15,8 @@
 
 import org.eclipse.emf.ecore.plugin.EcorePlugin;
 
+import org.eclipse.rcptt.tesla.core.protocol.diagram.*;
+
 /**
  * <!-- begin-user-doc -->
  * An implementation of the model <b>Factory</b>.
diff --git a/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/impl/DiagramPackageImpl.java b/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/impl/DiagramPackageImpl.java
index ddf3b1e..bd9d7db 100644
--- a/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/impl/DiagramPackageImpl.java
+++ b/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/impl/DiagramPackageImpl.java
@@ -1,13 +1,9 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
+ * $Id$
+ */
 package org.eclipse.rcptt.tesla.core.protocol.diagram.impl;
 
 import org.eclipse.emf.ecore.EAttribute;
@@ -15,9 +11,11 @@
 import org.eclipse.emf.ecore.EEnum;
 import org.eclipse.emf.ecore.EPackage;
 import org.eclipse.emf.ecore.EReference;
+
 import org.eclipse.emf.ecore.impl.EPackageImpl;
 
 import org.eclipse.rcptt.tesla.core.protocol.ProtocolPackage;
+
 import org.eclipse.rcptt.tesla.core.protocol.diagram.ActivateDirectEdit;
 import org.eclipse.rcptt.tesla.core.protocol.diagram.AssertFigureExists;
 import org.eclipse.rcptt.tesla.core.protocol.diagram.CancelDirectEdit;
@@ -36,6 +34,7 @@
 import org.eclipse.rcptt.tesla.core.protocol.diagram.MoveFigure;
 import org.eclipse.rcptt.tesla.core.protocol.diagram.ResizeFigure;
 import org.eclipse.rcptt.tesla.core.protocol.diagram.SetFigureSelection;
+
 import org.eclipse.rcptt.tesla.core.protocol.raw.RawPackage;
 
 /**
diff --git a/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/impl/FigureMouseCommandImpl.java b/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/impl/FigureMouseCommandImpl.java
index 7a16c3a..c1d7038 100644
--- a/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/impl/FigureMouseCommandImpl.java
+++ b/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/impl/FigureMouseCommandImpl.java
@@ -1,21 +1,11 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
+ * $Id$
+ */
 package org.eclipse.rcptt.tesla.core.protocol.diagram.impl;
 
-import org.eclipse.rcptt.tesla.core.protocol.diagram.DiagramPackage;
-import org.eclipse.rcptt.tesla.core.protocol.diagram.FigureMouseCommand;
-import org.eclipse.rcptt.tesla.core.protocol.diagram.MouseCommandKind;
-
-import org.eclipse.rcptt.tesla.core.protocol.raw.Element;
-
 import java.util.Collection;
 
 import org.eclipse.emf.common.notify.Notification;
@@ -31,6 +21,12 @@
 
 import org.eclipse.emf.ecore.util.EDataTypeEList;
 
+import org.eclipse.rcptt.tesla.core.protocol.diagram.DiagramPackage;
+import org.eclipse.rcptt.tesla.core.protocol.diagram.FigureMouseCommand;
+import org.eclipse.rcptt.tesla.core.protocol.diagram.MouseCommandKind;
+
+import org.eclipse.rcptt.tesla.core.protocol.raw.Element;
+
 /**
  * <!-- begin-user-doc -->
  * An implementation of the model object '<em><b>Figure Mouse Command</b></em>'.
diff --git a/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/impl/GetFiguresImpl.java b/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/impl/GetFiguresImpl.java
index 3bde3f2..b4481a7 100644
--- a/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/impl/GetFiguresImpl.java
+++ b/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/impl/GetFiguresImpl.java
@@ -1,20 +1,11 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
+ * $Id$
+ */
 package org.eclipse.rcptt.tesla.core.protocol.diagram.impl;
 
-import org.eclipse.rcptt.tesla.core.protocol.diagram.DiagramPackage;
-import org.eclipse.rcptt.tesla.core.protocol.diagram.GetFigures;
-
-import org.eclipse.rcptt.tesla.core.protocol.raw.Element;
-
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.common.notify.NotificationChain;
 
@@ -24,6 +15,11 @@
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
 import org.eclipse.emf.ecore.impl.EObjectImpl;
 
+import org.eclipse.rcptt.tesla.core.protocol.diagram.DiagramPackage;
+import org.eclipse.rcptt.tesla.core.protocol.diagram.GetFigures;
+
+import org.eclipse.rcptt.tesla.core.protocol.raw.Element;
+
 /**
  * <!-- begin-user-doc -->
  * An implementation of the model object '<em><b>Get Figures</b></em>'.
diff --git a/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/impl/GetFiguresResponseImpl.java b/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/impl/GetFiguresResponseImpl.java
index 2e46d6e..b72a0b9 100644
--- a/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/impl/GetFiguresResponseImpl.java
+++ b/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/impl/GetFiguresResponseImpl.java
@@ -1,22 +1,11 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
+ * $Id$
+ */
 package org.eclipse.rcptt.tesla.core.protocol.diagram.impl;
 
-import org.eclipse.rcptt.tesla.core.protocol.diagram.DiagramPackage;
-import org.eclipse.rcptt.tesla.core.protocol.diagram.GetFiguresResponse;
-
-import org.eclipse.rcptt.tesla.core.protocol.raw.Element;
-
-import org.eclipse.rcptt.tesla.core.protocol.raw.impl.ResponseImpl;
-
 import java.util.Collection;
 
 import org.eclipse.emf.common.notify.NotificationChain;
@@ -29,6 +18,13 @@
 import org.eclipse.emf.ecore.util.EObjectContainmentEList;
 import org.eclipse.emf.ecore.util.InternalEList;
 
+import org.eclipse.rcptt.tesla.core.protocol.diagram.DiagramPackage;
+import org.eclipse.rcptt.tesla.core.protocol.diagram.GetFiguresResponse;
+
+import org.eclipse.rcptt.tesla.core.protocol.raw.Element;
+
+import org.eclipse.rcptt.tesla.core.protocol.raw.impl.ResponseImpl;
+
 /**
  * <!-- begin-user-doc -->
  * An implementation of the model object '<em><b>Get Figures Response</b></em>'.
diff --git a/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/impl/MouseCommandImpl.java b/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/impl/MouseCommandImpl.java
index fe7a755..536ad6a 100644
--- a/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/impl/MouseCommandImpl.java
+++ b/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/impl/MouseCommandImpl.java
@@ -1,21 +1,11 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
+ * $Id$
+ */
 package org.eclipse.rcptt.tesla.core.protocol.diagram.impl;
 
-import org.eclipse.rcptt.tesla.core.protocol.diagram.DiagramPackage;
-import org.eclipse.rcptt.tesla.core.protocol.diagram.MouseCommand;
-import org.eclipse.rcptt.tesla.core.protocol.diagram.MouseCommandKind;
-
-import org.eclipse.rcptt.tesla.core.protocol.raw.Element;
-
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.common.notify.NotificationChain;
 
@@ -25,6 +15,12 @@
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
 import org.eclipse.emf.ecore.impl.EObjectImpl;
 
+import org.eclipse.rcptt.tesla.core.protocol.diagram.DiagramPackage;
+import org.eclipse.rcptt.tesla.core.protocol.diagram.MouseCommand;
+import org.eclipse.rcptt.tesla.core.protocol.diagram.MouseCommandKind;
+
+import org.eclipse.rcptt.tesla.core.protocol.raw.Element;
+
 /**
  * <!-- begin-user-doc -->
  * An implementation of the model object '<em><b>Mouse Command</b></em>'.
diff --git a/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/impl/MoveFigureImpl.java b/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/impl/MoveFigureImpl.java
index fe7e849..d6deaf0 100644
--- a/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/impl/MoveFigureImpl.java
+++ b/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/impl/MoveFigureImpl.java
@@ -1,20 +1,11 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
+ * $Id$
+ */
 package org.eclipse.rcptt.tesla.core.protocol.diagram.impl;
 
-import org.eclipse.rcptt.tesla.core.protocol.diagram.DiagramPackage;
-import org.eclipse.rcptt.tesla.core.protocol.diagram.MoveFigure;
-
-import org.eclipse.rcptt.tesla.core.protocol.raw.Element;
-
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.common.notify.NotificationChain;
 
@@ -24,6 +15,11 @@
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
 import org.eclipse.emf.ecore.impl.EObjectImpl;
 
+import org.eclipse.rcptt.tesla.core.protocol.diagram.DiagramPackage;
+import org.eclipse.rcptt.tesla.core.protocol.diagram.MoveFigure;
+
+import org.eclipse.rcptt.tesla.core.protocol.raw.Element;
+
 /**
  * <!-- begin-user-doc -->
  * An implementation of the model object '<em><b>Move Figure</b></em>'.
diff --git a/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/impl/ResizeFigureImpl.java b/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/impl/ResizeFigureImpl.java
index 556d441..dbd20e9 100644
--- a/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/impl/ResizeFigureImpl.java
+++ b/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/impl/ResizeFigureImpl.java
@@ -1,20 +1,11 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
+ * $Id$
+ */
 package org.eclipse.rcptt.tesla.core.protocol.diagram.impl;
 
-import org.eclipse.rcptt.tesla.core.protocol.diagram.DiagramPackage;
-import org.eclipse.rcptt.tesla.core.protocol.diagram.ResizeFigure;
-
-import org.eclipse.rcptt.tesla.core.protocol.raw.Element;
-
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.common.notify.NotificationChain;
 
@@ -24,6 +15,11 @@
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
 import org.eclipse.emf.ecore.impl.EObjectImpl;
 
+import org.eclipse.rcptt.tesla.core.protocol.diagram.DiagramPackage;
+import org.eclipse.rcptt.tesla.core.protocol.diagram.ResizeFigure;
+
+import org.eclipse.rcptt.tesla.core.protocol.raw.Element;
+
 /**
  * <!-- begin-user-doc -->
  * An implementation of the model object '<em><b>Resize Figure</b></em>'.
diff --git a/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/impl/SetFigureSelectionImpl.java b/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/impl/SetFigureSelectionImpl.java
index f625525..59cb0fc 100644
--- a/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/impl/SetFigureSelectionImpl.java
+++ b/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/impl/SetFigureSelectionImpl.java
@@ -1,20 +1,11 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
+ * $Id$
+ */
 package org.eclipse.rcptt.tesla.core.protocol.diagram.impl;
 
-import org.eclipse.rcptt.tesla.core.protocol.diagram.DiagramPackage;
-import org.eclipse.rcptt.tesla.core.protocol.diagram.SetFigureSelection;
-
-import org.eclipse.rcptt.tesla.core.protocol.raw.Element;
-
 import java.util.Collection;
 
 import org.eclipse.emf.common.notify.Notification;
@@ -31,6 +22,11 @@
 import org.eclipse.emf.ecore.util.EObjectContainmentEList;
 import org.eclipse.emf.ecore.util.InternalEList;
 
+import org.eclipse.rcptt.tesla.core.protocol.diagram.DiagramPackage;
+import org.eclipse.rcptt.tesla.core.protocol.diagram.SetFigureSelection;
+
+import org.eclipse.rcptt.tesla.core.protocol.raw.Element;
+
 /**
  * <!-- begin-user-doc -->
  * An implementation of the model object '<em><b>Set Figure Selection</b></em>'.
diff --git a/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/util/DiagramAdapterFactory.java b/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/util/DiagramAdapterFactory.java
index 57409cf..87f6922 100644
--- a/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/util/DiagramAdapterFactory.java
+++ b/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/util/DiagramAdapterFactory.java
@@ -1,22 +1,11 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
+ * $Id$
+ */
 package org.eclipse.rcptt.tesla.core.protocol.diagram.util;
 
-import org.eclipse.rcptt.tesla.core.protocol.ElementCommand;
-
-import org.eclipse.rcptt.tesla.core.protocol.diagram.*;
-
-import org.eclipse.rcptt.tesla.core.protocol.raw.Command;
-import org.eclipse.rcptt.tesla.core.protocol.raw.Response;
-
 import org.eclipse.emf.common.notify.Adapter;
 import org.eclipse.emf.common.notify.Notifier;
 
@@ -24,6 +13,13 @@
 
 import org.eclipse.emf.ecore.EObject;
 
+import org.eclipse.rcptt.tesla.core.protocol.ElementCommand;
+
+import org.eclipse.rcptt.tesla.core.protocol.diagram.*;
+
+import org.eclipse.rcptt.tesla.core.protocol.raw.Command;
+import org.eclipse.rcptt.tesla.core.protocol.raw.Response;
+
 /**
  * <!-- begin-user-doc -->
  * The <b>Adapter Factory</b> for the model.
diff --git a/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/util/DiagramSwitch.java b/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/util/DiagramSwitch.java
index 2586a19..093e079 100644
--- a/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/util/DiagramSwitch.java
+++ b/core/org.eclipse.rcptt.tesla.core/gen-src/org/eclipse/rcptt/tesla/core/protocol/diagram/util/DiagramSwitch.java
@@ -1,15 +1,16 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
+ * $Id$
+ */
 package org.eclipse.rcptt.tesla.core.protocol.diagram.util;
 
+import java.util.List;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+
 import org.eclipse.rcptt.tesla.core.protocol.ElementCommand;
 
 import org.eclipse.rcptt.tesla.core.protocol.diagram.*;
@@ -17,13 +18,6 @@
 import org.eclipse.rcptt.tesla.core.protocol.raw.Command;
 import org.eclipse.rcptt.tesla.core.protocol.raw.Response;
 
-import java.util.List;
-
-import org.eclipse.emf.ecore.EClass;
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emf.ecore.EPackage;
-import org.eclipse.emf.ecore.util.Switch;
-
 /**
  * <!-- begin-user-doc -->
  * The <b>Switch</b> for the model's inheritance hierarchy.
@@ -37,7 +31,7 @@
  * @see org.eclipse.rcptt.tesla.core.protocol.diagram.DiagramPackage
  * @generated
  */
-public class DiagramSwitch<T> extends Switch<T> {
+public class DiagramSwitch<T> {
 	/**
 	 * The cached model package
 	 * <!-- begin-user-doc -->
@@ -59,16 +53,14 @@
 	}
 
 	/**
-	 * Checks whether this is a switch for the given package.
+	 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @parameter ePackage the package in question.
-	 * @return whether this is a switch for the given package.
+	 * @return the first non-null result returned by a <code>caseXXX</code> call.
 	 * @generated
 	 */
-	@Override
-	protected boolean isSwitchFor(EPackage ePackage) {
-		return ePackage == modelPackage;
+	public T doSwitch(EObject theEObject) {
+		return doSwitch(theEObject.eClass(), theEObject);
 	}
 
 	/**
@@ -78,7 +70,26 @@
 	 * @return the first non-null result returned by a <code>caseXXX</code> call.
 	 * @generated
 	 */
-	@Override
+	protected T doSwitch(EClass theEClass, EObject theEObject) {
+		if (theEClass.eContainer() == modelPackage) {
+			return doSwitch(theEClass.getClassifierID(), theEObject);
+		}
+		else {
+			List<EClass> eSuperTypes = theEClass.getESuperTypes();
+			return
+				eSuperTypes.isEmpty() ?
+					defaultCase(theEObject) :
+					doSwitch(eSuperTypes.get(0), theEObject);
+		}
+	}
+
+	/**
+	 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the first non-null result returned by a <code>caseXXX</code> call.
+	 * @generated
+	 */
 	protected T doSwitch(int classifierID, EObject theEObject) {
 		switch (classifierID) {
 			case DiagramPackage.CREATE_FIGURE: {
@@ -483,7 +494,6 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject)
 	 * @generated
 	 */
-	@Override
 	public T defaultCase(EObject object) {
 		return null;
 	}
diff --git a/core/org.eclipse.rcptt.tesla.core/models/diagram.genmodel b/core/org.eclipse.rcptt.tesla.core/models/diagram.genmodel
index 6964506..e585866 100644
--- a/core/org.eclipse.rcptt.tesla.core/models/diagram.genmodel
+++ b/core/org.eclipse.rcptt.tesla.core/models/diagram.genmodel
@@ -3,10 +3,10 @@
     xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
     xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" modelDirectory="/org.eclipse.rcptt.tesla.core/gen-src"
     modelPluginID="org.eclipse.rcptt.tesla.core" modelName="Diagram" importerID="org.eclipse.emf.importer.ecore"
-    complianceLevel="5.0" copyrightFields="false" usedGenPackages="protocol.genmodel#//protocol">
+    complianceLevel="5.0" copyrightFields="false" runtimeVersion="2.5" usedGenPackages="protocol.genmodel#//protocol rawProtocol.genmodel#//raw platform:/plugin/org.eclipse.emf.ecore/model/Ecore.genmodel#//ecore info.genmodel#//info controls.genmodel#//ui">
   <foreignModel>diagram.ecore</foreignModel>
-  <genPackages prefix="Diagram" basePackage="org.eclipse.rcptt.tesla.core.protocol" disposableProviderFactory="true"
-      ecorePackage="diagram.ecore#/">
+  <genPackages prefix="Diagram" basePackage="org.eclipse.rcptt.tesla.core.protocol"
+      disposableProviderFactory="true" ecorePackage="diagram.ecore#/">
     <genEnums typeSafeEnumCompatible="false" ecoreEnum="diagram.ecore#//MouseCommandKind">
       <genEnumLiterals ecoreEnumLiteral="diagram.ecore#//MouseCommandKind/Down"/>
       <genEnumLiterals ecoreEnumLiteral="diagram.ecore#//MouseCommandKind/Up"/>
@@ -15,6 +15,9 @@
       <genEnumLiterals ecoreEnumLiteral="diagram.ecore#//MouseCommandKind/DoubleClick"/>
       <genEnumLiterals ecoreEnumLiteral="diagram.ecore#//MouseCommandKind/NativeDragStarted"/>
       <genEnumLiterals ecoreEnumLiteral="diagram.ecore#//MouseCommandKind/NativeDragFinished"/>
+      <genEnumLiterals ecoreEnumLiteral="diagram.ecore#//MouseCommandKind/Enter"/>
+      <genEnumLiterals ecoreEnumLiteral="diagram.ecore#//MouseCommandKind/Exit"/>
+      <genEnumLiterals ecoreEnumLiteral="diagram.ecore#//MouseCommandKind/Hover"/>
     </genEnums>
     <genClasses ecoreClass="diagram.ecore#//CreateFigure">
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute diagram.ecore#//CreateFigure/x"/>
@@ -36,7 +39,9 @@
     <genClasses ecoreClass="diagram.ecore#//GetFiguresResponse">
       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference diagram.ecore#//GetFiguresResponse/figures"/>
     </genClasses>
-    <genClasses ecoreClass="diagram.ecore#//ActivateDirectEdit"/>
+    <genClasses ecoreClass="diagram.ecore#//ActivateDirectEdit">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute diagram.ecore#//ActivateDirectEdit/partPath"/>
+    </genClasses>
     <genClasses ecoreClass="diagram.ecore#//CancelDirectEdit"/>
     <genClasses ecoreClass="diagram.ecore#//CommitDirectEdit"/>
     <genClasses ecoreClass="diagram.ecore#//CreateConnection">
@@ -56,6 +61,26 @@
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute diagram.ecore#//MouseCommand/y"/>
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute diagram.ecore#//MouseCommand/button"/>
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute diagram.ecore#//MouseCommand/kind"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute diagram.ecore#//MouseCommand/boundsWidth"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute diagram.ecore#//MouseCommand/boundsHeight"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute diagram.ecore#//MouseCommand/stateMask"/>
+    </genClasses>
+    <genClasses ecoreClass="diagram.ecore#//FigureMouseCommand">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute diagram.ecore#//FigureMouseCommand/x"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute diagram.ecore#//FigureMouseCommand/y"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute diagram.ecore#//FigureMouseCommand/button"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute diagram.ecore#//FigureMouseCommand/kind"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute diagram.ecore#//FigureMouseCommand/figurePath"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute diagram.ecore#//FigureMouseCommand/partPath"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute diagram.ecore#//FigureMouseCommand/boundsWidth"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute diagram.ecore#//FigureMouseCommand/boundsHeight"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute diagram.ecore#//FigureMouseCommand/stateMask"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute diagram.ecore#//FigureMouseCommand/figureWidth"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute diagram.ecore#//FigureMouseCommand/figureHeight"/>
+    </genClasses>
+    <genClasses ecoreClass="diagram.ecore#//AssertFigureExists">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute diagram.ecore#//AssertFigureExists/partPath"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute diagram.ecore#//AssertFigureExists/figureID"/>
     </genClasses>
   </genPackages>
 </genmodel:GenModel>
diff --git a/core/pom.xml b/core/pom.xml
index 5a1f0b9..d2cf3c7 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -3,9 +3,10 @@
 	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 	<modelVersion>4.0.0</modelVersion>
 	<parent>
-		<artifactId>rcptt</artifactId>
+		<artifactId>core</artifactId>
 		<groupId>org.eclipse.rcptt</groupId>
 		<version>1.5.1-SNAPSHOT</version>
+		<relativePath>../releng/core/pom.xml</relativePath>
 	</parent>
 	<modules>
 		<!-- Tesla plugins -->
diff --git a/ecl/examples/pom.xml b/ecl/examples/pom.xml
index 380fd2b..052c849 100644
--- a/ecl/examples/pom.xml
+++ b/ecl/examples/pom.xml
@@ -7,8 +7,9 @@
   <packaging>pom</packaging>
   <parent>
     <artifactId>ecl</artifactId>
-    <groupId>org.eclipse.rcptt.ecl</groupId>
+    <groupId>org.eclipse.rcptt</groupId>
     <version>1.5.1-SNAPSHOT</version>
+    <relativePath>../../releng/ecl/pom.xml</relativePath>
   </parent>
   <modules>
     <module>org.eclipse.rcptt.ecl.example.view</module>
diff --git a/ecl/features/pom.xml b/ecl/features/pom.xml
index ec0e718..14912b3 100644
--- a/ecl/features/pom.xml
+++ b/ecl/features/pom.xml
@@ -6,8 +6,9 @@
   <packaging>pom</packaging>
   <parent>
     <artifactId>ecl</artifactId>
-    <groupId>org.eclipse.rcptt.ecl</groupId>
+    <groupId>org.eclipse.rcptt</groupId>
     <version>1.5.1-SNAPSHOT</version>
+    <relativePath>../../releng/ecl/pom.xml</relativePath>
   </parent>
   <modules>
     <module>org.eclipse.rcptt.ecl.core-feature</module>
diff --git a/ecl/plugins/org.eclipse.rcptt.ecl.filesystem/gen-src/org/eclipse/rcptt/ecl/filesystem/CopyFile.java b/ecl/plugins/org.eclipse.rcptt.ecl.filesystem/gen-src/org/eclipse/rcptt/ecl/filesystem/CopyFile.java
index 76869a6..e7b051c 100644
--- a/ecl/plugins/org.eclipse.rcptt.ecl.filesystem/gen-src/org/eclipse/rcptt/ecl/filesystem/CopyFile.java
+++ b/ecl/plugins/org.eclipse.rcptt.ecl.filesystem/gen-src/org/eclipse/rcptt/ecl/filesystem/CopyFile.java
@@ -1,13 +1,9 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
+ * $Id$
+ */
 package org.eclipse.rcptt.ecl.filesystem;
 
 import org.eclipse.rcptt.ecl.core.Command;
diff --git a/ecl/plugins/org.eclipse.rcptt.ecl.filesystem/gen-src/org/eclipse/rcptt/ecl/filesystem/File.java b/ecl/plugins/org.eclipse.rcptt.ecl.filesystem/gen-src/org/eclipse/rcptt/ecl/filesystem/File.java
index 489ea27..539e211 100644
--- a/ecl/plugins/org.eclipse.rcptt.ecl.filesystem/gen-src/org/eclipse/rcptt/ecl/filesystem/File.java
+++ b/ecl/plugins/org.eclipse.rcptt.ecl.filesystem/gen-src/org/eclipse/rcptt/ecl/filesystem/File.java
@@ -1,14 +1,8 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
 /**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
  */
 package org.eclipse.rcptt.ecl.filesystem;
 
diff --git a/ecl/plugins/org.eclipse.rcptt.ecl.filesystem/gen-src/org/eclipse/rcptt/ecl/filesystem/FilesystemFactory.java b/ecl/plugins/org.eclipse.rcptt.ecl.filesystem/gen-src/org/eclipse/rcptt/ecl/filesystem/FilesystemFactory.java
index fff33dc..986052f 100644
--- a/ecl/plugins/org.eclipse.rcptt.ecl.filesystem/gen-src/org/eclipse/rcptt/ecl/filesystem/FilesystemFactory.java
+++ b/ecl/plugins/org.eclipse.rcptt.ecl.filesystem/gen-src/org/eclipse/rcptt/ecl/filesystem/FilesystemFactory.java
@@ -1,13 +1,9 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
+ * $Id$
+ */
 package org.eclipse.rcptt.ecl.filesystem;
 
 import org.eclipse.emf.ecore.EFactory;
diff --git a/ecl/plugins/org.eclipse.rcptt.ecl.filesystem/gen-src/org/eclipse/rcptt/ecl/filesystem/FilesystemPackage.java b/ecl/plugins/org.eclipse.rcptt.ecl.filesystem/gen-src/org/eclipse/rcptt/ecl/filesystem/FilesystemPackage.java
index 54c9759..efc7c99 100644
--- a/ecl/plugins/org.eclipse.rcptt.ecl.filesystem/gen-src/org/eclipse/rcptt/ecl/filesystem/FilesystemPackage.java
+++ b/ecl/plugins/org.eclipse.rcptt.ecl.filesystem/gen-src/org/eclipse/rcptt/ecl/filesystem/FilesystemPackage.java
@@ -1,19 +1,15 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
+ * $Id$
+ */
 package org.eclipse.rcptt.ecl.filesystem;
 
-
 import org.eclipse.emf.ecore.EAttribute;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.EPackage;
+
 import org.eclipse.rcptt.ecl.core.CorePackage;
 
 /**
@@ -128,7 +124,6 @@
 	 */
 	int COPY_FILE_FEATURE_COUNT = CorePackage.COMMAND_FEATURE_COUNT + 3;
 
-
 	/**
 	 * The meta object id for the '{@link org.eclipse.rcptt.ecl.filesystem.impl.UriFromPathImpl <em>Uri From Path</em>}' class.
 	 * <!-- begin-user-doc -->
diff --git a/ecl/plugins/org.eclipse.rcptt.ecl.filesystem/gen-src/org/eclipse/rcptt/ecl/filesystem/GetFile.java b/ecl/plugins/org.eclipse.rcptt.ecl.filesystem/gen-src/org/eclipse/rcptt/ecl/filesystem/GetFile.java
index 326aed4..0cf1ac3 100644
--- a/ecl/plugins/org.eclipse.rcptt.ecl.filesystem/gen-src/org/eclipse/rcptt/ecl/filesystem/GetFile.java
+++ b/ecl/plugins/org.eclipse.rcptt.ecl.filesystem/gen-src/org/eclipse/rcptt/ecl/filesystem/GetFile.java
@@ -1,14 +1,8 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
 /**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
  */
 package org.eclipse.rcptt.ecl.filesystem;
 
diff --git a/ecl/plugins/org.eclipse.rcptt.ecl.filesystem/gen-src/org/eclipse/rcptt/ecl/filesystem/UriFromPath.java b/ecl/plugins/org.eclipse.rcptt.ecl.filesystem/gen-src/org/eclipse/rcptt/ecl/filesystem/UriFromPath.java
index b5c4622..beb9492 100644
--- a/ecl/plugins/org.eclipse.rcptt.ecl.filesystem/gen-src/org/eclipse/rcptt/ecl/filesystem/UriFromPath.java
+++ b/ecl/plugins/org.eclipse.rcptt.ecl.filesystem/gen-src/org/eclipse/rcptt/ecl/filesystem/UriFromPath.java
@@ -1,14 +1,8 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
 /**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
  */
 package org.eclipse.rcptt.ecl.filesystem;
 
diff --git a/ecl/plugins/org.eclipse.rcptt.ecl.filesystem/gen-src/org/eclipse/rcptt/ecl/filesystem/impl/CopyFileImpl.java b/ecl/plugins/org.eclipse.rcptt.ecl.filesystem/gen-src/org/eclipse/rcptt/ecl/filesystem/impl/CopyFileImpl.java
index 83e844b..cdf04cf 100644
--- a/ecl/plugins/org.eclipse.rcptt.ecl.filesystem/gen-src/org/eclipse/rcptt/ecl/filesystem/impl/CopyFileImpl.java
+++ b/ecl/plugins/org.eclipse.rcptt.ecl.filesystem/gen-src/org/eclipse/rcptt/ecl/filesystem/impl/CopyFileImpl.java
@@ -1,23 +1,19 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
+ * $Id$
+ */
 package org.eclipse.rcptt.ecl.filesystem.impl;
 
-
-
 import org.eclipse.emf.common.notify.Notification;
 
 import org.eclipse.emf.ecore.EClass;
 
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
 import org.eclipse.rcptt.ecl.core.impl.CommandImpl;
+
 import org.eclipse.rcptt.ecl.filesystem.CopyFile;
 import org.eclipse.rcptt.ecl.filesystem.FilesystemPackage;
 
diff --git a/ecl/plugins/org.eclipse.rcptt.ecl.filesystem/gen-src/org/eclipse/rcptt/ecl/filesystem/impl/FileImpl.java b/ecl/plugins/org.eclipse.rcptt.ecl.filesystem/gen-src/org/eclipse/rcptt/ecl/filesystem/impl/FileImpl.java
index 0fe3eaf..bf576f9 100644
--- a/ecl/plugins/org.eclipse.rcptt.ecl.filesystem/gen-src/org/eclipse/rcptt/ecl/filesystem/impl/FileImpl.java
+++ b/ecl/plugins/org.eclipse.rcptt.ecl.filesystem/gen-src/org/eclipse/rcptt/ecl/filesystem/impl/FileImpl.java
@@ -1,14 +1,8 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
 /**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
  */
 package org.eclipse.rcptt.ecl.filesystem.impl;
 
diff --git a/ecl/plugins/org.eclipse.rcptt.ecl.filesystem/gen-src/org/eclipse/rcptt/ecl/filesystem/impl/FilesystemFactoryImpl.java b/ecl/plugins/org.eclipse.rcptt.ecl.filesystem/gen-src/org/eclipse/rcptt/ecl/filesystem/impl/FilesystemFactoryImpl.java
index ce6d534..5bcb516 100644
--- a/ecl/plugins/org.eclipse.rcptt.ecl.filesystem/gen-src/org/eclipse/rcptt/ecl/filesystem/impl/FilesystemFactoryImpl.java
+++ b/ecl/plugins/org.eclipse.rcptt.ecl.filesystem/gen-src/org/eclipse/rcptt/ecl/filesystem/impl/FilesystemFactoryImpl.java
@@ -1,16 +1,11 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
+ * $Id$
+ */
 package org.eclipse.rcptt.ecl.filesystem.impl;
 
-
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.emf.ecore.EPackage;
@@ -18,6 +13,7 @@
 import org.eclipse.emf.ecore.impl.EFactoryImpl;
 
 import org.eclipse.emf.ecore.plugin.EcorePlugin;
+
 import org.eclipse.rcptt.ecl.filesystem.*;
 
 /**
@@ -35,7 +31,7 @@
 	 */
 	public static FilesystemFactory init() {
 		try {
-			FilesystemFactory theFilesystemFactory = (FilesystemFactory)EPackage.Registry.INSTANCE.getEFactory(FilesystemPackage.eNS_URI);
+			FilesystemFactory theFilesystemFactory = (FilesystemFactory)EPackage.Registry.INSTANCE.getEFactory("http://www.eclipse.org/ecl/filesystem.ecore"); 
 			if (theFilesystemFactory != null) {
 				return theFilesystemFactory;
 			}
diff --git a/ecl/plugins/org.eclipse.rcptt.ecl.filesystem/gen-src/org/eclipse/rcptt/ecl/filesystem/impl/FilesystemPackageImpl.java b/ecl/plugins/org.eclipse.rcptt.ecl.filesystem/gen-src/org/eclipse/rcptt/ecl/filesystem/impl/FilesystemPackageImpl.java
index d41a8d0..386258d 100644
--- a/ecl/plugins/org.eclipse.rcptt.ecl.filesystem/gen-src/org/eclipse/rcptt/ecl/filesystem/impl/FilesystemPackageImpl.java
+++ b/ecl/plugins/org.eclipse.rcptt.ecl.filesystem/gen-src/org/eclipse/rcptt/ecl/filesystem/impl/FilesystemPackageImpl.java
@@ -1,24 +1,20 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
+ * $Id$
+ */
 package org.eclipse.rcptt.ecl.filesystem.impl;
 
-
-
 import org.eclipse.emf.ecore.EAttribute;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.EPackage;
 import org.eclipse.emf.ecore.EcorePackage;
 
 import org.eclipse.emf.ecore.impl.EPackageImpl;
+
 import org.eclipse.rcptt.ecl.core.CorePackage;
+
 import org.eclipse.rcptt.ecl.filesystem.CopyFile;
 import org.eclipse.rcptt.ecl.filesystem.File;
 import org.eclipse.rcptt.ecl.filesystem.FilesystemFactory;
@@ -46,12 +42,14 @@
 	 * @generated
 	 */
 	private EClass uriFromPathEClass = null;
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
 	private EClass getFileEClass = null;
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
diff --git a/ecl/plugins/org.eclipse.rcptt.ecl.filesystem/gen-src/org/eclipse/rcptt/ecl/filesystem/impl/GetFileImpl.java b/ecl/plugins/org.eclipse.rcptt.ecl.filesystem/gen-src/org/eclipse/rcptt/ecl/filesystem/impl/GetFileImpl.java
index 19938de..b209aa6 100644
--- a/ecl/plugins/org.eclipse.rcptt.ecl.filesystem/gen-src/org/eclipse/rcptt/ecl/filesystem/impl/GetFileImpl.java
+++ b/ecl/plugins/org.eclipse.rcptt.ecl.filesystem/gen-src/org/eclipse/rcptt/ecl/filesystem/impl/GetFileImpl.java
@@ -1,14 +1,8 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
 /**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
  */
 package org.eclipse.rcptt.ecl.filesystem.impl;
 
diff --git a/ecl/plugins/org.eclipse.rcptt.ecl.filesystem/gen-src/org/eclipse/rcptt/ecl/filesystem/impl/UriFromPathImpl.java b/ecl/plugins/org.eclipse.rcptt.ecl.filesystem/gen-src/org/eclipse/rcptt/ecl/filesystem/impl/UriFromPathImpl.java
index d79cd0d..a614c9e 100644
--- a/ecl/plugins/org.eclipse.rcptt.ecl.filesystem/gen-src/org/eclipse/rcptt/ecl/filesystem/impl/UriFromPathImpl.java
+++ b/ecl/plugins/org.eclipse.rcptt.ecl.filesystem/gen-src/org/eclipse/rcptt/ecl/filesystem/impl/UriFromPathImpl.java
@@ -1,14 +1,8 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
 /**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
  */
 package org.eclipse.rcptt.ecl.filesystem.impl;
 
diff --git a/ecl/plugins/org.eclipse.rcptt.ecl.filesystem/gen-src/org/eclipse/rcptt/ecl/filesystem/util/FilesystemAdapterFactory.java b/ecl/plugins/org.eclipse.rcptt.ecl.filesystem/gen-src/org/eclipse/rcptt/ecl/filesystem/util/FilesystemAdapterFactory.java
index af862b3..197ca99 100644
--- a/ecl/plugins/org.eclipse.rcptt.ecl.filesystem/gen-src/org/eclipse/rcptt/ecl/filesystem/util/FilesystemAdapterFactory.java
+++ b/ecl/plugins/org.eclipse.rcptt.ecl.filesystem/gen-src/org/eclipse/rcptt/ecl/filesystem/util/FilesystemAdapterFactory.java
@@ -1,24 +1,20 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
+ * $Id$
+ */
 package org.eclipse.rcptt.ecl.filesystem.util;
 
-
-
 import org.eclipse.emf.common.notify.Adapter;
 import org.eclipse.emf.common.notify.Notifier;
 
 import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
 
 import org.eclipse.emf.ecore.EObject;
+
 import org.eclipse.rcptt.ecl.core.Command;
+
 import org.eclipse.rcptt.ecl.filesystem.*;
 
 /**
diff --git a/ecl/plugins/org.eclipse.rcptt.ecl.filesystem/gen-src/org/eclipse/rcptt/ecl/filesystem/util/FilesystemSwitch.java b/ecl/plugins/org.eclipse.rcptt.ecl.filesystem/gen-src/org/eclipse/rcptt/ecl/filesystem/util/FilesystemSwitch.java
index ab368e7..db16cbd 100644
--- a/ecl/plugins/org.eclipse.rcptt.ecl.filesystem/gen-src/org/eclipse/rcptt/ecl/filesystem/util/FilesystemSwitch.java
+++ b/ecl/plugins/org.eclipse.rcptt.ecl.filesystem/gen-src/org/eclipse/rcptt/ecl/filesystem/util/FilesystemSwitch.java
@@ -1,22 +1,18 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
+ * $Id$
+ */
 package org.eclipse.rcptt.ecl.filesystem.util;
 
+import java.util.List;
 
-
+import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emf.ecore.EPackage;
 
-import org.eclipse.emf.ecore.util.Switch;
 import org.eclipse.rcptt.ecl.core.Command;
+
 import org.eclipse.rcptt.ecl.filesystem.*;
 
 /**
@@ -32,7 +28,7 @@
  * @see org.eclipse.rcptt.ecl.filesystem.FilesystemPackage
  * @generated
  */
-public class FilesystemSwitch<T> extends Switch<T> {
+public class FilesystemSwitch<T> {
 	/**
 	 * The cached model package
 	 * <!-- begin-user-doc -->
@@ -54,16 +50,14 @@
 	}
 
 	/**
-	 * Checks whether this is a switch for the given package.
+	 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @parameter ePackage the package in question.
-	 * @return whether this is a switch for the given package.
+	 * @return the first non-null result returned by a <code>caseXXX</code> call.
 	 * @generated
 	 */
-	@Override
-	protected boolean isSwitchFor(EPackage ePackage) {
-		return ePackage == modelPackage;
+	public T doSwitch(EObject theEObject) {
+		return doSwitch(theEObject.eClass(), theEObject);
 	}
 
 	/**
@@ -73,7 +67,26 @@
 	 * @return the first non-null result returned by a <code>caseXXX</code> call.
 	 * @generated
 	 */
-	@Override
+	protected T doSwitch(EClass theEClass, EObject theEObject) {
+		if (theEClass.eContainer() == modelPackage) {
+			return doSwitch(theEClass.getClassifierID(), theEObject);
+		}
+		else {
+			List<EClass> eSuperTypes = theEClass.getESuperTypes();
+			return
+				eSuperTypes.isEmpty() ?
+					defaultCase(theEObject) :
+					doSwitch(eSuperTypes.get(0), theEObject);
+		}
+	}
+
+	/**
+	 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the first non-null result returned by a <code>caseXXX</code> call.
+	 * @generated
+	 */
 	protected T doSwitch(int classifierID, EObject theEObject) {
 		switch (classifierID) {
 			case FilesystemPackage.COPY_FILE: {
@@ -193,7 +206,6 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject)
 	 * @generated
 	 */
-	@Override
 	public T defaultCase(EObject object) {
 		return null;
 	}
diff --git a/ecl/plugins/org.eclipse.rcptt.ecl.filesystem/model/filesystem.genmodel b/ecl/plugins/org.eclipse.rcptt.ecl.filesystem/model/filesystem.genmodel
index 27270d0..312fd07 100644
--- a/ecl/plugins/org.eclipse.rcptt.ecl.filesystem/model/filesystem.genmodel
+++ b/ecl/plugins/org.eclipse.rcptt.ecl.filesystem/model/filesystem.genmodel
@@ -1,18 +1,27 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<genmodel:GenModel xmi:version="2.0"
-    xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
-    xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" modelDirectory="/org.eclipse.rcptt.ecl.filesystem/gen-src"
-    modelPluginID="org.eclipse.rcptt.ecl.filesystem" modelName="Filesystem" editPluginClass="org.eclipse.rcptt.ecl.filesystem.provider.FilesystemEditPlugin"
-    editorPluginClass="org.eclipse.rcptt.ecl.filesystem.presentation.FilesystemEditorPlugin"
-    testSuiteClass="org.eclipse.rcptt.ecl.filesystem.tests.FilesystemAllTests" importerID="org.eclipse.emf.importer.ecore"
-    complianceLevel="6.0" copyrightFields="false" usedGenPackages="../../org.eclipse.rcptt.ecl.core/model/ecl.genmodel#//core platform:/plugin/org.eclipse.emf.ecore/model/Ecore.genmodel#//ecore">
-  <foreignModel>filesystem.ecore</foreignModel>
-  <genPackages prefix="Filesystem" basePackage="org.eclipse.rcptt.ecl" disposableProviderFactory="true"
-      ecorePackage="filesystem.ecore#/">
-    <genClasses ecoreClass="filesystem.ecore#//CopyFile">
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute filesystem.ecore#//CopyFile/source"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute filesystem.ecore#//CopyFile/destination"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute filesystem.ecore#//CopyFile/name"/>
-    </genClasses>
-  </genPackages>
-</genmodel:GenModel>
+<?xml version="1.0" encoding="UTF-8"?>
+<genmodel:GenModel xmi:version="2.0"
+    xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
+    xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" modelDirectory="/org.eclipse.rcptt.ecl.filesystem/gen-src"
+    modelPluginID="org.eclipse.rcptt.ecl.filesystem" modelName="Filesystem" editPluginClass="org.eclipse.rcptt.ecl.filesystem.provider.FilesystemEditPlugin"
+    editorPluginClass="org.eclipse.rcptt.ecl.filesystem.presentation.FilesystemEditorPlugin"
+    testSuiteClass="org.eclipse.rcptt.ecl.filesystem.tests.FilesystemAllTests" importerID="org.eclipse.emf.importer.ecore"
+    complianceLevel="6.0" copyrightFields="false" runtimeVersion="2.5" usedGenPackages="../../org.eclipse.rcptt.ecl.core/model/ecl.genmodel#//core platform:/plugin/org.eclipse.emf.ecore/model/Ecore.genmodel#//ecore">
+  <foreignModel>filesystem.ecore</foreignModel>
+  <genPackages prefix="Filesystem" basePackage="org.eclipse.rcptt.ecl" disposableProviderFactory="true"
+      ecorePackage="filesystem.ecore#/">
+    <genClasses ecoreClass="filesystem.ecore#//CopyFile">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute filesystem.ecore#//CopyFile/source"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute filesystem.ecore#//CopyFile/destination"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute filesystem.ecore#//CopyFile/name"/>
+    </genClasses>
+    <genClasses ecoreClass="filesystem.ecore#//UriFromPath">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute filesystem.ecore#//UriFromPath/path"/>
+    </genClasses>
+    <genClasses ecoreClass="filesystem.ecore#//GetFile">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute filesystem.ecore#//GetFile/uri"/>
+    </genClasses>
+    <genClasses ecoreClass="filesystem.ecore#//File">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute filesystem.ecore#//File/uri"/>
+    </genClasses>
+  </genPackages>
+</genmodel:GenModel>
diff --git a/ecl/plugins/org.eclipse.rcptt.ecl.perf/gen-src/org/eclipse/rcptt/ecl/perf/ConstrainMax.java b/ecl/plugins/org.eclipse.rcptt.ecl.perf/gen-src/org/eclipse/rcptt/ecl/perf/ConstrainMax.java
index 213f300..25170ba 100644
--- a/ecl/plugins/org.eclipse.rcptt.ecl.perf/gen-src/org/eclipse/rcptt/ecl/perf/ConstrainMax.java
+++ b/ecl/plugins/org.eclipse.rcptt.ecl.perf/gen-src/org/eclipse/rcptt/ecl/perf/ConstrainMax.java
@@ -1,17 +1,13 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
+ * $Id$
+ */
 package org.eclipse.rcptt.ecl.perf;
 
-
 import org.eclipse.emf.ecore.EObject;
+
 import org.eclipse.rcptt.ecl.core.Command;
 
 /**
diff --git a/ecl/plugins/org.eclipse.rcptt.ecl.perf/gen-src/org/eclipse/rcptt/ecl/perf/MeasureTime.java b/ecl/plugins/org.eclipse.rcptt.ecl.perf/gen-src/org/eclipse/rcptt/ecl/perf/MeasureTime.java
index bb06521..5a91edf 100644
--- a/ecl/plugins/org.eclipse.rcptt.ecl.perf/gen-src/org/eclipse/rcptt/ecl/perf/MeasureTime.java
+++ b/ecl/plugins/org.eclipse.rcptt.ecl.perf/gen-src/org/eclipse/rcptt/ecl/perf/MeasureTime.java
@@ -1,13 +1,9 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
+ * $Id$
+ */
 package org.eclipse.rcptt.ecl.perf;
 
 import org.eclipse.rcptt.ecl.core.Command;
diff --git a/ecl/plugins/org.eclipse.rcptt.ecl.perf/gen-src/org/eclipse/rcptt/ecl/perf/PerfCounter.java b/ecl/plugins/org.eclipse.rcptt.ecl.perf/gen-src/org/eclipse/rcptt/ecl/perf/PerfCounter.java
index e3a4a29..3ea6ebe 100644
--- a/ecl/plugins/org.eclipse.rcptt.ecl.perf/gen-src/org/eclipse/rcptt/ecl/perf/PerfCounter.java
+++ b/ecl/plugins/org.eclipse.rcptt.ecl.perf/gen-src/org/eclipse/rcptt/ecl/perf/PerfCounter.java
@@ -1,13 +1,9 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
+ * $Id$
+ */
 package org.eclipse.rcptt.ecl.perf;
 
 import org.eclipse.emf.ecore.EObject;
diff --git a/ecl/plugins/org.eclipse.rcptt.ecl.perf/gen-src/org/eclipse/rcptt/ecl/perf/PerfFactory.java b/ecl/plugins/org.eclipse.rcptt.ecl.perf/gen-src/org/eclipse/rcptt/ecl/perf/PerfFactory.java
index 1a34245..95809e9 100644
--- a/ecl/plugins/org.eclipse.rcptt.ecl.perf/gen-src/org/eclipse/rcptt/ecl/perf/PerfFactory.java
+++ b/ecl/plugins/org.eclipse.rcptt.ecl.perf/gen-src/org/eclipse/rcptt/ecl/perf/PerfFactory.java
@@ -1,13 +1,9 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
+ * $Id$
+ */
 package org.eclipse.rcptt.ecl.perf;
 
 import org.eclipse.emf.ecore.EFactory;
diff --git a/ecl/plugins/org.eclipse.rcptt.ecl.perf/gen-src/org/eclipse/rcptt/ecl/perf/PerfPackage.java b/ecl/plugins/org.eclipse.rcptt.ecl.perf/gen-src/org/eclipse/rcptt/ecl/perf/PerfPackage.java
index 9d5e7e4..e6acf08 100644
--- a/ecl/plugins/org.eclipse.rcptt.ecl.perf/gen-src/org/eclipse/rcptt/ecl/perf/PerfPackage.java
+++ b/ecl/plugins/org.eclipse.rcptt.ecl.perf/gen-src/org/eclipse/rcptt/ecl/perf/PerfPackage.java
@@ -1,20 +1,16 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
+ * $Id$
+ */
 package org.eclipse.rcptt.ecl.perf;
 
-
 import org.eclipse.emf.ecore.EAttribute;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.EPackage;
 import org.eclipse.emf.ecore.EReference;
+
 import org.eclipse.rcptt.ecl.core.CorePackage;
 
 /**
diff --git a/ecl/plugins/org.eclipse.rcptt.ecl.perf/gen-src/org/eclipse/rcptt/ecl/perf/StartTimeMeasure.java b/ecl/plugins/org.eclipse.rcptt.ecl.perf/gen-src/org/eclipse/rcptt/ecl/perf/StartTimeMeasure.java
index 3173787..3fccdaf 100644
--- a/ecl/plugins/org.eclipse.rcptt.ecl.perf/gen-src/org/eclipse/rcptt/ecl/perf/StartTimeMeasure.java
+++ b/ecl/plugins/org.eclipse.rcptt.ecl.perf/gen-src/org/eclipse/rcptt/ecl/perf/StartTimeMeasure.java
@@ -1,13 +1,9 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
+ * $Id$
+ */
 package org.eclipse.rcptt.ecl.perf;
 
 import org.eclipse.rcptt.ecl.core.Command;
diff --git a/ecl/plugins/org.eclipse.rcptt.ecl.perf/gen-src/org/eclipse/rcptt/ecl/perf/StopTimeMeasure.java b/ecl/plugins/org.eclipse.rcptt.ecl.perf/gen-src/org/eclipse/rcptt/ecl/perf/StopTimeMeasure.java
index da78846..dfb6a54 100644
--- a/ecl/plugins/org.eclipse.rcptt.ecl.perf/gen-src/org/eclipse/rcptt/ecl/perf/StopTimeMeasure.java
+++ b/ecl/plugins/org.eclipse.rcptt.ecl.perf/gen-src/org/eclipse/rcptt/ecl/perf/StopTimeMeasure.java
@@ -1,13 +1,9 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
+ * $Id$
+ */
 package org.eclipse.rcptt.ecl.perf;
 
 import org.eclipse.rcptt.ecl.core.Command;
diff --git a/ecl/plugins/org.eclipse.rcptt.ecl.perf/gen-src/org/eclipse/rcptt/ecl/perf/impl/ConstrainMaxImpl.java b/ecl/plugins/org.eclipse.rcptt.ecl.perf/gen-src/org/eclipse/rcptt/ecl/perf/impl/ConstrainMaxImpl.java
index 49fef2e..f79f455 100644
--- a/ecl/plugins/org.eclipse.rcptt.ecl.perf/gen-src/org/eclipse/rcptt/ecl/perf/impl/ConstrainMaxImpl.java
+++ b/ecl/plugins/org.eclipse.rcptt.ecl.perf/gen-src/org/eclipse/rcptt/ecl/perf/impl/ConstrainMaxImpl.java
@@ -1,17 +1,11 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
+ * $Id$
+ */
 package org.eclipse.rcptt.ecl.perf.impl;
 
-
-
 import org.eclipse.emf.common.notify.Notification;
 
 import org.eclipse.emf.ecore.EClass;
@@ -19,7 +13,9 @@
 import org.eclipse.emf.ecore.InternalEObject;
 
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
 import org.eclipse.rcptt.ecl.core.impl.CommandImpl;
+
 import org.eclipse.rcptt.ecl.perf.ConstrainMax;
 import org.eclipse.rcptt.ecl.perf.PerfPackage;
 
diff --git a/ecl/plugins/org.eclipse.rcptt.ecl.perf/gen-src/org/eclipse/rcptt/ecl/perf/impl/MeasureTimeImpl.java b/ecl/plugins/org.eclipse.rcptt.ecl.perf/gen-src/org/eclipse/rcptt/ecl/perf/impl/MeasureTimeImpl.java
index 15a5d78..db7b5bb 100644
--- a/ecl/plugins/org.eclipse.rcptt.ecl.perf/gen-src/org/eclipse/rcptt/ecl/perf/impl/MeasureTimeImpl.java
+++ b/ecl/plugins/org.eclipse.rcptt.ecl.perf/gen-src/org/eclipse/rcptt/ecl/perf/impl/MeasureTimeImpl.java
@@ -1,18 +1,11 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
+ * $Id$
+ */
 package org.eclipse.rcptt.ecl.perf.impl;
 
-
-
-
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.common.notify.NotificationChain;
 
@@ -20,8 +13,11 @@
 import org.eclipse.emf.ecore.InternalEObject;
 
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
 import org.eclipse.rcptt.ecl.core.Command;
+
 import org.eclipse.rcptt.ecl.core.impl.CommandImpl;
+
 import org.eclipse.rcptt.ecl.perf.MeasureTime;
 import org.eclipse.rcptt.ecl.perf.PerfPackage;
 
diff --git a/ecl/plugins/org.eclipse.rcptt.ecl.perf/gen-src/org/eclipse/rcptt/ecl/perf/impl/PerfCounterImpl.java b/ecl/plugins/org.eclipse.rcptt.ecl.perf/gen-src/org/eclipse/rcptt/ecl/perf/impl/PerfCounterImpl.java
index cca8968..fb2a46d 100644
--- a/ecl/plugins/org.eclipse.rcptt.ecl.perf/gen-src/org/eclipse/rcptt/ecl/perf/impl/PerfCounterImpl.java
+++ b/ecl/plugins/org.eclipse.rcptt.ecl.perf/gen-src/org/eclipse/rcptt/ecl/perf/impl/PerfCounterImpl.java
@@ -1,22 +1,18 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
+ * $Id$
+ */
 package org.eclipse.rcptt.ecl.perf.impl;
 
-
 import org.eclipse.emf.common.notify.Notification;
 
 import org.eclipse.emf.ecore.EClass;
 
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
 import org.eclipse.emf.ecore.impl.EObjectImpl;
+
 import org.eclipse.rcptt.ecl.perf.PerfCounter;
 import org.eclipse.rcptt.ecl.perf.PerfPackage;
 
diff --git a/ecl/plugins/org.eclipse.rcptt.ecl.perf/gen-src/org/eclipse/rcptt/ecl/perf/impl/PerfFactoryImpl.java b/ecl/plugins/org.eclipse.rcptt.ecl.perf/gen-src/org/eclipse/rcptt/ecl/perf/impl/PerfFactoryImpl.java
index 996e0ab..887b9ff 100644
--- a/ecl/plugins/org.eclipse.rcptt.ecl.perf/gen-src/org/eclipse/rcptt/ecl/perf/impl/PerfFactoryImpl.java
+++ b/ecl/plugins/org.eclipse.rcptt.ecl.perf/gen-src/org/eclipse/rcptt/ecl/perf/impl/PerfFactoryImpl.java
@@ -1,16 +1,11 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
+ * $Id$
+ */
 package org.eclipse.rcptt.ecl.perf.impl;
 
-
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.emf.ecore.EPackage;
@@ -18,6 +13,7 @@
 import org.eclipse.emf.ecore.impl.EFactoryImpl;
 
 import org.eclipse.emf.ecore.plugin.EcorePlugin;
+
 import org.eclipse.rcptt.ecl.perf.*;
 
 /**
diff --git a/ecl/plugins/org.eclipse.rcptt.ecl.perf/gen-src/org/eclipse/rcptt/ecl/perf/impl/PerfPackageImpl.java b/ecl/plugins/org.eclipse.rcptt.ecl.perf/gen-src/org/eclipse/rcptt/ecl/perf/impl/PerfPackageImpl.java
index 3f6fb77..09070ec 100644
--- a/ecl/plugins/org.eclipse.rcptt.ecl.perf/gen-src/org/eclipse/rcptt/ecl/perf/impl/PerfPackageImpl.java
+++ b/ecl/plugins/org.eclipse.rcptt.ecl.perf/gen-src/org/eclipse/rcptt/ecl/perf/impl/PerfPackageImpl.java
@@ -1,17 +1,11 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
+ * $Id$
+ */
 package org.eclipse.rcptt.ecl.perf.impl;
 
-
-
 import org.eclipse.emf.ecore.EAttribute;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.EPackage;
@@ -19,7 +13,9 @@
 import org.eclipse.emf.ecore.EcorePackage;
 
 import org.eclipse.emf.ecore.impl.EPackageImpl;
+
 import org.eclipse.rcptt.ecl.core.CorePackage;
+
 import org.eclipse.rcptt.ecl.perf.ConstrainMax;
 import org.eclipse.rcptt.ecl.perf.MeasureTime;
 import org.eclipse.rcptt.ecl.perf.PerfCounter;
diff --git a/ecl/plugins/org.eclipse.rcptt.ecl.perf/gen-src/org/eclipse/rcptt/ecl/perf/impl/StartTimeMeasureImpl.java b/ecl/plugins/org.eclipse.rcptt.ecl.perf/gen-src/org/eclipse/rcptt/ecl/perf/impl/StartTimeMeasureImpl.java
index f1bb763..3bec25a 100644
--- a/ecl/plugins/org.eclipse.rcptt.ecl.perf/gen-src/org/eclipse/rcptt/ecl/perf/impl/StartTimeMeasureImpl.java
+++ b/ecl/plugins/org.eclipse.rcptt.ecl.perf/gen-src/org/eclipse/rcptt/ecl/perf/impl/StartTimeMeasureImpl.java
@@ -1,23 +1,19 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
+ * $Id$
+ */
 package org.eclipse.rcptt.ecl.perf.impl;
 
-
-
 import org.eclipse.emf.common.notify.Notification;
 
 import org.eclipse.emf.ecore.EClass;
 
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
 import org.eclipse.rcptt.ecl.core.impl.CommandImpl;
+
 import org.eclipse.rcptt.ecl.perf.PerfPackage;
 import org.eclipse.rcptt.ecl.perf.StartTimeMeasure;
 
diff --git a/ecl/plugins/org.eclipse.rcptt.ecl.perf/gen-src/org/eclipse/rcptt/ecl/perf/impl/StopTimeMeasureImpl.java b/ecl/plugins/org.eclipse.rcptt.ecl.perf/gen-src/org/eclipse/rcptt/ecl/perf/impl/StopTimeMeasureImpl.java
index 6c157c2..97b1b5b 100644
--- a/ecl/plugins/org.eclipse.rcptt.ecl.perf/gen-src/org/eclipse/rcptt/ecl/perf/impl/StopTimeMeasureImpl.java
+++ b/ecl/plugins/org.eclipse.rcptt.ecl.perf/gen-src/org/eclipse/rcptt/ecl/perf/impl/StopTimeMeasureImpl.java
@@ -1,23 +1,19 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
+ * $Id$
+ */
 package org.eclipse.rcptt.ecl.perf.impl;
 
-
-
 import org.eclipse.emf.common.notify.Notification;
 
 import org.eclipse.emf.ecore.EClass;
 
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
 import org.eclipse.rcptt.ecl.core.impl.CommandImpl;
+
 import org.eclipse.rcptt.ecl.perf.PerfPackage;
 import org.eclipse.rcptt.ecl.perf.StopTimeMeasure;
 
diff --git a/ecl/plugins/org.eclipse.rcptt.ecl.perf/gen-src/org/eclipse/rcptt/ecl/perf/util/PerfAdapterFactory.java b/ecl/plugins/org.eclipse.rcptt.ecl.perf/gen-src/org/eclipse/rcptt/ecl/perf/util/PerfAdapterFactory.java
index 00677b0..0f412a4 100644
--- a/ecl/plugins/org.eclipse.rcptt.ecl.perf/gen-src/org/eclipse/rcptt/ecl/perf/util/PerfAdapterFactory.java
+++ b/ecl/plugins/org.eclipse.rcptt.ecl.perf/gen-src/org/eclipse/rcptt/ecl/perf/util/PerfAdapterFactory.java
@@ -1,24 +1,20 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
+ * $Id$
+ */
 package org.eclipse.rcptt.ecl.perf.util;
 
-
-
 import org.eclipse.emf.common.notify.Adapter;
 import org.eclipse.emf.common.notify.Notifier;
 
 import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
 
 import org.eclipse.emf.ecore.EObject;
+
 import org.eclipse.rcptt.ecl.core.Command;
+
 import org.eclipse.rcptt.ecl.perf.*;
 
 /**
diff --git a/ecl/plugins/org.eclipse.rcptt.ecl.perf/gen-src/org/eclipse/rcptt/ecl/perf/util/PerfSwitch.java b/ecl/plugins/org.eclipse.rcptt.ecl.perf/gen-src/org/eclipse/rcptt/ecl/perf/util/PerfSwitch.java
index 4e06335..17f3764 100644
--- a/ecl/plugins/org.eclipse.rcptt.ecl.perf/gen-src/org/eclipse/rcptt/ecl/perf/util/PerfSwitch.java
+++ b/ecl/plugins/org.eclipse.rcptt.ecl.perf/gen-src/org/eclipse/rcptt/ecl/perf/util/PerfSwitch.java
@@ -1,22 +1,18 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
+ * $Id$
+ */
 package org.eclipse.rcptt.ecl.perf.util;
 
+import java.util.List;
 
-
+import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emf.ecore.EPackage;
 
-import org.eclipse.emf.ecore.util.Switch;
 import org.eclipse.rcptt.ecl.core.Command;
+
 import org.eclipse.rcptt.ecl.perf.*;
 
 /**
@@ -32,7 +28,7 @@
  * @see org.eclipse.rcptt.ecl.perf.PerfPackage
  * @generated
  */
-public class PerfSwitch<T> extends Switch<T> {
+public class PerfSwitch<T> {
 	/**
 	 * The cached model package
 	 * <!-- begin-user-doc -->
@@ -54,16 +50,14 @@
 	}
 
 	/**
-	 * Checks whether this is a switch for the given package.
+	 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @parameter ePackage the package in question.
-	 * @return whether this is a switch for the given package.
+	 * @return the first non-null result returned by a <code>caseXXX</code> call.
 	 * @generated
 	 */
-	@Override
-	protected boolean isSwitchFor(EPackage ePackage) {
-		return ePackage == modelPackage;
+	public T doSwitch(EObject theEObject) {
+		return doSwitch(theEObject.eClass(), theEObject);
 	}
 
 	/**
@@ -73,7 +67,26 @@
 	 * @return the first non-null result returned by a <code>caseXXX</code> call.
 	 * @generated
 	 */
-	@Override
+	protected T doSwitch(EClass theEClass, EObject theEObject) {
+		if (theEClass.eContainer() == modelPackage) {
+			return doSwitch(theEClass.getClassifierID(), theEObject);
+		}
+		else {
+			List<EClass> eSuperTypes = theEClass.getESuperTypes();
+			return
+				eSuperTypes.isEmpty() ?
+					defaultCase(theEObject) :
+					doSwitch(eSuperTypes.get(0), theEObject);
+		}
+	}
+
+	/**
+	 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the first non-null result returned by a <code>caseXXX</code> call.
+	 * @generated
+	 */
 	protected T doSwitch(int classifierID, EObject theEObject) {
 		switch (classifierID) {
 			case PerfPackage.PERF_COUNTER: {
@@ -215,7 +228,6 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject)
 	 * @generated
 	 */
-	@Override
 	public T defaultCase(EObject object) {
 		return null;
 	}
diff --git a/ecl/plugins/org.eclipse.rcptt.ecl.perf/model/perf.genmodel b/ecl/plugins/org.eclipse.rcptt.ecl.perf/model/perf.genmodel
index 10938e4..e563605 100644
--- a/ecl/plugins/org.eclipse.rcptt.ecl.perf/model/perf.genmodel
+++ b/ecl/plugins/org.eclipse.rcptt.ecl.perf/model/perf.genmodel
@@ -3,24 +3,27 @@
     xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
     xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" modelDirectory="/org.eclipse.rcptt.ecl.perf/gen-src"
     modelPluginID="org.eclipse.rcptt.ecl.perf" modelName="Perf" importerID="org.eclipse.emf.importer.ecore"
-    complianceLevel="6.0" copyrightFields="false" usedGenPackages="../../org.eclipse.rcptt.ecl.core/model/ecl.genmodel#//core platform:/plugin/org.eclipse.emf.ecore/model/Ecore.genmodel#//ecore">
+    complianceLevel="6.0" copyrightFields="false" runtimeVersion="2.5" usedGenPackages="../../org.eclipse.rcptt.ecl.core/model/ecl.genmodel#//core platform:/plugin/org.eclipse.emf.ecore/model/Ecore.genmodel#//ecore">
   <foreignModel>perf.ecore</foreignModel>
   <genPackages prefix="Perf" basePackage="org.eclipse.rcptt.ecl" disposableProviderFactory="true"
       ecorePackage="perf.ecore#/">
     <genClasses ecoreClass="perf.ecore#//PerfCounter">
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute perf.ecore#//PerfCounter/name"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute perf.ecore#//PerfCounter/value"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute perf.ecore#//PerfCounter/duration"/>
     </genClasses>
     <genClasses ecoreClass="perf.ecore#//StartTimeMeasure">
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute perf.ecore#//StartTimeMeasure/label"/>
     </genClasses>
-    <genClasses ecoreClass="perf.ecore#//EndTimeMeasure"/>
+    <genClasses ecoreClass="perf.ecore#//StopTimeMeasure">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute perf.ecore#//StopTimeMeasure/label"/>
+    </genClasses>
     <genClasses ecoreClass="perf.ecore#//MeasureTime">
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute perf.ecore#//MeasureTime/label"/>
       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference perf.ecore#//MeasureTime/do"/>
     </genClasses>
     <genClasses ecoreClass="perf.ecore#//ConstrainMax">
       <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference perf.ecore#//ConstrainMax/counter"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute perf.ecore#//ConstrainMax/property"/>
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute perf.ecore#//ConstrainMax/value"/>
     </genClasses>
   </genPackages>
diff --git a/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/commands/Alert.java b/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/commands/Alert.java
index 9264fbb..15eb562 100644
--- a/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/commands/Alert.java
+++ b/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/commands/Alert.java
@@ -1,13 +1,9 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
+ * $Id$
+ */
 package org.eclipse.rcptt.ecl.platform.ui.commands;
 
 import org.eclipse.rcptt.ecl.core.Command;
diff --git a/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/commands/ClearLogView.java b/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/commands/ClearLogView.java
index 6bc6e86..4f3c6cc 100644
--- a/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/commands/ClearLogView.java
+++ b/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/commands/ClearLogView.java
@@ -1,13 +1,9 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
+ * $Id$
+ */
 package org.eclipse.rcptt.ecl.platform.ui.commands;
 
 import org.eclipse.rcptt.ecl.core.Command;
diff --git a/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/commands/CommandsFactory.java b/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/commands/CommandsFactory.java
index 33579dd..db55005 100644
--- a/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/commands/CommandsFactory.java
+++ b/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/commands/CommandsFactory.java
@@ -1,13 +1,9 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
+ * $Id$
+ */
 package org.eclipse.rcptt.ecl.platform.ui.commands;
 
 import org.eclipse.emf.ecore.EFactory;
diff --git a/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/commands/CommandsPackage.java b/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/commands/CommandsPackage.java
index a7eb9b3..b017b67 100644
--- a/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/commands/CommandsPackage.java
+++ b/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/commands/CommandsPackage.java
@@ -1,20 +1,16 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
+ * $Id$
+ */
 package org.eclipse.rcptt.ecl.platform.ui.commands;
 
-
 import org.eclipse.emf.ecore.EAttribute;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.EPackage;
 import org.eclipse.emf.ecore.EReference;
+
 import org.eclipse.rcptt.ecl.core.CorePackage;
 
 /**
@@ -277,7 +273,6 @@
 	 */
 	int GET_WORKING_SET_FEATURE_COUNT = 1;
 
-
 	/**
 	 * The meta object id for the '{@link org.eclipse.rcptt.ecl.platform.ui.commands.impl.ClearLogViewImpl <em>Clear Log View</em>}' class.
 	 * <!-- begin-user-doc -->
@@ -315,7 +310,6 @@
 	 */
 	int CLEAR_LOG_VIEW_FEATURE_COUNT = CorePackage.COMMAND_FEATURE_COUNT + 0;
 
-
 	/**
 	 * The meta object id for the '{@link org.eclipse.rcptt.ecl.platform.ui.commands.impl.GetHotkeyImpl <em>Get Hotkey</em>}' class.
 	 * <!-- begin-user-doc -->
@@ -408,6 +402,7 @@
 	 */
 	int SAVE_SCREENSHOT_FEATURE_COUNT = CorePackage.COMMAND_FEATURE_COUNT + 1;
 
+
 	/**
 	 * Returns the meta object for class '{@link org.eclipse.rcptt.ecl.platform.ui.commands.Alert <em>Alert</em>}'.
 	 * <!-- begin-user-doc -->
diff --git a/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/commands/CreateWorkingSet.java b/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/commands/CreateWorkingSet.java
index 232bbbd..dcc8d46 100644
--- a/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/commands/CreateWorkingSet.java
+++ b/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/commands/CreateWorkingSet.java
@@ -1,13 +1,9 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
+ * $Id$
+ */
 package org.eclipse.rcptt.ecl.platform.ui.commands;
 
 import org.eclipse.rcptt.ecl.core.Command;
@@ -26,7 +22,7 @@
  * </p>
  *
  * @see org.eclipse.rcptt.ecl.platform.ui.commands.CommandsPackage#getCreateWorkingSet()
- * @model annotation="http://www.eclipse.org/ecl/docs description='Creates working set with a given name.' returns='Nothing'"
+ * @model annotation="http://www.eclipse.org/ecl/docs description='Creates working set with a given name.' returns='Nothing' example='create-working-set \"MyWorkingSet\"'"
  * @generated
  */
 public interface CreateWorkingSet extends Command {
diff --git a/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/commands/DeleteWorkingSet.java b/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/commands/DeleteWorkingSet.java
index 55878fb..2081d05 100644
--- a/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/commands/DeleteWorkingSet.java
+++ b/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/commands/DeleteWorkingSet.java
@@ -1,17 +1,13 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
+ * $Id$
+ */
 package org.eclipse.rcptt.ecl.platform.ui.commands;
 
-
 import org.eclipse.rcptt.ecl.core.Command;
+
 import org.eclipse.rcptt.ecl.platform.ui.objects.WorkingSet;
 
 /**
@@ -27,7 +23,7 @@
  * </p>
  *
  * @see org.eclipse.rcptt.ecl.platform.ui.commands.CommandsPackage#getDeleteWorkingSet()
- * @model annotation="http://www.eclipse.org/ecl/docs description='Deletes working set' returns='Nothing'"
+ * @model annotation="http://www.eclipse.org/ecl/docs description='Deletes working set' returns='Nothing' example='list-working-sets | foreach {delete-working-set}'"
  * @generated
  */
 public interface DeleteWorkingSet extends Command {
diff --git a/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/commands/GetHotkey.java b/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/commands/GetHotkey.java
index 2ce024c..f879ecb 100644
--- a/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/commands/GetHotkey.java
+++ b/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/commands/GetHotkey.java
@@ -1,13 +1,9 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
+ * $Id$
+ */
 package org.eclipse.rcptt.ecl.platform.ui.commands;
 
 import org.eclipse.rcptt.ecl.core.Command;
diff --git a/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/commands/GetWorkingSet.java b/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/commands/GetWorkingSet.java
index 38161b4..6cdafd4 100644
--- a/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/commands/GetWorkingSet.java
+++ b/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/commands/GetWorkingSet.java
@@ -1,13 +1,9 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
+ * $Id$
+ */
 package org.eclipse.rcptt.ecl.platform.ui.commands;
 
 import org.eclipse.emf.ecore.EObject;
diff --git a/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/commands/ListWorkingSets.java b/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/commands/ListWorkingSets.java
index e230795..c2e21ba 100644
--- a/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/commands/ListWorkingSets.java
+++ b/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/commands/ListWorkingSets.java
@@ -1,13 +1,9 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
+ * $Id$
+ */
 package org.eclipse.rcptt.ecl.platform.ui.commands;
 
 import org.eclipse.rcptt.ecl.core.Command;
@@ -19,7 +15,7 @@
  *
  *
  * @see org.eclipse.rcptt.ecl.platform.ui.commands.CommandsPackage#getListWorkingSets()
- * @model annotation="http://www.eclipse.org/ecl/docs description='Returns a list of all working sets available' returns='Working set objects'"
+ * @model annotation="http://www.eclipse.org/ecl/docs description='Returns a list of all working sets available' returns='Working set objects' example='list-working-sets | foreach {delete-working-set}'"
  * @generated
  */
 public interface ListWorkingSets extends Command {
diff --git a/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/commands/SaveScreenshot.java b/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/commands/SaveScreenshot.java
index 57e2720..1f414c3 100644
--- a/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/commands/SaveScreenshot.java
+++ b/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/commands/SaveScreenshot.java
@@ -1,13 +1,9 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
+ * $Id$
+ */
 package org.eclipse.rcptt.ecl.platform.ui.commands;
 
 import org.eclipse.rcptt.ecl.core.Command;
@@ -25,7 +21,7 @@
  * </p>
  *
  * @see org.eclipse.rcptt.ecl.platform.ui.commands.CommandsPackage#getSaveScreenshot()
- * @model
+ * @model annotation="http://www.eclipse.org/ecl/docs description='Saves the screenshot.' returns='Nothing' example='get-eclipse-window | get-object | save-screenshot [substitute-variables \"${workspace_loc}/images/actual.png\"]'"
  * @generated
  */
 public interface SaveScreenshot extends Command {
diff --git a/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/commands/impl/AlertImpl.java b/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/commands/impl/AlertImpl.java
index 1f8d0fc..d01a2ad 100644
--- a/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/commands/impl/AlertImpl.java
+++ b/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/commands/impl/AlertImpl.java
@@ -1,23 +1,19 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
+ * $Id$
+ */
 package org.eclipse.rcptt.ecl.platform.ui.commands.impl;
 
-
-
 import org.eclipse.emf.common.notify.Notification;
 
 import org.eclipse.emf.ecore.EClass;
 
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
 import org.eclipse.rcptt.ecl.core.impl.CommandImpl;
+
 import org.eclipse.rcptt.ecl.platform.ui.commands.Alert;
 import org.eclipse.rcptt.ecl.platform.ui.commands.CommandsPackage;
 
diff --git a/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/commands/impl/ClearLogViewImpl.java b/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/commands/impl/ClearLogViewImpl.java
index bb108e7..5b7f434 100644
--- a/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/commands/impl/ClearLogViewImpl.java
+++ b/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/commands/impl/ClearLogViewImpl.java
@@ -1,19 +1,15 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
+ * $Id$
+ */
 package org.eclipse.rcptt.ecl.platform.ui.commands.impl;
 
-
-
 import org.eclipse.emf.ecore.EClass;
+
 import org.eclipse.rcptt.ecl.core.impl.CommandImpl;
+
 import org.eclipse.rcptt.ecl.platform.ui.commands.ClearLogView;
 import org.eclipse.rcptt.ecl.platform.ui.commands.CommandsPackage;
 
diff --git a/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/commands/impl/CommandsFactoryImpl.java b/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/commands/impl/CommandsFactoryImpl.java
index b74a35b..c23ff6b 100644
--- a/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/commands/impl/CommandsFactoryImpl.java
+++ b/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/commands/impl/CommandsFactoryImpl.java
@@ -1,16 +1,11 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
+ * $Id$
+ */
 package org.eclipse.rcptt.ecl.platform.ui.commands.impl;
 
-
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.emf.ecore.EPackage;
@@ -18,6 +13,7 @@
 import org.eclipse.emf.ecore.impl.EFactoryImpl;
 
 import org.eclipse.emf.ecore.plugin.EcorePlugin;
+
 import org.eclipse.rcptt.ecl.platform.ui.commands.*;
 
 /**
diff --git a/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/commands/impl/CommandsPackageImpl.java b/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/commands/impl/CommandsPackageImpl.java
index ec66668..c9438e3 100644
--- a/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/commands/impl/CommandsPackageImpl.java
+++ b/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/commands/impl/CommandsPackageImpl.java
@@ -1,18 +1,11 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
+ * $Id$
+ */
 package org.eclipse.rcptt.ecl.platform.ui.commands.impl;
 
-
-
-
 import org.eclipse.emf.ecore.EAttribute;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.EPackage;
@@ -20,7 +13,9 @@
 import org.eclipse.emf.ecore.EcorePackage;
 
 import org.eclipse.emf.ecore.impl.EPackageImpl;
+
 import org.eclipse.rcptt.ecl.core.CorePackage;
+
 import org.eclipse.rcptt.ecl.platform.ui.commands.Alert;
 import org.eclipse.rcptt.ecl.platform.ui.commands.ClearLogView;
 import org.eclipse.rcptt.ecl.platform.ui.commands.CommandsFactory;
@@ -31,6 +26,7 @@
 import org.eclipse.rcptt.ecl.platform.ui.commands.GetWorkingSet;
 import org.eclipse.rcptt.ecl.platform.ui.commands.ListWorkingSets;
 import org.eclipse.rcptt.ecl.platform.ui.commands.SaveScreenshot;
+
 import org.eclipse.rcptt.ecl.platform.ui.objects.ObjectsPackage;
 
 /**
@@ -436,14 +432,16 @@
 		   source, 
 		   new String[] {
 			 "description", "Returns a list of all working sets available",
-			 "returns", "Working set objects"
+			 "returns", "Working set objects",
+			 "example", "list-working-sets | foreach {delete-working-set}"
 		   });		
 		addAnnotation
 		  (createWorkingSetEClass, 
 		   source, 
 		   new String[] {
 			 "description", "Creates working set with a given name.",
-			 "returns", "Nothing"
+			 "returns", "Nothing",
+			 "example", "create-working-set \"MyWorkingSet\""
 		   });			
 		addAnnotation
 		  (getCreateWorkingSet_Name(), 
@@ -462,7 +460,8 @@
 		   source, 
 		   new String[] {
 			 "description", "Deletes working set",
-			 "returns", "Nothing"
+			 "returns", "Nothing",
+			 "example", "list-working-sets | foreach {delete-working-set}"
 		   });			
 		addAnnotation
 		  (getDeleteWorkingSet_Input(), 
@@ -489,6 +488,14 @@
 		   new String[] {
 			 "description", "Clears error log. If Error log is open, then it is closed before log clearing and then open again.",
 			 "returns", "Nothing"
+		   });		
+		addAnnotation
+		  (saveScreenshotEClass, 
+		   source, 
+		   new String[] {
+			 "description", "Saves the screenshot.",
+			 "returns", "Nothing",
+			 "example", "get-eclipse-window | get-object | save-screenshot [substitute-variables \"${workspace_loc}/images/actual.png\"]"
 		   });
 	}
 
@@ -509,7 +516,7 @@
 		  (getDeleteWorkingSet_Input(), 
 		   source, 
 		   new String[] {
-		   });				
+		   });					
 	}
 
 } //CommandsPackageImpl
diff --git a/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/commands/impl/CreateWorkingSetImpl.java b/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/commands/impl/CreateWorkingSetImpl.java
index 1efd8d2..2625c58 100644
--- a/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/commands/impl/CreateWorkingSetImpl.java
+++ b/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/commands/impl/CreateWorkingSetImpl.java
@@ -1,23 +1,19 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
+ * $Id$
+ */
 package org.eclipse.rcptt.ecl.platform.ui.commands.impl;
 
-
-
 import org.eclipse.emf.common.notify.Notification;
 
 import org.eclipse.emf.ecore.EClass;
 
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
 import org.eclipse.rcptt.ecl.core.impl.CommandImpl;
+
 import org.eclipse.rcptt.ecl.platform.ui.commands.CommandsPackage;
 import org.eclipse.rcptt.ecl.platform.ui.commands.CreateWorkingSet;
 
diff --git a/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/commands/impl/DeleteWorkingSetImpl.java b/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/commands/impl/DeleteWorkingSetImpl.java
index c11a83e..7c3e083 100644
--- a/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/commands/impl/DeleteWorkingSetImpl.java
+++ b/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/commands/impl/DeleteWorkingSetImpl.java
@@ -1,27 +1,23 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
+ * $Id$
+ */
 package org.eclipse.rcptt.ecl.platform.ui.commands.impl;
 
-
-
-
 import org.eclipse.emf.common.notify.Notification;
 
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
 import org.eclipse.rcptt.ecl.core.impl.CommandImpl;
+
 import org.eclipse.rcptt.ecl.platform.ui.commands.CommandsPackage;
 import org.eclipse.rcptt.ecl.platform.ui.commands.DeleteWorkingSet;
+
 import org.eclipse.rcptt.ecl.platform.ui.objects.WorkingSet;
 
 /**
diff --git a/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/commands/impl/GetHotkeyImpl.java b/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/commands/impl/GetHotkeyImpl.java
index 133df7d..ee62994 100644
--- a/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/commands/impl/GetHotkeyImpl.java
+++ b/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/commands/impl/GetHotkeyImpl.java
@@ -1,23 +1,19 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
+ * $Id$
+ */
 package org.eclipse.rcptt.ecl.platform.ui.commands.impl;
 
-
-
 import org.eclipse.emf.common.notify.Notification;
 
 import org.eclipse.emf.ecore.EClass;
 
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
 import org.eclipse.rcptt.ecl.core.impl.CommandImpl;
+
 import org.eclipse.rcptt.ecl.platform.ui.commands.CommandsPackage;
 import org.eclipse.rcptt.ecl.platform.ui.commands.GetHotkey;
 
diff --git a/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/commands/impl/GetWorkingSetImpl.java b/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/commands/impl/GetWorkingSetImpl.java
index afa91af..613d363 100644
--- a/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/commands/impl/GetWorkingSetImpl.java
+++ b/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/commands/impl/GetWorkingSetImpl.java
@@ -1,22 +1,18 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
+ * $Id$
+ */
 package org.eclipse.rcptt.ecl.platform.ui.commands.impl;
 
-
 import org.eclipse.emf.common.notify.Notification;
 
 import org.eclipse.emf.ecore.EClass;
 
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
 import org.eclipse.emf.ecore.impl.EObjectImpl;
+
 import org.eclipse.rcptt.ecl.platform.ui.commands.CommandsPackage;
 import org.eclipse.rcptt.ecl.platform.ui.commands.GetWorkingSet;
 
diff --git a/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/commands/impl/ListWorkingSetsImpl.java b/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/commands/impl/ListWorkingSetsImpl.java
index cf6aa18..55f01ed 100644
--- a/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/commands/impl/ListWorkingSetsImpl.java
+++ b/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/commands/impl/ListWorkingSetsImpl.java
@@ -1,19 +1,15 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
+ * $Id$
+ */
 package org.eclipse.rcptt.ecl.platform.ui.commands.impl;
 
-
-
 import org.eclipse.emf.ecore.EClass;
+
 import org.eclipse.rcptt.ecl.core.impl.CommandImpl;
+
 import org.eclipse.rcptt.ecl.platform.ui.commands.CommandsPackage;
 import org.eclipse.rcptt.ecl.platform.ui.commands.ListWorkingSets;
 
diff --git a/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/commands/impl/SaveScreenshotImpl.java b/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/commands/impl/SaveScreenshotImpl.java
index 44d2134..7d92b3f 100644
--- a/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/commands/impl/SaveScreenshotImpl.java
+++ b/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/commands/impl/SaveScreenshotImpl.java
@@ -1,23 +1,19 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
+ * $Id$
+ */
 package org.eclipse.rcptt.ecl.platform.ui.commands.impl;
 
-
-
 import org.eclipse.emf.common.notify.Notification;
 
 import org.eclipse.emf.ecore.EClass;
 
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
 import org.eclipse.rcptt.ecl.core.impl.CommandImpl;
+
 import org.eclipse.rcptt.ecl.platform.ui.commands.CommandsPackage;
 import org.eclipse.rcptt.ecl.platform.ui.commands.SaveScreenshot;
 
diff --git a/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/commands/util/CommandsAdapterFactory.java b/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/commands/util/CommandsAdapterFactory.java
index f6951ae..2d45f5a 100644
--- a/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/commands/util/CommandsAdapterFactory.java
+++ b/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/commands/util/CommandsAdapterFactory.java
@@ -1,274 +1,270 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
-package org.eclipse.rcptt.ecl.platform.ui.commands.util;
-
-
-
-import org.eclipse.emf.common.notify.Adapter;
-import org.eclipse.emf.common.notify.Notifier;
-
-import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
-
-import org.eclipse.emf.ecore.EObject;
+ * $Id$
+ */
+package org.eclipse.rcptt.ecl.platform.ui.commands.util;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+
+import org.eclipse.emf.ecore.EObject;
+
 import org.eclipse.rcptt.ecl.core.Command;
+
 import org.eclipse.rcptt.ecl.platform.ui.commands.*;
-
-/**
- * <!-- begin-user-doc -->
- * The <b>Adapter Factory</b> for the model.
- * It provides an adapter <code>createXXX</code> method for each class of the model.
- * <!-- end-user-doc -->
- * @see org.eclipse.rcptt.ecl.platform.ui.commands.CommandsPackage
- * @generated
- */
-public class CommandsAdapterFactory extends AdapterFactoryImpl {
-	/**
-	 * The cached model package.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	protected static CommandsPackage modelPackage;
-
-	/**
-	 * Creates an instance of the adapter factory.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public CommandsAdapterFactory() {
-		if (modelPackage == null) {
-			modelPackage = CommandsPackage.eINSTANCE;
-		}
-	}
-
-	/**
-	 * Returns whether this factory is applicable for the type of the object.
-	 * <!-- begin-user-doc -->
-	 * This implementation returns <code>true</code> if the object is either the model's package or is an instance object of the model.
-	 * <!-- end-user-doc -->
-	 * @return whether this factory is applicable for the type of the object.
-	 * @generated
-	 */
-	@Override
-	public boolean isFactoryForType(Object object) {
-		if (object == modelPackage) {
-			return true;
-		}
-		if (object instanceof EObject) {
-			return ((EObject)object).eClass().getEPackage() == modelPackage;
-		}
-		return false;
-	}
-
-	/**
-	 * The switch that delegates to the <code>createXXX</code> methods.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	protected CommandsSwitch<Adapter> modelSwitch =
-		new CommandsSwitch<Adapter>() {
-			@Override
-			public Adapter caseAlert(Alert object) {
-				return createAlertAdapter();
-			}
-			@Override
-			public Adapter caseListWorkingSets(ListWorkingSets object) {
-				return createListWorkingSetsAdapter();
-			}
-			@Override
-			public Adapter caseCreateWorkingSet(CreateWorkingSet object) {
-				return createCreateWorkingSetAdapter();
-			}
-			@Override
-			public Adapter caseDeleteWorkingSet(DeleteWorkingSet object) {
-				return createDeleteWorkingSetAdapter();
-			}
-			@Override
-			public Adapter caseGetWorkingSet(GetWorkingSet object) {
-				return createGetWorkingSetAdapter();
-			}
-			@Override
-			public Adapter caseClearLogView(ClearLogView object) {
-				return createClearLogViewAdapter();
-			}
-			@Override
-			public Adapter caseGetHotkey(GetHotkey object) {
-				return createGetHotkeyAdapter();
-			}
-			@Override
-			public Adapter caseSaveScreenshot(SaveScreenshot object) {
-				return createSaveScreenshotAdapter();
-			}
-			@Override
-			public Adapter caseCommand(Command object) {
-				return createCommandAdapter();
-			}
-			@Override
-			public Adapter defaultCase(EObject object) {
-				return createEObjectAdapter();
-			}
-		};
-
-	/**
-	 * Creates an adapter for the <code>target</code>.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @param target the object to adapt.
-	 * @return the adapter for the <code>target</code>.
-	 * @generated
-	 */
-	@Override
-	public Adapter createAdapter(Notifier target) {
-		return modelSwitch.doSwitch((EObject)target);
-	}
-
-
-	/**
-	 * Creates a new adapter for an object of class '{@link org.eclipse.rcptt.ecl.platform.ui.commands.Alert <em>Alert</em>}'.
-	 * <!-- begin-user-doc -->
-	 * This default implementation returns null so that we can easily ignore cases;
-	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
-	 * <!-- end-user-doc -->
-	 * @return the new adapter.
-	 * @see org.eclipse.rcptt.ecl.platform.ui.commands.Alert
-	 * @generated
-	 */
-	public Adapter createAlertAdapter() {
-		return null;
-	}
-
-	/**
-	 * Creates a new adapter for an object of class '{@link org.eclipse.rcptt.ecl.platform.ui.commands.ListWorkingSets <em>List Working Sets</em>}'.
-	 * <!-- begin-user-doc -->
-	 * This default implementation returns null so that we can easily ignore cases;
-	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
-	 * <!-- end-user-doc -->
-	 * @return the new adapter.
-	 * @see org.eclipse.rcptt.ecl.platform.ui.commands.ListWorkingSets
-	 * @generated
-	 */
-	public Adapter createListWorkingSetsAdapter() {
-		return null;
-	}
-
-	/**
-	 * Creates a new adapter for an object of class '{@link org.eclipse.rcptt.ecl.platform.ui.commands.CreateWorkingSet <em>Create Working Set</em>}'.
-	 * <!-- begin-user-doc -->
-	 * This default implementation returns null so that we can easily ignore cases;
-	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
-	 * <!-- end-user-doc -->
-	 * @return the new adapter.
-	 * @see org.eclipse.rcptt.ecl.platform.ui.commands.CreateWorkingSet
-	 * @generated
-	 */
-	public Adapter createCreateWorkingSetAdapter() {
-		return null;
-	}
-
-	/**
-	 * Creates a new adapter for an object of class '{@link org.eclipse.rcptt.ecl.platform.ui.commands.DeleteWorkingSet <em>Delete Working Set</em>}'.
-	 * <!-- begin-user-doc -->
-	 * This default implementation returns null so that we can easily ignore cases;
-	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
-	 * <!-- end-user-doc -->
-	 * @return the new adapter.
-	 * @see org.eclipse.rcptt.ecl.platform.ui.commands.DeleteWorkingSet
-	 * @generated
-	 */
-	public Adapter createDeleteWorkingSetAdapter() {
-		return null;
-	}
-
-	/**
-	 * Creates a new adapter for an object of class '{@link org.eclipse.rcptt.ecl.platform.ui.commands.GetWorkingSet <em>Get Working Set</em>}'.
-	 * <!-- begin-user-doc -->
-	 * This default implementation returns null so that we can easily ignore cases;
-	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
-	 * <!-- end-user-doc -->
-	 * @return the new adapter.
-	 * @see org.eclipse.rcptt.ecl.platform.ui.commands.GetWorkingSet
-	 * @generated
-	 */
-	public Adapter createGetWorkingSetAdapter() {
-		return null;
-	}
-
-	/**
-	 * Creates a new adapter for an object of class '{@link org.eclipse.rcptt.ecl.platform.ui.commands.ClearLogView <em>Clear Log View</em>}'.
-	 * <!-- begin-user-doc -->
-	 * This default implementation returns null so that we can easily ignore cases;
-	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
-	 * <!-- end-user-doc -->
-	 * @return the new adapter.
-	 * @see org.eclipse.rcptt.ecl.platform.ui.commands.ClearLogView
-	 * @generated
-	 */
-	public Adapter createClearLogViewAdapter() {
-		return null;
-	}
-
-	/**
-	 * Creates a new adapter for an object of class '{@link org.eclipse.rcptt.ecl.platform.ui.commands.GetHotkey <em>Get Hotkey</em>}'.
-	 * <!-- begin-user-doc -->
-	 * This default implementation returns null so that we can easily ignore cases;
-	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
-	 * <!-- end-user-doc -->
-	 * @return the new adapter.
-	 * @see org.eclipse.rcptt.ecl.platform.ui.commands.GetHotkey
-	 * @generated
-	 */
-	public Adapter createGetHotkeyAdapter() {
-		return null;
-	}
-
-	/**
-	 * Creates a new adapter for an object of class '{@link org.eclipse.rcptt.ecl.platform.ui.commands.SaveScreenshot <em>Save Screenshot</em>}'.
-	 * <!-- begin-user-doc -->
-	 * This default implementation returns null so that we can easily ignore cases;
-	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
-	 * <!-- end-user-doc -->
-	 * @return the new adapter.
-	 * @see org.eclipse.rcptt.ecl.platform.ui.commands.SaveScreenshot
-	 * @generated
-	 */
-	public Adapter createSaveScreenshotAdapter() {
-		return null;
-	}
-
-	/**
-	 * Creates a new adapter for an object of class '{@link org.eclipse.rcptt.ecl.core.Command <em>Command</em>}'.
-	 * <!-- begin-user-doc -->
-	 * This default implementation returns null so that we can easily ignore cases;
-	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
-	 * <!-- end-user-doc -->
-	 * @return the new adapter.
-	 * @see org.eclipse.rcptt.ecl.core.Command
-	 * @generated
-	 */
-	public Adapter createCommandAdapter() {
-		return null;
-	}
-
-	/**
-	 * Creates a new adapter for the default case.
-	 * <!-- begin-user-doc -->
-	 * This default implementation returns null.
-	 * <!-- end-user-doc -->
-	 * @return the new adapter.
-	 * @generated
-	 */
-	public Adapter createEObjectAdapter() {
-		return null;
-	}
-
-} //CommandsAdapterFactory
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Adapter Factory</b> for the model.
+ * It provides an adapter <code>createXXX</code> method for each class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.rcptt.ecl.platform.ui.commands.CommandsPackage
+ * @generated
+ */
+public class CommandsAdapterFactory extends AdapterFactoryImpl {
+	/**
+	 * The cached model package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static CommandsPackage modelPackage;
+
+	/**
+	 * Creates an instance of the adapter factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public CommandsAdapterFactory() {
+		if (modelPackage == null) {
+			modelPackage = CommandsPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Returns whether this factory is applicable for the type of the object.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns <code>true</code> if the object is either the model's package or is an instance object of the model.
+	 * <!-- end-user-doc -->
+	 * @return whether this factory is applicable for the type of the object.
+	 * @generated
+	 */
+	@Override
+	public boolean isFactoryForType(Object object) {
+		if (object == modelPackage) {
+			return true;
+		}
+		if (object instanceof EObject) {
+			return ((EObject)object).eClass().getEPackage() == modelPackage;
+		}
+		return false;
+	}
+
+	/**
+	 * The switch that delegates to the <code>createXXX</code> methods.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected CommandsSwitch<Adapter> modelSwitch =
+		new CommandsSwitch<Adapter>() {
+			@Override
+			public Adapter caseAlert(Alert object) {
+				return createAlertAdapter();
+			}
+			@Override
+			public Adapter caseListWorkingSets(ListWorkingSets object) {
+				return createListWorkingSetsAdapter();
+			}
+			@Override
+			public Adapter caseCreateWorkingSet(CreateWorkingSet object) {
+				return createCreateWorkingSetAdapter();
+			}
+			@Override
+			public Adapter caseDeleteWorkingSet(DeleteWorkingSet object) {
+				return createDeleteWorkingSetAdapter();
+			}
+			@Override
+			public Adapter caseGetWorkingSet(GetWorkingSet object) {
+				return createGetWorkingSetAdapter();
+			}
+			@Override
+			public Adapter caseClearLogView(ClearLogView object) {
+				return createClearLogViewAdapter();
+			}
+			@Override
+			public Adapter caseGetHotkey(GetHotkey object) {
+				return createGetHotkeyAdapter();
+			}
+			@Override
+			public Adapter caseSaveScreenshot(SaveScreenshot object) {
+				return createSaveScreenshotAdapter();
+			}
+			@Override
+			public Adapter caseCommand(Command object) {
+				return createCommandAdapter();
+			}
+			@Override
+			public Adapter defaultCase(EObject object) {
+				return createEObjectAdapter();
+			}
+		};
+
+	/**
+	 * Creates an adapter for the <code>target</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param target the object to adapt.
+	 * @return the adapter for the <code>target</code>.
+	 * @generated
+	 */
+	@Override
+	public Adapter createAdapter(Notifier target) {
+		return modelSwitch.doSwitch((EObject)target);
+	}
+
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.rcptt.ecl.platform.ui.commands.Alert <em>Alert</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.rcptt.ecl.platform.ui.commands.Alert
+	 * @generated
+	 */
+	public Adapter createAlertAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.rcptt.ecl.platform.ui.commands.ListWorkingSets <em>List Working Sets</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.rcptt.ecl.platform.ui.commands.ListWorkingSets
+	 * @generated
+	 */
+	public Adapter createListWorkingSetsAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.rcptt.ecl.platform.ui.commands.CreateWorkingSet <em>Create Working Set</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.rcptt.ecl.platform.ui.commands.CreateWorkingSet
+	 * @generated
+	 */
+	public Adapter createCreateWorkingSetAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.rcptt.ecl.platform.ui.commands.DeleteWorkingSet <em>Delete Working Set</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.rcptt.ecl.platform.ui.commands.DeleteWorkingSet
+	 * @generated
+	 */
+	public Adapter createDeleteWorkingSetAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.rcptt.ecl.platform.ui.commands.GetWorkingSet <em>Get Working Set</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.rcptt.ecl.platform.ui.commands.GetWorkingSet
+	 * @generated
+	 */
+	public Adapter createGetWorkingSetAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.rcptt.ecl.platform.ui.commands.ClearLogView <em>Clear Log View</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.rcptt.ecl.platform.ui.commands.ClearLogView
+	 * @generated
+	 */
+	public Adapter createClearLogViewAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.rcptt.ecl.platform.ui.commands.GetHotkey <em>Get Hotkey</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.rcptt.ecl.platform.ui.commands.GetHotkey
+	 * @generated
+	 */
+	public Adapter createGetHotkeyAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.rcptt.ecl.platform.ui.commands.SaveScreenshot <em>Save Screenshot</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.rcptt.ecl.platform.ui.commands.SaveScreenshot
+	 * @generated
+	 */
+	public Adapter createSaveScreenshotAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.rcptt.ecl.core.Command <em>Command</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.rcptt.ecl.core.Command
+	 * @generated
+	 */
+	public Adapter createCommandAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for the default case.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @generated
+	 */
+	public Adapter createEObjectAdapter() {
+		return null;
+	}
+
+} //CommandsAdapterFactory
diff --git a/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/commands/util/CommandsSwitch.java b/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/commands/util/CommandsSwitch.java
index 8c8aed5..acb5e2b 100644
--- a/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/commands/util/CommandsSwitch.java
+++ b/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/commands/util/CommandsSwitch.java
@@ -1,289 +1,301 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
-package org.eclipse.rcptt.ecl.platform.ui.commands.util;
-
-
-
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emf.ecore.EPackage;
-
-import org.eclipse.emf.ecore.util.Switch;
+ * $Id$
+ */
+package org.eclipse.rcptt.ecl.platform.ui.commands.util;
+
+import java.util.List;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+
 import org.eclipse.rcptt.ecl.core.Command;
+
 import org.eclipse.rcptt.ecl.platform.ui.commands.*;
-
-/**
- * <!-- begin-user-doc -->
- * The <b>Switch</b> for the model's inheritance hierarchy.
- * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
- * to invoke the <code>caseXXX</code> method for each class of the model,
- * starting with the actual class of the object
- * and proceeding up the inheritance hierarchy
- * until a non-null result is returned,
- * which is the result of the switch.
- * <!-- end-user-doc -->
- * @see org.eclipse.rcptt.ecl.platform.ui.commands.CommandsPackage
- * @generated
- */
-public class CommandsSwitch<T> extends Switch<T> {
-	/**
-	 * The cached model package
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	protected static CommandsPackage modelPackage;
-
-	/**
-	 * Creates an instance of the switch.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public CommandsSwitch() {
-		if (modelPackage == null) {
-			modelPackage = CommandsPackage.eINSTANCE;
-		}
-	}
-
-	/**
-	 * Checks whether this is a switch for the given package.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @parameter ePackage the package in question.
-	 * @return whether this is a switch for the given package.
-	 * @generated
-	 */
-	@Override
-	protected boolean isSwitchFor(EPackage ePackage) {
-		return ePackage == modelPackage;
-	}
-
-	/**
-	 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the first non-null result returned by a <code>caseXXX</code> call.
-	 * @generated
-	 */
-	@Override
-	protected T doSwitch(int classifierID, EObject theEObject) {
-		switch (classifierID) {
-			case CommandsPackage.ALERT: {
-				Alert alert = (Alert)theEObject;
-				T result = caseAlert(alert);
-				if (result == null) result = caseCommand(alert);
-				if (result == null) result = defaultCase(theEObject);
-				return result;
-			}
-			case CommandsPackage.LIST_WORKING_SETS: {
-				ListWorkingSets listWorkingSets = (ListWorkingSets)theEObject;
-				T result = caseListWorkingSets(listWorkingSets);
-				if (result == null) result = caseCommand(listWorkingSets);
-				if (result == null) result = defaultCase(theEObject);
-				return result;
-			}
-			case CommandsPackage.CREATE_WORKING_SET: {
-				CreateWorkingSet createWorkingSet = (CreateWorkingSet)theEObject;
-				T result = caseCreateWorkingSet(createWorkingSet);
-				if (result == null) result = caseCommand(createWorkingSet);
-				if (result == null) result = defaultCase(theEObject);
-				return result;
-			}
-			case CommandsPackage.DELETE_WORKING_SET: {
-				DeleteWorkingSet deleteWorkingSet = (DeleteWorkingSet)theEObject;
-				T result = caseDeleteWorkingSet(deleteWorkingSet);
-				if (result == null) result = caseCommand(deleteWorkingSet);
-				if (result == null) result = defaultCase(theEObject);
-				return result;
-			}
-			case CommandsPackage.GET_WORKING_SET: {
-				GetWorkingSet getWorkingSet = (GetWorkingSet)theEObject;
-				T result = caseGetWorkingSet(getWorkingSet);
-				if (result == null) result = defaultCase(theEObject);
-				return result;
-			}
-			case CommandsPackage.CLEAR_LOG_VIEW: {
-				ClearLogView clearLogView = (ClearLogView)theEObject;
-				T result = caseClearLogView(clearLogView);
-				if (result == null) result = caseCommand(clearLogView);
-				if (result == null) result = defaultCase(theEObject);
-				return result;
-			}
-			case CommandsPackage.GET_HOTKEY: {
-				GetHotkey getHotkey = (GetHotkey)theEObject;
-				T result = caseGetHotkey(getHotkey);
-				if (result == null) result = caseCommand(getHotkey);
-				if (result == null) result = defaultCase(theEObject);
-				return result;
-			}
-			case CommandsPackage.SAVE_SCREENSHOT: {
-				SaveScreenshot saveScreenshot = (SaveScreenshot)theEObject;
-				T result = caseSaveScreenshot(saveScreenshot);
-				if (result == null) result = caseCommand(saveScreenshot);
-				if (result == null) result = defaultCase(theEObject);
-				return result;
-			}
-			default: return defaultCase(theEObject);
-		}
-	}
-
-	/**
-	 * Returns the result of interpreting the object as an instance of '<em>Alert</em>'.
-	 * <!-- begin-user-doc -->
-	 * This implementation returns null;
-	 * returning a non-null result will terminate the switch.
-	 * <!-- end-user-doc -->
-	 * @param object the target of the switch.
-	 * @return the result of interpreting the object as an instance of '<em>Alert</em>'.
-	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
-	 * @generated
-	 */
-	public T caseAlert(Alert object) {
-		return null;
-	}
-
-	/**
-	 * Returns the result of interpreting the object as an instance of '<em>List Working Sets</em>'.
-	 * <!-- begin-user-doc -->
-	 * This implementation returns null;
-	 * returning a non-null result will terminate the switch.
-	 * <!-- end-user-doc -->
-	 * @param object the target of the switch.
-	 * @return the result of interpreting the object as an instance of '<em>List Working Sets</em>'.
-	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
-	 * @generated
-	 */
-	public T caseListWorkingSets(ListWorkingSets object) {
-		return null;
-	}
-
-	/**
-	 * Returns the result of interpreting the object as an instance of '<em>Create Working Set</em>'.
-	 * <!-- begin-user-doc -->
-	 * This implementation returns null;
-	 * returning a non-null result will terminate the switch.
-	 * <!-- end-user-doc -->
-	 * @param object the target of the switch.
-	 * @return the result of interpreting the object as an instance of '<em>Create Working Set</em>'.
-	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
-	 * @generated
-	 */
-	public T caseCreateWorkingSet(CreateWorkingSet object) {
-		return null;
-	}
-
-	/**
-	 * Returns the result of interpreting the object as an instance of '<em>Delete Working Set</em>'.
-	 * <!-- begin-user-doc -->
-	 * This implementation returns null;
-	 * returning a non-null result will terminate the switch.
-	 * <!-- end-user-doc -->
-	 * @param object the target of the switch.
-	 * @return the result of interpreting the object as an instance of '<em>Delete Working Set</em>'.
-	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
-	 * @generated
-	 */
-	public T caseDeleteWorkingSet(DeleteWorkingSet object) {
-		return null;
-	}
-
-	/**
-	 * Returns the result of interpreting the object as an instance of '<em>Get Working Set</em>'.
-	 * <!-- begin-user-doc -->
-	 * This implementation returns null;
-	 * returning a non-null result will terminate the switch.
-	 * <!-- end-user-doc -->
-	 * @param object the target of the switch.
-	 * @return the result of interpreting the object as an instance of '<em>Get Working Set</em>'.
-	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
-	 * @generated
-	 */
-	public T caseGetWorkingSet(GetWorkingSet object) {
-		return null;
-	}
-
-	/**
-	 * Returns the result of interpreting the object as an instance of '<em>Clear Log View</em>'.
-	 * <!-- begin-user-doc -->
-	 * This implementation returns null;
-	 * returning a non-null result will terminate the switch.
-	 * <!-- end-user-doc -->
-	 * @param object the target of the switch.
-	 * @return the result of interpreting the object as an instance of '<em>Clear Log View</em>'.
-	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
-	 * @generated
-	 */
-	public T caseClearLogView(ClearLogView object) {
-		return null;
-	}
-
-	/**
-	 * Returns the result of interpreting the object as an instance of '<em>Get Hotkey</em>'.
-	 * <!-- begin-user-doc -->
-	 * This implementation returns null;
-	 * returning a non-null result will terminate the switch.
-	 * <!-- end-user-doc -->
-	 * @param object the target of the switch.
-	 * @return the result of interpreting the object as an instance of '<em>Get Hotkey</em>'.
-	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
-	 * @generated
-	 */
-	public T caseGetHotkey(GetHotkey object) {
-		return null;
-	}
-
-	/**
-	 * Returns the result of interpreting the object as an instance of '<em>Save Screenshot</em>'.
-	 * <!-- begin-user-doc -->
-	 * This implementation returns null;
-	 * returning a non-null result will terminate the switch.
-	 * <!-- end-user-doc -->
-	 * @param object the target of the switch.
-	 * @return the result of interpreting the object as an instance of '<em>Save Screenshot</em>'.
-	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
-	 * @generated
-	 */
-	public T caseSaveScreenshot(SaveScreenshot object) {
-		return null;
-	}
-
-	/**
-	 * Returns the result of interpreting the object as an instance of '<em>Command</em>'.
-	 * <!-- begin-user-doc -->
-	 * This implementation returns null;
-	 * returning a non-null result will terminate the switch.
-	 * <!-- end-user-doc -->
-	 * @param object the target of the switch.
-	 * @return the result of interpreting the object as an instance of '<em>Command</em>'.
-	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
-	 * @generated
-	 */
-	public T caseCommand(Command object) {
-		return null;
-	}
-
-	/**
-	 * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
-	 * <!-- begin-user-doc -->
-	 * This implementation returns null;
-	 * returning a non-null result will terminate the switch, but this is the last case anyway.
-	 * <!-- end-user-doc -->
-	 * @param object the target of the switch.
-	 * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
-	 * @see #doSwitch(org.eclipse.emf.ecore.EObject)
-	 * @generated
-	 */
-	@Override
-	public T defaultCase(EObject object) {
-		return null;
-	}
-
-} //CommandsSwitch
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Switch</b> for the model's inheritance hierarchy.
+ * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
+ * to invoke the <code>caseXXX</code> method for each class of the model,
+ * starting with the actual class of the object
+ * and proceeding up the inheritance hierarchy
+ * until a non-null result is returned,
+ * which is the result of the switch.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.rcptt.ecl.platform.ui.commands.CommandsPackage
+ * @generated
+ */
+public class CommandsSwitch<T> {
+	/**
+	 * The cached model package
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static CommandsPackage modelPackage;
+
+	/**
+	 * Creates an instance of the switch.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public CommandsSwitch() {
+		if (modelPackage == null) {
+			modelPackage = CommandsPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the first non-null result returned by a <code>caseXXX</code> call.
+	 * @generated
+	 */
+	public T doSwitch(EObject theEObject) {
+		return doSwitch(theEObject.eClass(), theEObject);
+	}
+
+	/**
+	 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the first non-null result returned by a <code>caseXXX</code> call.
+	 * @generated
+	 */
+	protected T doSwitch(EClass theEClass, EObject theEObject) {
+		if (theEClass.eContainer() == modelPackage) {
+			return doSwitch(theEClass.getClassifierID(), theEObject);
+		}
+		else {
+			List<EClass> eSuperTypes = theEClass.getESuperTypes();
+			return
+				eSuperTypes.isEmpty() ?
+					defaultCase(theEObject) :
+					doSwitch(eSuperTypes.get(0), theEObject);
+		}
+	}
+
+	/**
+	 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the first non-null result returned by a <code>caseXXX</code> call.
+	 * @generated
+	 */
+	protected T doSwitch(int classifierID, EObject theEObject) {
+		switch (classifierID) {
+			case CommandsPackage.ALERT: {
+				Alert alert = (Alert)theEObject;
+				T result = caseAlert(alert);
+				if (result == null) result = caseCommand(alert);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case CommandsPackage.LIST_WORKING_SETS: {
+				ListWorkingSets listWorkingSets = (ListWorkingSets)theEObject;
+				T result = caseListWorkingSets(listWorkingSets);
+				if (result == null) result = caseCommand(listWorkingSets);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case CommandsPackage.CREATE_WORKING_SET: {
+				CreateWorkingSet createWorkingSet = (CreateWorkingSet)theEObject;
+				T result = caseCreateWorkingSet(createWorkingSet);
+				if (result == null) result = caseCommand(createWorkingSet);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case CommandsPackage.DELETE_WORKING_SET: {
+				DeleteWorkingSet deleteWorkingSet = (DeleteWorkingSet)theEObject;
+				T result = caseDeleteWorkingSet(deleteWorkingSet);
+				if (result == null) result = caseCommand(deleteWorkingSet);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case CommandsPackage.GET_WORKING_SET: {
+				GetWorkingSet getWorkingSet = (GetWorkingSet)theEObject;
+				T result = caseGetWorkingSet(getWorkingSet);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case CommandsPackage.CLEAR_LOG_VIEW: {
+				ClearLogView clearLogView = (ClearLogView)theEObject;
+				T result = caseClearLogView(clearLogView);
+				if (result == null) result = caseCommand(clearLogView);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case CommandsPackage.GET_HOTKEY: {
+				GetHotkey getHotkey = (GetHotkey)theEObject;
+				T result = caseGetHotkey(getHotkey);
+				if (result == null) result = caseCommand(getHotkey);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case CommandsPackage.SAVE_SCREENSHOT: {
+				SaveScreenshot saveScreenshot = (SaveScreenshot)theEObject;
+				T result = caseSaveScreenshot(saveScreenshot);
+				if (result == null) result = caseCommand(saveScreenshot);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			default: return defaultCase(theEObject);
+		}
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Alert</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Alert</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseAlert(Alert object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>List Working Sets</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>List Working Sets</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseListWorkingSets(ListWorkingSets object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Create Working Set</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Create Working Set</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseCreateWorkingSet(CreateWorkingSet object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Delete Working Set</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Delete Working Set</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseDeleteWorkingSet(DeleteWorkingSet object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Get Working Set</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Get Working Set</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseGetWorkingSet(GetWorkingSet object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Clear Log View</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Clear Log View</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseClearLogView(ClearLogView object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Get Hotkey</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Get Hotkey</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseGetHotkey(GetHotkey object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Save Screenshot</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Save Screenshot</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseSaveScreenshot(SaveScreenshot object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Command</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Command</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseCommand(Command object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch, but this is the last case anyway.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+	 * @generated
+	 */
+	public T defaultCase(EObject object) {
+		return null;
+	}
+
+} //CommandsSwitch
diff --git a/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/objects/ObjectsFactory.java b/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/objects/ObjectsFactory.java
index bca20b7..89b4d4d 100644
--- a/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/objects/ObjectsFactory.java
+++ b/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/objects/ObjectsFactory.java
@@ -1,13 +1,9 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
+ * $Id$
+ */
 package org.eclipse.rcptt.ecl.platform.ui.objects;
 
 import org.eclipse.emf.ecore.EFactory;
diff --git a/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/objects/ObjectsPackage.java b/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/objects/ObjectsPackage.java
index ca3ce67..4566ff7 100644
--- a/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/objects/ObjectsPackage.java
+++ b/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/objects/ObjectsPackage.java
@@ -1,13 +1,9 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
+ * $Id$
+ */
 package org.eclipse.rcptt.ecl.platform.ui.objects;
 
 import org.eclipse.emf.ecore.EAttribute;
diff --git a/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/objects/WorkingSet.java b/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/objects/WorkingSet.java
index 428cae8..ecaf7de 100644
--- a/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/objects/WorkingSet.java
+++ b/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/objects/WorkingSet.java
@@ -1,13 +1,9 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
+ * $Id$
+ */
 package org.eclipse.rcptt.ecl.platform.ui.objects;
 
 import org.eclipse.emf.ecore.EObject;
diff --git a/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/objects/impl/ObjectsFactoryImpl.java b/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/objects/impl/ObjectsFactoryImpl.java
index 4f8e926..45b731f 100644
--- a/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/objects/impl/ObjectsFactoryImpl.java
+++ b/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/objects/impl/ObjectsFactoryImpl.java
@@ -1,16 +1,11 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
+ * $Id$
+ */
 package org.eclipse.rcptt.ecl.platform.ui.objects.impl;
 
-
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.emf.ecore.EPackage;
@@ -18,6 +13,7 @@
 import org.eclipse.emf.ecore.impl.EFactoryImpl;
 
 import org.eclipse.emf.ecore.plugin.EcorePlugin;
+
 import org.eclipse.rcptt.ecl.platform.ui.objects.*;
 
 /**
diff --git a/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/objects/impl/ObjectsPackageImpl.java b/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/objects/impl/ObjectsPackageImpl.java
index 8484681..fa61036 100644
--- a/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/objects/impl/ObjectsPackageImpl.java
+++ b/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/objects/impl/ObjectsPackageImpl.java
@@ -1,21 +1,17 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
+ * $Id$
+ */
 package org.eclipse.rcptt.ecl.platform.ui.objects.impl;
 
-
 import org.eclipse.emf.ecore.EAttribute;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.EPackage;
 
 import org.eclipse.emf.ecore.impl.EPackageImpl;
+
 import org.eclipse.rcptt.ecl.platform.ui.objects.ObjectsFactory;
 import org.eclipse.rcptt.ecl.platform.ui.objects.ObjectsPackage;
 import org.eclipse.rcptt.ecl.platform.ui.objects.WorkingSet;
@@ -61,20 +57,10 @@
 	private static boolean isInited = false;
 
 	/**
-	 * Creates, registers, and initializes the <b>Package</b> for this
-	 * model, and for any others upon which it depends.  Simple
-	 * dependencies are satisfied by calling this method on all
-	 * dependent packages before doing anything else.  This method drives
-	 * initialization for interdependent packages directly, in parallel
-	 * with this package, itself.
-	 * <p>Of this package and its interdependencies, all packages which
-	 * have not yet been registered by their URI values are first created
-	 * and registered.  The packages are then initialized in two steps:
-	 * meta-model objects for all of the packages are created before any
-	 * are initialized, since one package's meta-model objects may refer to
-	 * those of another.
-	 * <p>Invocation of this method will not affect any packages that have
-	 * already been initialized.
+	 * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
+	 * 
+	 * <p>This method is used to initialize {@link ObjectsPackage#eINSTANCE} when that field is accessed.
+	 * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @see #eNS_URI
@@ -86,7 +72,7 @@
 		if (isInited) return (ObjectsPackage)EPackage.Registry.INSTANCE.getEPackage(ObjectsPackage.eNS_URI);
 
 		// Obtain or create and register package
-		ObjectsPackageImpl theObjectsPackage = (ObjectsPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(eNS_URI) instanceof ObjectsPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(eNS_URI) : new ObjectsPackageImpl());
+		ObjectsPackageImpl theObjectsPackage = (ObjectsPackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof ObjectsPackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new ObjectsPackageImpl());
 
 		isInited = true;
 
@@ -99,6 +85,9 @@
 		// Mark meta-data to indicate it can't be changed
 		theObjectsPackage.freeze();
 
+  
+		// Update the registry and return the package
+		EPackage.Registry.INSTANCE.put(ObjectsPackage.eNS_URI, theObjectsPackage);
 		return theObjectsPackage;
 	}
 
diff --git a/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/objects/impl/WorkingSetImpl.java b/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/objects/impl/WorkingSetImpl.java
index f1ea1c3..1c3094d 100644
--- a/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/objects/impl/WorkingSetImpl.java
+++ b/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/objects/impl/WorkingSetImpl.java
@@ -1,22 +1,18 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
+ * $Id$
+ */
 package org.eclipse.rcptt.ecl.platform.ui.objects.impl;
 
-
 import org.eclipse.emf.common.notify.Notification;
 
 import org.eclipse.emf.ecore.EClass;
 
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
 import org.eclipse.emf.ecore.impl.EObjectImpl;
+
 import org.eclipse.rcptt.ecl.platform.ui.objects.ObjectsPackage;
 import org.eclipse.rcptt.ecl.platform.ui.objects.WorkingSet;
 
diff --git a/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/objects/util/ObjectsAdapterFactory.java b/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/objects/util/ObjectsAdapterFactory.java
index 4c117d2..01cc538 100644
--- a/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/objects/util/ObjectsAdapterFactory.java
+++ b/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/objects/util/ObjectsAdapterFactory.java
@@ -1,128 +1,124 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
-package org.eclipse.rcptt.ecl.platform.ui.objects.util;
-
-
-import org.eclipse.emf.common.notify.Adapter;
-import org.eclipse.emf.common.notify.Notifier;
-
-import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
-
-import org.eclipse.emf.ecore.EObject;
+ * $Id$
+ */
+package org.eclipse.rcptt.ecl.platform.ui.objects.util;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+
+import org.eclipse.emf.ecore.EObject;
+
 import org.eclipse.rcptt.ecl.platform.ui.objects.*;
-
-/**
- * <!-- begin-user-doc -->
- * The <b>Adapter Factory</b> for the model.
- * It provides an adapter <code>createXXX</code> method for each class of the model.
- * <!-- end-user-doc -->
- * @see org.eclipse.rcptt.ecl.platform.ui.objects.ObjectsPackage
- * @generated
- */
-public class ObjectsAdapterFactory extends AdapterFactoryImpl {
-	/**
-	 * The cached model package.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	protected static ObjectsPackage modelPackage;
-
-	/**
-	 * Creates an instance of the adapter factory.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public ObjectsAdapterFactory() {
-		if (modelPackage == null) {
-			modelPackage = ObjectsPackage.eINSTANCE;
-		}
-	}
-
-	/**
-	 * Returns whether this factory is applicable for the type of the object.
-	 * <!-- begin-user-doc -->
-	 * This implementation returns <code>true</code> if the object is either the model's package or is an instance object of the model.
-	 * <!-- end-user-doc -->
-	 * @return whether this factory is applicable for the type of the object.
-	 * @generated
-	 */
-	@Override
-	public boolean isFactoryForType(Object object) {
-		if (object == modelPackage) {
-			return true;
-		}
-		if (object instanceof EObject) {
-			return ((EObject)object).eClass().getEPackage() == modelPackage;
-		}
-		return false;
-	}
-
-	/**
-	 * The switch that delegates to the <code>createXXX</code> methods.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	protected ObjectsSwitch<Adapter> modelSwitch =
-		new ObjectsSwitch<Adapter>() {
-			@Override
-			public Adapter caseWorkingSet(WorkingSet object) {
-				return createWorkingSetAdapter();
-			}
-			@Override
-			public Adapter defaultCase(EObject object) {
-				return createEObjectAdapter();
-			}
-		};
-
-	/**
-	 * Creates an adapter for the <code>target</code>.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @param target the object to adapt.
-	 * @return the adapter for the <code>target</code>.
-	 * @generated
-	 */
-	@Override
-	public Adapter createAdapter(Notifier target) {
-		return modelSwitch.doSwitch((EObject)target);
-	}
-
-
-	/**
-	 * Creates a new adapter for an object of class '{@link org.eclipse.rcptt.ecl.platform.ui.objects.WorkingSet <em>Working Set</em>}'.
-	 * <!-- begin-user-doc -->
-	 * This default implementation returns null so that we can easily ignore cases;
-	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
-	 * <!-- end-user-doc -->
-	 * @return the new adapter.
-	 * @see org.eclipse.rcptt.ecl.platform.ui.objects.WorkingSet
-	 * @generated
-	 */
-	public Adapter createWorkingSetAdapter() {
-		return null;
-	}
-
-	/**
-	 * Creates a new adapter for the default case.
-	 * <!-- begin-user-doc -->
-	 * This default implementation returns null.
-	 * <!-- end-user-doc -->
-	 * @return the new adapter.
-	 * @generated
-	 */
-	public Adapter createEObjectAdapter() {
-		return null;
-	}
-
-} //ObjectsAdapterFactory
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Adapter Factory</b> for the model.
+ * It provides an adapter <code>createXXX</code> method for each class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.rcptt.ecl.platform.ui.objects.ObjectsPackage
+ * @generated
+ */
+public class ObjectsAdapterFactory extends AdapterFactoryImpl {
+	/**
+	 * The cached model package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static ObjectsPackage modelPackage;
+
+	/**
+	 * Creates an instance of the adapter factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ObjectsAdapterFactory() {
+		if (modelPackage == null) {
+			modelPackage = ObjectsPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Returns whether this factory is applicable for the type of the object.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns <code>true</code> if the object is either the model's package or is an instance object of the model.
+	 * <!-- end-user-doc -->
+	 * @return whether this factory is applicable for the type of the object.
+	 * @generated
+	 */
+	@Override
+	public boolean isFactoryForType(Object object) {
+		if (object == modelPackage) {
+			return true;
+		}
+		if (object instanceof EObject) {
+			return ((EObject)object).eClass().getEPackage() == modelPackage;
+		}
+		return false;
+	}
+
+	/**
+	 * The switch that delegates to the <code>createXXX</code> methods.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ObjectsSwitch<Adapter> modelSwitch =
+		new ObjectsSwitch<Adapter>() {
+			@Override
+			public Adapter caseWorkingSet(WorkingSet object) {
+				return createWorkingSetAdapter();
+			}
+			@Override
+			public Adapter defaultCase(EObject object) {
+				return createEObjectAdapter();
+			}
+		};
+
+	/**
+	 * Creates an adapter for the <code>target</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param target the object to adapt.
+	 * @return the adapter for the <code>target</code>.
+	 * @generated
+	 */
+	@Override
+	public Adapter createAdapter(Notifier target) {
+		return modelSwitch.doSwitch((EObject)target);
+	}
+
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.rcptt.ecl.platform.ui.objects.WorkingSet <em>Working Set</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.rcptt.ecl.platform.ui.objects.WorkingSet
+	 * @generated
+	 */
+	public Adapter createWorkingSetAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for the default case.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @generated
+	 */
+	public Adapter createEObjectAdapter() {
+		return null;
+	}
+
+} //ObjectsAdapterFactory
diff --git a/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/objects/util/ObjectsSwitch.java b/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/objects/util/ObjectsSwitch.java
index db097bd..4909d36 100644
--- a/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/objects/util/ObjectsSwitch.java
+++ b/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/gen-src/org/eclipse/rcptt/ecl/platform/ui/objects/util/ObjectsSwitch.java
@@ -1,134 +1,130 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Xored Software Inc and others.
- * 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
+/**
+ * <copyright>
+ * </copyright>
  *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
-package org.eclipse.rcptt.ecl.platform.ui.objects.util;
-
-import java.util.List;
-
-
-import org.eclipse.emf.ecore.EClass;
-import org.eclipse.emf.ecore.EObject;
+ * $Id$
+ */
+package org.eclipse.rcptt.ecl.platform.ui.objects.util;
+
+import java.util.List;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+
 import org.eclipse.rcptt.ecl.platform.ui.objects.*;
-
-/**
- * <!-- begin-user-doc -->
- * The <b>Switch</b> for the model's inheritance hierarchy.
- * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
- * to invoke the <code>caseXXX</code> method for each class of the model,
- * starting with the actual class of the object
- * and proceeding up the inheritance hierarchy
- * until a non-null result is returned,
- * which is the result of the switch.
- * <!-- end-user-doc -->
- * @see org.eclipse.rcptt.ecl.platform.ui.objects.ObjectsPackage
- * @generated
- */
-public class ObjectsSwitch<T> {
-	/**
-	 * The cached model package
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	protected static ObjectsPackage modelPackage;
-
-	/**
-	 * Creates an instance of the switch.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public ObjectsSwitch() {
-		if (modelPackage == null) {
-			modelPackage = ObjectsPackage.eINSTANCE;
-		}
-	}
-
-	/**
-	 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the first non-null result returned by a <code>caseXXX</code> call.
-	 * @generated
-	 */
-	public T doSwitch(EObject theEObject) {
-		return doSwitch(theEObject.eClass(), theEObject);
-	}
-
-	/**
-	 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the first non-null result returned by a <code>caseXXX</code> call.
-	 * @generated
-	 */
-	protected T doSwitch(EClass theEClass, EObject theEObject) {
-		if (theEClass.eContainer() == modelPackage) {
-			return doSwitch(theEClass.getClassifierID(), theEObject);
-		}
-		else {
-			List<EClass> eSuperTypes = theEClass.getESuperTypes();
-			return
-				eSuperTypes.isEmpty() ?
-					defaultCase(theEObject) :
-					doSwitch(eSuperTypes.get(0), theEObject);
-		}
-	}
-
-	/**
-	 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the first non-null result returned by a <code>caseXXX</code> call.
-	 * @generated
-	 */
-	protected T doSwitch(int classifierID, EObject theEObject) {
-		switch (classifierID) {
-			case ObjectsPackage.WORKING_SET: {
-				WorkingSet workingSet = (WorkingSet)theEObject;
-				T result = caseWorkingSet(workingSet);
-				if (result == null) result = defaultCase(theEObject);
-				return result;
-			}
-			default: return defaultCase(theEObject);
-		}
-	}
-
-	/**
-	 * Returns the result of interpreting the object as an instance of '<em>Working Set</em>'.
-	 * <!-- begin-user-doc -->
-	 * This implementation returns null;
-	 * returning a non-null result will terminate the switch.
-	 * <!-- end-user-doc -->
-	 * @param object the target of the switch.
-	 * @return the result of interpreting the object as an instance of '<em>Working Set</em>'.
-	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
-	 * @generated
-	 */
-	public T caseWorkingSet(WorkingSet object) {
-		return null;
-	}
-
-	/**
-	 * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
-	 * <!-- begin-user-doc -->
-	 * This implementation returns null;
-	 * returning a non-null result will terminate the switch, but this is the last case anyway.
-	 * <!-- end-user-doc -->
-	 * @param object the target of the switch.
-	 * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
-	 * @see #doSwitch(org.eclipse.emf.ecore.EObject)
-	 * @generated
-	 */
-	public T defaultCase(EObject object) {
-		return null;
-	}
-
-} //ObjectsSwitch
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Switch</b> for the model's inheritance hierarchy.
+ * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
+ * to invoke the <code>caseXXX</code> method for each class of the model,
+ * starting with the actual class of the object
+ * and proceeding up the inheritance hierarchy
+ * until a non-null result is returned,
+ * which is the result of the switch.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.rcptt.ecl.platform.ui.objects.ObjectsPackage
+ * @generated
+ */
+public class ObjectsSwitch<T> {
+	/**
+	 * The cached model package
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static ObjectsPackage modelPackage;
+
+	/**
+	 * Creates an instance of the switch.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ObjectsSwitch() {
+		if (modelPackage == null) {
+			modelPackage = ObjectsPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the first non-null result returned by a <code>caseXXX</code> call.
+	 * @generated
+	 */
+	public T doSwitch(EObject theEObject) {
+		return doSwitch(theEObject.eClass(), theEObject);
+	}
+
+	/**
+	 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the first non-null result returned by a <code>caseXXX</code> call.
+	 * @generated
+	 */
+	protected T doSwitch(EClass theEClass, EObject theEObject) {
+		if (theEClass.eContainer() == modelPackage) {
+			return doSwitch(theEClass.getClassifierID(), theEObject);
+		}
+		else {
+			List<EClass> eSuperTypes = theEClass.getESuperTypes();
+			return
+				eSuperTypes.isEmpty() ?
+					defaultCase(theEObject) :
+					doSwitch(eSuperTypes.get(0), theEObject);
+		}
+	}
+
+	/**
+	 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the first non-null result returned by a <code>caseXXX</code> call.
+	 * @generated
+	 */
+	protected T doSwitch(int classifierID, EObject theEObject) {
+		switch (classifierID) {
+			case ObjectsPackage.WORKING_SET: {
+				WorkingSet workingSet = (WorkingSet)theEObject;
+				T result = caseWorkingSet(workingSet);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			default: return defaultCase(theEObject);
+		}
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Working Set</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Working Set</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseWorkingSet(WorkingSet object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch, but this is the last case anyway.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+	 * @generated
+	 */
+	public T defaultCase(EObject object) {
+		return null;
+	}
+
+} //ObjectsSwitch
diff --git a/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/model/commands.genmodel b/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/model/commands.genmodel
index c0b56ba..4502751 100644
--- a/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/model/commands.genmodel
+++ b/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/model/commands.genmodel
@@ -3,7 +3,7 @@
     xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
     xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" modelDirectory="/org.eclipse.rcptt.ecl.platform.ui/gen-src"
     modelPluginID="org.eclipse.rcptt.ecl.platform.ui" modelName="Commands" importerID="org.eclipse.emf.importer.ecore"
-    complianceLevel="6.0" copyrightFields="false" usedGenPackages="../../org.eclipse.rcptt.ecl.core/model/ecl.genmodel#//core platform:/plugin/org.eclipse.emf.ecore/model/Ecore.genmodel#//ecore objects.genmodel#//objects">
+    complianceLevel="6.0" copyrightFields="false" runtimeVersion="2.5" usedGenPackages="../../org.eclipse.rcptt.ecl.core/model/ecl.genmodel#//core platform:/plugin/org.eclipse.emf.ecore/model/Ecore.genmodel#//ecore objects.genmodel#//objects">
   <foreignModel>commands.ecore</foreignModel>
   <genPackages prefix="Commands" basePackage="org.eclipse.rcptt.ecl.platform.ui" disposableProviderFactory="true"
       ecorePackage="commands.ecore#/">
@@ -21,5 +21,12 @@
     <genClasses ecoreClass="commands.ecore#//GetWorkingSet">
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute commands.ecore#//GetWorkingSet/name"/>
     </genClasses>
+    <genClasses ecoreClass="commands.ecore#//ClearLogView"/>
+    <genClasses ecoreClass="commands.ecore#//GetHotkey">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute commands.ecore#//GetHotkey/commandId"/>
+    </genClasses>
+    <genClasses ecoreClass="commands.ecore#//SaveScreenshot">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute commands.ecore#//SaveScreenshot/out"/>
+    </genClasses>
   </genPackages>
 </genmodel:GenModel>
diff --git a/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/model/objects.genmodel b/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/model/objects.genmodel
index f4a8b91..8831f5e 100644
--- a/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/model/objects.genmodel
+++ b/ecl/plugins/org.eclipse.rcptt.ecl.platform.ui/model/objects.genmodel
@@ -3,13 +3,13 @@
     xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
     xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" modelDirectory="/org.eclipse.rcptt.ecl.platform.ui/gen-src"
     modelPluginID="org.eclipse.rcptt.ecl.platform.ui" modelName="Objects" importerID="org.eclipse.emf.importer.ecore"
-    complianceLevel="6.0" copyrightFields="false">
+    complianceLevel="6.0" copyrightFields="false" runtimeVersion="2.5">
   <foreignModel>objects.ecore</foreignModel>
   <genPackages prefix="Objects" basePackage="org.eclipse.rcptt.ecl.platform.ui" disposableProviderFactory="true"
       ecorePackage="objects.ecore#/">
     <genClasses ecoreClass="objects.ecore#//WorkingSet">
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute objects.ecore#//WorkingSet/name"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute objects.ecore#//WorkingSet/value"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute objects.ecore#//WorkingSet/type"/>
     </genClasses>
   </genPackages>
 </genmodel:GenModel>
diff --git a/ecl/plugins/org.eclipse.rcptt.ecl.platform/src/org/eclipse/rcptt/ecl/platform/internal/PlatformPlugin.java b/ecl/plugins/org.eclipse.rcptt.ecl.platform/src/org/eclipse/rcptt/ecl/platform/internal/PlatformPlugin.java
index f38d6d4..e4399d6 100644
--- a/ecl/plugins/org.eclipse.rcptt.ecl.platform/src/org/eclipse/rcptt/ecl/platform/internal/PlatformPlugin.java
+++ b/ecl/plugins/org.eclipse.rcptt.ecl.platform/src/org/eclipse/rcptt/ecl/platform/internal/PlatformPlugin.java
@@ -56,10 +56,11 @@
 		return new Status(IStatus.ERROR, PLUGIN_ID, message, t);
 	}
 
+	@SuppressWarnings("unchecked")
 	public static IProvisioningAgent getProvisioningAgent() {
 		BundleContext bc = getDefault().bundleContext;
-		ServiceReference<?> reference = bc
-				.getServiceReference(IProvisioningAgent.SERVICE_NAME);
+		@SuppressWarnings("rawtypes")
+		ServiceReference reference = bc.getServiceReference(IProvisioningAgent.SERVICE_NAME);
 		if (reference == null)
 			return null;
 		Object service = bc.getService(reference);
diff --git a/ecl/plugins/pom.xml b/ecl/plugins/pom.xml
index 7fb59c4..5b1ca28 100644
--- a/ecl/plugins/pom.xml
+++ b/ecl/plugins/pom.xml
@@ -7,8 +7,9 @@
   <packaging>pom</packaging>
   <parent>
     <artifactId>ecl</artifactId>
-    <groupId>org.eclipse.rcptt.ecl</groupId>
+    <groupId>org.eclipse.rcptt</groupId>
     <version>1.5.1-SNAPSHOT</version>
+    <relativePath>../../releng/ecl/pom.xml</relativePath>    
   </parent>
   <modules>
     <module>org.eclipse.rcptt.ecl.client.tcp</module>
diff --git a/ecl/releng/org.eclipse.rcptt.ecl.core-updatesite/pom.xml b/ecl/releng/org.eclipse.rcptt.ecl.core-updatesite/pom.xml
deleted file mode 100644
index 1d5f476..0000000
--- a/ecl/releng/org.eclipse.rcptt.ecl.core-updatesite/pom.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
-  <modelVersion>4.0.0</modelVersion>
-  <parent>
-    <artifactId>ecl-releng</artifactId>
-    <groupId>org.eclipse.rcptt.ecl</groupId>
-    <version>1.5.1-SNAPSHOT</version>
-  </parent>
-  <groupId>org.eclipse.rcptt.ecl</groupId>
-  <artifactId>org.eclipse.rcptt.ecl.core-updatesite</artifactId>
-  <packaging>eclipse-update-site</packaging>
-</project>
diff --git a/ecl/releng/pom.xml b/ecl/releng/pom.xml
deleted file mode 100644
index a0703d7..0000000
--- a/ecl/releng/pom.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
-  <modelVersion>4.0.0</modelVersion>
-  <groupId>org.eclipse.rcptt.ecl</groupId>
-  <artifactId>ecl-releng</artifactId>
-  <packaging>pom</packaging>
-  <parent>
-    <artifactId>ecl</artifactId>
-    <groupId>org.eclipse.rcptt.ecl</groupId>
-    <version>1.5.1-SNAPSHOT</version>
-  </parent>
-  <modules>
-    <module>org.eclipse.rcptt.ecl.core-updatesite</module>
-  </modules>
-</project>
diff --git a/ecl/releng/org.eclipse.rcptt.ecl.core-updatesite/.project b/ecl/repository/.project
similarity index 100%
rename from ecl/releng/org.eclipse.rcptt.ecl.core-updatesite/.project
rename to ecl/repository/.project
diff --git a/ecl/releng/org.eclipse.rcptt.ecl.core-updatesite/site.xml b/ecl/repository/category.xml
similarity index 100%
rename from ecl/releng/org.eclipse.rcptt.ecl.core-updatesite/site.xml
rename to ecl/repository/category.xml
diff --git a/ecl/releng/org.eclipse.rcptt.ecl.core-updatesite/epl-v10.html b/ecl/repository/epl-v10.html
similarity index 100%
rename from ecl/releng/org.eclipse.rcptt.ecl.core-updatesite/epl-v10.html
rename to ecl/repository/epl-v10.html
diff --git a/ecl/repository/pom.xml b/ecl/repository/pom.xml
new file mode 100644
index 0000000..7f8a14d
--- /dev/null
+++ b/ecl/repository/pom.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <artifactId>ecl</artifactId>
+    <groupId>org.eclipse.rcptt</groupId>
+    <version>1.5.1-SNAPSHOT</version>
+    <relativePath>../../releng/ecl/pom.xml</relativePath>
+  </parent>
+  <groupId>org.eclipse.rcptt</groupId>
+  <artifactId>ecl-repository</artifactId>
+  <packaging>eclipse-repository</packaging>
+</project>
diff --git a/ecl/tests/pom.xml b/ecl/tests/pom.xml
index 23955d8..26a25c5 100644
--- a/ecl/tests/pom.xml
+++ b/ecl/tests/pom.xml
@@ -7,8 +7,9 @@
   <packaging>pom</packaging>
   <parent>
     <artifactId>ecl</artifactId>
-    <groupId>org.eclipse.rcptt.ecl</groupId>
+    <groupId>org.eclipse.rcptt</groupId>
     <version>1.5.1-SNAPSHOT</version>
+    <relativePath>../../releng/ecl/pom.xml</relativePath>    
   </parent>
   <modules>
     <module>org.eclipse.rcptt.ecl.operations.tests</module>
diff --git a/launching/pom.xml b/launching/pom.xml
index c773127..53c4002 100644
--- a/launching/pom.xml
+++ b/launching/pom.xml
@@ -2,9 +2,10 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
-    <artifactId>rcptt</artifactId>
+    <artifactId>ide</artifactId>
     <groupId>org.eclipse.rcptt</groupId>
     <version>1.5.1-SNAPSHOT</version>
+    <relativePath>../releng/ide/pom.xml</relativePath>    
   </parent>
   <modules>
     <module>org.eclipse.rcptt.launching-feature</module>
diff --git a/modules/nebula/pom.xml b/modules/nebula/pom.xml
index ae662e9..816fa6c 100644
--- a/modules/nebula/pom.xml
+++ b/modules/nebula/pom.xml
@@ -1,47 +1,52 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-	<modelVersion>4.0.0</modelVersion>
-	<groupId>org.eclipse.rcptt</groupId>
-	<artifactId>rcptt-module-nebula</artifactId>
-	<version>1.5.1-SNAPSHOT</version>
-	<packaging>pom</packaging>
+	 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>org.eclipse.rcptt</groupId>
+  <artifactId>rcptt-module-nebula</artifactId>
+  <version>1.5.1-SNAPSHOT</version>
+  <packaging>pom</packaging>
 
-    <properties>
-      <rcpttRuntimeRepo>file:/${user.dir}/runtime/org.eclipse.rcptt.runtime-updatesite/target/site/</rcpttRuntimeRepo>
-    </properties>
+  <properties>
+    <rcpttRuntimeRepo>file:/${user.dir}/runtime/org.eclipse.rcptt.runtime-updatesite/target/site/</rcpttRuntimeRepo>
+  </properties>
 
-	<parent>
-		<groupId>org.eclipse.rcptt</groupId>
-		<artifactId>rcptt-derived-base-pom</artifactId>
-		<version>1.5.1-SNAPSHOT</version>
-		<relativePath>../../pom-base-rcpttderived.xml</relativePath>
-	</parent>
+  <parent>
+    <groupId>org.eclipse.rcptt</groupId>
+    <artifactId>ide</artifactId>
+    <version>1.5.1-SNAPSHOT</version>
+    <relativePath>../../releng/ide/pom.xml</relativePath>
+  </parent>
 
-	<repositories>
-		<repository>
-			<id>nebula</id>
-			<layout>p2</layout>
-			<url>http://download.eclipse.org/technology/nebula/snapshot/</url>
-		</repository>
-		<repository>
-			<id>rcptt-runtime</id>
-			<layout>p2</layout>
-			<url>${rcpttRuntimeRepo}</url>
-		</repository>
-	</repositories>
+  <repositories combine.self="override">
+    <repository>
+      <id>nebula</id>
+      <layout>p2</layout>
+      <url>http://download.eclipse.org/technology/nebula/snapshot/</url>
+    </repository>
+    <repository>
+      <id>rcptt-runtime</id>
+      <layout>p2</layout>
+      <url>${rcpttRuntimeRepo}</url>
+    </repository>
+    <repository>
+      <id>ajdt37</id>
+      <layout>p2</layout>
+      <url>${ajdt37repository}</url>
+    </repository>
+  </repositories>
 
-	<modules>
-		<module>plugins/org.eclipse.rcptt.tesla.nebula</module>
-		<module>plugins/org.eclipse.rcptt.tesla.nebula.impl</module>
-		<module>plugins/org.eclipse.rcptt.tesla.nebula.ecl</module>
-		<module>plugins/org.eclipse.rcptt.tesla.nebula.ecl.impl</module>
-		<module>plugins/org.eclipse.rcptt.tesla.recording.nebula</module>
-		<module>plugins/org.eclipse.rcptt.tesla.recording.nebula.ecl</module>
-		<module>features/org.eclipse.rcptt.module.nebula.runtime</module>
-		<module>runtime-site</module>
-		<module>plugins/org.eclipse.rcptt.module.nebula.updates</module>
-		<module>features/org.eclipse.rcptt.module.nebula</module>
-		<module>site</module>
-	</modules>
+  <modules>
+    <module>plugins/org.eclipse.rcptt.tesla.nebula</module>
+    <module>plugins/org.eclipse.rcptt.tesla.nebula.impl</module>
+    <module>plugins/org.eclipse.rcptt.tesla.nebula.ecl</module>
+    <module>plugins/org.eclipse.rcptt.tesla.nebula.ecl.impl</module>
+    <module>plugins/org.eclipse.rcptt.tesla.recording.nebula</module>
+    <module>plugins/org.eclipse.rcptt.tesla.recording.nebula.ecl</module>
+    <module>features/org.eclipse.rcptt.module.nebula.runtime</module>
+    <module>runtime-site</module>
+    <module>plugins/org.eclipse.rcptt.module.nebula.updates</module>
+    <module>features/org.eclipse.rcptt.module.nebula</module>
+    <module>site</module>
+  </modules>
 </project>
diff --git a/pom-base-rcpttderived.xml b/pom-base-rcpttderived.xml
deleted file mode 100644
index d38d6b8..0000000
--- a/pom-base-rcpttderived.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-  <groupId>org.eclipse.rcptt</groupId>
-  <artifactId>rcptt-derived-base-pom</artifactId>
-  <version>1.5.1-SNAPSHOT</version>
-  <packaging>pom</packaging>
-  <parent>
-    <groupId>org.eclipse.rcptt</groupId>
-    <artifactId>rcptt-base-pom</artifactId>
-    <version>1.5.1-SNAPSHOT</version>
-    <relativePath>./pom-base.xml</relativePath>
-  </parent>
-  <properties>
-  	<rcpRepository>file:/${user.dir}/repository/rcp/target/repository/</rcpRepository>
-  </properties>
-  <repositories>
-    <repository>
-      <id>rcptt</id>
-      <layout>p2</layout>
-      <url>${rcpRepository}</url>
-    </repository>
-  </repositories>
-</project>
diff --git a/pom-base.xml b/pom-base.xml
deleted file mode 100644
index 9742dfc..0000000
--- a/pom-base.xml
+++ /dev/null
@@ -1,152 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-	<modelVersion>4.0.0</modelVersion>
-	<groupId>org.eclipse.rcptt</groupId>
-	<artifactId>rcptt-base-pom</artifactId>
-	<version>1.5.1-SNAPSHOT</version>
-	<packaging>pom</packaging>
-
-	<properties>
-		<tycho-version>0.19.0</tycho-version>
-		<tycho-groupid>org.eclipse.tycho</tycho-groupid>
-		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-		<aspectj_version>1.4</aspectj_version>
-		<aspectj_dep>1.7.0</aspectj_dep>
-		<indigoRepository>http://download.eclipse.org/releases/indigo/</indigoRepository>
-		<ajdt37repository>http://download.eclipse.org/tools/ajdt/37/update</ajdt37repository>
-	</properties>
-
-	<repositories>
-		<repository>
-			<id>indigo</id>
-			<layout>p2</layout>
-			<url>${indigoRepository}</url>
-		</repository>
-		<repository>
-			<id>ajdt37</id>
-			<layout>p2</layout>
-			<snapshots>
-				<updatePolicy>always</updatePolicy>
-			</snapshots>
-			<url>${ajdt37repository}</url>
-		</repository>
-
-	</repositories>
-
-	<distributionManagement>
-		<repository>
-			<id>xored</id>
-			<name>Xored Maven repository</name>
-			<url>http://maven.xored.com/nexus/content/repositories/q7-releases/</url>
-		</repository>
-		<snapshotRepository>
-			<id>xored</id>
-			<name>Xored Maven repository</name>
-			<url>http://maven.xored.com/nexus/content/repositories/q7-snapshots/</url>
-		</snapshotRepository>
-	</distributionManagement>
-
-	<pluginRepositories>
-		<pluginRepository>
-			<snapshots>
-				<updatePolicy>always</updatePolicy>
-			</snapshots>
-			<id>maven</id>
-			<name>Xored Maven repository</name>
-			<url>http://repo.maven.apache.org</url>
-		</pluginRepository>
-		<pluginRepository>
-			<snapshots>
-				<updatePolicy>always</updatePolicy>
-			</snapshots>
-			<id>xored</id>
-			<name>Xored Maven repository</name>
-			<url>http://maven.xored.com/nexus/content/repositories/snapshots/</url>
-		</pluginRepository>
-	</pluginRepositories>
-
-	<build>
-		<plugins>
-			<plugin>
-				<groupId>org.apache.maven.plugins</groupId>
-				<artifactId>maven-compiler-plugin</artifactId>
-				<version>3.0</version>
-				<configuration>
-					<source>1.6</source>
-					<target>1.6</target>
-				</configuration>
-			</plugin>
-			<plugin>
-				<groupId>${tycho-groupid}</groupId>
-				<artifactId>target-platform-configuration</artifactId>
-				<version>${tycho-version}</version>
-				<configuration>
-					<resolver>p2</resolver>
-					<!--ignoreTychoRepositories>true</ignoreTychoRepositories -->
-					<environments>
-						<environment>
-							<os>win32</os>
-							<ws>win32</ws>
-							<arch>x86</arch>
-						</environment>
-						<environment>
-							<os>win32</os>
-							<ws>win32</ws>
-							<arch>x86_64</arch>
-						</environment>
-						<environment>
-							<os>linux</os>
-							<ws>gtk</ws>
-							<arch>x86</arch>
-						</environment>
-						<environment>
-							<os>linux</os>
-							<ws>gtk</ws>
-							<arch>x86_64</arch>
-						</environment>
-						<environment>
-							<os>macosx</os>
-							<ws>cocoa</ws>
-							<arch>x86</arch>
-						</environment>
-						<environment>
-							<os>macosx</os>
-							<ws>cocoa</ws>
-							<arch>x86_64</arch>
-						</environment>
-					</environments>
-				</configuration>
-			</plugin>
-			<plugin>
-				<groupId>${tycho-groupid}</groupId>
-				<artifactId>tycho-maven-plugin</artifactId>
-				<version>${tycho-version}</version>
-				<extensions>true</extensions>
-			</plugin>
-			<plugin>
-				<groupId>org.codehaus.mojo</groupId>
-				<artifactId>build-helper-maven-plugin</artifactId>
-				<version>1.8</version>
-				<executions>
-					<execution>
-						<id>remove-old-installations</id>
-						<goals>
-							<goal>remove-project-artifact</goal>
-						</goals>
-						<configuration>
-							<removeAll>true</removeAll>
-						</configuration>
-					</execution>
-				</executions>
-			</plugin>
-			<plugin>
-				<artifactId>maven-deploy-plugin</artifactId>
-				<version>2.5</version>
-				<configuration>
-					<skip>true</skip>
-				</configuration>
-			</plugin>
-		</plugins>
-	</build>
-</project>
diff --git a/pom.xml b/pom.xml
deleted file mode 100644
index 7b4bf8d..0000000
--- a/pom.xml
+++ /dev/null
@@ -1,169 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-	 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-  <groupId>org.eclipse.rcptt</groupId>
-  <artifactId>rcptt</artifactId>
-  <version>1.5.1-SNAPSHOT</version>
-  <packaging>pom</packaging>
-
-  <parent>
-    <groupId>org.eclipse.rcptt</groupId>
-    <artifactId>rcptt-base-pom</artifactId>
-    <version>1.5.1-SNAPSHOT</version>
-    <relativePath>./pom-base.xml</relativePath>
-  </parent>
-  <properties>
-    <coreRepository>file:/${user.dir}/repository/core/target/repository</coreRepository>
-    <rcpRepository>file:/${user.dir}/repository/rcp/target/repository</rcpRepository>
-    <junoRepository>http://download.eclipse.org/releases/juno/</junoRepository>
-    <eclRepository>file:/${user.dir}/ecl/releng/org.eclipse.rcptt.ecl.core-updatesite/target/site</eclRepository>
-    <e3xRepository>file:/${user.dir}/repository/e3x/target/repository</e3xRepository>
-    <e4xRepository>file:/${user.dir}/repository/e4x/target/repository</e4xRepository>
-  </properties>
-
-  <build>
-    <pluginManagement>
-      <plugins>
-	<plugin>
-          <groupId>org.eclipse.tycho</groupId>
-          <artifactId>tycho-packaging-plugin</artifactId>
-          <version>${tycho-version}</version>
-          <dependencies>
-            <dependency>
-              <groupId>org.eclipse.tycho.extras</groupId>
-              <artifactId>tycho-buildtimestamp-jgit</artifactId>
-              <version>${tycho-version}</version>
-            </dependency>
-          </dependencies>
-          <configuration>
-            <timestampProvider>jgit</timestampProvider>
-            <jgit.ignore>pom.xml</jgit.ignore>
-          </configuration>
-	</plugin>
-      </plugins>
-    </pluginManagement>
-  </build>
-
-  <profiles>
-    <profile>
-      <id>rcptt_core</id>
-      <modules>
-	<module>watson</module>
-	<module>core</module>
-	<module>launching</module>
-	<module>tests</module>
-	<module>repository/core</module>
-      </modules>
-      <repositories>
-        <repository>
-          <snapshots>
-            <updatePolicy>always</updatePolicy>
-          </snapshots>
-          <id>ecl</id>
-          <layout>p2</layout>
-          <url>${eclRepository}</url>
-        </repository>
-      </repositories>
-
-    </profile>
-    <profile>
-      <id>runtime_e3x</id>
-      <modules>
-	<module>runtime</module>
-	<module>repository/e3x</module>
-      </modules>
-      <repositories>
-	<repository>
-	  <id>core_repository</id>
-	  <layout>p2</layout>
-	  <snapshots>
-	    <updatePolicy>always</updatePolicy>
-	  </snapshots>
-	  <url>${coreRepository}</url>
-	</repository>
-      </repositories>
-    </profile>
-    <profile>
-      <id>runtime_e4x</id>
-      <modules>
-	<module>runtime</module>
-	<module>repository/e4x</module>
-      </modules>
-      <repositories>
-	<repository>
-	  <id>core_repository</id>
-	  <layout>p2</layout>
-	  <snapshots>
-	    <updatePolicy>always</updatePolicy>
-	  </snapshots>
-	  <url>${coreRepository}</url>
-	</repository>
-	<repository>
-	  <id>juno</id>
-	  <layout>p2</layout>
-	  <snapshots>
-	    <updatePolicy>always</updatePolicy>
-	  </snapshots>
-	  <url>${junoRepository}</url>
-	</repository>
-      </repositories>
-    </profile>
-    <profile>
-      <id>rcp</id>
-      <modules>
-	<module>rcp</module>
-	<module>testing</module>
-	<module>repository/rcp</module>
-      </modules>
-      <repositories>
-	<repository>
-	  <id>core_repository</id>
-	  <layout>p2</layout>
-	  <snapshots>
-	    <updatePolicy>always</updatePolicy>
-	  </snapshots>
-	  <url>${coreRepository}</url>
-	</repository>
-      </repositories>
-    </profile>
-    <profile>
-      <id>full</id>
-      <modules>
-        <module>runtime/updates</module>
-        <module>repository/updates</module>
-	<module>repository/full</module>
-      </modules>
-      <repositories>
-	<repository>
-	  <id>e3x</id>
-	  <layout>p2</layout>
-	  <url>${e3xRepository}</url>
-	</repository>
-	<repository>
-	  <id>e4x</id>
-	  <layout>p2</layout>
-	  <url>${e4xRepository}</url>
-	</repository>
-	<repository>
-	  <id>rcp</id>
-	  <layout>p2</layout>
-	  <url>${rcpRepository}</url>
-	</repository>
-	<repository>
-	  <id>nebula</id>
-	  <layout>p2</layout>
-	  <url>file:/${user.dir}/modules/nebula/site/target/site/</url>
-	</repository>
-      </repositories>
-    </profile>
-  </profiles>
-
-  <repositories>
-    <repository>
-      <id>orbit</id>
-      <layout>p2</layout>
-      <url>http://download.eclipse.org/tools/orbit/downloads/drops/R20140114142710/repository/</url>
-    </repository>
-  </repositories>
-</project>
diff --git a/rcp/pom.xml b/rcp/pom.xml
index 46d13a8..7256547 100644
--- a/rcp/pom.xml
+++ b/rcp/pom.xml
@@ -1,33 +1,34 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-	<modelVersion>4.0.0</modelVersion>
-	<parent>
-		<artifactId>rcptt</artifactId>
-		<groupId>org.eclipse.rcptt</groupId>
-		<version>1.5.1-SNAPSHOT</version>
-	</parent>
-	<modules>
-		<module>org.eclipse.rcptt</module>
-		<module>org.eclipse.rcptt.platform-feature</module>
-		<module>org.eclipse.rcptt.help</module>
-		<module>../launching/org.eclipse.rcptt.launching.multiaut.ui</module>
-		<module>org.eclipse.rcptt.launching.ext.ui</module>
-		<module>org.eclipse.rcptt.launching.remote.ui</module>
-		<module>org.eclipse.rcptt.launching.configuration</module>
-		<module>org.eclipse.rcptt.expandbar.ide</module>
-		<module>org.eclipse.rcptt.platform</module>
-		<module>org.eclipse.rcptt.search</module>
-		<module>org.eclipse.rcptt.ui</module>
-		<module>org.eclipse.rcptt.ui.activities</module>
-		<module>org.eclipse.rcptt.ui.report</module>		
-		<!-- CONTEXT PLUGINS -->
-		<module>contexts</module>
-		<!-- VERIFICATIONS -->
-		<module>verifications</module>
-	</modules>
-	<groupId>org.eclipse.rcptt</groupId>
-	<version>1.5.1-SNAPSHOT</version>
-	<artifactId>rcptt.rcp</artifactId>
-	<packaging>pom</packaging>
+	 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <artifactId>ide</artifactId>
+    <groupId>org.eclipse.rcptt</groupId>
+    <version>1.5.1-SNAPSHOT</version>
+    <relativePath>../releng/ide/pom.xml</relativePath>
+  </parent>
+  <modules>
+    <module>org.eclipse.rcptt</module>
+    <module>org.eclipse.rcptt.platform-feature</module>
+    <module>org.eclipse.rcptt.help</module>
+    <module>../launching/org.eclipse.rcptt.launching.multiaut.ui</module>
+    <module>org.eclipse.rcptt.launching.ext.ui</module>
+    <module>org.eclipse.rcptt.launching.remote.ui</module>
+    <module>org.eclipse.rcptt.launching.configuration</module>
+    <module>org.eclipse.rcptt.expandbar.ide</module>
+    <module>org.eclipse.rcptt.platform</module>
+    <module>org.eclipse.rcptt.search</module>
+    <module>org.eclipse.rcptt.ui</module>
+    <module>org.eclipse.rcptt.ui.activities</module>
+    <module>org.eclipse.rcptt.ui.report</module>		
+    <!-- CONTEXT PLUGINS -->
+    <module>contexts</module>
+    <!-- VERIFICATIONS -->
+    <module>verifications</module>
+  </modules>
+  <groupId>org.eclipse.rcptt</groupId>
+  <version>1.5.1-SNAPSHOT</version>
+  <artifactId>rcptt.rcp</artifactId>
+  <packaging>pom</packaging>
 </project>
diff --git a/releng/README.org b/releng/README.org
new file mode 100644
index 0000000..2983232
--- /dev/null
+++ b/releng/README.org
@@ -0,0 +1,29 @@
+#+OPTIONS:   num:nil toc:nil author:nil email:nil creator:nil timestamp:nil
+#+BIND: org-html-validation-link nil
+#+TITLE: 
+
+** About
+   Set of shell scripts to be executed on http://hudson.eclipse.org/rcptt to publish nightly and release builds to rcptt download area. Layout suggested below is not final, but we need something to begin with.
+
+** Nightly builds
+   #+BEGIN_SRC fundamental
+     # RCPs:
+     /nightly/1.5.1/{qualifier}/ide/rcptt.ide-1.5.1-N{qualifier}-{platform}.zip
+
+     # Main repo & runtime repos
+     /nightly/1.5.1/{qualifier}/repository/
+     /nightly/1.5.1/{qualifier}/runtime3x/
+     /nightly/1.5.1/{qualifier}/runtime4x/
+
+     # Latest (just a copy with minor change in ide file (to ensure url is the same))
+     /nightly/1.5.1/latest/ide/rcptt.ide-1.5.1-nightly-{platform}.zip
+     /nightly/1.5.1/latest/repository/
+     /nightly/1.5.1/latest/runtime3x/
+     /nightly/1.5.1/latest/runtime4x/
+   #+END_SRC
+
+   So if at some point we are going to have more than one version in active development, we can easily distinguish between different streams
+
+** Release builds
+   
+   To be described
diff --git a/releng/core/pom.xml b/releng/core/pom.xml
new file mode 100644
index 0000000..834929c
--- /dev/null
+++ b/releng/core/pom.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project
+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
+    xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>org.eclipse.rcptt</groupId>
+  <artifactId>core</artifactId>
+  <version>1.5.1-SNAPSHOT</version>
+  <packaging>pom</packaging>
+
+  <parent>
+    <groupId>org.eclipse.rcptt</groupId>
+    <artifactId>rcptt-parent</artifactId>
+    <version>1.5.1-SNAPSHOT</version>
+  </parent>
+  
+  <modules>
+    <module>../ecl</module>
+    <module>../../watson</module>
+    <module>../../core</module>
+    <module>../../tests</module>
+    <module>../../repository/core</module>
+  </modules>
+
+  <repositories>
+    <repository>
+      <id>helios</id>
+      <layout>p2</layout>
+      <url>${heliosRepository}</url>
+    </repository>
+    <repository>
+      <id>orbit</id>
+      <layout>p2</layout>
+      <url>http://download.eclipse.org/tools/orbit/downloads/drops/R20140114142710/repository/</url>
+    </repository>
+    <repository>
+      <id>ajdt37</id>
+      <layout>p2</layout>
+      <url>${ajdt37repository}</url>
+    </repository>
+  </repositories>
+</project>
diff --git a/releng/ecl/pom.xml b/releng/ecl/pom.xml
new file mode 100644
index 0000000..8ac8612
--- /dev/null
+++ b/releng/ecl/pom.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project
+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
+    xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>org.eclipse.rcptt</groupId>
+  <artifactId>ecl</artifactId>
+  <version>1.5.1-SNAPSHOT</version>
+  <packaging>pom</packaging>
+
+  <parent>
+    <groupId>org.eclipse.rcptt</groupId>
+    <artifactId>rcptt-parent</artifactId>
+    <version>1.5.1-SNAPSHOT</version>
+  </parent>
+  
+  <modules>
+    <module>../../ecl/plugins</module>
+    <module>../../ecl/features</module>
+    <module>../../ecl/tests</module>
+    <module>../../ecl/examples</module>
+    <module>../../ecl/repository</module>
+  </modules>
+
+  <repositories>
+    <repository>
+      <id>helios</id>
+      <layout>p2</layout>
+      <url>${heliosRepository}</url>
+    </repository>
+    <repository>
+      <id>orbit</id>
+      <layout>p2</layout>
+      <url>http://download.eclipse.org/tools/orbit/downloads/drops/R20140114142710/repository/</url>
+    </repository>
+  </repositories>
+</project>
diff --git a/releng/ide/pom.xml b/releng/ide/pom.xml
new file mode 100644
index 0000000..ee1d0a2
--- /dev/null
+++ b/releng/ide/pom.xml
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project
+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
+    xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>org.eclipse.rcptt</groupId>
+  <artifactId>ide</artifactId>
+  <version>1.5.1-SNAPSHOT</version>
+  <packaging>pom</packaging>
+
+  <parent>
+    <groupId>org.eclipse.rcptt</groupId>
+    <artifactId>rcptt-parent</artifactId>
+    <version>1.5.1-SNAPSHOT</version>
+  </parent>
+  
+  <modules>
+    <module>../../modules/nebula</module>
+    <module>../../launching</module>
+    <module>../../rcp</module>
+    <module>../../testing</module>
+
+    <module>../../runtime/updates/org.eclipse.rcptt.updates.helios</module>
+    <module>../../runtime/updates/org.eclipse.rcptt.updates.kepler</module>
+    <module>../../runtime/updates/org.eclipse.rcptt.updates-feature</module>
+    <module>../../runtime/updates/org.eclipse.rcptt.updates.aspectj.e3x</module>
+    <module>../../runtime/updates/org.eclipse.rcptt.updates.aspectj.e38x</module>
+    <module>../../runtime/updates/org.eclipse.rcptt.updates.aspectj.e44x</module>
+    <module>../../repository/full</module>
+  </modules>
+
+  <properties>
+    <e3xRepository>file:/${user.dir}/repository/e3x/target/repository</e3xRepository>
+    <e4xRepository>file:/${user.dir}/repository/e4x/target/repository</e4xRepository>
+    <coreRepository>file:/${user.dir}/repository/core/target/repository</coreRepository>    
+  </properties>
+  
+  <repositories>
+    <repository>
+      <id>indigo</id>
+      <layout>p2</layout>
+      <url>${indigoRepository}</url>
+    </repository>
+    <repository>
+      <id>orbit</id>
+      <layout>p2</layout>
+      <url>http://download.eclipse.org/tools/orbit/downloads/drops/R20140114142710/repository/</url>
+    </repository>
+    <repository>
+      <id>core</id>
+      <layout>p2</layout>
+      <url>${coreRepository}</url>
+    </repository>
+    <repository>
+      <snapshots>
+	<updatePolicy>always</updatePolicy>
+      </snapshots>
+      <id>e3x-ide</id>
+      <layout>p2</layout>
+      <url>${e3xRepository}</url>
+    </repository>
+    <repository>
+      <snapshots>
+	<updatePolicy>always</updatePolicy>
+      </snapshots>
+      <id>e4x-ide</id>
+      <layout>p2</layout>
+      <url>${e4xRepository}</url>
+    </repository>
+  </repositories>
+</project>
diff --git a/releng/pom.xml b/releng/pom.xml
new file mode 100644
index 0000000..1a29504
--- /dev/null
+++ b/releng/pom.xml
@@ -0,0 +1,99 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project
+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
+    xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>org.eclipse.rcptt</groupId>
+  <artifactId>rcptt-parent</artifactId>
+  <version>1.5.1-SNAPSHOT</version>
+  <packaging>pom</packaging>
+
+  <properties>
+    <tycho-version>0.20.0</tycho-version>
+    <tycho-groupid>org.eclipse.tycho</tycho-groupid>
+    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    <aspectj_version>1.4</aspectj_version>
+    <aspectj_dep>1.7.0</aspectj_dep>
+    <heliosRepository>http://updates.xored.com/helios/</heliosRepository>
+    <indigoRepository>http://updates.xored.com/indigo/</indigoRepository>
+    <junoRepository>http://updates.xored.com/juno/</junoRepository>
+    <ajdt37repository>http://download.eclipse.org/tools/ajdt/37/update</ajdt37repository>    
+  </properties>
+
+  <build>
+    
+    <pluginManagement>
+      <plugins>
+	<plugin>
+          <groupId>org.eclipse.tycho</groupId>
+          <artifactId>tycho-packaging-plugin</artifactId>
+          <version>${tycho-version}</version>
+          <dependencies>
+            <dependency>
+              <groupId>org.eclipse.tycho.extras</groupId>
+              <artifactId>tycho-buildtimestamp-jgit</artifactId>
+              <version>${tycho-version}</version>
+            </dependency>
+          </dependencies>
+          <configuration>
+            <timestampProvider>jgit</timestampProvider>
+            <jgit.ignore>pom.xml</jgit.ignore>
+          </configuration>
+	</plugin>
+      </plugins>
+    </pluginManagement>
+    
+    <plugins>
+      <plugin>
+	<groupId>org.apache.maven.plugins</groupId>
+	<artifactId>maven-compiler-plugin</artifactId>
+	<version>3.0</version>
+	<configuration>
+	  <source>1.6</source>
+	  <target>1.6</target>
+	</configuration>
+      </plugin>
+      <plugin>
+	<groupId>${tycho-groupid}</groupId>
+	<artifactId>target-platform-configuration</artifactId>
+	<version>${tycho-version}</version>
+	<configuration>
+	  <resolver>p2</resolver>
+	  <environments>
+	    <environment>
+	      <os>win32</os>
+	      <ws>win32</ws>
+	      <arch>x86</arch>
+	    </environment>
+	    <environment>
+	      <os>win32</os>
+	      <ws>win32</ws>
+	      <arch>x86_64</arch>
+	    </environment>
+	    <environment>
+	      <os>linux</os>
+	      <ws>gtk</ws>
+	      <arch>x86</arch>
+	    </environment>
+	    <environment>
+	      <os>linux</os>
+	      <ws>gtk</ws>
+	      <arch>x86_64</arch>
+	    </environment>
+	    <environment>
+	      <os>macosx</os>
+	      <ws>cocoa</ws>
+	      <arch>x86_64</arch>
+	    </environment>
+	  </environments>
+	</configuration>
+      </plugin>
+      <plugin>
+	<groupId>${tycho-groupid}</groupId>
+	<artifactId>tycho-maven-plugin</artifactId>
+	<version>${tycho-version}</version>
+	<extensions>true</extensions>
+      </plugin>
+    </plugins>
+  </build>
+</project>
diff --git a/releng/publish.sh b/releng/publish.sh
new file mode 100755
index 0000000..7a0ad97
--- /dev/null
+++ b/releng/publish.sh
@@ -0,0 +1,70 @@
+#! /bin/bash
+
+WORKSPACE=${WORKSPACE:-$PWD}
+# qualifier and version
+source $WORKSPACE/repository/full/target/publisher.properties
+
+echo "productVersion: $productVersion"
+echo "productQualifier: $productQualifier"
+
+
+downloadsHome=/home/data/httpd/download.eclipse.org/rcptt
+type=nightly
+typeAbbr=N
+
+# where all downloads of this branch reside
+streamDestination=$downloadsHome/$type/$productVersion
+
+buildDestination=$streamDestination/$productQualifier
+echo "stream destination: $streamDestination "
+echo "build destination: $buildDestination "
+
+
+# copying products
+
+productsDir=$WORKSPACE/repository/full/target/products
+productsDestination=$buildDestination/ide
+
+mkdir -p $productsDestination
+cp $productsDir/org.eclipse.rcptt.platform.product-linux.gtk.x86.zip $productsDestination/rcptt.ide-1.5.1-$typeAbbr$productQualifier-linux.gtk.x86.zip
+cp $productsDir/org.eclipse.rcptt.platform.product-linux.gtk.x86_64.zip $productsDestination/rcptt.ide-1.5.1-$typeAbbr$productQualifier-linux.gtk.x86_64.zip
+cp $productsDir/org.eclipse.rcptt.platform.product-macosx.cocoa.x86_64.zip $productsDestination/rcptt.ide-1.5.1-$typeAbbr$productQualifier-macosx.cocoa.x86_64.zip
+cp $productsDir/org.eclipse.rcptt.platform.product-win32.win32.x86.zip $productsDestination/rcptt.ide-1.5.1-$typeAbbr$productQualifier-win32.win32.x86.zip
+cp $productsDir/org.eclipse.rcptt.platform.product-win32.win32.x86_64.zip $productsDestination/rcptt.ide-1.5.1-$typeAbbr$productQualifier-win32.win32.x86_64.zip
+
+# copy full repository
+cp -r $WORKSPACE/repository/full/target/repository $buildDestination
+
+
+# copy runtimes
+cp -r $WORKSPACE/runtime/updates/org.eclipse.rcptt.updates.runtime/q7 $buildDestination/runtime3x
+cp -r $WORKSPACE/runtime/updates/org.eclipse.rcptt.updates.runtime.e4x/q7 $buildDestination/runtime4x
+
+
+# discard old builds
+buildsToKeep=5
+let "tailArg=$buildsToKeep+1"
+
+ls -r $streamDestination | grep -v latest | tail -n +$tailArg | xargs -I {} rm -r $streamDestination/{}
+
+# symlink latest
+
+latest=$streamDestination/latest
+if [ -d "$latest" ]; then
+    rm -r $latest
+fi
+mkdir -p $latest
+
+cp -r $buildDestination/repository $latest/repository
+cp -r $buildDestination/runtime3x $latest/runtime3x
+cp -r $buildDestination/runtime4x $latest/runtime4x
+
+mkdir $latest/ide
+
+cp $productsDestination/rcptt.ide-1.5.1-$typeAbbr$productQualifier-linux.gtk.x86.zip $latest/ide/rcptt.ide-1.5.1-nightly-linux.gtk.x86.zip
+cp $productsDestination/rcptt.ide-1.5.1-$typeAbbr$productQualifier-linux.gtk.x86_64.zip $latest/ide/rcptt.ide-1.5.1-nightly-linux.gtk.x86_64.zip
+cp $productsDestination/rcptt.ide-1.5.1-$typeAbbr$productQualifier-macosx.cocoa.x86_64.zip $latest/ide/rcptt.ide-1.5.1-nightly-macosx.cocoa.x86_64.zip
+cp $productsDestination/rcptt.ide-1.5.1-$typeAbbr$productQualifier-win32.win32.x86.zip $latest/ide/rcptt.ide-1.5.1-nightly-win32.win32.x86.zip
+cp $productsDestination/rcptt.ide-1.5.1-$typeAbbr$productQualifier-win32.win32.x86_64.zip $latest/ide/rcptt.ide-1.5.1-nightly-win32.win32.x86_64.zip
+
+
diff --git a/releng/runtime/pom.xml b/releng/runtime/pom.xml
new file mode 100644
index 0000000..3bdc364
--- /dev/null
+++ b/releng/runtime/pom.xml
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project
+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
+    xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>org.eclipse.rcptt</groupId>
+  <artifactId>runtime</artifactId>
+  <version>1.5.1-SNAPSHOT</version>
+  <packaging>pom</packaging>
+
+  <parent>
+    <groupId>org.eclipse.rcptt</groupId>
+    <artifactId>rcptt-parent</artifactId>
+    <version>1.5.1-SNAPSHOT</version>
+  </parent>
+
+  <properties>
+    <coreRepository>file:/${user.dir}/repository/core/target/repository</coreRepository>
+  </properties>
+
+  <repositories>
+    <repository>
+      <id>rcptt-core</id>
+      <layout>p2</layout>
+      <snapshots>
+	<updatePolicy>always</updatePolicy>
+      </snapshots>
+      <url>${coreRepository}</url>
+    </repository>
+    <repository>
+      <id>ajdt37</id>
+      <layout>p2</layout>
+      <url>${ajdt37repository}</url>
+    </repository>
+  </repositories>
+
+  <modules>
+    <module>../../runtime</module>
+  </modules>
+
+  <profiles>
+    <profile>
+      <id>runtime3x</id>
+      <modules>
+	<module>../../repository/e3x</module>
+      </modules>
+
+      <repositories>
+	<repository>
+	  <id>helios</id>
+	  <layout>p2</layout>
+	  <url>${heliosRepository}</url>
+	</repository>
+      </repositories>
+    </profile>
+    
+    <profile>
+      <id>runtime4x</id>
+      <modules>
+	<module>../../repository/e4x</module>
+      </modules>
+
+      <repositories>
+	<repository>
+	  <id>juno</id>
+	  <layout>p2</layout>
+	  <url>${junoRepository}</url>
+	</repository>
+      </repositories>
+    </profile>    
+  </profiles>
+</project>
diff --git a/repository/core/category.xml b/repository/core/category.xml
index 169a9ed..c2eb4a4 100644
--- a/repository/core/category.xml
+++ b/repository/core/category.xml
@@ -7,8 +7,6 @@
 	<feature id="org.eclipse.rcptt.tesla.ecl" />
 	<feature id="org.eclipse.rcptt.tesla" />
 	<feature id="org.eclipse.rcptt.core" />
-	<!-- Launching feature -->
-	<feature id="org.eclipse.rcptt.launching" />
 	<!-- ECL Stuff -->
 	<feature id="org.eclipse.rcptt.ecl.server" />
 	<feature id="org.eclipse.rcptt.ecl.core" />
diff --git a/repository/core/pom.xml b/repository/core/pom.xml
index 36b2c89..19ea343 100644
--- a/repository/core/pom.xml
+++ b/repository/core/pom.xml
@@ -2,11 +2,11 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
-	<artifactId>repositories</artifactId>
-	<groupId>org.eclipse.rcptt.repositories</groupId>
+	<artifactId>core</artifactId>
+	<groupId>org.eclipse.rcptt</groupId>
 	<version>1.5.1-SNAPSHOT</version>
-	<relativePath>../pom.xml</relativePath>
+	<relativePath>../../releng/core/pom.xml</relativePath>
   </parent>
-  <artifactId>core</artifactId>
+  <artifactId>core-repository</artifactId>
   <packaging>eclipse-repository</packaging>
 </project>
diff --git a/repository/e3x/pom.xml b/repository/e3x/pom.xml
index 073847c..e2c6b9c 100644
--- a/repository/e3x/pom.xml
+++ b/repository/e3x/pom.xml
@@ -2,10 +2,10 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
-	<artifactId>repositories</artifactId>
-	<groupId>org.eclipse.rcptt.repositories</groupId>
-	<version>1.5.1-SNAPSHOT</version>
-	<relativePath>../pom.xml</relativePath>
+    <artifactId>runtime</artifactId>
+    <groupId>org.eclipse.rcptt</groupId>
+    <version>1.5.1-SNAPSHOT</version>
+    <relativePath>../../releng/runtime/pom.xml</relativePath>
   </parent>
   <artifactId>e3x</artifactId>
   <packaging>eclipse-repository</packaging>
diff --git a/repository/e4x/pom.xml b/repository/e4x/pom.xml
index 740cbe1..92885a2 100644
--- a/repository/e4x/pom.xml
+++ b/repository/e4x/pom.xml
@@ -2,10 +2,10 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
-	<artifactId>repositories</artifactId>
-	<groupId>org.eclipse.rcptt.repositories</groupId>
-	<version>1.5.1-SNAPSHOT</version>
-	<relativePath>../pom.xml</relativePath>
+    <artifactId>runtime</artifactId>
+    <groupId>org.eclipse.rcptt</groupId>
+    <version>1.5.1-SNAPSHOT</version>
+    <relativePath>../../releng/runtime/pom.xml</relativePath>
   </parent>
   <artifactId>e4x</artifactId>
   <packaging>eclipse-repository</packaging>
diff --git a/repository/full/pom.xml b/repository/full/pom.xml
index 724d04b..deb5d75 100644
--- a/repository/full/pom.xml
+++ b/repository/full/pom.xml
@@ -1,102 +1,129 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-	     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+	 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <artifactId>full</artifactId>
   <packaging>eclipse-repository</packaging>
   <parent>
-	<artifactId>repositories</artifactId>
-	<groupId>org.eclipse.rcptt.repositories</groupId>
-	<version>1.5.1-SNAPSHOT</version>
+    <artifactId>ide</artifactId>
+    <groupId>org.eclipse.rcptt</groupId>
+    <version>1.5.1-SNAPSHOT</version>
+    <relativePath>../../releng/ide/pom.xml</relativePath>
   </parent>
 
   <build>
-	<plugins>
-	  <plugin>
-		<groupId>${tycho-groupid}</groupId>
-		<artifactId>tycho-p2-director-plugin</artifactId>
-		<version>${tycho-version}</version>
-		<executions>
-		  <execution>
-			<id>materialize-products</id>
-			<phase>package</phase>
-			<goals>
-			  <goal>materialize-products</goal>
-			</goals>
-		  </execution>
-		  <execution>
-			<id>archive-products</id>
-			<phase>verify</phase>
-			<goals>
-			  <goal>archive-products</goal>
-			</goals>
-		  </execution>
-		</executions>
-		<configuration>
-		  <products>
-			<product>
-			  <id>org.eclipse.rcptt.platform.product</id>
-			  <rootFolder>rcptt</rootFolder>
-			</product>
-		  </products>
-		</configuration>
-	  </plugin>
-	  <plugin>
-		<groupId>com.xored.tycho</groupId>
-		<artifactId>eclipse-ini-patcher</artifactId>
-		<version>0.0.3-SNAPSHOT</version>
-		<executions>
-		  <execution>
-			<id>materialize-products</id>
-			<phase>package</phase>
-			<goals>
-			  <goal>patch-ini-file</goal>
-			</goals>
-		  </execution>
-		</executions>
-	  </plugin>
+    <resources>
+      <resource>
+        <directory>.</directory>
+        <filtering>true</filtering>
+        <includes>
+          <include>publisher.properties</include>
+        </includes>
+      </resource>
+    </resources>
 
-	  <plugin>
-		<groupId>${tycho-groupid}</groupId>
-		<artifactId>target-platform-configuration</artifactId>
-		<version>${tycho-version}</version>
-		<configuration>
-		  <resolver>p2</resolver>
-		  <!--ignoreTychoRepositories>true</ignoreTychoRepositories -->
-		  <environments>
-			<environment>
-			  <os>macosx</os>
-			  <ws>cocoa</ws>
-			  <arch>x86_64</arch>
-			</environment>
-			<environment>
-			  <os>macosx</os>
-			  <ws>cocoa</ws>
-			  <arch>x86</arch>
-			</environment>
-			<environment>
-			  <os>win32</os>
-			  <ws>win32</ws>
-			  <arch>x86</arch>
-			</environment>
-			<environment>
-			  <os>win32</os>
-			  <ws>win32</ws>
-			  <arch>x86_64</arch>
-			</environment>
-			<environment>
-			  <os>linux</os>
-			  <ws>gtk</ws>
-			  <arch>x86</arch>
-			</environment>
-			<environment>
-			  <os>linux</os>
-			  <ws>gtk</ws>
-			  <arch>x86_64</arch>
-			</environment>
-		  </environments>
-		</configuration>
-	  </plugin>
-	</plugins>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-resources-plugin</artifactId>
+	<version>2.4.3</version>
+        <executions>
+          <execution>
+            <phase>verify</phase>
+            <goals>
+              <goal>resources</goal>
+            </goals>
+          </execution>
+        </executions>
+        <configuration>
+          <outputDirectory>${project.build.directory}</outputDirectory>
+        </configuration>
+      </plugin>
+      <plugin>
+	<groupId>${tycho-groupid}</groupId>
+	<artifactId>tycho-p2-director-plugin</artifactId>
+	<version>${tycho-version}</version>
+	<executions>
+	  <execution>
+	    <id>materialize-products</id>
+	    <phase>package</phase>
+	    <goals>
+	      <goal>materialize-products</goal>
+	    </goals>
+	  </execution>
+	  <execution>
+	    <id>archive-products</id>
+	    <phase>verify</phase>
+	    <goals>
+	      <goal>archive-products</goal>
+	    </goals>
+	  </execution>
+	</executions>
+	<configuration>
+	  <products>
+	    <product>
+	      <id>org.eclipse.rcptt.platform.product</id>
+	      <rootFolder>rcptt</rootFolder>
+	    </product>
+	  </products>
+	</configuration>
+      </plugin>
+      <plugin>
+	<groupId>com.xored.tycho</groupId>
+	<artifactId>eclipse-ini-patcher</artifactId>
+	<version>0.0.3-SNAPSHOT</version>
+	<executions>
+	  <execution>
+	    <id>materialize-products</id>
+	    <phase>package</phase>
+	    <goals>
+	      <goal>patch-ini-file</goal>
+	    </goals>
+	  </execution>
+	</executions>
+      </plugin>
+
+      <plugin>
+	<groupId>${tycho-groupid}</groupId>
+	<artifactId>target-platform-configuration</artifactId>
+	<version>${tycho-version}</version>
+	<configuration>
+	  <resolver>p2</resolver>
+	  <!--ignoreTychoRepositories>true</ignoreTychoRepositories -->
+	  <environments>
+	    <environment>
+	      <os>macosx</os>
+	      <ws>cocoa</ws>
+	      <arch>x86</arch>
+	    </environment>
+	    <environment>
+	      <os>macosx</os>
+	      <ws>cocoa</ws>
+	      <arch>x86_64</arch>
+	    </environment>
+	    <environment>
+	      <os>win32</os>
+	      <ws>win32</ws>
+	      <arch>x86</arch>
+	    </environment>
+	    <environment>
+	      <os>win32</os>
+	      <ws>win32</ws>
+	      <arch>x86_64</arch>
+	    </environment>
+	    <environment>
+	      <os>linux</os>
+	      <ws>gtk</ws>
+	      <arch>x86</arch>
+	    </environment>
+	    <environment>
+	      <os>linux</os>
+	      <ws>gtk</ws>
+	      <arch>x86_64</arch>
+	    </environment>
+	  </environments>
+	</configuration>
+      </plugin>
+    </plugins>
   </build>
 </project>
diff --git a/repository/full/publisher.properties b/repository/full/publisher.properties
new file mode 100644
index 0000000..4f90390
--- /dev/null
+++ b/repository/full/publisher.properties
@@ -0,0 +1,2 @@
+productVersion=${unqualifiedVersion}
+productQualifier=${buildQualifier}
diff --git a/runtime/contexts/org.eclipse.rcptt.ctx.debug.impl/src/org/eclipse/rcptt/debug/runtime/DebugContextProcessor.java b/runtime/contexts/org.eclipse.rcptt.ctx.debug.impl/src/org/eclipse/rcptt/debug/runtime/DebugContextProcessor.java
index c4686ba..cc59bfc 100644
--- a/runtime/contexts/org.eclipse.rcptt.ctx.debug.impl/src/org/eclipse/rcptt/debug/runtime/DebugContextProcessor.java
+++ b/runtime/contexts/org.eclipse.rcptt.ctx.debug.impl/src/org/eclipse/rcptt/debug/runtime/DebugContextProcessor.java
@@ -17,6 +17,7 @@
 import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
+import java.util.Map.Entry;
 import java.util.Set;
 import java.util.regex.Pattern;
 
@@ -46,14 +47,6 @@
 import org.eclipse.emf.common.util.EList;
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.emf.ecore.util.EcoreUtil.EqualityHelper;
-import org.eclipse.rcptt.ecl.runtime.BoxedValues;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.graphics.ImageData;
-import org.eclipse.swt.graphics.ImageLoader;
-import org.eclipse.ui.IWorkingSet;
-import org.eclipse.ui.IWorkingSetManager;
-import org.eclipse.ui.PlatformUI;
 import org.eclipse.rcptt.core.IContextProcessor;
 import org.eclipse.rcptt.core.scenario.Context;
 import org.eclipse.rcptt.core.scenario.NamedElement;
@@ -68,10 +61,18 @@
 import org.eclipse.rcptt.debug.MapValue;
 import org.eclipse.rcptt.debug.PrimitiveValue;
 import org.eclipse.rcptt.debug.SetValue;
+import org.eclipse.rcptt.ecl.runtime.BoxedValues;
 import org.eclipse.rcptt.internal.core.RcpttPlugin;
 import org.eclipse.rcptt.internal.runtime.ui.UIRunnable;
 import org.eclipse.rcptt.tesla.core.TeslaLimits;
 import org.eclipse.rcptt.tesla.internal.ui.player.UIJobCollector;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.graphics.ImageData;
+import org.eclipse.swt.graphics.ImageLoader;
+import org.eclipse.ui.IWorkingSet;
+import org.eclipse.ui.IWorkingSetManager;
+import org.eclipse.ui.PlatformUI;
 
 public class DebugContextProcessor implements IContextProcessor {
 
@@ -285,13 +286,14 @@
 					.getLaunchManager()
 					.getLaunchConfigurationType(modelType.getId());
 			if (type == null)
-				throw new CoreException(createError("Launch configuration type " + modelType.getId() + " is not installed."));
+				throw new CoreException(createError("Launch configuration type " + modelType.getId()
+						+ " is not installed."));
 			for (LaunchConfiguration configuration : modelType
 					.getConfigurations())
 				applyLaunchConfiguration(type, configuration);
 		}
 	}
-	
+
 	private IStatus createError(String message) {
 		return new Status(IStatus.ERROR, Q7DebugRuntime.PLUGIN_ID, message);
 	}
@@ -555,9 +557,9 @@
 
 	private void applyLaunchConfiguration(ILaunchConfigurationType type,
 			LaunchConfiguration launch) throws CoreException {
-		if (type == null) 
+		if (type == null)
 			throw new NullPointerException("Null type");
-		if (launch == null) 
+		if (launch == null)
 			throw new NullPointerException("Null launch");
 		ILaunchManager manager = getLaunchManager();
 		if (launch.getName() == null)
@@ -587,7 +589,10 @@
 		rv.setRegistered(breakpoint.isRegistered());
 		rv.setPersisted(breakpoint.isPersisted());
 		rv.setType(marker.getType());
-		for (Map.Entry<String, Object> e : marker.getAttributes().entrySet()) {
+		// core.resources in Helios uses raw map for attributes
+		for (Object entry : marker.getAttributes().entrySet()) {
+			@SuppressWarnings("unchecked")
+			Entry<String, Object> e = (Entry<String, Object>) entry;
 			String key = e.getKey();
 			Object value = e.getValue();
 			rv.getAttributes().add(box(key, value));
diff --git a/runtime/pom.xml b/runtime/pom.xml
index 0a1a5ec..e7bf615 100644
--- a/runtime/pom.xml
+++ b/runtime/pom.xml
@@ -1,52 +1,67 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-	<modelVersion>4.0.0</modelVersion>
-	<parent>
-		<artifactId>rcptt</artifactId>
-		<groupId>org.eclipse.rcptt</groupId>
-		<version>1.5.1-SNAPSHOT</version>
-	</parent>
-	<profiles>
-		<profile>
-			<id>runtime_e3x</id>
-			<modules>
-				<module>tesla</module>
-				<module>ecl</module>
-				<module>org.eclipse.rcptt.runtime.ui</module>
-				<module>org.eclipse.rcptt.core.ecl.debug</module>
-				<module>contexts</module>
-				<module>verifications</module>
-				<module>org.eclipse.rcptt.runtime-feature</module>
-				<module>org.eclipse.rcptt.runtime-updatesite</module>
-				<module>updates</module>
-				<module>org.eclipse.rcptt.expandbar.runtime</module>
-			</modules>
-		</profile>
-		<profile>
-			<id>runtime_e4x</id>
-			<modules>
-				<module>tesla</module>
-				<module>ecl</module>
-				<module>org.eclipse.rcptt.runtime.ui</module>
-				<module>org.eclipse.rcptt.core.ecl.debug</module>
-				<module>contexts</module>
-				<module>verifications</module>
-				<module>org.eclipse.rcptt.runtime-feature</module>
-				<module>org.eclipse.rcptt.runtime-updatesite</module>
-				<module>updates</module>
-				<module>org.eclipse.rcptt.expandbar.runtime</module>
-			</modules>
-		</profile>
-		<profile>
-			<id>full</id>
-			<modules>
-				<module>updates</module>
-			</modules>
-		</profile>
-	</profiles>
-	<groupId>org.eclipse.rcptt</groupId>
-	<version>1.5.1-SNAPSHOT</version>
-	<artifactId>rcptt.runtime</artifactId>
-	<packaging>pom</packaging>
+	 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <artifactId>runtime</artifactId>
+    <groupId>org.eclipse.rcptt</groupId>
+    <version>1.5.1-SNAPSHOT</version>
+    <relativePath>../releng/runtime/pom.xml</relativePath>
+  </parent>
+  <!-- profiles>
+       <profile>
+       <id>runtime_e3x</id>
+       <modules>
+       <module>tesla</module>
+       <module>ecl</module>
+       <module>org.eclipse.rcptt.runtime.ui</module>
+       <module>org.eclipse.rcptt.core.ecl.debug</module>
+       <module>contexts</module>
+       <module>verifications</module>
+       <module>org.eclipse.rcptt.runtime-feature</module>
+       <module>org.eclipse.rcptt.runtime-updatesite</module>
+       <module>updates</module>
+       <module>org.eclipse.rcptt.expandbar.runtime</module>
+       </modules>
+       </profile>
+       <profile>
+       <id>runtime_e4x</id>
+       <modules>
+       <module>tesla</module>
+       <module>ecl</module>
+       <module>org.eclipse.rcptt.runtime.ui</module>
+       <module>org.eclipse.rcptt.core.ecl.debug</module>
+       <module>contexts</module>
+       <module>verifications</module>
+       <module>org.eclipse.rcptt.runtime-feature</module>
+       <module>org.eclipse.rcptt.runtime-updatesite</module>
+       <module>updates</module>
+       <module>org.eclipse.rcptt.expandbar.runtime</module>
+       </modules>
+       </profile>
+       <profile>
+       <id>full</id>
+       <modules>
+       <module>updates</module>
+       </modules>
+       </profile>
+       </profiles-->
+  <groupId>org.eclipse.rcptt</groupId>
+  <version>1.5.1-SNAPSHOT</version>
+  <artifactId>rcptt.runtime</artifactId>
+  <packaging>pom</packaging>
+
+  <modules>
+    <module>tesla</module>
+    <module>ecl</module>
+    <module>org.eclipse.rcptt.runtime.ui</module>
+    <module>org.eclipse.rcptt.core.ecl.debug</module>
+    <module>contexts</module>
+    <module>verifications</module>
+    <module>org.eclipse.rcptt.runtime-feature</module>
+    <module>org.eclipse.rcptt.runtime-updatesite</module>
+    <module>updates</module>
+    <module>org.eclipse.rcptt.expandbar.runtime</module>
+  </modules>
+
 </project>
diff --git a/runtime/tesla/org.eclipse.rcptt.tesla.recording.swt/src/org/eclipse/rcptt/tesla/recording/core/swt/WidgetDetailsProvider.java b/runtime/tesla/org.eclipse.rcptt.tesla.recording.swt/src/org/eclipse/rcptt/tesla/recording/core/swt/WidgetDetailsProvider.java
index 3bda9b6..b56abdb 100644
--- a/runtime/tesla/org.eclipse.rcptt.tesla.recording.swt/src/org/eclipse/rcptt/tesla/recording/core/swt/WidgetDetailsProvider.java
+++ b/runtime/tesla/org.eclipse.rcptt.tesla.recording.swt/src/org/eclipse/rcptt/tesla/recording/core/swt/WidgetDetailsProvider.java
@@ -21,6 +21,10 @@
 import org.eclipse.jface.viewers.IBaseLabelProvider;
 import org.eclipse.jface.viewers.IContentProvider;
 import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.rcptt.tesla.internal.ui.player.DetailUtils;
+import org.eclipse.rcptt.tesla.internal.ui.player.PlayerTextUtils;
+import org.eclipse.rcptt.tesla.internal.ui.player.SWTUIPlayer;
+import org.eclipse.rcptt.tesla.internal.ui.player.TeslaSWTAccess;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.custom.CCombo;
 import org.eclipse.swt.custom.CLabel;
@@ -44,11 +48,6 @@
 import org.eclipse.swt.widgets.TypedListener;
 import org.eclipse.swt.widgets.Widget;
 
-import org.eclipse.rcptt.tesla.internal.ui.player.DetailUtils;
-import org.eclipse.rcptt.tesla.internal.ui.player.PlayerTextUtils;
-import org.eclipse.rcptt.tesla.internal.ui.player.SWTUIPlayer;
-import org.eclipse.rcptt.tesla.internal.ui.player.TeslaSWTAccess;
-
 @SuppressWarnings("rawtypes")
 public class WidgetDetailsProvider {
 	private class Style {
@@ -70,6 +69,10 @@
 		}
 	}
 
+	// These two event types introduced only in 3.7:
+	private static final int SWTTouch = 47; // SWT.Touch;
+	private static final int SWTGesture = 48; // SWT.Gesture;
+
 	private Map<Integer, String> eventTypes = new HashMap<Integer, String>();
 	private Map<Class, List<Style>> widgetStyles = new HashMap<Class, List<WidgetDetailsProvider.Style>>();
 
@@ -121,8 +124,8 @@
 		eventTypes.put(SWT.OrientationChange, "OrientationChange");
 		eventTypes.put(SWT.Skin, "Skin");
 		eventTypes.put(SWT.OpenDocument, "OpenDocument");
-		eventTypes.put(SWT.Touch, "Touch");
-		eventTypes.put(SWT.Gesture, "Gesture");
+		eventTypes.put(SWTTouch, "Touch");
+		eventTypes.put(SWTGesture, "Gesture");
 
 		widgetStyles.put(
 				Decorations.class,
diff --git a/runtime/tesla/pom.xml b/runtime/tesla/pom.xml
index 854867b..1e58ff0 100644
--- a/runtime/tesla/pom.xml
+++ b/runtime/tesla/pom.xml
@@ -1,122 +1,81 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-	<modelVersion>4.0.0</modelVersion>
-	<parent>
-		<artifactId>rcptt.runtime</artifactId>
-		<groupId>org.eclipse.rcptt</groupId>
-		<version>1.5.1-SNAPSHOT</version>
-	</parent>
-	<profiles>
-		<profile>
-			<id>runtime_e3x</id>
-			<modules>
-				<module>org.eclipse.rcptt.tesla.swt.win32</module>
-				<module>org.eclipse.rcptt.tesla.swt.win64</module>
-				<module>org.eclipse.rcptt.tesla.core.am</module>
-				<module>org.eclipse.rcptt.tesla.runtime-feature</module>
-				<module>org.eclipse.rcptt.tesla.canvas</module>
-				<module>org.eclipse.rcptt.tesla.gef</module>
-				<module>org.eclipse.rcptt.tesla.gef.aspects</module>
-				<module>org.eclipse.rcptt.tesla.jobs.aspects</module>
-				<module>org.eclipse.rcptt.tesla.gmf</module>
-				<module>org.eclipse.rcptt.tesla.gmf.aspects</module>
-				<module>org.eclipse.rcptt.tesla.jdt</module>
-				<module>org.eclipse.rcptt.tesla.jdt.aspects</module>
-				<module>org.eclipse.rcptt.tesla.jface.aspects</module>
-				<module>org.eclipse.rcptt.tesla.jface.text</module>
-				<module>org.eclipse.rcptt.tesla.jface.text.aspects</module>
-				<module>org.eclipse.rcptt.tesla.jface.text.reconciler.aspects</module>
-				<module>org.eclipse.rcptt.tesla.jface.databinding</module>
-				<module>org.eclipse.rcptt.tesla.jface.databinding.aspects</module>
-				<module>org.eclipse.rcptt.tesla.jface.databinding.observable.aspects</module>
-				<module>org.eclipse.rcptt.tesla.jface.fragment</module>
-				<module>org.eclipse.rcptt.tesla.recording.aspects.draw2d</module>
-				<module>org.eclipse.rcptt.tesla.recording.aspects.forms</module>
-				<module>org.eclipse.rcptt.tesla.recording.aspects.gef</module>
-				<module>org.eclipse.rcptt.tesla.recording.aspects.gmf</module>
-				<module>org.eclipse.rcptt.tesla.recording.aspects.jface</module>
-				<module>org.eclipse.rcptt.tesla.recording.aspects.jface.text</module>
-				<module>org.eclipse.rcptt.tesla.recording.aspects.swt</module>
-				<module>org.eclipse.rcptt.tesla.recording.aspects.workbench</module>
-				<module>org.eclipse.rcptt.tesla.recording.aspects.ui.ide</module>
-				<module>org.eclipse.rcptt.tesla.recording.aspects.workbench.texteditor</module>
-				<module>org.eclipse.rcptt.tesla.recording.draw2d</module>
-				<module>org.eclipse.rcptt.tesla.recording.gef</module>
-				<module>org.eclipse.rcptt.tesla.recording.gmf</module>
-				<module>org.eclipse.rcptt.tesla.recording.swt</module>
-				<module>org.eclipse.rcptt.tesla.recording.canvas</module>
-				<module>org.eclipse.rcptt.tesla.recording.jface.text</module>
-				<module>org.eclipse.rcptt.tesla.recording.workbench.texteditor</module>
-				<module>org.eclipse.rcptt.tesla.swt.aspects</module>
-				<module>org.eclipse.rcptt.tesla.swt.fragment</module>
-				<module>org.eclipse.rcptt.tesla.swt</module>
-				<module>org.eclipse.rcptt.tesla.swt.e3x</module>
-				<module>org.eclipse.rcptt.tesla.ui.ide</module>
-				<module>org.eclipse.rcptt.tesla.ui.ide.aspects</module>
-				<module>org.eclipse.rcptt.tesla.workbench.aspects</module>
-				<module>org.eclipse.rcptt.tesla.workbench.texteditor</module>
-				<module>org.eclipse.rcptt.tesla.workbench.texteditor.aspects</module>
-				<module>org.eclipse.rcptt.tesla.variables</module>
-				<module>org.eclipse.rcptt.tesla.properties.view</module>
-			</modules>
-		</profile>
-		<profile>
-			<id>runtime_e4x</id>
-			<modules>
-				<module>org.eclipse.rcptt.tesla.swt.win32</module>
-				<module>org.eclipse.rcptt.tesla.swt.win64</module>
-				<module>org.eclipse.rcptt.tesla.core.am</module>
-				<module>org.eclipse.rcptt.tesla.runtime.e4x-feature</module>
-				<module>org.eclipse.rcptt.tesla.canvas</module>
-				<module>org.eclipse.rcptt.tesla.gef</module>
-				<module>org.eclipse.rcptt.tesla.gef.aspects</module>
-				<module>org.eclipse.rcptt.tesla.jobs.aspects</module>
-				<module>org.eclipse.rcptt.tesla.jdt</module>
-				<module>org.eclipse.rcptt.tesla.jdt.aspects</module>
-				<module>org.eclipse.rcptt.tesla.gmf</module>
-				<module>org.eclipse.rcptt.tesla.gmf.aspects</module>
-				<module>org.eclipse.rcptt.tesla.jface.aspects</module>
-				<module>org.eclipse.rcptt.tesla.jface.text</module>
-				<module>org.eclipse.rcptt.tesla.jface.text.aspects</module>
-				<module>org.eclipse.rcptt.tesla.jface.text.reconciler.aspects</module>
-				<module>org.eclipse.rcptt.tesla.jface.databinding</module>
-				<module>org.eclipse.rcptt.tesla.jface.databinding.aspects</module>
-				<module>org.eclipse.rcptt.tesla.jface.databinding.observable.aspects</module>
-				<module>org.eclipse.rcptt.tesla.jface.fragment</module>
-				<module>org.eclipse.rcptt.tesla.recording.aspects.draw2d</module>
-				<module>org.eclipse.rcptt.tesla.recording.aspects.forms</module>
-				<module>org.eclipse.rcptt.tesla.recording.aspects.gef</module>
-				<module>org.eclipse.rcptt.tesla.recording.aspects.gmf</module>
-				<module>org.eclipse.rcptt.tesla.recording.aspects.jface</module>
-				<module>org.eclipse.rcptt.tesla.recording.aspects.jface.text</module>
-				<module>org.eclipse.rcptt.tesla.recording.aspects.swt</module>
-				<module>org.eclipse.rcptt.tesla.recording.aspects.ui.ide</module>
-				<module>org.eclipse.rcptt.tesla.recording.aspects.workbench</module>
-				<module>org.eclipse.rcptt.tesla.recording.aspects.workbench.texteditor</module>
-				<module>org.eclipse.rcptt.tesla.recording.draw2d</module>
-				<module>org.eclipse.rcptt.tesla.recording.gef</module>
-				<module>org.eclipse.rcptt.tesla.recording.gmf</module>
-				<module>org.eclipse.rcptt.tesla.recording.swt</module>
-				<module>org.eclipse.rcptt.tesla.recording.canvas</module>
-				<module>org.eclipse.rcptt.tesla.recording.jface.text</module>
-				<module>org.eclipse.rcptt.tesla.recording.workbench.texteditor</module>
-				<module>org.eclipse.rcptt.tesla.swt.aspects</module>
-				<module>org.eclipse.rcptt.tesla.swt.fragment</module>
-				<module>org.eclipse.rcptt.tesla.swt</module>
-				<module>org.eclipse.rcptt.tesla.swt.e4x</module>
-				<module>org.eclipse.rcptt.tesla.ui.ide</module>
-				<module>org.eclipse.rcptt.tesla.ui.ide.aspects</module>
-				<module>org.eclipse.rcptt.tesla.workbench.aspects.e4x</module>
-				<module>org.eclipse.rcptt.tesla.workbench.texteditor</module>
-				<module>org.eclipse.rcptt.tesla.workbench.texteditor.aspects</module>
-				<module>org.eclipse.rcptt.tesla.variables</module>
-				<module>org.eclipse.rcptt.tesla.properties.view</module>
-			</modules>
-		</profile>
-	</profiles>
-	<groupId>org.eclipse.rcptt.tesla</groupId>
-	<version>1.5.1-SNAPSHOT</version>
-	<artifactId>tesla</artifactId>
-	<packaging>pom</packaging>
+	 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <artifactId>rcptt.runtime</artifactId>
+    <groupId>org.eclipse.rcptt</groupId>
+    <version>1.5.1-SNAPSHOT</version>
+  </parent>
+
+  <modules>
+    <module>org.eclipse.rcptt.tesla.swt.win32</module>
+    <module>org.eclipse.rcptt.tesla.swt.win64</module>
+    <module>org.eclipse.rcptt.tesla.core.am</module>
+    <module>org.eclipse.rcptt.tesla.canvas</module>
+    <module>org.eclipse.rcptt.tesla.gef</module>
+    <module>org.eclipse.rcptt.tesla.gef.aspects</module>
+    <module>org.eclipse.rcptt.tesla.jobs.aspects</module>
+    <module>org.eclipse.rcptt.tesla.gmf</module>
+    <module>org.eclipse.rcptt.tesla.gmf.aspects</module>
+    <module>org.eclipse.rcptt.tesla.jdt</module>
+    <module>org.eclipse.rcptt.tesla.jdt.aspects</module>
+    <module>org.eclipse.rcptt.tesla.jface.aspects</module>
+    <module>org.eclipse.rcptt.tesla.jface.text</module>
+    <module>org.eclipse.rcptt.tesla.jface.text.aspects</module>
+    <module>org.eclipse.rcptt.tesla.jface.text.reconciler.aspects</module>
+    <module>org.eclipse.rcptt.tesla.jface.databinding</module>
+    <module>org.eclipse.rcptt.tesla.jface.databinding.aspects</module>
+    <module>org.eclipse.rcptt.tesla.jface.databinding.observable.aspects</module>
+    <module>org.eclipse.rcptt.tesla.jface.fragment</module>
+    <module>org.eclipse.rcptt.tesla.recording.aspects.draw2d</module>
+    <module>org.eclipse.rcptt.tesla.recording.aspects.forms</module>
+    <module>org.eclipse.rcptt.tesla.recording.aspects.gef</module>
+    <module>org.eclipse.rcptt.tesla.recording.aspects.gmf</module>
+    <module>org.eclipse.rcptt.tesla.recording.aspects.jface</module>
+    <module>org.eclipse.rcptt.tesla.recording.aspects.jface.text</module>
+    <module>org.eclipse.rcptt.tesla.recording.aspects.swt</module>
+    <module>org.eclipse.rcptt.tesla.recording.aspects.workbench</module>
+    <module>org.eclipse.rcptt.tesla.recording.aspects.ui.ide</module>
+    <module>org.eclipse.rcptt.tesla.recording.aspects.workbench.texteditor</module>
+    <module>org.eclipse.rcptt.tesla.recording.draw2d</module>
+    <module>org.eclipse.rcptt.tesla.recording.gef</module>
+    <module>org.eclipse.rcptt.tesla.recording.gmf</module>
+    <module>org.eclipse.rcptt.tesla.recording.swt</module>
+    <module>org.eclipse.rcptt.tesla.recording.canvas</module>
+    <module>org.eclipse.rcptt.tesla.recording.jface.text</module>
+    <module>org.eclipse.rcptt.tesla.recording.workbench.texteditor</module>
+    <module>org.eclipse.rcptt.tesla.swt.aspects</module>
+    <module>org.eclipse.rcptt.tesla.swt.fragment</module>
+    <module>org.eclipse.rcptt.tesla.swt</module>
+    <module>org.eclipse.rcptt.tesla.ui.ide</module>
+    <module>org.eclipse.rcptt.tesla.ui.ide.aspects</module>
+    <module>org.eclipse.rcptt.tesla.workbench.texteditor</module>
+    <module>org.eclipse.rcptt.tesla.workbench.texteditor.aspects</module>
+    <module>org.eclipse.rcptt.tesla.variables</module>
+    <module>org.eclipse.rcptt.tesla.properties.view</module>
+  </modules>
+  
+  <profiles>
+    <profile>
+      <id>runtime3x</id>
+      <modules>
+	<module>org.eclipse.rcptt.tesla.runtime-feature</module>
+	<module>org.eclipse.rcptt.tesla.swt.e3x</module>
+	<module>org.eclipse.rcptt.tesla.workbench.aspects</module>
+      </modules>
+    </profile>
+    <profile>
+      <id>runtime4x</id>
+      <modules>
+	<module>org.eclipse.rcptt.tesla.runtime.e4x-feature</module>
+	<module>org.eclipse.rcptt.tesla.swt.e4x</module>
+	<module>org.eclipse.rcptt.tesla.workbench.aspects.e4x</module>
+      </modules>
+    </profile>
+  </profiles>
+  <groupId>org.eclipse.rcptt.tesla</groupId>
+  <version>1.5.1-SNAPSHOT</version>
+  <artifactId>tesla</artifactId>
+  <packaging>pom</packaging>
 </project>
diff --git a/runtime/updates/org.eclipse.rcptt.updates-feature/pom.xml b/runtime/updates/org.eclipse.rcptt.updates-feature/pom.xml
index 5071787..addd0d0 100644
--- a/runtime/updates/org.eclipse.rcptt.updates-feature/pom.xml
+++ b/runtime/updates/org.eclipse.rcptt.updates-feature/pom.xml
@@ -2,9 +2,10 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
-    <artifactId>rcptt.runtime.updates</artifactId>
+    <artifactId>ide</artifactId>
     <groupId>org.eclipse.rcptt</groupId>
     <version>1.5.1-SNAPSHOT</version>
+    <relativePath>../../../releng/ide/pom.xml</relativePath>
   </parent>
   <groupId>org.eclipse.rcptt.features</groupId>
   <artifactId>org.eclipse.rcptt.updates</artifactId>
diff --git a/runtime/updates/org.eclipse.rcptt.updates.helios/pom.xml b/runtime/updates/org.eclipse.rcptt.updates.helios/pom.xml
index d6a1820..a0cdd4b 100644
--- a/runtime/updates/org.eclipse.rcptt.updates.helios/pom.xml
+++ b/runtime/updates/org.eclipse.rcptt.updates.helios/pom.xml
@@ -2,9 +2,10 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
-    <artifactId>rcptt.runtime.updates</artifactId>
+    <artifactId>ide</artifactId>
     <groupId>org.eclipse.rcptt</groupId>
     <version>1.5.1-SNAPSHOT</version>
+    <relativePath>../../../releng/ide/pom.xml</relativePath>
   </parent>
   <groupId>org.eclipse.rcptt</groupId>
   <artifactId>org.eclipse.rcptt.updates.helios</artifactId>
@@ -46,7 +47,7 @@
 	<configuration>
 	  <source>
 	    <repository>
-	      <url>http://updates.xored.com/helios</url>
+	      <url>${heliosRepository}</url>
 	      <layout>p2</layout>
 	    </repository>
 	  </source>
diff --git a/runtime/updates/org.eclipse.rcptt.updates.kepler/pom.xml b/runtime/updates/org.eclipse.rcptt.updates.kepler/pom.xml
index a0b604f..397b138 100644
--- a/runtime/updates/org.eclipse.rcptt.updates.kepler/pom.xml
+++ b/runtime/updates/org.eclipse.rcptt.updates.kepler/pom.xml
@@ -2,9 +2,10 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
-    <artifactId>rcptt.runtime.updates</artifactId>
+    <artifactId>ide</artifactId>
     <groupId>org.eclipse.rcptt</groupId>
     <version>1.5.1-SNAPSHOT</version>
+    <relativePath>../../../releng/ide/pom.xml</relativePath>
   </parent>
   <groupId>org.eclipse.rcptt</groupId>
   <artifactId>org.eclipse.rcptt.updates.kepler</artifactId>
@@ -46,7 +47,7 @@
 	<configuration>
 	  <source>
 	    <repository>
-	      <url>http://updates.xored.com/kepler/</url>
+	      <url>${keplerRepository}</url>
 	      <layout>p2</layout>
 	    </repository>
 	  </source>
diff --git a/runtime/updates/pom.xml b/runtime/updates/pom.xml
index 1553981..1c25250 100644
--- a/runtime/updates/pom.xml
+++ b/runtime/updates/pom.xml
@@ -1,41 +1,41 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-	<modelVersion>4.0.0</modelVersion>
-	<parent>
-		<artifactId>rcptt.runtime</artifactId>
-		<groupId>org.eclipse.rcptt</groupId>
-		<version>1.5.1-SNAPSHOT</version>
-	</parent>
-	<profiles>
-		<profile>
-			<id>runtime_e3x</id>
-			<modules>
-				<module>org.eclipse.rcptt.updates.runtime</module>
-				<module>org.eclipse.rcptt.updates.e3x-feature</module>
-			</modules>
-		</profile>
-		<profile>
-			<id>runtime_e4x</id>
-			<modules>
-				<module>org.eclipse.rcptt.updates.runtime.e4x</module>
-				<module>org.eclipse.rcptt.updates.e4x-feature</module>
-			</modules>
-		</profile>
-		<profile>
-			<id>full</id>
-			<modules>
-				<module>org.eclipse.rcptt.updates.helios</module>
-				<module>org.eclipse.rcptt.updates.kepler</module>
-				<module>org.eclipse.rcptt.updates-feature</module>
-				
-				<module>org.eclipse.rcptt.updates.aspectj.e3x</module>
-				<module>org.eclipse.rcptt.updates.aspectj.e38x</module>
-				<module>org.eclipse.rcptt.updates.aspectj.e44x</module>
-			</modules>
-		</profile>
-	</profiles>
-	<groupId>org.eclipse.rcptt</groupId>
-	<version>1.5.1-SNAPSHOT</version>
-	<artifactId>rcptt.runtime.updates</artifactId>
-	<packaging>pom</packaging>
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <artifactId>rcptt.runtime</artifactId>
+    <groupId>org.eclipse.rcptt</groupId>
+    <version>1.5.1-SNAPSHOT</version>
+  </parent>
+  <profiles>
+    <profile>
+      <id>runtime3x</id>
+      <modules>
+	<module>org.eclipse.rcptt.updates.runtime</module>
+	<module>org.eclipse.rcptt.updates.e3x-feature</module>
+      </modules>
+    </profile>
+    <profile>
+      <id>runtime4x</id>
+      <modules>
+	<module>org.eclipse.rcptt.updates.runtime.e4x</module>
+	<module>org.eclipse.rcptt.updates.e4x-feature</module>
+      </modules>
+    </profile>
+    <profile>
+      <id>full</id>
+      <modules>
+	<module>org.eclipse.rcptt.updates.helios</module>
+	<module>org.eclipse.rcptt.updates.kepler</module>
+	<module>org.eclipse.rcptt.updates-feature</module>
+	
+	<module>org.eclipse.rcptt.updates.aspectj.e3x</module>
+	<module>org.eclipse.rcptt.updates.aspectj.e38x</module>
+	<module>org.eclipse.rcptt.updates.aspectj.e44x</module>
+      </modules>
+    </profile>
+  </profiles>
+  <groupId>org.eclipse.rcptt</groupId>
+  <version>1.5.1-SNAPSHOT</version>
+  <artifactId>rcptt.runtime.updates</artifactId>
+  <packaging>pom</packaging>
 </project>
diff --git a/testing/pom.xml b/testing/pom.xml
index 735a628..6bd8c43 100644
--- a/testing/pom.xml
+++ b/testing/pom.xml
@@ -2,9 +2,10 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
-    <artifactId>rcptt</artifactId>
+    <artifactId>ide</artifactId>
     <groupId>org.eclipse.rcptt</groupId>
     <version>1.5.1-SNAPSHOT</version>
+    <relativePath>../releng/ide/pom.xml</relativePath>
   </parent>
   <groupId>org.eclipse.rcptt</groupId>
   <version>1.5.1-SNAPSHOT</version>
diff --git a/tests/pom.xml b/tests/pom.xml
index bdba131..075d5a7 100644
--- a/tests/pom.xml
+++ b/tests/pom.xml
@@ -2,9 +2,10 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
-    <artifactId>rcptt</artifactId>
+    <artifactId>core</artifactId>
     <groupId>org.eclipse.rcptt</groupId>
     <version>1.5.1-SNAPSHOT</version>
+    <relativePath>../releng/core/pom.xml</relativePath>
   </parent>
   <modules>
     <!-- Tesla plugins -->
diff --git a/watson/pom.xml b/watson/pom.xml
index d6e2dac..0d71521 100644
--- a/watson/pom.xml
+++ b/watson/pom.xml
@@ -8,9 +8,10 @@
   <packaging>pom</packaging>
 
   <parent>
-    <artifactId>rcptt</artifactId>
+    <artifactId>core</artifactId>
     <groupId>org.eclipse.rcptt</groupId>
     <version>1.5.1-SNAPSHOT</version>
+    <relativePath>../releng/core/pom.xml</relativePath>
   </parent>
 
   <modules>
