Bug 582229 - [Robotics, ROS2] Bad Python code generation for services, actions and parameters

- rclpy model library library:
	- Add missing stereotype <<Module>> on service package
	- Remove empty nested rclpy package
	- Add further types for actions
- remove C++ code for parameter descriptions
- replace code generation for actions (which was a copy of C++ code generation before)
- change code C++ specific parameter type in Callbacks.xtend
- use <<External>> stereotype from common code generation profile instead of C++ one
- Apply <<External>> stereotypes for Python and C++ to ROS2 primitive types
- Use nightly in P2 category - for consistency with target platform definition
- Declare dependency to version 3.1.0 of designer profile plugins

Change-Id: I6c9d2708bb7e642722d1c689fde75fa2719d617b
Signed-off-by: aradermache <ansgar.radermacher@cea.fr>
diff --git a/plugins/ros2/org.eclipse.papyrus.robotics.ros2.codegen.common/META-INF/MANIFEST.MF b/plugins/ros2/org.eclipse.papyrus.robotics.ros2.codegen.common/META-INF/MANIFEST.MF
index 6ef2ff3..f13289a 100644
--- a/plugins/ros2/org.eclipse.papyrus.robotics.ros2.codegen.common/META-INF/MANIFEST.MF
+++ b/plugins/ros2/org.eclipse.papyrus.robotics.ros2.codegen.common/META-INF/MANIFEST.MF
@@ -11,7 +11,8 @@
  org.eclipse.papyrus.uml.tools.utils;bundle-version="[3.4.0,5.0.0)",
  org.eclipse.papyrus.infra.core.log;bundle-version="[1.2.0,3.0.0)",
  org.eclipse.core.resources,
- org.eclipse.papyrus.designer.languages.cpp.profile;bundle-version="0.7.0",
+ org.eclipse.papyrus.designer.languages.cpp.profile;bundle-version="3.1.0",
+ org.eclipse.papyrus.designer.languages.python.profile;bundle-version="3.1.0",
  com.google.guava;bundle-version="11.0.0",
  org.eclipse.xtext.xbase.lib,
  org.eclipse.xtend.lib,
diff --git a/plugins/ros2/org.eclipse.papyrus.robotics.ros2.codegen.common/models/library/ros2.primitive.uml b/plugins/ros2/org.eclipse.papyrus.robotics.ros2.codegen.common/models/library/ros2.primitive.uml
index cc0826b..28942df 100644
--- a/plugins/ros2/org.eclipse.papyrus.robotics.ros2.codegen.common/models/library/ros2.primitive.uml
+++ b/plugins/ros2/org.eclipse.papyrus.robotics.ros2.codegen.common/models/library/ros2.primitive.uml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<xmi:XMI xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:C_Cpp="http://www.eclipse.org/papyrus/C_Cpp/1" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:robotics.services="http://www.eclipse.org/papyrus/robotics/services/1" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xsi:schemaLocation="http://www.eclipse.org/papyrus/robotics/services/1 http://www.eclipse.org/papyrus/robotics/1#//services">
+<xmi:XMI xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:C_Cpp="http://www.eclipse.org/papyrus/C_Cpp/1" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:python="http://www.eclipse.org/papyrus/python/1" xmlns:robotics.services="http://www.eclipse.org/papyrus/robotics/services/1" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xsi:schemaLocation="http://www.eclipse.org/papyrus/robotics/services/1 http://www.eclipse.org/papyrus/robotics/1#//services">
   <uml:Model xmi:id="_T7frkG-0EeiX6ta975XXMg" name="primitive">
     <packageImport xmi:type="uml:PackageImport" xmi:id="_UBsaMG-0EeiX6ta975XXMg">
       <importedPackage xmi:type="uml:Model" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#_0"/>
@@ -40,7 +40,43 @@
       </eAnnotations>
       <appliedProfile xmi:type="uml:Profile" href="pathmap://ROBOTICS_PROFILES/robotics.profile.uml#_SlbOAJe_EeeiCOWsEr9OuA"/>
     </profileApplication>
+    <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_QmPloDIREe6ae6RVUytkVg">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_QmQMsDIREe6ae6RVUytkVg" source="http://www.eclipse.org/uml2/2.0.0/UML">
+        <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/python/1#/"/>
+      </eAnnotations>
+      <appliedProfile xmi:type="uml:Profile" href="pathmap://PapyrusPython_PROFILES/python.profile.uml#_ZZc2IOjGEeyu5-ah8U05Lg"/>
+    </profileApplication>
   </uml:Model>
   <robotics.services:ServiceDefinitionModel xmi:id="_E-hF0EasEeqxaN7nQVYyaQ" base_Package="_T7frkG-0EeiX6ta975XXMg"/>
   <C_Cpp:ExternLibrary xmi:id="_q7yuwMBEEeqrl8WmVAzkDg" base_package="_T7frkG-0EeiX6ta975XXMg"/>
+  <C_Cpp:External xmi:id="_pRjRsC-0Ee6QuotnqBtdWA" name="bool" base_Classifier="_Mb0lYK4QEemKGaIZu1xPYw"/>
+  <C_Cpp:External xmi:id="_LUAP8DIREe6ae6RVUytkVg" name="int16_t" base_Classifier="_OvHdsK4QEemKGaIZu1xPYw"/>
+  <python:External xmi:id="_SMmfcDIREe6ae6RVUytkVg" name="numpy.int16" base_Classifier="_OvHdsK4QEemKGaIZu1xPYw"/>
+  <C_Cpp:External xmi:id="_tVweEDIREe6ae6RVUytkVg" name="int64_t" base_Classifier="_OvJ58a4QEemKGaIZu1xPYw"/>
+  <python:External xmi:id="_faGbgDIREe6ae6RVUytkVg" name="numpy.int64" base_Classifier="_OvJ58a4QEemKGaIZu1xPYw"/>
+  <C_Cpp:External xmi:id="_scC6YDQrEe6ae6RVUytkVg" name="int8_t" base_Classifier="_Mb3BoK4QEemKGaIZu1xPYw"/>
+  <C_Cpp:External xmi:id="_5SfBUDQrEe6ae6RVUytkVg" name="int8_t" base_Classifier="_Mb4PwK4QEemKGaIZu1xPYw"/>
+  <python:External xmi:id="_sW4IoDT-Ee6ae6RVUytkVg" base_Classifier="_Mb3BoK4QEemKGaIZu1xPYw"/>
+  <python:External xmi:id="_yTMWEDT-Ee6ae6RVUytkVg" name="numpy.int8" base_Classifier="_Mb4PwK4QEemKGaIZu1xPYw"/>
+  <C_Cpp:External xmi:id="_ImVA8DT_Ee6ae6RVUytkVg" name="double" base_Classifier="_Mb1zga4QEemKGaIZu1xPYw"/>
+  <python:External xmi:id="_ZBOGEDT_Ee6ae6RVUytkVg" name="numpy.float32" base_Classifier="_Mb1zga4QEemKGaIZu1xPYw"/>
+  <C_Cpp:External xmi:id="_cbOHwDT_Ee6ae6RVUytkVg" name="long double" base_Classifier="_Mb1zgq4QEemKGaIZu1xPYw"/>
+  <python:External xmi:id="_eHmKADT_Ee6ae6RVUytkVg" name="numpy.float64" base_Classifier="_Mb1zgq4QEemKGaIZu1xPYw"/>
+  <C_Cpp:External xmi:id="_7zOFYDT_Ee6ae6RVUytkVg" name="byte" base_Classifier="_Mb1McK4QEemKGaIZu1xPYw"/>
+  <python:External xmi:id="__Q8wgDT_Ee6ae6RVUytkVg" name="numpy.byte" base_Classifier="_Mb1McK4QEemKGaIZu1xPYw"/>
+  <python:External xmi:id="_AwepkDUAEe6ae6RVUytkVg" name="bool" base_Classifier="_Mb0lYK4QEemKGaIZu1xPYw"/>
+  <C_Cpp:External xmi:id="_FTT7kDUAEe6ae6RVUytkVg" base_Classifier="_Mb1zgK4QEemKGaIZu1xPYw"/>
+  <python:External xmi:id="_Gx1vEDUAEe6ae6RVUytkVg" name="numpy.byte" base_Classifier="_Mb1zgK4QEemKGaIZu1xPYw"/>
+  <C_Cpp:External xmi:id="_nTFMsDUAEe6ae6RVUytkVg" name="unit16_t" base_Classifier="_OvIr0K4QEemKGaIZu1xPYw"/>
+  <python:External xmi:id="_oPkDEDUAEe6ae6RVUytkVg" base_Classifier="_OvIr0K4QEemKGaIZu1xPYw"/>
+  <C_Cpp:External xmi:id="_uqTR4DUAEe6ae6RVUytkVg" name="int32_t" base_Classifier="_OvJS4K4QEemKGaIZu1xPYw"/>
+  <python:External xmi:id="_uqRcsDUAEe6ae6RVUytkVg" name="numpy.int32" base_Classifier="_OvJS4K4QEemKGaIZu1xPYw"/>
+  <C_Cpp:External xmi:id="_zrc3kDUAEe6ae6RVUytkVg" name="uint32_t" base_Classifier="_OvJ58K4QEemKGaIZu1xPYw"/>
+  <python:External xmi:id="_0qHfQDUAEe6ae6RVUytkVg" name="numpy.uint32" base_Classifier="_OvJ58K4QEemKGaIZu1xPYw"/>
+  <C_Cpp:External xmi:id="_-uAmEDUAEe6ae6RVUytkVg" name="uint64_t" base_Classifier="_OvKhAK4QEemKGaIZu1xPYw"/>
+  <python:External xmi:id="__11JwDUAEe6ae6RVUytkVg" name="numpy.uint64" base_Classifier="_OvKhAK4QEemKGaIZu1xPYw"/>
+  <C_Cpp:External xmi:id="_FUM28DUBEe6ae6RVUytkVg" name="string" base_Classifier="_96bjEK4QEemKGaIZu1xPYw"/>
+  <python:External xmi:id="_Pl2s8DUBEe6ae6RVUytkVg" name="str" base_Classifier="_96bjEK4QEemKGaIZu1xPYw"/>
+  <C_Cpp:External xmi:id="_p55BcDUBEe6ae6RVUytkVg" name="wstring" base_Classifier="_vwQisFoPEeq26shXDzFyiA"/>
+  <python:External xmi:id="_ruHYIDUBEe6ae6RVUytkVg" name="str" base_Classifier="_vwQisFoPEeq26shXDzFyiA"/>
 </xmi:XMI>
