diff --git a/org.eclipse.osbp.xtext.topologydsl.tests/xtend-gen/org/eclipse/osbp/xtext/topologydsl/tests/TopologyDSLParsingTest.java b/org.eclipse.osbp.xtext.topologydsl.tests/xtend-gen/org/eclipse/osbp/xtext/topologydsl/tests/TopologyDSLParsingTest.java
index d0c068a..168df16 100644
--- a/org.eclipse.osbp.xtext.topologydsl.tests/xtend-gen/org/eclipse/osbp/xtext/topologydsl/tests/TopologyDSLParsingTest.java
+++ b/org.eclipse.osbp.xtext.topologydsl.tests/xtend-gen/org/eclipse/osbp/xtext/topologydsl/tests/TopologyDSLParsingTest.java
@@ -1,17 +1,18 @@
 /**
- *                                                                            
- *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
- *                                                                            
- *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License 2.0        
- *  which accompanies this distribution, and is available at                  
- *  https://www.eclipse.org/legal/epl-2.0/                                 
- *                                 
- *  SPDX-License-Identifier: EPL-2.0                                 
- *                                                                            
- *  Contributors:                                                      
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License 2.0
+ *  which accompanies this distribution, and is available at
+ *  https://www.eclipse.org/legal/epl-2.0/
+ * 
+ *  SPDX-License-Identifier: EPL-2.0
+ * 
+ *  Contributors:
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
- *
+ * 
+ * 
+ *  This copyright notice shows up in the generated Java code
  */
 package org.eclipse.osbp.xtext.topologydsl.tests;
 
diff --git a/org.eclipse.osbp.xtext.topologydsl.ui/xtend-gen/org/eclipse/osbp/xtext/topologydsl/ui/contentassist/TopologyDSLProposalProvider.java b/org.eclipse.osbp.xtext.topologydsl.ui/xtend-gen/org/eclipse/osbp/xtext/topologydsl/ui/contentassist/TopologyDSLProposalProvider.java
index afca145..c64a42d 100644
--- a/org.eclipse.osbp.xtext.topologydsl.ui/xtend-gen/org/eclipse/osbp/xtext/topologydsl/ui/contentassist/TopologyDSLProposalProvider.java
+++ b/org.eclipse.osbp.xtext.topologydsl.ui/xtend-gen/org/eclipse/osbp/xtext/topologydsl/ui/contentassist/TopologyDSLProposalProvider.java
@@ -2,10 +2,10 @@
  * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * 
  *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License 2.0 
+ *  are made available under the terms of the Eclipse Public License 2.0
  *  which accompanies this distribution, and is available at
  *  https://www.eclipse.org/legal/epl-2.0/
- *
+ * 
  *  SPDX-License-Identifier: EPL-2.0
  * 
  *  Contributors:
diff --git a/org.eclipse.osbp.xtext.topologydsl.ui/xtend-gen/org/eclipse/osbp/xtext/topologydsl/ui/labeling/TopologyDSLDescriptionLabelProvider.java b/org.eclipse.osbp.xtext.topologydsl.ui/xtend-gen/org/eclipse/osbp/xtext/topologydsl/ui/labeling/TopologyDSLDescriptionLabelProvider.java
index 8e207df..da9bcf4 100644
--- a/org.eclipse.osbp.xtext.topologydsl.ui/xtend-gen/org/eclipse/osbp/xtext/topologydsl/ui/labeling/TopologyDSLDescriptionLabelProvider.java
+++ b/org.eclipse.osbp.xtext.topologydsl.ui/xtend-gen/org/eclipse/osbp/xtext/topologydsl/ui/labeling/TopologyDSLDescriptionLabelProvider.java
@@ -2,10 +2,10 @@
  * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * 
  *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License 2.0 
+ *  are made available under the terms of the Eclipse Public License 2.0
  *  which accompanies this distribution, and is available at
  *  https://www.eclipse.org/legal/epl-2.0/
- *
+ * 
  *  SPDX-License-Identifier: EPL-2.0
  * 
  *  Contributors:
diff --git a/org.eclipse.osbp.xtext.topologydsl.ui/xtend-gen/org/eclipse/osbp/xtext/topologydsl/ui/labeling/TopologyDSLLabelProvider.java b/org.eclipse.osbp.xtext.topologydsl.ui/xtend-gen/org/eclipse/osbp/xtext/topologydsl/ui/labeling/TopologyDSLLabelProvider.java
index d2e8643..5490dd0 100644
--- a/org.eclipse.osbp.xtext.topologydsl.ui/xtend-gen/org/eclipse/osbp/xtext/topologydsl/ui/labeling/TopologyDSLLabelProvider.java
+++ b/org.eclipse.osbp.xtext.topologydsl.ui/xtend-gen/org/eclipse/osbp/xtext/topologydsl/ui/labeling/TopologyDSLLabelProvider.java
@@ -2,10 +2,10 @@
  * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * 
  *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License 2.0 
+ *  are made available under the terms of the Eclipse Public License 2.0
  *  which accompanies this distribution, and is available at
  *  https://www.eclipse.org/legal/epl-2.0/
- *
+ * 
  *  SPDX-License-Identifier: EPL-2.0
  * 
  *  Contributors:
diff --git a/org.eclipse.osbp.xtext.topologydsl.ui/xtend-gen/org/eclipse/osbp/xtext/topologydsl/ui/outline/TopologyDSLOutlineTreeProvider.java b/org.eclipse.osbp.xtext.topologydsl.ui/xtend-gen/org/eclipse/osbp/xtext/topologydsl/ui/outline/TopologyDSLOutlineTreeProvider.java
index d13fd92..5f3b7a6 100644
--- a/org.eclipse.osbp.xtext.topologydsl.ui/xtend-gen/org/eclipse/osbp/xtext/topologydsl/ui/outline/TopologyDSLOutlineTreeProvider.java
+++ b/org.eclipse.osbp.xtext.topologydsl.ui/xtend-gen/org/eclipse/osbp/xtext/topologydsl/ui/outline/TopologyDSLOutlineTreeProvider.java
@@ -2,10 +2,10 @@
  * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * 
  *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License 2.0 
+ *  are made available under the terms of the Eclipse Public License 2.0
  *  which accompanies this distribution, and is available at
  *  https://www.eclipse.org/legal/epl-2.0/