diff --git a/plugins/ros2/org.eclipse.papyrus.robotics.ros2.codegen.common/src/org/eclipse/papyrus/robotics/ros2/codegen/common/utils/RosHelpers.java b/plugins/ros2/org.eclipse.papyrus.robotics.ros2.codegen.common/src/org/eclipse/papyrus/robotics/ros2/codegen/common/utils/RosHelpers.java
index 6283c1a..3733c71 100644
--- a/plugins/ros2/org.eclipse.papyrus.robotics.ros2.codegen.common/src/org/eclipse/papyrus/robotics/ros2/codegen/common/utils/RosHelpers.java
+++ b/plugins/ros2/org.eclipse.papyrus.robotics.ros2.codegen.common/src/org/eclipse/papyrus/robotics/ros2/codegen/common/utils/RosHelpers.java
@@ -16,7 +16,7 @@
 
 import org.eclipse.emf.common.util.URI;
 import org.eclipse.papyrus.designer.infra.base.StringConstants;
-import org.eclipse.papyrus.designer.languages.cpp.profile.C_Cpp.External;
+import org.eclipse.papyrus.designer.languages.common.profile.Codegen.External;
 import org.eclipse.papyrus.designer.languages.cpp.profile.C_Cpp.Ptr;
 import org.eclipse.papyrus.robotics.codegen.common.utils.Helpers;
 import org.eclipse.papyrus.uml.tools.utils.StereotypeUtil;
diff --git a/plugins/ros2/org.eclipse.papyrus.robotics.ros2.codegen.cpp/src/org/eclipse/papyrus/robotics/ros2/codegen/cpp/component/Constructor.xtend b/plugins/ros2/org.eclipse.papyrus.robotics.ros2.codegen.cpp/src/org/eclipse/papyrus/robotics/ros2/codegen/cpp/component/Constructor.xtend
index 6a50ff0..c3573a6 100644
--- a/plugins/ros2/org.eclipse.papyrus.robotics.ros2.codegen.cpp/src/org/eclipse/papyrus/robotics/ros2/codegen/cpp/component/Constructor.xtend
+++ b/plugins/ros2/org.eclipse.papyrus.robotics.ros2.codegen.cpp/src/org/eclipse/papyrus/robotics/ros2/codegen/cpp/component/Constructor.xtend
@@ -242,5 +242,5 @@
 		else {
 			return defaultQoS
 		}
- 	} 
+ 	}
 }
diff --git a/plugins/ros2/org.eclipse.papyrus.robotics.ros2.codegen.python/models/library/rclpy.notation b/plugins/ros2/org.eclipse.papyrus.robotics.ros2.codegen.python/models/library/rclpy.notation
index ac35126..a550122 100644
--- a/plugins/ros2/org.eclipse.papyrus.robotics.ros2.codegen.python/models/library/rclpy.notation
+++ b/plugins/ros2/org.eclipse.papyrus.robotics.ros2.codegen.python/models/library/rclpy.notation
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.3/notation" xmlns:style="http://www.eclipse.org/papyrus/infra/gmfdiag/style" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML">
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:css="http://www.eclipse.org/papyrus/infra/gmfdiag/css" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.3/notation" xmlns:style="http://www.eclipse.org/papyrus/infra/gmfdiag/style" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML">
   <notation:Diagram xmi:id="_4wGCEO4aEey3buyMmxEJ_w" type="PapyrusUMLClassDiagram" name="node_module" measurementUnit="Pixel">
     <children xmi:type="notation:Shape" xmi:id="_hq5Loe4bEey3buyMmxEJ_w" type="Package_Shape">
       <children xmi:type="notation:DecorationNode" xmi:id="_hq5Lo-4bEey3buyMmxEJ_w" type="Package_NameLabel"/>
@@ -28,37 +28,38 @@
             <layoutConstraint xmi:type="notation:Bounds" xmi:id="_eEr6BO4bEey3buyMmxEJ_w"/>
           </children>
           <element xmi:type="uml:Class" href="rclpy.uml#_eEr58O4bEey3buyMmxEJ_w"/>
-          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_eEr58u4bEey3buyMmxEJ_w" x="34" y="23"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_eEr58u4bEey3buyMmxEJ_w" x="34" y="23" width="141" height="74"/>
         </children>
         <styles xmi:type="notation:TitleStyle" xmi:id="_hq5Lpe4bEey3buyMmxEJ_w"/>
         <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hq5Lpu4bEey3buyMmxEJ_w"/>
       </children>
       <element xmi:type="uml:Package" href="rclpy.uml#_hq5LoO4bEey3buyMmxEJ_w"/>
-      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hq5Lou4bEey3buyMmxEJ_w" x="220" y="220" width="181" height="221"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hq5Lou4bEey3buyMmxEJ_w" x="100" y="60" width="281" height="221"/>
     </children>
-    <children xmi:type="notation:Shape" xmi:id="_yQNPQLlGEe27HeoHLJk0Yw" type="StereotypeComment">
-      <styles xmi:type="notation:TitleStyle" xmi:id="_yQNPQblGEe27HeoHLJk0Yw"/>
-      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_yQNPQ7lGEe27HeoHLJk0Yw" name="BASE_ELEMENT">
+    <children xmi:type="notation:Shape" xmi:id="__VHicCrFEe6lW41OK3U93g" type="StereotypeComment">
+      <styles xmi:type="notation:TitleStyle" xmi:id="__VHicSrFEe6lW41OK3U93g"/>
+      <styles xmi:type="notation:EObjectValueStyle" xmi:id="__VHicyrFEe6lW41OK3U93g" name="BASE_ELEMENT">
         <eObjectValue xmi:type="uml:Package" href="rclpy.uml#_hq5LoO4bEey3buyMmxEJ_w"/>
       </styles>
       <element xsi:nil="true"/>
-      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yQNPQrlGEe27HeoHLJk0Yw" x="420" y="220"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="__VHicirFEe6lW41OK3U93g" x="420" y="220"/>
     </children>
     <styles xmi:type="notation:StringValueStyle" xmi:id="_4wGCEe4aEey3buyMmxEJ_w" name="diagram_compatibility_version" stringValue="1.4.0"/>
     <styles xmi:type="notation:DiagramStyle" xmi:id="_4wGCEu4aEey3buyMmxEJ_w"/>
     <styles xmi:type="style:PapyrusDiagramStyle" xmi:id="_4wGCE-4aEey3buyMmxEJ_w" diagramKindId="org.eclipse.papyrus.uml.diagram.class">
       <owner xmi:type="uml:Model" href="rclpy.uml#_21YB0O4aEey3buyMmxEJ_w"/>
     </styles>
+    <styles xmi:type="notation:EObjectListValueStyle" xmi:id="_sTDxUCrGEe6lW41OK3U93g" name="css_stylesheets" eObjectListValue="_TRysQCrGEe6lW41OK3U93g"/>
     <element xmi:type="uml:Model" href="rclpy.uml#_21YB0O4aEey3buyMmxEJ_w"/>
-    <edges xmi:type="notation:Connector" xmi:id="_yQNPRLlGEe27HeoHLJk0Yw" type="StereotypeCommentLink" source="_hq5Loe4bEey3buyMmxEJ_w" target="_yQNPQLlGEe27HeoHLJk0Yw">
-      <styles xmi:type="notation:FontStyle" xmi:id="_yQNPRblGEe27HeoHLJk0Yw"/>
-      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_yQNPSblGEe27HeoHLJk0Yw" name="BASE_ELEMENT">
+    <edges xmi:type="notation:Connector" xmi:id="__VHidCrFEe6lW41OK3U93g" type="StereotypeCommentLink" source="_hq5Loe4bEey3buyMmxEJ_w" target="__VHicCrFEe6lW41OK3U93g">
+      <styles xmi:type="notation:FontStyle" xmi:id="__VHidSrFEe6lW41OK3U93g"/>
+      <styles xmi:type="notation:EObjectValueStyle" xmi:id="__VHieSrFEe6lW41OK3U93g" name="BASE_ELEMENT">
         <eObjectValue xmi:type="uml:Package" href="rclpy.uml#_hq5LoO4bEey3buyMmxEJ_w"/>
       </styles>
       <element xsi:nil="true"/>
-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_yQNPRrlGEe27HeoHLJk0Yw" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
-      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_yQNPR7lGEe27HeoHLJk0Yw"/>
-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_yQNPSLlGEe27HeoHLJk0Yw"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="__VHidirFEe6lW41OK3U93g" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="__VHidyrFEe6lW41OK3U93g"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="__VHieCrFEe6lW41OK3U93g"/>
     </edges>
   </notation:Diagram>
   <notation:Diagram xmi:id="_8NhyQO4aEey3buyMmxEJ_w" type="PapyrusUMLClassDiagram" name="lifecycle_module" measurementUnit="Pixel">