- *
+ * 
  *  SPDX-License-Identifier: EPL-2.0
  * 
  *  Contributors:
diff --git a/org.eclipse.osbp.xtext.topologydsl.ui/xtend-gen/org/eclipse/osbp/xtext/topologydsl/ui/quickfix/TopologyDSLQuickfixProvider.java b/org.eclipse.osbp.xtext.topologydsl.ui/xtend-gen/org/eclipse/osbp/xtext/topologydsl/ui/quickfix/TopologyDSLQuickfixProvider.java
index e4f9392..8bebe52 100644
--- a/org.eclipse.osbp.xtext.topologydsl.ui/xtend-gen/org/eclipse/osbp/xtext/topologydsl/ui/quickfix/TopologyDSLQuickfixProvider.java
+++ b/org.eclipse.osbp.xtext.topologydsl.ui/xtend-gen/org/eclipse/osbp/xtext/topologydsl/ui/quickfix/TopologyDSLQuickfixProvider.java
@@ -2,10 +2,10 @@
  * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * 
  *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License 2.0 
+ *  are made available under the terms of the Eclipse Public License 2.0
  *  which accompanies this distribution, and is available at
  *  https://www.eclipse.org/legal/epl-2.0/
- *
+ * 
  *  SPDX-License-Identifier: EPL-2.0
  * 
  *  Contributors:
diff --git a/org.eclipse.osbp.xtext.topologydsl/emf-gen/org/eclipse/osbp/xtext/topologydsl/Topology.java b/org.eclipse.osbp.xtext.topologydsl/emf-gen/org/eclipse/osbp/xtext/topologydsl/Topology.java
index 1e44457..2e9f906 100644
--- a/org.eclipse.osbp.xtext.topologydsl/emf-gen/org/eclipse/osbp/xtext/topologydsl/Topology.java
+++ b/org.eclipse.osbp.xtext.topologydsl/emf-gen/org/eclipse/osbp/xtext/topologydsl/Topology.java
@@ -4,7 +4,7 @@
  *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
  *  https://www.eclipse.org/legal/epl-2.0/ 
- * 
+ *  
  *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
diff --git a/org.eclipse.osbp.xtext.topologydsl/emf-gen/org/eclipse/osbp/xtext/topologydsl/TopologyBase.java b/org.eclipse.osbp.xtext.topologydsl/emf-gen/org/eclipse/osbp/xtext/topologydsl/TopologyBase.java
index ff35b05..0a45766 100644
--- a/org.eclipse.osbp.xtext.topologydsl/emf-gen/org/eclipse/osbp/xtext/topologydsl/TopologyBase.java
+++ b/org.eclipse.osbp.xtext.topologydsl/emf-gen/org/eclipse/osbp/xtext/topologydsl/TopologyBase.java
@@ -4,7 +4,7 @@
  *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
  *  https://www.eclipse.org/legal/epl-2.0/ 
- * 
+ *  
  *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
diff --git a/org.eclipse.osbp.xtext.topologydsl/emf-gen/org/eclipse/osbp/xtext/topologydsl/TopologyDSLFactory.java b/org.eclipse.osbp.xtext.topologydsl/emf-gen/org/eclipse/osbp/xtext/topologydsl/TopologyDSLFactory.java
index e4baf8e..e513a1e 100644
--- a/org.eclipse.osbp.xtext.topologydsl/emf-gen/org/eclipse/osbp/xtext/topologydsl/TopologyDSLFactory.java
+++ b/org.eclipse.osbp.xtext.topologydsl/emf-gen/org/eclipse/osbp/xtext/topologydsl/TopologyDSLFactory.java
@@ -4,7 +4,7 @@
  *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
  *  https://www.eclipse.org/legal/epl-2.0/ 
- * 
+ *  
  *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
diff --git a/org.eclipse.osbp.xtext.topologydsl/emf-gen/org/eclipse/osbp/xtext/topologydsl/TopologyDSLPackage.java b/org.eclipse.osbp.xtext.topologydsl/emf-gen/org/eclipse/osbp/xtext/topologydsl/TopologyDSLPackage.java
index 25d7d15..76ee756 100644
--- a/org.eclipse.osbp.xtext.topologydsl/emf-gen/org/eclipse/osbp/xtext/topologydsl/TopologyDSLPackage.java
+++ b/org.eclipse.osbp.xtext.topologydsl/emf-gen/org/eclipse/osbp/xtext/topologydsl/TopologyDSLPackage.java
@@ -4,7 +4,7 @@
  *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
  *  https://www.eclipse.org/legal/epl-2.0/ 
- * 
+ *  
  *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
@@ -37,9 +37,7 @@
  * <!-- end-user-doc -->
  * @see org.eclipse.osbp.xtext.topologydsl.TopologyDSLFactory
  * @model kind="package"
- *        annotation="http://www.eclipse.org/emf/2002/GenModel fileExtensions='topology' modelName='TopologyDSL' prefix='TopologyDSL' updateClasspath='false' loadInitialization='false' literalsInterface='true' copyrightText='Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)\r\n All rights reserved. This program and the accompanying materials \r\n are made available under the terms of the Eclipse Public License 2.0 \r\n which accompanies this distribution, and is available at \r\n https://www.eclipse.org/legal/epl-2.0/ \r\n\r\n SPDX-License-Identifier: EPL-2.0 \r\n\r\n Based on ideas from Xtext, Xtend, Xcore\r\n  \r\n Contributors:  \r\n \t\tJoerg Riegel - Initial implementation \r\n ' basePackage='org.eclipse.osbp.xtext'"
-n \r\n\r\n Based on ideas from Xtext, Xtend, Xcore\r\n  \r\n Contributors:  \r\n \t\tJoerg Riegel - Initial implementation \r\n ' basePackage='org.eclipse.osbp.xtext'"
-n SPDX-License-Identifier: EPL-2.0 \r\n\r\n Based on ideas from Xtext, Xtend, Xcore\r\n  \r\n Contributors:  \r\n \t\tJoerg Riegel - Initial implementation \r\n ' basePackage='org.eclipse.osbp.xtext'"
+ *        annotation="http://www.eclipse.org/emf/2002/GenModel fileExtensions='topology' modelName='TopologyDSL' prefix='TopologyDSL' updateClasspath='false' loadInitialization='false' literalsInterface='true' copyrightText='Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)\r\n All rights reserved. This program and the accompanying materials \r\n are made available under the terms of the Eclipse Public License 2.0  \r\n which accompanies this distribution, and is available at \r\n https://www.eclipse.org/legal/epl-2.0/ \r\n \r\n SPDX-License-Identifier: EPL-2.0 \r\n\r\n Based on ideas from Xtext, Xtend, Xcore\r\n  \r\n Contributors:  \r\n \t\tJoerg Riegel - Initial implementation \r\n ' basePackage='org.eclipse.osbp.xtext'"
  *        annotation="http://www.eclipse.org/emf/2002/Ecore rootPackage='topologydsl'"
  * @generated
  */
diff --git a/org.eclipse.osbp.xtext.topologydsl/emf-gen/org/eclipse/osbp/xtext/topologydsl/TopologyModel.java b/org.eclipse.osbp.xtext.topologydsl/emf-gen/org/eclipse/osbp/xtext/topologydsl/TopologyModel.java
index 1066eab..4daabcd 100644
--- a/org.eclipse.osbp.xtext.topologydsl/emf-gen/org/eclipse/osbp/xtext/topologydsl/TopologyModel.java
+++ b/org.eclipse.osbp.xtext.topologydsl/emf-gen/org/eclipse/osbp/xtext/topologydsl/TopologyModel.java
@@ -4,7 +4,7 @@
  *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
  *  https://www.eclipse.org/legal/epl-2.0/ 
- * 
+ *  
  *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
diff --git a/org.eclipse.osbp.xtext.topologydsl/emf-gen/org/eclipse/osbp/xtext/topologydsl/TopologyPackage.java b/org.eclipse.osbp.xtext.topologydsl/emf-gen/org/eclipse/osbp/xtext/topologydsl/TopologyPackage.java
index 9ea7a3e..675f610 100644
--- a/org.eclipse.osbp.xtext.topologydsl/emf-gen/org/eclipse/osbp/xtext/topologydsl/TopologyPackage.java
+++ b/org.eclipse.osbp.xtext.topologydsl/emf-gen/org/eclipse/osbp/xtext/topologydsl/TopologyPackage.java
@@ -4,7 +4,7 @@
  *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
  *  https://www.eclipse.org/legal/epl-2.0/ 
- * 
+ *  
  *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
diff --git a/org.eclipse.osbp.xtext.topologydsl/emf-gen/org/eclipse/osbp/xtext/topologydsl/TopologyProjection.java b/org.eclipse.osbp.xtext.topologydsl/emf-gen/org/eclipse/osbp/xtext/topologydsl/TopologyProjection.java
index e079e08..0b14ceb 100644
--- a/org.eclipse.osbp.xtext.topologydsl/emf-gen/org/eclipse/osbp/xtext/topologydsl/TopologyProjection.java
+++ b/org.eclipse.osbp.xtext.topologydsl/emf-gen/org/eclipse/osbp/xtext/topologydsl/TopologyProjection.java
@@ -4,7 +4,7 @@
  *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
  *  https://www.eclipse.org/legal/epl-2.0/ 
- * 
+ *  
  *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
diff --git a/org.eclipse.osbp.xtext.topologydsl/emf-gen/org/eclipse/osbp/xtext/topologydsl/TopologyProperty.java b/org.eclipse.osbp.xtext.topologydsl/emf-gen/org/eclipse/osbp/xtext/topologydsl/TopologyProperty.java
index d89333f..8d034b5 100644
--- a/org.eclipse.osbp.xtext.topologydsl/emf-gen/org/eclipse/osbp/xtext/topologydsl/TopologyProperty.java
+++ b/org.eclipse.osbp.xtext.topologydsl/emf-gen/org/eclipse/osbp/xtext/topologydsl/TopologyProperty.java
@@ -4,7 +4,7 @@
  *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
  *  https://www.eclipse.org/legal/epl-2.0/ 
- * 
+ *  
  *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
diff --git a/org.eclipse.osbp.xtext.topologydsl/emf-gen/org/eclipse/osbp/xtext/topologydsl/impl/TopologyBaseImpl.java b/org.eclipse.osbp.xtext.topologydsl/emf-gen/org/eclipse/osbp/xtext/topologydsl/impl/TopologyBaseImpl.java
index a6bc405..a959818 100644
--- a/org.eclipse.osbp.xtext.topologydsl/emf-gen/org/eclipse/osbp/xtext/topologydsl/impl/TopologyBaseImpl.java
+++ b/org.eclipse.osbp.xtext.topologydsl/emf-gen/org/eclipse/osbp/xtext/topologydsl/impl/TopologyBaseImpl.java
@@ -4,7 +4,7 @@
  *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
  *  https://www.eclipse.org/legal/epl-2.0/ 
- * 
+ *  
  *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
diff --git a/org.eclipse.osbp.xtext.topologydsl/emf-gen/org/eclipse/osbp/xtext/topologydsl/impl/TopologyDSLFactoryImpl.java b/org.eclipse.osbp.xtext.topologydsl/emf-gen/org/eclipse/osbp/xtext/topologydsl/impl/TopologyDSLFactoryImpl.java
index 940d837..cdd6bb9 100644
--- a/org.eclipse.osbp.xtext.topologydsl/emf-gen/org/eclipse/osbp/xtext/topologydsl/impl/TopologyDSLFactoryImpl.java
+++ b/org.eclipse.osbp.xtext.topologydsl/emf-gen/org/eclipse/osbp/xtext/topologydsl/impl/TopologyDSLFactoryImpl.java
@@ -4,7 +4,7 @@
  *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
  *  https://www.eclipse.org/legal/epl-2.0/ 
- * 
+ *  
  *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