@@ -488,7 +489,7 @@
             <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Axv5hO4dEey3buyMmxEJ_w"/>
           </children>
           <element xmi:type="uml:Class" href="rclpy.uml#_Axv5cO4dEey3buyMmxEJ_w"/>
-          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Axv5cu4dEey3buyMmxEJ_w" x="14" y="23"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Axv5cu4dEey3buyMmxEJ_w" x="14" y="36" height="81"/>
         </children>
         <children xmi:type="notation:Shape" xmi:id="_FZ5wUO4dEey3buyMmxEJ_w" type="Class_Shape_CN">
           <children xmi:type="notation:DecorationNode" xmi:id="_FZ5wUu4dEey3buyMmxEJ_w" type="Class_NameLabel_CN"/>
@@ -514,37 +515,90 @@
             <layoutConstraint xmi:type="notation:Bounds" xmi:id="_FZ5wY-4dEey3buyMmxEJ_w"/>
           </children>
           <element xmi:type="uml:Class" href="rclpy.uml#_FZwmYO4dEey3buyMmxEJ_w"/>
-          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_FZ5wUe4dEey3buyMmxEJ_w" x="194" y="23"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_FZ5wUe4dEey3buyMmxEJ_w" x="174" y="36" width="121" height="81"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_Gokh8CrGEe6lW41OK3U93g" type="Class_Shape_CN">
+          <children xmi:type="notation:DecorationNode" xmi:id="_GolJACrGEe6lW41OK3U93g" type="Class_NameLabel_CN"/>
+          <children xmi:type="notation:DecorationNode" xmi:id="_GolJASrGEe6lW41OK3U93g" type="Class_FloatingNameLabel_CN">
+            <layoutConstraint xmi:type="notation:Location" xmi:id="_GolJAirGEe6lW41OK3U93g" y="15"/>
+          </children>
+          <children xmi:type="notation:BasicCompartment" xmi:id="_GolJAyrGEe6lW41OK3U93g" type="Class_AttributeCompartment_CN">
+            <styles xmi:type="notation:TitleStyle" xmi:id="_GolJBCrGEe6lW41OK3U93g"/>
+            <styles xmi:type="notation:SortingStyle" xmi:id="_GolJBSrGEe6lW41OK3U93g"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_GolJBirGEe6lW41OK3U93g"/>
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GolJByrGEe6lW41OK3U93g"/>
+          </children>
+          <children xmi:type="notation:BasicCompartment" xmi:id="_GolJCCrGEe6lW41OK3U93g" type="Class_OperationCompartment_CN">
+            <styles xmi:type="notation:TitleStyle" xmi:id="_GolJCSrGEe6lW41OK3U93g"/>
+            <styles xmi:type="notation:SortingStyle" xmi:id="_GolJCirGEe6lW41OK3U93g"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_GolJCyrGEe6lW41OK3U93g"/>
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GolJDCrGEe6lW41OK3U93g"/>
+          </children>
+          <children xmi:type="notation:BasicCompartment" xmi:id="_GolJDSrGEe6lW41OK3U93g" type="Class_NestedClassifierCompartment_CN">
+            <styles xmi:type="notation:TitleStyle" xmi:id="_GolJDirGEe6lW41OK3U93g"/>
+            <styles xmi:type="notation:SortingStyle" xmi:id="_GolJDyrGEe6lW41OK3U93g"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_GolJECrGEe6lW41OK3U93g"/>
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GolJESrGEe6lW41OK3U93g"/>
+          </children>
+          <element xmi:type="uml:Class" href="rclpy.uml#_GoYUsCrGEe6lW41OK3U93g"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Gokh8SrGEe6lW41OK3U93g" x="334" y="16" width="161" height="81"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_H3-7YCrGEe6lW41OK3U93g" type="Class_Shape_CN">
+          <children xmi:type="notation:DecorationNode" xmi:id="_H3_icCrGEe6lW41OK3U93g" type="Class_NameLabel_CN"/>
+          <children xmi:type="notation:DecorationNode" xmi:id="_H3_icSrGEe6lW41OK3U93g" type="Class_FloatingNameLabel_CN">
+            <layoutConstraint xmi:type="notation:Location" xmi:id="_H3_icirGEe6lW41OK3U93g" y="15"/>
+          </children>
+          <children xmi:type="notation:BasicCompartment" xmi:id="_H3_icyrGEe6lW41OK3U93g" type="Class_AttributeCompartment_CN">
+            <styles xmi:type="notation:TitleStyle" xmi:id="_H3_idCrGEe6lW41OK3U93g"/>
+            <styles xmi:type="notation:SortingStyle" xmi:id="_H3_idSrGEe6lW41OK3U93g"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_H3_idirGEe6lW41OK3U93g"/>
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_H3_idyrGEe6lW41OK3U93g"/>
+          </children>
+          <children xmi:type="notation:BasicCompartment" xmi:id="_H3_ieCrGEe6lW41OK3U93g" type="Class_OperationCompartment_CN">
+            <styles xmi:type="notation:TitleStyle" xmi:id="_H3_ieSrGEe6lW41OK3U93g"/>
+            <styles xmi:type="notation:SortingStyle" xmi:id="_H3_ieirGEe6lW41OK3U93g"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_H3_ieyrGEe6lW41OK3U93g"/>
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_H3_ifCrGEe6lW41OK3U93g"/>
+          </children>
+          <children xmi:type="notation:BasicCompartment" xmi:id="_H3_ifSrGEe6lW41OK3U93g" type="Class_NestedClassifierCompartment_CN">
+            <styles xmi:type="notation:TitleStyle" xmi:id="_H3_ifirGEe6lW41OK3U93g"/>
+            <styles xmi:type="notation:SortingStyle" xmi:id="_H3_ifyrGEe6lW41OK3U93g"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_H3_igCrGEe6lW41OK3U93g"/>
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_H3_igSrGEe6lW41OK3U93g"/>
+          </children>
+          <element xmi:type="uml:Class" href="rclpy.uml#_H34NsCrGEe6lW41OK3U93g"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_H3-7YSrGEe6lW41OK3U93g" x="334" y="116" width="161" height="81"/>
         </children>
         <styles xmi:type="notation:TitleStyle" xmi:id="_8JMZ9e4cEey3buyMmxEJ_w"/>
         <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8JMZ9u4cEey3buyMmxEJ_w"/>
       </children>
       <element xmi:type="uml:Package" href="rclpy.uml#_8JMZ8O4cEey3buyMmxEJ_w"/>
-      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8JMZ8u4cEey3buyMmxEJ_w" x="120" y="140" width="381" height="221"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8JMZ8u4cEey3buyMmxEJ_w" x="60" y="80" width="541" height="261"/>
     </children>
-    <children xmi:type="notation:Shape" xmi:id="_-RBsUAj7Ee2-xOjQ3SYv9w" type="StereotypeComment">
-      <styles xmi:type="notation:TitleStyle" xmi:id="_-RBsUQj7Ee2-xOjQ3SYv9w"/>
-      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_-RBsUwj7Ee2-xOjQ3SYv9w" name="BASE_ELEMENT">
+    <children xmi:type="notation:Shape" xmi:id="_Ah3pcCrGEe6lW41OK3U93g" type="StereotypeComment">
+      <styles xmi:type="notation:TitleStyle" xmi:id="_Ah3pcSrGEe6lW41OK3U93g"/>
+      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_Ah3pcyrGEe6lW41OK3U93g" name="BASE_ELEMENT">
         <eObjectValue xmi:type="uml:Package" href="rclpy.uml#_8JMZ8O4cEey3buyMmxEJ_w"/>
       </styles>
       <element xsi:nil="true"/>
-      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-RBsUgj7Ee2-xOjQ3SYv9w" x="320" y="140"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Ah3pcirGEe6lW41OK3U93g" x="320" y="140"/>
     </children>
     <styles xmi:type="notation:StringValueStyle" xmi:id="_WqW2Ye4bEey3buyMmxEJ_w" name="diagram_compatibility_version" stringValue="1.4.0"/>
     <styles xmi:type="notation:DiagramStyle" xmi:id="_WqW2Yu4bEey3buyMmxEJ_w"/>
     <styles xmi:type="style:PapyrusDiagramStyle" xmi:id="_WqW2Y-4bEey3buyMmxEJ_w" diagramKindId="org.eclipse.papyrus.uml.diagram.class">
       <owner xmi:type="uml:Model" href="rclpy.uml#_21YB0O4aEey3buyMmxEJ_w"/>
     </styles>
+    <styles xmi:type="notation:EObjectListValueStyle" xmi:id="_TRyFMCrGEe6lW41OK3U93g" name="css_stylesheets" eObjectListValue="_TRysQCrGEe6lW41OK3U93g"/>
     <element xmi:type="uml:Model" href="rclpy.uml#_21YB0O4aEey3buyMmxEJ_w"/>
-    <edges xmi:type="notation:Connector" xmi:id="_-RCTYAj7Ee2-xOjQ3SYv9w" type="StereotypeCommentLink" source="_8JMZ8e4cEey3buyMmxEJ_w" target="_-RBsUAj7Ee2-xOjQ3SYv9w">
-      <styles xmi:type="notation:FontStyle" xmi:id="_-RCTYQj7Ee2-xOjQ3SYv9w"/>
-      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_-RCTZQj7Ee2-xOjQ3SYv9w" name="BASE_ELEMENT">
+    <edges xmi:type="notation:Connector" xmi:id="_Ah3pdCrGEe6lW41OK3U93g" type="StereotypeCommentLink" source="_8JMZ8e4cEey3buyMmxEJ_w" target="_Ah3pcCrGEe6lW41OK3U93g">
+      <styles xmi:type="notation:FontStyle" xmi:id="_Ah3pdSrGEe6lW41OK3U93g"/>
+      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_Ah3peSrGEe6lW41OK3U93g" name="BASE_ELEMENT">
         <eObjectValue xmi:type="uml:Package" href="rclpy.uml#_8JMZ8O4cEey3buyMmxEJ_w"/>
       </styles>
       <element xsi:nil="true"/>
-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_-RCTYgj7Ee2-xOjQ3SYv9w" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
-      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_-RCTYwj7Ee2-xOjQ3SYv9w"/>
-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_-RCTZAj7Ee2-xOjQ3SYv9w"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Ah3pdirGEe6lW41OK3U93g" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Ah3pdyrGEe6lW41OK3U93g"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Ah3peCrGEe6lW41OK3U93g"/>
     </edges>
   </notation:Diagram>
   <notation:Diagram xmi:id="_YzA6EO4dEey3buyMmxEJ_w" type="PapyrusUMLClassDiagram" name="qos_module" measurementUnit="Pixel">
@@ -556,19 +610,19 @@
           <children xmi:type="notation:DecorationNode" xmi:id="_kwfYs-4dEey3buyMmxEJ_w" type="Class_FloatingNameLabel_CN">
             <layoutConstraint xmi:type="notation:Location" xmi:id="_kwfYtO4dEey3buyMmxEJ_w" y="15"/>
           </children>
-          <children xmi:type="notation:BasicCompartment" xmi:id="_kwfYte4dEey3buyMmxEJ_w" visible="false" type="Class_AttributeCompartment_CN">
+          <children xmi:type="notation:BasicCompartment" xmi:id="_kwfYte4dEey3buyMmxEJ_w" type="Class_AttributeCompartment_CN">
             <styles xmi:type="notation:TitleStyle" xmi:id="_kwfYtu4dEey3buyMmxEJ_w"/>
             <styles xmi:type="notation:SortingStyle" xmi:id="_kwfYt-4dEey3buyMmxEJ_w"/>
             <styles xmi:type="notation:FilteringStyle" xmi:id="_kwfYuO4dEey3buyMmxEJ_w"/>
             <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kwfYue4dEey3buyMmxEJ_w"/>
           </children>
-          <children xmi:type="notation:BasicCompartment" xmi:id="_kwfYuu4dEey3buyMmxEJ_w" visible="false" type="Class_OperationCompartment_CN">
+          <children xmi:type="notation:BasicCompartment" xmi:id="_kwfYuu4dEey3buyMmxEJ_w" type="Class_OperationCompartment_CN">
             <styles xmi:type="notation:TitleStyle" xmi:id="_kwfYu-4dEey3buyMmxEJ_w"/>
             <styles xmi:type="notation:SortingStyle" xmi:id="_kwfYvO4dEey3buyMmxEJ_w"/>
             <styles xmi:type="notation:FilteringStyle" xmi:id="_kwfYve4dEey3buyMmxEJ_w"/>
             <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kwfYvu4dEey3buyMmxEJ_w"/>
           </children>
-          <children xmi:type="notation:BasicCompartment" xmi:id="_kwfYv-4dEey3buyMmxEJ_w" visible="false" type="Class_NestedClassifierCompartment_CN">
+          <children xmi:type="notation:BasicCompartment" xmi:id="_kwfYv-4dEey3buyMmxEJ_w" type="Class_NestedClassifierCompartment_CN">
             <styles xmi:type="notation:TitleStyle" xmi:id="_kwfYwO4dEey3buyMmxEJ_w"/>
             <styles xmi:type="notation:SortingStyle" xmi:id="_kwfYwe4dEey3buyMmxEJ_w"/>
             <styles xmi:type="notation:FilteringStyle" xmi:id="_kwfYwu4dEey3buyMmxEJ_w"/>
@@ -582,19 +636,19 @@
           <children xmi:type="notation:DecorationNode" xmi:id="_uiIR4O4dEey3buyMmxEJ_w" type="Class_FloatingNameLabel">
             <layoutConstraint xmi:type="notation:Location" xmi:id="_uiIR4e4dEey3buyMmxEJ_w" y="15"/>
           </children>
-          <children xmi:type="notation:BasicCompartment" xmi:id="_uiIR4u4dEey3buyMmxEJ_w" visible="false" type="Class_AttributeCompartment">
+          <children xmi:type="notation:BasicCompartment" xmi:id="_uiIR4u4dEey3buyMmxEJ_w" type="Class_AttributeCompartment">
             <styles xmi:type="notation:TitleStyle" xmi:id="_uiIR4-4dEey3buyMmxEJ_w"/>
             <styles xmi:type="notation:SortingStyle" xmi:id="_uiIR5O4dEey3buyMmxEJ_w"/>
             <styles xmi:type="notation:FilteringStyle" xmi:id="_uiIR5e4dEey3buyMmxEJ_w"/>
             <layoutConstraint xmi:type="notation:Bounds" xmi:id="_uiIR5u4dEey3buyMmxEJ_w"/>
           </children>
-          <children xmi:type="notation:BasicCompartment" xmi:id="_uiIR5-4dEey3buyMmxEJ_w" visible="false" type="Class_OperationCompartment">
+          <children xmi:type="notation:BasicCompartment" xmi:id="_uiIR5-4dEey3buyMmxEJ_w" type="Class_OperationCompartment">
             <styles xmi:type="notation:TitleStyle" xmi:id="_uiIR6O4dEey3buyMmxEJ_w"/>
             <styles xmi:type="notation:SortingStyle" xmi:id="_uiIR6e4dEey3buyMmxEJ_w"/>
             <styles xmi:type="notation:FilteringStyle" xmi:id="_uiIR6u4dEey3buyMmxEJ_w"/>
             <layoutConstraint xmi:type="notation:Bounds" xmi:id="_uiIR6-4dEey3buyMmxEJ_w"/>
           </children>
-          <children xmi:type="notation:BasicCompartment" xmi:id="_uiIR7O4dEey3buyMmxEJ_w" visible="false" type="Class_NestedClassifierCompartment">
+          <children xmi:type="notation:BasicCompartment" xmi:id="_uiIR7O4dEey3buyMmxEJ_w" type="Class_NestedClassifierCompartment">
             <styles xmi:type="notation:TitleStyle" xmi:id="_uiIR7e4dEey3buyMmxEJ_w"/>
             <styles xmi:type="notation:SortingStyle" xmi:id="_uiIR7u4dEey3buyMmxEJ_w"/>
             <styles xmi:type="notation:FilteringStyle" xmi:id="_uiIR7-4dEey3buyMmxEJ_w"/>
@@ -707,29 +761,30 @@
       <element xmi:type="uml:Package" href="rclpy.uml#_jLnsoO4dEey3buyMmxEJ_w"/>
       <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jLw2ke4dEey3buyMmxEJ_w" x="60" y="40" width="501" height="321"/>
     </children>
-    <children xmi:type="notation:Shape" xmi:id="_9ws_0KlUEe2LQoLntInr8Q" type="StereotypeComment">
-      <styles xmi:type="notation:TitleStyle" xmi:id="_9ws_0alUEe2LQoLntInr8Q"/>
-      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_9ws_06lUEe2LQoLntInr8Q" name="BASE_ELEMENT">
+    <children xmi:type="notation:Shape" xmi:id="__UPYsCrFEe6lW41OK3U93g" type="StereotypeComment">
+      <styles xmi:type="notation:TitleStyle" xmi:id="__UPYsSrFEe6lW41OK3U93g"/>
+      <styles xmi:type="notation:EObjectValueStyle" xmi:id="__UPYsyrFEe6lW41OK3U93g" name="BASE_ELEMENT">
         <eObjectValue xmi:type="uml:Package" href="rclpy.uml#_jLnsoO4dEey3buyMmxEJ_w"/>
       </styles>
       <element xsi:nil="true"/>
-      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9ws_0qlUEe2LQoLntInr8Q" x="440" y="280"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="__UPYsirFEe6lW41OK3U93g" x="260" y="40"/>
     </children>
     <styles xmi:type="notation:StringValueStyle" xmi:id="_YzA6Ee4dEey3buyMmxEJ_w" name="diagram_compatibility_version" stringValue="1.4.0"/>
     <styles xmi:type="notation:DiagramStyle" xmi:id="_YzA6Eu4dEey3buyMmxEJ_w"/>
     <styles xmi:type="style:PapyrusDiagramStyle" xmi:id="_YzA6E-4dEey3buyMmxEJ_w" diagramKindId="org.eclipse.papyrus.uml.diagram.class">
       <owner xmi:type="uml:Model" href="rclpy.uml#_21YB0O4aEey3buyMmxEJ_w"/>
     </styles>
+    <styles xmi:type="notation:EObjectListValueStyle" xmi:id="_rOMbACrGEe6lW41OK3U93g" name="css_stylesheets" eObjectListValue="_TRysQCrGEe6lW41OK3U93g"/>
     <element xmi:type="uml:Model" href="rclpy.uml#_21YB0O4aEey3buyMmxEJ_w"/>
-    <edges xmi:type="notation:Connector" xmi:id="_9ws_1KlUEe2LQoLntInr8Q" type="StereotypeCommentLink" source="_jLw2kO4dEey3buyMmxEJ_w" target="_9ws_0KlUEe2LQoLntInr8Q">
-      <styles xmi:type="notation:FontStyle" xmi:id="_9ws_1alUEe2LQoLntInr8Q"/>
-      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_9wtm4qlUEe2LQoLntInr8Q" name="BASE_ELEMENT">
+    <edges xmi:type="notation:Connector" xmi:id="__UPYtCrFEe6lW41OK3U93g" type="StereotypeCommentLink" source="_jLw2kO4dEey3buyMmxEJ_w" target="__UPYsCrFEe6lW41OK3U93g">
+      <styles xmi:type="notation:FontStyle" xmi:id="__UPYtSrFEe6lW41OK3U93g"/>
+      <styles xmi:type="notation:EObjectValueStyle" xmi:id="__UPYuSrFEe6lW41OK3U93g" name="BASE_ELEMENT">
         <eObjectValue xmi:type="uml:Package" href="rclpy.uml#_jLnsoO4dEey3buyMmxEJ_w"/>
       </styles>
       <element xsi:nil="true"/>
-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_9ws_1qlUEe2LQoLntInr8Q" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
-      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_9wtm4KlUEe2LQoLntInr8Q"/>
-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_9wtm4alUEe2LQoLntInr8Q"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="__UPYtirFEe6lW41OK3U93g" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="__UPYtyrFEe6lW41OK3U93g"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="__UPYuCrFEe6lW41OK3U93g"/>
     </edges>
   </notation:Diagram>
   <notation:Diagram xmi:id="_mrsrsO4eEey3buyMmxEJ_w" type="PapyrusUMLClassDiagram" name="time_module" measurementUnit="Pixel">
@@ -802,19 +857,19 @@
           <children xmi:type="notation:DecorationNode" xmi:id="_NRiwFO4fEey3buyMmxEJ_w" type="Class_FloatingNameLabel_CN">
             <layoutConstraint xmi:type="notation:Location" xmi:id="_NRiwFe4fEey3buyMmxEJ_w" y="15"/>
           </children>
-          <children xmi:type="notation:BasicCompartment" xmi:id="_NRiwFu4fEey3buyMmxEJ_w" visible="false" type="Class_AttributeCompartment_CN">
+          <children xmi:type="notation:BasicCompartment" xmi:id="_NRiwFu4fEey3buyMmxEJ_w" type="Class_AttributeCompartment_CN">
             <styles xmi:type="notation:TitleStyle" xmi:id="_NRiwF-4fEey3buyMmxEJ_w"/>
             <styles xmi:type="notation:SortingStyle" xmi:id="_NRiwGO4fEey3buyMmxEJ_w"/>
             <styles xmi:type="notation:FilteringStyle" xmi:id="_NRiwGe4fEey3buyMmxEJ_w"/>
             <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NRiwGu4fEey3buyMmxEJ_w"/>
           </children>
-          <children xmi:type="notation:BasicCompartment" xmi:id="_NRiwG-4fEey3buyMmxEJ_w" visible="false" type="Class_OperationCompartment_CN">
+          <children xmi:type="notation:BasicCompartment" xmi:id="_NRiwG-4fEey3buyMmxEJ_w" type="Class_OperationCompartment_CN">
             <styles xmi:type="notation:TitleStyle" xmi:id="_NRiwHO4fEey3buyMmxEJ_w"/>
             <styles xmi:type="notation:SortingStyle" xmi:id="_NRiwHe4fEey3buyMmxEJ_w"/>
             <styles xmi:type="notation:FilteringStyle" xmi:id="_NRiwHu4fEey3buyMmxEJ_w"/>
             <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NRiwH-4fEey3buyMmxEJ_w"/>
           </children>
-          <children xmi:type="notation:BasicCompartment" xmi:id="_NRiwIO4fEey3buyMmxEJ_w" visible="false" type="Class_NestedClassifierCompartment_CN">
+          <children xmi:type="notation:BasicCompartment" xmi:id="_NRiwIO4fEey3buyMmxEJ_w" type="Class_NestedClassifierCompartment_CN">
             <styles xmi:type="notation:TitleStyle" xmi:id="_NRiwIe4fEey3buyMmxEJ_w"/>
             <styles xmi:type="notation:SortingStyle" xmi:id="_NRiwIu4fEey3buyMmxEJ_w"/>
             <styles xmi:type="notation:FilteringStyle" xmi:id="_NRiwI-4fEey3buyMmxEJ_w"/>
@@ -828,19 +883,19 @@
           <children xmi:type="notation:DecorationNode" xmi:id="_N42ApO4fEey3buyMmxEJ_w" type="Class_FloatingNameLabel_CN">
             <layoutConstraint xmi:type="notation:Location" xmi:id="_N42Ape4fEey3buyMmxEJ_w" y="15"/>
           </children>
-          <children xmi:type="notation:BasicCompartment" xmi:id="_N42Apu4fEey3buyMmxEJ_w" visible="false" type="Class_AttributeCompartment_CN">
+          <children xmi:type="notation:BasicCompartment" xmi:id="_N42Apu4fEey3buyMmxEJ_w" type="Class_AttributeCompartment_CN">
             <styles xmi:type="notation:TitleStyle" xmi:id="_N42Ap-4fEey3buyMmxEJ_w"/>
             <styles xmi:type="notation:SortingStyle" xmi:id="_N42AqO4fEey3buyMmxEJ_w"/>
             <styles xmi:type="notation:FilteringStyle" xmi:id="_N42Aqe4fEey3buyMmxEJ_w"/>
             <layoutConstraint xmi:type="notation:Bounds" xmi:id="_N42Aqu4fEey3buyMmxEJ_w"/>
           </children>
-          <children xmi:type="notation:BasicCompartment" xmi:id="_N42Aq-4fEey3buyMmxEJ_w" visible="false" type="Class_OperationCompartment_CN">
+          <children xmi:type="notation:BasicCompartment" xmi:id="_N42Aq-4fEey3buyMmxEJ_w" type="Class_OperationCompartment_CN">
             <styles xmi:type="notation:TitleStyle" xmi:id="_N42ArO4fEey3buyMmxEJ_w"/>
             <styles xmi:type="notation:SortingStyle" xmi:id="_N42Are4fEey3buyMmxEJ_w"/>
             <styles xmi:type="notation:FilteringStyle" xmi:id="_N42Aru4fEey3buyMmxEJ_w"/>
             <layoutConstraint xmi:type="notation:Bounds" xmi:id="_N42Ar-4fEey3buyMmxEJ_w"/>
           </children>
-          <children xmi:type="notation:BasicCompartment" xmi:id="_N42AsO4fEey3buyMmxEJ_w" visible="false" type="Class_NestedClassifierCompartment_CN">
+          <children xmi:type="notation:BasicCompartment" xmi:id="_N42AsO4fEey3buyMmxEJ_w" type="Class_NestedClassifierCompartment_CN">
             <styles xmi:type="notation:TitleStyle" xmi:id="_N42Ase4fEey3buyMmxEJ_w"/>
             <styles xmi:type="notation:SortingStyle" xmi:id="_N42Asu4fEey3buyMmxEJ_w"/>
             <styles xmi:type="notation:FilteringStyle" xmi:id="_N42As-4fEey3buyMmxEJ_w"/>
@@ -853,31 +908,32 @@
         <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LDGilu4fEey3buyMmxEJ_w"/>
       </children>
       <element xmi:type="uml:Package" href="rclpy.uml#_LDGikO4fEey3buyMmxEJ_w"/>
-      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LDGiku4fEey3buyMmxEJ_w" x="80" y="80" width="321" height="161"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LDGiku4fEey3buyMmxEJ_w" x="80" y="60" width="321" height="161"/>
     </children>
-    <children xmi:type="notation:Shape" xmi:id="_wVX6QLlGEe27HeoHLJk0Yw" type="StereotypeComment">
-      <styles xmi:type="notation:TitleStyle" xmi:id="_wVX6QblGEe27HeoHLJk0Yw"/>
-      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_wVX6Q7lGEe27HeoHLJk0Yw" name="BASE_ELEMENT">
+    <children xmi:type="notation:Shape" xmi:id="__UzZYCrFEe6lW41OK3U93g" type="StereotypeComment">
+      <styles xmi:type="notation:TitleStyle" xmi:id="__UzZYSrFEe6lW41OK3U93g"/>
+      <styles xmi:type="notation:EObjectValueStyle" xmi:id="__UzZYyrFEe6lW41OK3U93g" name="BASE_ELEMENT">
         <eObjectValue xmi:type="uml:Package" href="rclpy.uml#_LDGikO4fEey3buyMmxEJ_w"/>
       </styles>
       <element xsi:nil="true"/>
-      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_wVX6QrlGEe27HeoHLJk0Yw" x="280" y="80"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="__UzZYirFEe6lW41OK3U93g" x="280" y="80"/>
     </children>
     <styles xmi:type="notation:StringValueStyle" xmi:id="_HbgJwe4fEey3buyMmxEJ_w" name="diagram_compatibility_version" stringValue="1.4.0"/>
     <styles xmi:type="notation:DiagramStyle" xmi:id="_HbgJwu4fEey3buyMmxEJ_w"/>
     <styles xmi:type="style:PapyrusDiagramStyle" xmi:id="_HbgJw-4fEey3buyMmxEJ_w" diagramKindId="org.eclipse.papyrus.uml.diagram.class">
       <owner xmi:type="uml:Model" href="rclpy.uml#_21YB0O4aEey3buyMmxEJ_w"/>
     </styles>
+    <styles xmi:type="notation:EObjectListValueStyle" xmi:id="_p2oLICrGEe6lW41OK3U93g" name="css_stylesheets" eObjectListValue="_TRysQCrGEe6lW41OK3U93g"/>
     <element xmi:type="uml:Model" href="rclpy.uml#_21YB0O4aEey3buyMmxEJ_w"/>
-    <edges xmi:type="notation:Connector" xmi:id="_wVX6RLlGEe27HeoHLJk0Yw" type="StereotypeCommentLink" source="_LDGike4fEey3buyMmxEJ_w" target="_wVX6QLlGEe27HeoHLJk0Yw">
-      <styles xmi:type="notation:FontStyle" xmi:id="_wVX6RblGEe27HeoHLJk0Yw"/>
-      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_wVYhUrlGEe27HeoHLJk0Yw" name="BASE_ELEMENT">
+    <edges xmi:type="notation:Connector" xmi:id="__UzZZCrFEe6lW41OK3U93g" type="StereotypeCommentLink" source="_LDGike4fEey3buyMmxEJ_w" target="__UzZYCrFEe6lW41OK3U93g">
+      <styles xmi:type="notation:FontStyle" xmi:id="__UzZZSrFEe6lW41OK3U93g"/>
+      <styles xmi:type="notation:EObjectValueStyle" xmi:id="__UzZaSrFEe6lW41OK3U93g" name="BASE_ELEMENT">
         <eObjectValue xmi:type="uml:Package" href="rclpy.uml#_LDGikO4fEey3buyMmxEJ_w"/>
       </styles>
       <element xsi:nil="true"/>
-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_wVX6RrlGEe27HeoHLJk0Yw" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
-      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_wVYhULlGEe27HeoHLJk0Yw"/>
-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_wVYhUblGEe27HeoHLJk0Yw"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="__UzZZirFEe6lW41OK3U93g" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="__UzZZyrFEe6lW41OK3U93g"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="__UzZaCrFEe6lW41OK3U93g"/>
     </edges>
   </notation:Diagram>
   <notation:Diagram xmi:id="_iy4woO4qEeyyq6rTvdmD_g" type="PapyrusUMLClassDiagram" name="subscription_module" measurementUnit="Pixel">
@@ -908,37 +964,38 @@
             <layoutConstraint xmi:type="notation:Bounds" xmi:id="_mSqDM-4qEeyyq6rTvdmD_g"/>
           </children>
           <element xmi:type="uml:Class" href="rclpy.uml#_mSgSIO4qEeyyq6rTvdmD_g"/>
-          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_mSqDIe4qEeyyq6rTvdmD_g" x="14" y="3"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_mSqDIe4qEeyyq6rTvdmD_g" x="14" y="16" height="81"/>
         </children>
         <styles xmi:type="notation:TitleStyle" xmi:id="_jzhHNO4qEeyyq6rTvdmD_g"/>
         <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jzhHNe4qEeyyq6rTvdmD_g"/>
       </children>
       <element xmi:type="uml:Package" href="rclpy.uml#_jzOMQO4qEeyyq6rTvdmD_g"/>
-      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jzhHMe4qEeyyq6rTvdmD_g" x="120" y="100" width="181" height="161"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jzhHMe4qEeyyq6rTvdmD_g" x="100" y="80" width="181" height="161"/>
     </children>
-    <children xmi:type="notation:Shape" xmi:id="_zLnHl7lGEe27HeoHLJk0Yw" type="StereotypeComment">
-      <styles xmi:type="notation:TitleStyle" xmi:id="_zLnHmLlGEe27HeoHLJk0Yw"/>
-      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_zLnHmrlGEe27HeoHLJk0Yw" name="BASE_ELEMENT">
+    <children xmi:type="notation:Shape" xmi:id="__VcSkyrFEe6lW41OK3U93g" type="StereotypeComment">
+      <styles xmi:type="notation:TitleStyle" xmi:id="__VcSlCrFEe6lW41OK3U93g"/>
+      <styles xmi:type="notation:EObjectValueStyle" xmi:id="__VcSlirFEe6lW41OK3U93g" name="BASE_ELEMENT">
         <eObjectValue xmi:type="uml:Package" href="rclpy.uml#_jzOMQO4qEeyyq6rTvdmD_g"/>
       </styles>
       <element xsi:nil="true"/>
-      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zLnHmblGEe27HeoHLJk0Yw" x="320" y="100"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="__VcSlSrFEe6lW41OK3U93g" x="320" y="100"/>
     </children>
     <styles xmi:type="notation:StringValueStyle" xmi:id="_iy4woe4qEeyyq6rTvdmD_g" name="diagram_compatibility_version" stringValue="1.4.0"/>
     <styles xmi:type="notation:DiagramStyle" xmi:id="_iy4wou4qEeyyq6rTvdmD_g"/>
     <styles xmi:type="style:PapyrusDiagramStyle" xmi:id="_iy4wo-4qEeyyq6rTvdmD_g" diagramKindId="org.eclipse.papyrus.uml.diagram.class">
       <owner xmi:type="uml:Model" href="rclpy.uml#_21YB0O4aEey3buyMmxEJ_w"/>
     </styles>
+    <styles xmi:type="notation:EObjectListValueStyle" xmi:id="_l1vIkCrGEe6lW41OK3U93g" name="css_stylesheets" eObjectListValue="_TRysQCrGEe6lW41OK3U93g"/>
     <element xmi:type="uml:Model" href="rclpy.uml#_21YB0O4aEey3buyMmxEJ_w"/>
-    <edges xmi:type="notation:Connector" xmi:id="_zLnHm7lGEe27HeoHLJk0Yw" type="StereotypeCommentLink" source="_jzhHMO4qEeyyq6rTvdmD_g" target="_zLnHl7lGEe27HeoHLJk0Yw">
-      <styles xmi:type="notation:FontStyle" xmi:id="_zLnHnLlGEe27HeoHLJk0Yw"/>
-      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_zLnuorlGEe27HeoHLJk0Yw" name="BASE_ELEMENT">
+    <edges xmi:type="notation:Connector" xmi:id="__VcSlyrFEe6lW41OK3U93g" type="StereotypeCommentLink" source="_jzhHMO4qEeyyq6rTvdmD_g" target="__VcSkyrFEe6lW41OK3U93g">
+      <styles xmi:type="notation:FontStyle" xmi:id="__VcSmCrFEe6lW41OK3U93g"/>
+      <styles xmi:type="notation:EObjectValueStyle" xmi:id="__VcSnCrFEe6lW41OK3U93g" name="BASE_ELEMENT">
         <eObjectValue xmi:type="uml:Package" href="rclpy.uml#_jzOMQO4qEeyyq6rTvdmD_g"/>
       </styles>
       <element xsi:nil="true"/>
-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_zLnHnblGEe27HeoHLJk0Yw" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
-      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_zLnuoLlGEe27HeoHLJk0Yw"/>
-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_zLnuoblGEe27HeoHLJk0Yw"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="__VcSmSrFEe6lW41OK3U93g" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="__VcSmirFEe6lW41OK3U93g"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="__VcSmyrFEe6lW41OK3U93g"/>
     </edges>
   </notation:Diagram>
   <notation:Diagram xmi:id="_Lc-ksO4rEeyyq6rTvdmD_g" type="PapyrusUMLClassDiagram" name="client_module" measurementUnit="Pixel">
@@ -1046,15 +1103,6 @@
     <element xmi:type="uml:Model" href="rclpy.uml#_21YB0O4aEey3buyMmxEJ_w"/>
   </notation:Diagram>
   <notation:Diagram xmi:id="_JcGBIAj9Ee2-xOjQ3SYv9w" type="PapyrusUMLClassDiagram" name="rclpy_pkg" measurementUnit="Pixel">
-    <children xmi:type="notation:Shape" xmi:id="_Lf_ykAj9Ee2-xOjQ3SYv9w" type="Package_Shape">
-      <children xmi:type="notation:DecorationNode" xmi:id="_LgCO0Aj9Ee2-xOjQ3SYv9w" type="Package_NameLabel"/>
-      <children xmi:type="notation:BasicCompartment" xmi:id="_LgCO0Qj9Ee2-xOjQ3SYv9w" type="Package_PackagedElementCompartment">
-        <styles xmi:type="notation:TitleStyle" xmi:id="_LgCO0gj9Ee2-xOjQ3SYv9w"/>
-        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LgCO0wj9Ee2-xOjQ3SYv9w"/>
-      </children>
-      <element xmi:type="uml:Package" href="rclpy.uml#_LfjtsAj9Ee2-xOjQ3SYv9w"/>
-      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Lf_ykQj9Ee2-xOjQ3SYv9w" x="300" y="120"/>
-    </children>
     <styles xmi:type="notation:StringValueStyle" xmi:id="_JcGBIQj9Ee2-xOjQ3SYv9w" name="diagram_compatibility_version" stringValue="1.4.0"/>
     <styles xmi:type="notation:DiagramStyle" xmi:id="_JcGBIgj9Ee2-xOjQ3SYv9w"/>
     <styles xmi:type="style:PapyrusDiagramStyle" xmi:id="_JcGBIwj9Ee2-xOjQ3SYv9w" diagramKindId="org.eclipse.papyrus.uml.diagram.class">
@@ -1852,4 +1900,5 @@
       <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="__YT6dblHEe27HeoHLJk0Yw"/>
     </edges>
   </notation:Diagram>
+  <css:EmbeddedStyleSheet xmi:id="_TRysQCrGEe6lW41OK3U93g" label="NoOperations" content="Class, Enumeration {&#xA;&#x9;fillcolor : white;&#xA;}&#xA;Class > Compartment[kind=&quot;operations&quot;] {&#xA;    visible: false;&#xA;}&#xA;Class > Compartment[kind=&quot;nestedclassifiers&quot;] {&#xA;    visible: false;&#xA;}"/>
 </xmi:XMI>
diff --git a/plugins/ros2/org.eclipse.papyrus.robotics.ros2.codegen.python/models/library/rclpy.uml b/plugins/ros2/org.eclipse.papyrus.robotics.ros2.codegen.python/models/library/rclpy.uml
index ffdcb89..2a36b3d 100644
--- a/plugins/ros2/org.eclipse.papyrus.robotics.ros2.codegen.python/models/library/rclpy.uml
+++ b/plugins/ros2/org.eclipse.papyrus.robotics.ros2.codegen.python/models/library/rclpy.uml
@@ -27,6 +27,8 @@
     <packagedElement xmi:type="uml:Package" xmi:id="_8JMZ8O4cEey3buyMmxEJ_w" name="action">
       <packagedElement xmi:type="uml:Class" xmi:id="_Axv5cO4dEey3buyMmxEJ_w" name="ActionServer"/>
       <packagedElement xmi:type="uml:Class" xmi:id="_FZwmYO4dEey3buyMmxEJ_w" name="ActionClient"/>
+      <packagedElement xmi:type="uml:Class" xmi:id="_GoYUsCrGEe6lW41OK3U93g" name="CancelResponse"/>
+      <packagedElement xmi:type="uml:Class" xmi:id="_H34NsCrGEe6lW41OK3U93g" name="GoalResponse"/>
     </packagedElement>
     <packagedElement xmi:type="uml:Package" xmi:id="_jLnsoO4dEey3buyMmxEJ_w" name="qos">
       <packagedElement xmi:type="uml:Class" xmi:id="_kwVnsO4dEey3buyMmxEJ_w" name="QoSProfile"/>
@@ -55,7 +57,6 @@
     <packagedElement xmi:type="uml:Package" xmi:id="_f61wAO4rEeyyq6rTvdmD_g" name="service">
       <packagedElement xmi:type="uml:Class" xmi:id="_ji1xcO4rEeyyq6rTvdmD_g" name="Service"/>
     </packagedElement>
-    <packagedElement xmi:type="uml:Package" xmi:id="_LfjtsAj9Ee2-xOjQ3SYv9w" name="rclpy"/>
     <packagedElement xmi:type="uml:Package" xmi:id="_iZGXMLlHEe27HeoHLJk0Yw" name="callback_groups">
       <packagedElement xmi:type="uml:Class" xmi:id="_nzC3YLlHEe27HeoHLJk0Yw" name="ReentrantCallbackGroup"/>
       <packagedElement xmi:type="uml:Class" xmi:id="_sgWUALlHEe27HeoHLJk0Yw" name="MutuallyExclusiveCallbackGroup"/>
@@ -78,4 +79,5 @@
   <python:Module xmi:id="_Ocr3EO4rEeyyq6rTvdmD_g" base_Package="_MtPSsO4rEeyyq6rTvdmD_g"/>
   <python:Module xmi:id="_WzctsO4rEeyyq6rTvdmD_g" base_Package="_jzOMQO4qEeyyq6rTvdmD_g"/>
   <python:Module xmi:id="_ltGekLlHEe27HeoHLJk0Yw" base_Package="_iZGXMLlHEe27HeoHLJk0Yw"/>
+  <python:Module xmi:id="_UIGCMCoCEe6lW41OK3U93g" base_Package="_f61wAO4rEeyyq6rTvdmD_g"/>
 </xmi:XMI>
diff --git a/plugins/ros2/org.eclipse.papyrus.robotics.ros2.codegen.python/src/org/eclipse/papyrus/robotics/ros2/codegen/python/component/Callbacks.xtend b/plugins/ros2/org.eclipse.papyrus.robotics.ros2.codegen.python/src/org/eclipse/papyrus/robotics/ros2/codegen/python/component/Callbacks.xtend
index 1f3a070..ad96c43 100644
--- a/plugins/ros2/org.eclipse.papyrus.robotics.ros2.codegen.python/src/org/eclipse/papyrus/robotics/ros2/codegen/python/component/Callbacks.xtend
+++ b/plugins/ros2/org.eclipse.papyrus.robotics.ros2.codegen.python/src/org/eclipse/papyrus/robotics/ros2/codegen/python/component/Callbacks.xtend
@@ -14,29 +14,25 @@
 
 package org.eclipse.papyrus.robotics.ros2.codegen.python.component
 
-import org.eclipse.papyrus.designer.languages.common.profile.Codegen.NoCodeGen
 import org.eclipse.papyrus.designer.languages.common.profile.Codegen.TemplateBinding
 import org.eclipse.papyrus.designer.transformation.base.utils.TransformationException
 import org.eclipse.papyrus.robotics.codegen.common.utils.ApplyProfiles
 import org.eclipse.papyrus.robotics.core.utils.FunctionUtils
 import org.eclipse.papyrus.robotics.profile.robotics.components.ActivityPort
 import org.eclipse.papyrus.robotics.profile.robotics.functions.FunctionKind
-import org.eclipse.papyrus.designer.uml.tools.utils.StereotypeUtil
 import org.eclipse.uml2.uml.Behavior
 import org.eclipse.uml2.uml.Class
-import org.eclipse.uml2.uml.Package
 import org.eclipse.uml2.uml.ParameterDirectionKind
 import org.eclipse.uml2.uml.Port
 
 import static org.eclipse.papyrus.robotics.ros2.codegen.python.utils.RosPythonTypes.*
 
+import static extension org.eclipse.papyrus.designer.uml.tools.utils.StereotypeUtil.applyApp
 import static extension org.eclipse.papyrus.robotics.codegen.common.utils.ActivityUtils.*
 import static extension org.eclipse.papyrus.robotics.core.utils.FunctionUtils.getFunction
 import static extension org.eclipse.papyrus.robotics.core.utils.InteractionUtils.*
 import static extension org.eclipse.papyrus.robotics.ros2.codegen.common.utils.MessageUtils.*
 import static extension org.eclipse.papyrus.robotics.ros2.codegen.common.utils.RosHelpers.*
-import static extension org.eclipse.papyrus.designer.uml.tools.utils.StereotypeUtil.apply
-import static extension org.eclipse.papyrus.designer.uml.tools.utils.StereotypeUtil.applyApp
 
 /**
  * provide the callback functions (via bind) for the various kind of ports
@@ -117,44 +113,37 @@
 	 *  - The goal callback, that gets called if a client sets a new goal.
 	 *  - The cancel callback for canceling a previous goal
 	 *  - The accept callback to accept ... (What?)
-	 *
+	 * The code leaves many parameters untyped for simplicity 
+	 * 
 	 * @param component a component
 	 * @param port a port for which to provide callbacks
 	 */
 	def static void clientCallsbacksForAction(Class component, Port port) {
 		val activityPort = component.getActivityForPort(port)
 		checkActivity(activityPort, ACTION, port)
-		val handleType = getType(port, "ros2Library::rclcpp_action::ClientGoalHandle");
 		val feedbackFct = activityPort.getFunction(FunctionKind.HANDLER, FunctionUtils.R_FEEDBACK)
 		// no need to check functions, as their use is optional (developer can also
 		// define his own lambda's)
 		if (feedbackFct !== null) {
 			// add parameters for feedback callback: handle and feedback
 			val lFeedbackFct = component.getOwnedBehavior(feedbackFct.name)
-			val handleParam = lFeedbackFct.specification.createOwnedParameter("handle", handleType)
-			ApplyProfiles.applyCommonProfile(handleParam)
-			val template = StereotypeUtil.applyApp(handleParam, TemplateBinding)
-			template.actuals.add(port.serviceType)
-			lFeedbackFct.specification.createOwnedParameter("feedback", port.serviceType)
+			lFeedbackFct.specification.createOwnedParameter("handle", null)
+			lFeedbackFct.specification.createOwnedParameter("feedback", null)
 		}
 
 		val resultFct = activityPort.getFunction(FunctionKind.HANDLER, FunctionUtils.R_RESULT)
 		if (resultFct !== null) {
 			// add parameter for result callback: result
 			val lResultFct = component.getOwnedBehavior(resultFct.name)
-			val resultParam = lResultFct.specification.createOwnedParameter("result", handleType)
-			val resultTpl = StereotypeUtil.applyApp(resultParam, TemplateBinding)
-			resultTpl.actuals.add(port.serviceType)
+			lResultFct.specification.createOwnedParameter("result", null)
 		}
 
 		val goalFct = activityPort.getFunction(FunctionKind.HANDLER, FunctionUtils.GOAL)
 		if (goalFct !== null) {
 			// obtain function that has been copied into the node (in liftFunction)
 			val lGoalFct = component.getOwnedBehavior(goalFct.name)
-			// add parameter for goal_response callback: future
-			val futureTypeName = String.format("std::shared_future<rclcpp_action::ClientGoalHandle<%s>::SharedPtr>",
-				port.serviceType.externalName)
-			lGoalFct.specification.createOwnedParameter("future", component.dummyType(futureTypeName))
+			// add parameter for future
+			lGoalFct.specification.createOwnedParameter("future", null)
 		}
 	}
 
@@ -171,32 +160,25 @@
 		val lGoalFct = component.getOwnedBehavior(goalFct.name)
 		val lCancelFct = component.getOwnedBehavior(cancelFct.name)
 		val lAcceptedFct = component.getOwnedBehavior(acceptedFct.name)
-		val goalUUID = getType(port, "ros2Library::rclcpp_action::GoalUUID");
 		// val goalHandle = getRosType(port, "ros2Library::rclcpp_action::ClientGoalHandle");
-		val goalResponse = getType(port, "ros2Library::rclcpp_action::GoalResponse");
-		val cancelResponse = getType(port, "ros2Library::rclcpp_action::CancelResponse");
+		val goalResponse = getType(port, "rclpy::action::GoalResponse");
+		val cancelResponse = getType(port, "rclpy::action::CancelResponse");
 
-		// add parameters for handle_goal callback: uuid, goal and goalResponse (return value)
-		lGoalFct.specification.createOwnedParameter("uuid", goalUUID)
-		val goalTypeName = String.format("std::shared_ptr<const %s::Goal>", port.serviceType.externalName)
-		lGoalFct.specification.createOwnedParameter("goal", component.dummyType(goalTypeName))
+		lGoalFct.specification.createOwnedParameter("goal", goalResponse)
 		val goalRetParam = lGoalFct.specification.createOwnedParameter("return", goalResponse)
 		goalRetParam.direction = ParameterDirectionKind.RETURN_LITERAL
 
 		// add parameter for cancel: goal_handle and cancelReponse (return value)
-		val goalHandleTypeName = String.format("const std::shared_ptr<rclcpp_action::ServerGoalHandle<%s>>",
-			port.serviceType.externalName)
-		lCancelFct.specification.createOwnedParameter("goal_handle", component.dummyType(goalHandleTypeName))
+		lCancelFct.specification.createOwnedParameter("goal_handle", goalResponse)
 		val cancelRetParam = lCancelFct.specification.createOwnedParameter("return", cancelResponse)
 		cancelRetParam.direction = ParameterDirectionKind.RETURN_LITERAL
 
 		// add parameter for goal_response callback: future
-		lAcceptedFct.specification.createOwnedParameter("goal_handle", component.dummyType(goalHandleTypeName))
+		lAcceptedFct.specification.createOwnedParameter("goal_handle", null)
 		return '''
-			std::bind(&«component.qualifiedName»«component.postfix»::«goalFct.name», («component.name»«component.postfix»*) this, std::placeholders::_1, std::placeholders::_2),
-			std::bind(&«component.qualifiedName»«component.postfix»::«cancelFct.name», («component.name»«component.postfix»*) this, std::placeholders::_1),
-			std::bind(&«component.qualifiedName»«component.postfix»::«acceptedFct.name», («component.name»«component.postfix»*) this, std::placeholders::_1)
-		'''
+			execute_callback = self.«acceptedFct.name»,
+			goal_callback = self.«goalFct.name»,
+			cancel_callback = self.«cancelFct.name»'''
 	}
 
 	/**
@@ -221,22 +203,4 @@
 					portKind, activity.base_Port.name, port.name, port.class_.name));
 		}
 	}
-
-	/**
-	 * Create a dummy type with a certain name (since some complex parameter signatures
-	 * can not be expressed using standard mechanisms
-	 */
-	def static dummyType(Class component, String name) {
-		var pkg = component.nearestPackage.getPackagedElement("dummytypes") as Package
-		if (pkg === null) {
-			pkg = component.nearestPackage.createNestedPackage("dummytypes")
-			ApplyProfiles.applyCommonProfile(pkg)
-			pkg.apply(NoCodeGen)
-		}
-		var dummyType = pkg.getPackagedElement(name) as Class
-		if (dummyType === null) {
-			dummyType = pkg.createOwnedClass(name, false)
-		}
-		return dummyType
-	}
 }
diff --git a/plugins/ros2/org.eclipse.papyrus.robotics.ros2.codegen.python/src/org/eclipse/papyrus/robotics/ros2/codegen/python/component/Constructor.xtend b/plugins/ros2/org.eclipse.papyrus.robotics.ros2.codegen.python/src/org/eclipse/papyrus/robotics/ros2/codegen/python/component/Constructor.xtend
index e40e068..aea5fca 100644
--- a/plugins/ros2/org.eclipse.papyrus.robotics.ros2.codegen.python/src/org/eclipse/papyrus/robotics/ros2/codegen/python/component/Constructor.xtend
+++ b/plugins/ros2/org.eclipse.papyrus.robotics.ros2.codegen.python/src/org/eclipse/papyrus/robotics/ros2/codegen/python/component/Constructor.xtend
@@ -26,6 +26,7 @@
 import org.eclipse.uml2.uml.UMLPackage
 import org.eclipse.uml2.uml.profile.standard.Create
 import org.eclipse.uml2.uml.util.UMLUtil
+import org.eclipse.papyrus.designer.languages.python.profile.python.Module
 
 import static org.eclipse.papyrus.robotics.ros2.codegen.python.utils.RosPythonTypes.*
 
@@ -40,6 +41,10 @@
 import static extension org.eclipse.papyrus.robotics.ros2.codegen.python.component.ComponentTransformations.getSrvName
 import org.eclipse.papyrus.robotics.profile.robotics.components.Activity
 import org.eclipse.uml2.uml.LiteralString
+import org.eclipse.papyrus.designer.languages.python.profile.PythonProfileResource
+import org.eclipse.papyrus.designer.transformation.base.utils.ApplyProfileUtils
+import org.eclipse.uml2.uml.Interface
+import org.eclipse.uml2.uml.Dependency
 
 /**
  * Manage constructor creation, including port
@@ -176,25 +181,20 @@
 
 	/**
 	 * Create an action client or server
-	 * TODO: C++ code!
 	 */
 	def static createAction(Port port) '''
 		«IF port.provideds.size() > 0»
-			self.«port.varName»_actsrv_ = rclcpp_action::create_server<«port.serviceType.externalName»>(
-				this->get_node_base_interface(),
-				this->get_node_clock_interface(),
-				this->get_node_logging_interface(),
-				this->get_node_waitables_interface(),
-				"«port.topic»",
-				«port.class_.serverCallsbacksForAction(port)»);
+			self.«port.varName»_actsrv_ = ActionServer(
+				self, «port.serviceType.externalName.getSrvName», '«port.topic»',
+				«port.class_.serverCallsbacksForAction(port)»,
+				callback_group = self.«port.callbackGroupName»)
+			«port.class_.createSvcDependency(port.serviceType)»
 		«ELSE»
-			self.«port.varName»_actcli_ = rclcpp_action::create_client<«port.serviceType.externalName»>(
-				this->get_node_base_interface(),
-				this->get_node_graph_interface(),
-				this->get_node_logging_interface(),
-				this->get_node_waitables_interface(),
-				"«port.topic»");
+			self.«port.varName»_actcli_ = ActionClient(
+				self, «port.serviceType.externalName.getSrvName», '«port.topic»',
+				callback_group = self.«port.callbackGroupName»)
 			«port.class_.clientCallsbacksForAction(port)»
+			«port.class_.createSvcDependency(port.serviceType)»
 		«ENDIF»
 	'''
 
@@ -229,6 +229,21 @@
 			return defaultQoS
 		}
  	}
+	
+	/**
+	 * Helper to create a dependency to a service interface
+	 */
+	def static void createSvcDependency(Class component, Interface svcType) {
+		for (Dependency dep : component.clientDependencies) {
+			if (dep.targets.contains(svcType)) {
+				// a dependency exists already
+				return
+			}
+		}		
+		component.createDependency(svcType)		
+	}
+
+	
 }
 
 
diff --git a/plugins/ros2/org.eclipse.papyrus.robotics.ros2.codegen.python/src/org/eclipse/papyrus/robotics/ros2/codegen/python/component/ParameterTransformations.xtend b/plugins/ros2/org.eclipse.papyrus.robotics.ros2.codegen.python/src/org/eclipse/papyrus/robotics/ros2/codegen/python/component/ParameterTransformations.xtend
index 4e6f291..831d928 100644
--- a/plugins/ros2/org.eclipse.papyrus.robotics.ros2.codegen.python/src/org/eclipse/papyrus/robotics/ros2/codegen/python/component/ParameterTransformations.xtend
+++ b/plugins/ros2/org.eclipse.papyrus.robotics.ros2.codegen.python/src/org/eclipse/papyrus/robotics/ros2/codegen/python/component/ParameterTransformations.xtend
@@ -44,8 +44,7 @@
 				«val description = parameter.description»
 				«var String descriptorVar = null»
 				«IF description !== null»
-					auto «descriptorVar = parameter.name.varName + "_desc"» = rcl_interfaces::msg::ParameterDescriptor();
-					«descriptorVar».description = «description»;
+					««« not supported?
 				«ENDIF»
 				self.declare_parameter('«parameter.name»', «parameter.strDefaultValue(descriptorVar !== null)»)
 			«ENDFOR»
diff --git a/releng/org.eclipse.papyrus.robotics.p2/category.xml b/releng/org.eclipse.papyrus.robotics.p2/category.xml
index 582be29..8c6b386 100644
--- a/releng/org.eclipse.papyrus.robotics.p2/category.xml
+++ b/releng/org.eclipse.papyrus.robotics.p2/category.xml
@@ -30,6 +30,6 @@
       </description>
    </category-def>
    <repository-reference location="https://download.eclipse.org/modeling/mdt/papyrus/components/marte/" enabled="true" />
-   <repository-reference location="https://download.eclipse.org/modeling/mdt/papyrus/components/designer/2023-03" enabled="true" />
    <repository-reference location="https://ci.eclipse.org/esf/job/esf-infra-nightly-build/lastSuccessfulBuild/artifact/p2/target/repository/" enabled="true" />
+   <repository-reference location="https://ci.eclipse.org/papyrus/job/papyrus-designer-2023-03/lastSuccessfulBuild/artifact/releng/org.eclipse.papyrus.designer.p2/target/repository/" enabled="true" />
 </site>