diff --git a/org.eclipse.osbp.xtext.topologydsl/emf-gen/org/eclipse/osbp/xtext/topologydsl/impl/TopologyDSLPackageImpl.java b/org.eclipse.osbp.xtext.topologydsl/emf-gen/org/eclipse/osbp/xtext/topologydsl/impl/TopologyDSLPackageImpl.java
index fd193e2..9cfcf76 100644
--- a/org.eclipse.osbp.xtext.topologydsl/emf-gen/org/eclipse/osbp/xtext/topologydsl/impl/TopologyDSLPackageImpl.java
+++ b/org.eclipse.osbp.xtext.topologydsl/emf-gen/org/eclipse/osbp/xtext/topologydsl/impl/TopologyDSLPackageImpl.java
@@ -4,7 +4,7 @@
  *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
  *  https://www.eclipse.org/legal/epl-2.0/ 
- * 
+ *  
  *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
diff --git a/org.eclipse.osbp.xtext.topologydsl/emf-gen/org/eclipse/osbp/xtext/topologydsl/impl/TopologyImpl.java b/org.eclipse.osbp.xtext.topologydsl/emf-gen/org/eclipse/osbp/xtext/topologydsl/impl/TopologyImpl.java
index aca2ef8..32b4fc2 100644
--- a/org.eclipse.osbp.xtext.topologydsl/emf-gen/org/eclipse/osbp/xtext/topologydsl/impl/TopologyImpl.java
+++ b/org.eclipse.osbp.xtext.topologydsl/emf-gen/org/eclipse/osbp/xtext/topologydsl/impl/TopologyImpl.java
@@ -4,7 +4,7 @@
  *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
  *  https://www.eclipse.org/legal/epl-2.0/ 
- * 
+ *  
  *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
diff --git a/org.eclipse.osbp.xtext.topologydsl/emf-gen/org/eclipse/osbp/xtext/topologydsl/impl/TopologyModelImpl.java b/org.eclipse.osbp.xtext.topologydsl/emf-gen/org/eclipse/osbp/xtext/topologydsl/impl/TopologyModelImpl.java
index 6518edd..5f914e6 100644
--- a/org.eclipse.osbp.xtext.topologydsl/emf-gen/org/eclipse/osbp/xtext/topologydsl/impl/TopologyModelImpl.java
+++ b/org.eclipse.osbp.xtext.topologydsl/emf-gen/org/eclipse/osbp/xtext/topologydsl/impl/TopologyModelImpl.java
@@ -4,7 +4,7 @@
  *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
  *  https://www.eclipse.org/legal/epl-2.0/ 
- * 
+ *  
  *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
diff --git a/org.eclipse.osbp.xtext.topologydsl/emf-gen/org/eclipse/osbp/xtext/topologydsl/impl/TopologyPackageImpl.java b/org.eclipse.osbp.xtext.topologydsl/emf-gen/org/eclipse/osbp/xtext/topologydsl/impl/TopologyPackageImpl.java
index e28a0b0..f26a091 100644
--- a/org.eclipse.osbp.xtext.topologydsl/emf-gen/org/eclipse/osbp/xtext/topologydsl/impl/TopologyPackageImpl.java
+++ b/org.eclipse.osbp.xtext.topologydsl/emf-gen/org/eclipse/osbp/xtext/topologydsl/impl/TopologyPackageImpl.java
@@ -4,7 +4,7 @@
  *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
  *  https://www.eclipse.org/legal/epl-2.0/ 
- * 
+ *  
  *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
diff --git a/org.eclipse.osbp.xtext.topologydsl/emf-gen/org/eclipse/osbp/xtext/topologydsl/util/TopologyDSLAdapterFactory.java b/org.eclipse.osbp.xtext.topologydsl/emf-gen/org/eclipse/osbp/xtext/topologydsl/util/TopologyDSLAdapterFactory.java
index c49fb5c..d9bad41 100644
--- a/org.eclipse.osbp.xtext.topologydsl/emf-gen/org/eclipse/osbp/xtext/topologydsl/util/TopologyDSLAdapterFactory.java
+++ b/org.eclipse.osbp.xtext.topologydsl/emf-gen/org/eclipse/osbp/xtext/topologydsl/util/TopologyDSLAdapterFactory.java
@@ -4,7 +4,7 @@
  *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
  *  https://www.eclipse.org/legal/epl-2.0/ 
- * 
+ *  
  *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
diff --git a/org.eclipse.osbp.xtext.topologydsl/emf-gen/org/eclipse/osbp/xtext/topologydsl/util/TopologyDSLSwitch.java b/org.eclipse.osbp.xtext.topologydsl/emf-gen/org/eclipse/osbp/xtext/topologydsl/util/TopologyDSLSwitch.java
index c6d9b08..9559f24 100644
--- a/org.eclipse.osbp.xtext.topologydsl/emf-gen/org/eclipse/osbp/xtext/topologydsl/util/TopologyDSLSwitch.java
+++ b/org.eclipse.osbp.xtext.topologydsl/emf-gen/org/eclipse/osbp/xtext/topologydsl/util/TopologyDSLSwitch.java
@@ -4,7 +4,7 @@
  *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
  *  https://www.eclipse.org/legal/epl-2.0/ 
- * 
+ *  
  *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
diff --git a/org.eclipse.osbp.xtext.topologydsl/src/org/eclipse/osbp/xtext/topologydsl/jvmmodel/TopologyDSLD3JavaComponentsCreator.xtend b/org.eclipse.osbp.xtext.topologydsl/src/org/eclipse/osbp/xtext/topologydsl/jvmmodel/TopologyDSLD3JavaComponentsCreator.xtend
index 4399193..f43a046 100644
--- a/org.eclipse.osbp.xtext.topologydsl/src/org/eclipse/osbp/xtext/topologydsl/jvmmodel/TopologyDSLD3JavaComponentsCreator.xtend
+++ b/org.eclipse.osbp.xtext.topologydsl/src/org/eclipse/osbp/xtext/topologydsl/jvmmodel/TopologyDSLD3JavaComponentsCreator.xtend
@@ -38,6 +38,7 @@
 import org.slf4j.Logger
 import org.eclipse.xtext.xbase.jvmmodel.JvmTypeReferenceBuilder
 import org.eclipse.xtext.xbase.jvmmodel.JvmAnnotationReferenceBuilder
+import org.eclipse.e4.ui.model.application.ui.advanced.MPerspective
 
 class TopologyDSLD3JavaComponentsCreator {
 		
@@ -105,6 +106,7 @@
 		return topology.toConstructor([
 			parameters += topology.toParameter("_htmlTagId", typeReferenceBuilder.typeRef(String))
 			parameters += topology.toParameter("eventDispatcher", typeReferenceBuilder.typeRef(IEventDispatcher))
+			parameters += topology.toParameter("perspective", typeReferenceBuilder.typeRef(MPerspective))
 			parameters += topology.toParameter("_jsonData", typeReferenceBuilder.typeRef(String))
 			parameters += topology.toParameter("width", typeReferenceBuilder.typeRef(int))
 			parameters += topology.toParameter("height", typeReferenceBuilder.typeRef(int))
@@ -122,7 +124,7 @@
 				@Override
 				public void call(JsonArray arguments){
 					try {
-						EventDispatcherEvent evnt = new EventDispatcherEvent(EventDispatcherCommand.SELECT, "Topology", "«topology.name»");
+						EventDispatcherEvent evnt = new EventDispatcherEvent(perspective, EventDispatcherCommand.SELECT, "Topology", "«topology.name»");
 						if(arguments.get(0) instanceof JreJsonString && arguments.get(1) instanceof JreJsonString) {
 							evnt.addItem(EventDispatcherDataTag.LIST, arguments.getString(0)+"."+arguments.getString(1));
 							eventDispatcher.sendEvent(evnt);
@@ -165,7 +167,7 @@
 		'''
 		InputStream json = getClass().getResourceAsStream("/topologies/«topology.fileName».json");
 		try {
-			return new «topology.createfullyQualifiedTopologyFilename»("«topology.createTopologyFilename»", eventDispatcher, IOUtils.toString(json), panelWidth, panelHeight);
+			return new «topology.createfullyQualifiedTopologyFilename»("«topology.createTopologyFilename»", eventDispatcher, perspective, IOUtils.toString(json), panelWidth, panelHeight);
 		} catch (IOException e) {
 			log.error("found no data for «topology.fileName» in folder topologies");
 		}
diff --git a/org.eclipse.osbp.xtext.topologydsl/src/org/eclipse/osbp/xtext/topologydsl/jvmmodel/TopologyDSLJvmModelInferrer.xtend b/org.eclipse.osbp.xtext.topologydsl/src/org/eclipse/osbp/xtext/topologydsl/jvmmodel/TopologyDSLJvmModelInferrer.xtend
index 47b75d0..cb02f19 100644
--- a/org.eclipse.osbp.xtext.topologydsl/src/org/eclipse/osbp/xtext/topologydsl/jvmmodel/TopologyDSLJvmModelInferrer.xtend
+++ b/org.eclipse.osbp.xtext.topologydsl/src/org/eclipse/osbp/xtext/topologydsl/jvmmodel/TopologyDSLJvmModelInferrer.xtend
@@ -33,6 +33,7 @@
 import org.eclipse.e4.core.contexts.IEclipseContext
 import org.eclipse.e4.ui.di.Focus
 import org.eclipse.e4.ui.model.application.MApplication
+import org.eclipse.e4.ui.model.application.ui.advanced.MPerspective
 import org.eclipse.emf.common.notify.Adapter
 import org.eclipse.osbp.osgi.hybrid.api.AbstractHybridVaaclipseView
 import org.eclipse.osbp.runtime.common.event.IEventDispatcher
@@ -121,7 +122,10 @@
 			parameters += topology.toParameter("parent", _typeReferenceBuilder.typeRef(VerticalLayout))
 			parameters += topology.toParameter("context", _typeReferenceBuilder.typeRef(IEclipseContext))
 			parameters += topology.toParameter("app", _typeReferenceBuilder.typeRef(MApplication))
-			body = [append('''super(parent,context,app);''')]
+			body = [append(
+			'''
+			super(parent,context,app);
+			perspective = context.get(MPerspective.class);''')]
 		])
 	}
 
@@ -166,6 +170,8 @@
 		type.members += field
 		field = topology.toField("sizeReporter", _typeReferenceBuilder.typeRef(SizeReporter));
 		type.members += field
+		field = topology.toField("perspective", _typeReferenceBuilder.typeRef(MPerspective));
+		type.members += field
 	}
 
 	/**
@@ -353,6 +359,7 @@
 			[
 			parameters += topology.toParameter("_htmlTagId", _typeReferenceBuilder.typeRef(String))
 			parameters += topology.toParameter("eventDispatcher", _typeReferenceBuilder.typeRef(IEventDispatcher))
+			parameters += topology.toParameter("perspective", _typeReferenceBuilder.typeRef(MPerspective))
 			parameters += topology.toParameter("_jsonData", _typeReferenceBuilder.typeRef(String))
 			parameters += topology.toParameter("width", _typeReferenceBuilder.typeRef(int))
 			parameters += topology.toParameter("height", _typeReferenceBuilder.typeRef(int))
@@ -367,7 +374,7 @@
 						@Override
 						public void call(JsonArray arguments){
 							try {
-								EventDispatcherEvent evnt = new EventDispatcherEvent(EventDispatcherCommand.SELECT, "Topology", "«topology.name»");
+								EventDispatcherEvent evnt = new EventDispatcherEvent(perspective, EventDispatcherCommand.SELECT, "Topology", "«topology.name»");
 								if(arguments.get(0) instanceof JreJsonString && arguments.get(1) instanceof JreJsonString) {
 									evnt.addItem(EventDispatcherDataTag.LIST, arguments.getString(0)+"."+arguments.getString(1));
 									eventDispatcher.sendEvent(evnt);
@@ -408,7 +415,7 @@
 	def createD3Topology(Topology topology) '''
 		InputStream json = getClass().getResourceAsStream("/topologies/«topology.fileName».json");
 		try {
-			return new «topology.createfullyQualifiedTopologyFilename»("«topology.createTopologyFilename»", eventDispatcher, IOUtils.toString(json), panelWidth, panelHeight);
+			return new «topology.createfullyQualifiedTopologyFilename»("«topology.createTopologyFilename»", eventDispatcher, perspective, IOUtils.toString(json), panelWidth, panelHeight);
 		} catch (IOException e) {
 			log.error("found no data for «topology.fileName» in folder topologies");
 		}
diff --git a/org.eclipse.osbp.xtext.topologydsl/src/org/eclipse/osbp/xtext/topologydsl/jvmmodel/TopologyModelGenerator.xtend b/org.eclipse.osbp.xtext.topologydsl/src/org/eclipse/osbp/xtext/topologydsl/jvmmodel/TopologyModelGenerator.xtend
index a483e2e..04728d0 100644
--- a/org.eclipse.osbp.xtext.topologydsl/src/org/eclipse/osbp/xtext/topologydsl/jvmmodel/TopologyModelGenerator.xtend
+++ b/org.eclipse.osbp.xtext.topologydsl/src/org/eclipse/osbp/xtext/topologydsl/jvmmodel/TopologyModelGenerator.xtend
@@ -25,6 +25,7 @@
 import com.vaadin.ui.HorizontalLayout
 import com.vaadin.ui.JavaScriptFunction
 import com.vaadin.ui.Label
+import com.vaadin.ui.Panel
 import elemental.json.JsonArray
 import elemental.json.JsonException
 import elemental.json.impl.JreJsonString
@@ -53,7 +54,6 @@
 import org.eclipse.xtext.naming.IQualifiedNameProvider
 import org.eclipse.xtext.xbase.compiler.GeneratorConfig
 import org.eclipse.xtext.xbase.compiler.ImportManager
-import com.vaadin.ui.Panel
 
 class TopologyModelGenerator extends I18NModelGenerator {
 	@Inject extension IQualifiedNameProvider
diff --git a/org.eclipse.osbp.xtext.topologydsl/xtend-gen/org/eclipse/osbp/xtext/topologydsl/formatting/TopologyDSLFormatter.java b/org.eclipse.osbp.xtext.topologydsl/xtend-gen/org/eclipse/osbp/xtext/topologydsl/formatting/TopologyDSLFormatter.java
index 41f9ede..97bc216 100644
--- a/org.eclipse.osbp.xtext.topologydsl/xtend-gen/org/eclipse/osbp/xtext/topologydsl/formatting/TopologyDSLFormatter.java
+++ b/org.eclipse.osbp.xtext.topologydsl/xtend-gen/org/eclipse/osbp/xtext/topologydsl/formatting/TopologyDSLFormatter.java
@@ -2,10 +2,10 @@
  * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * 
  *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License 2.0 
+ *  are made available under the terms of the Eclipse Public License 2.0
  *  which accompanies this distribution, and is available at
  *  https://www.eclipse.org/legal/epl-2.0/
- *
+ * 
  *  SPDX-License-Identifier: EPL-2.0
  * 
  *  Contributors:
diff --git a/org.eclipse.osbp.xtext.topologydsl/xtend-gen/org/eclipse/osbp/xtext/topologydsl/jvmmodel/D3JsJavaUtil.java b/org.eclipse.osbp.xtext.topologydsl/xtend-gen/org/eclipse/osbp/xtext/topologydsl/jvmmodel/D3JsJavaUtil.java
index 8a17813..59a1846 100644
--- a/org.eclipse.osbp.xtext.topologydsl/xtend-gen/org/eclipse/osbp/xtext/topologydsl/jvmmodel/D3JsJavaUtil.java
+++ b/org.eclipse.osbp.xtext.topologydsl/xtend-gen/org/eclipse/osbp/xtext/topologydsl/jvmmodel/D3JsJavaUtil.java
@@ -2,10 +2,10 @@
  * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * 
  *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License 2.0 
+ *  are made available under the terms of the Eclipse Public License 2.0
  *  which accompanies this distribution, and is available at
  *  https://www.eclipse.org/legal/epl-2.0/
- *
+ * 
  *  SPDX-License-Identifier: EPL-2.0
  * 
  *  Contributors:
diff --git a/org.eclipse.osbp.xtext.topologydsl/xtend-gen/org/eclipse/osbp/xtext/topologydsl/jvmmodel/TopologyDSLD3JavaComponentsCreator.java b/org.eclipse.osbp.xtext.topologydsl/xtend-gen/org/eclipse/osbp/xtext/topologydsl/jvmmodel/TopologyDSLD3JavaComponentsCreator.java
index bd3fb29..ce93bfd 100644
--- a/org.eclipse.osbp.xtext.topologydsl/xtend-gen/org/eclipse/osbp/xtext/topologydsl/jvmmodel/TopologyDSLD3JavaComponentsCreator.java
+++ b/org.eclipse.osbp.xtext.topologydsl/xtend-gen/org/eclipse/osbp/xtext/topologydsl/jvmmodel/TopologyDSLD3JavaComponentsCreator.java
@@ -2,10 +2,10 @@
  * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * 
  *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License 2.0 
+ *  are made available under the terms of the Eclipse Public License 2.0
  *  which accompanies this distribution, and is available at
  *  https://www.eclipse.org/legal/epl-2.0/
- *
+ * 
  *  SPDX-License-Identifier: EPL-2.0
  * 
  *  Contributors:
@@ -21,6 +21,7 @@
 import com.vaadin.ui.AbstractJavaScriptComponent;
 import java.util.ArrayList;
 import javax.inject.Inject;
+import org.eclipse.e4.ui.model.application.ui.advanced.MPerspective;
 import org.eclipse.emf.common.util.EList;
 import org.eclipse.osbp.runtime.common.event.IEventDispatcher;
 import org.eclipse.osbp.xtext.topologydsl.Topology;
@@ -179,14 +180,17 @@
         JvmFormalParameter _parameter_1 = TopologyDSLD3JavaComponentsCreator.this._jvmTypesBuilder.toParameter(topology, "eventDispatcher", typeReferenceBuilder.typeRef(IEventDispatcher.class));
         TopologyDSLD3JavaComponentsCreator.this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters_1, _parameter_1);
         EList<JvmFormalParameter> _parameters_2 = it.getParameters();
-        JvmFormalParameter _parameter_2 = TopologyDSLD3JavaComponentsCreator.this._jvmTypesBuilder.toParameter(topology, "_jsonData", typeReferenceBuilder.typeRef(String.class));
+        JvmFormalParameter _parameter_2 = TopologyDSLD3JavaComponentsCreator.this._jvmTypesBuilder.toParameter(topology, "perspective", typeReferenceBuilder.typeRef(MPerspective.class));
         TopologyDSLD3JavaComponentsCreator.this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters_2, _parameter_2);
         EList<JvmFormalParameter> _parameters_3 = it.getParameters();
-        JvmFormalParameter _parameter_3 = TopologyDSLD3JavaComponentsCreator.this._jvmTypesBuilder.toParameter(topology, "width", typeReferenceBuilder.typeRef(int.class));
+        JvmFormalParameter _parameter_3 = TopologyDSLD3JavaComponentsCreator.this._jvmTypesBuilder.toParameter(topology, "_jsonData", typeReferenceBuilder.typeRef(String.class));
         TopologyDSLD3JavaComponentsCreator.this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters_3, _parameter_3);
         EList<JvmFormalParameter> _parameters_4 = it.getParameters();
-        JvmFormalParameter _parameter_4 = TopologyDSLD3JavaComponentsCreator.this._jvmTypesBuilder.toParameter(topology, "height", typeReferenceBuilder.typeRef(int.class));
+        JvmFormalParameter _parameter_4 = TopologyDSLD3JavaComponentsCreator.this._jvmTypesBuilder.toParameter(topology, "width", typeReferenceBuilder.typeRef(int.class));
         TopologyDSLD3JavaComponentsCreator.this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters_4, _parameter_4);
+        EList<JvmFormalParameter> _parameters_5 = it.getParameters();
+        JvmFormalParameter _parameter_5 = TopologyDSLD3JavaComponentsCreator.this._jvmTypesBuilder.toParameter(topology, "height", typeReferenceBuilder.typeRef(int.class));
+        TopologyDSLD3JavaComponentsCreator.this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters_5, _parameter_5);
         final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
           @Override
           public void apply(final ITreeAppendable it) {
@@ -223,7 +227,7 @@
         _builder.append("try {");
         _builder.newLine();
         _builder.append("\t\t\t");
-        _builder.append("EventDispatcherEvent evnt = new EventDispatcherEvent(EventDispatcherCommand.SELECT, \"Topology\", \"");
+        _builder.append("EventDispatcherEvent evnt = new EventDispatcherEvent(perspective, EventDispatcherCommand.SELECT, \"Topology\", \"");
         String _name = topology.getName();
         _builder.append(_name, "\t\t\t");
         _builder.append("\");");
@@ -383,7 +387,7 @@
     _builder.append("(\"");
     String _createTopologyFilename = this._d3JsJavaUtil.createTopologyFilename(topology);
     _builder.append(_createTopologyFilename, "\t");
-    _builder.append("\", eventDispatcher, IOUtils.toString(json), panelWidth, panelHeight);");
+    _builder.append("\", eventDispatcher, perspective, IOUtils.toString(json), panelWidth, panelHeight);");
     _builder.newLineIfNotEmpty();
     _builder.append("} catch (IOException e) {");
     _builder.newLine();
diff --git a/org.eclipse.osbp.xtext.topologydsl/xtend-gen/org/eclipse/osbp/xtext/topologydsl/jvmmodel/TopologyDSLJvmModelInferrer.java b/org.eclipse.osbp.xtext.topologydsl/xtend-gen/org/eclipse/osbp/xtext/topologydsl/jvmmodel/TopologyDSLJvmModelInferrer.java
index dcd584b..4f1a270 100644
--- a/org.eclipse.osbp.xtext.topologydsl/xtend-gen/org/eclipse/osbp/xtext/topologydsl/jvmmodel/TopologyDSLJvmModelInferrer.java
+++ b/org.eclipse.osbp.xtext.topologydsl/xtend-gen/org/eclipse/osbp/xtext/topologydsl/jvmmodel/TopologyDSLJvmModelInferrer.java
@@ -2,10 +2,10 @@
  * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * 
  * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0 
+ * are made available under the terms of the Eclipse Public License 2.0
  * which accompanies this distribution, and is available at
  * https://www.eclipse.org/legal/epl-2.0/
- *
+ * 
  * SPDX-License-Identifier: EPL-2.0
  * 
  * Contributors:
@@ -32,6 +32,7 @@
 import org.eclipse.e4.core.contexts.IEclipseContext;
 import org.eclipse.e4.ui.di.Focus;
 import org.eclipse.e4.ui.model.application.MApplication;
+import org.eclipse.e4.ui.model.application.ui.advanced.MPerspective;
 import org.eclipse.emf.common.notify.Adapter;
 import org.eclipse.emf.common.util.EList;
 import org.eclipse.emf.ecore.EObject;
@@ -174,6 +175,8 @@
           public void apply(final ITreeAppendable it) {
             StringConcatenation _builder = new StringConcatenation();
             _builder.append("super(parent,context,app);");
+            _builder.newLine();
+            _builder.append("perspective = context.get(MPerspective.class);");
             it.append(_builder);
           }
         };
@@ -265,6 +268,9 @@
     field = this._jvmTypesBuilder.toField(topology, "sizeReporter", this._typeReferenceBuilder.typeRef(SizeReporter.class));
     EList<JvmMember> _members_11 = type.getMembers();
     this._jvmTypesBuilder.<JvmField>operator_add(_members_11, field);
+    field = this._jvmTypesBuilder.toField(topology, "perspective", this._typeReferenceBuilder.typeRef(MPerspective.class));
+    EList<JvmMember> _members_12 = type.getMembers();
+    this._jvmTypesBuilder.<JvmField>operator_add(_members_12, field);
   }
   
   /**
@@ -703,14 +709,17 @@
         JvmFormalParameter _parameter_1 = TopologyDSLJvmModelInferrer.this._jvmTypesBuilder.toParameter(topology, "eventDispatcher", TopologyDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(IEventDispatcher.class));
         TopologyDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters_1, _parameter_1);
         EList<JvmFormalParameter> _parameters_2 = it.getParameters();
-        JvmFormalParameter _parameter_2 = TopologyDSLJvmModelInferrer.this._jvmTypesBuilder.toParameter(topology, "_jsonData", TopologyDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(String.class));
+        JvmFormalParameter _parameter_2 = TopologyDSLJvmModelInferrer.this._jvmTypesBuilder.toParameter(topology, "perspective", TopologyDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(MPerspective.class));
         TopologyDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters_2, _parameter_2);
         EList<JvmFormalParameter> _parameters_3 = it.getParameters();
-        JvmFormalParameter _parameter_3 = TopologyDSLJvmModelInferrer.this._jvmTypesBuilder.toParameter(topology, "width", TopologyDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(int.class));
+        JvmFormalParameter _parameter_3 = TopologyDSLJvmModelInferrer.this._jvmTypesBuilder.toParameter(topology, "_jsonData", TopologyDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(String.class));
         TopologyDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters_3, _parameter_3);
         EList<JvmFormalParameter> _parameters_4 = it.getParameters();
-        JvmFormalParameter _parameter_4 = TopologyDSLJvmModelInferrer.this._jvmTypesBuilder.toParameter(topology, "height", TopologyDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(int.class));
+        JvmFormalParameter _parameter_4 = TopologyDSLJvmModelInferrer.this._jvmTypesBuilder.toParameter(topology, "width", TopologyDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(int.class));
         TopologyDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters_4, _parameter_4);
+        EList<JvmFormalParameter> _parameters_5 = it.getParameters();
+        JvmFormalParameter _parameter_5 = TopologyDSLJvmModelInferrer.this._jvmTypesBuilder.toParameter(topology, "height", TopologyDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(int.class));
+        TopologyDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters_5, _parameter_5);
         final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
           @Override
           public void apply(final ITreeAppendable it) {
@@ -738,7 +747,7 @@
             _builder.append("try {");
             _builder.newLine();
             _builder.append("\t\t\t");
-            _builder.append("EventDispatcherEvent evnt = new EventDispatcherEvent(EventDispatcherCommand.SELECT, \"Topology\", \"");
+            _builder.append("EventDispatcherEvent evnt = new EventDispatcherEvent(perspective, EventDispatcherCommand.SELECT, \"Topology\", \"");
             String _name = topology.getName();
             _builder.append(_name, "\t\t\t");
             _builder.append("\");");
@@ -890,7 +899,7 @@
     _builder.append("(\"");
     String _createTopologyFilename = this._d3JsJavaUtil.createTopologyFilename(topology);
     _builder.append(_createTopologyFilename, "\t");
-    _builder.append("\", eventDispatcher, IOUtils.toString(json), panelWidth, panelHeight);");
+    _builder.append("\", eventDispatcher, perspective, IOUtils.toString(json), panelWidth, panelHeight);");
     _builder.newLineIfNotEmpty();
     _builder.append("} catch (IOException e) {");
     _builder.newLine();
diff --git a/org.eclipse.osbp.xtext.topologydsl/xtend-gen/org/eclipse/osbp/xtext/topologydsl/jvmmodel/TopologyModelGenerator.java b/org.eclipse.osbp.xtext.topologydsl/xtend-gen/org/eclipse/osbp/xtext/topologydsl/jvmmodel/TopologyModelGenerator.java
index f2bf38b..c7d543c 100644
--- a/org.eclipse.osbp.xtext.topologydsl/xtend-gen/org/eclipse/osbp/xtext/topologydsl/jvmmodel/TopologyModelGenerator.java
+++ b/org.eclipse.osbp.xtext.topologydsl/xtend-gen/org/eclipse/osbp/xtext/topologydsl/jvmmodel/TopologyModelGenerator.java
@@ -2,10 +2,10 @@
  * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * 
  *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License 2.0 
+ *  are made available under the terms of the Eclipse Public License 2.0
  *  which accompanies this distribution, and is available at
  *  https://www.eclipse.org/legal/epl-2.0/
- *
+ * 
  *  SPDX-License-Identifier: EPL-2.0
  * 
  *  Contributors:
diff --git a/org.eclipse.osbp.xtext.topologydsl/xtend-gen/org/eclipse/osbp/xtext/topologydsl/scoping/TopologyDslScopeProvider.java b/org.eclipse.osbp.xtext.topologydsl/xtend-gen/org/eclipse/osbp/xtext/topologydsl/scoping/TopologyDslScopeProvider.java
index afbbf2b..859ba6b 100644
--- a/org.eclipse.osbp.xtext.topologydsl/xtend-gen/org/eclipse/osbp/xtext/topologydsl/scoping/TopologyDslScopeProvider.java
+++ b/org.eclipse.osbp.xtext.topologydsl/xtend-gen/org/eclipse/osbp/xtext/topologydsl/scoping/TopologyDslScopeProvider.java
@@ -1,17 +1,18 @@
 /**
  * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
- *  All rights reserved. This program and the accompanying materials 
- *  are made available under the terms of the Eclipse Public License 2.0  
- *  which accompanies this distribution, and is available at 
- *  https://www.eclipse.org/legal/epl-2.0/ 
  * 
- *  SPDX-License-Identifier: EPL-2.0 
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License 2.0
+ *  which accompanies this distribution, and is available at
+ *  https://www.eclipse.org/legal/epl-2.0/
  * 
- *  Based on ideas from Xtext, Xtend, Xcore
- *   
- *  Contributors:  
- *  		Joerg Riegel - Initial implementation 
- *  
+ *  SPDX-License-Identifier: EPL-2.0
+ * 
+ *  Contributors:
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ * 
+ *  This copyright notice shows up in the generated Java code
  */
 package org.eclipse.osbp.xtext.topologydsl.scoping;
 
diff --git a/org.eclipse.osbp.xtext.topologydsl/xtend-gen/org/eclipse/osbp/xtext/topologydsl/validation/TopologyDSLValidator.java b/org.eclipse.osbp.xtext.topologydsl/xtend-gen/org/eclipse/osbp/xtext/topologydsl/validation/TopologyDSLValidator.java
index 12a2064..82a6c0e 100644
--- a/org.eclipse.osbp.xtext.topologydsl/xtend-gen/org/eclipse/osbp/xtext/topologydsl/validation/TopologyDSLValidator.java
+++ b/org.eclipse.osbp.xtext.topologydsl/xtend-gen/org/eclipse/osbp/xtext/topologydsl/validation/TopologyDSLValidator.java
@@ -2,10 +2,10 @@
  * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * 
  *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License 2.0 
+ *  are made available under the terms of the Eclipse Public License 2.0
  *  which accompanies this distribution, and is available at
  *  https://www.eclipse.org/legal/epl-2.0/
- *
+ * 
  *  SPDX-License-Identifier: EPL-2.0
  * 
  *  Contributors:
