Merge "Bug 544278 - [IoTML] SensiNact profile integration"
diff --git a/org.eclipse.papyrus.iotml.profile/META-INF/MANIFEST.MF b/org.eclipse.papyrus.iotml.profile/META-INF/MANIFEST.MF
index 9ed5be7..38fef09 100644
--- a/org.eclipse.papyrus.iotml.profile/META-INF/MANIFEST.MF
+++ b/org.eclipse.papyrus.iotml.profile/META-INF/MANIFEST.MF
@@ -5,7 +5,11 @@
 Bundle-Version: 1.0.0.qualifier
 Bundle-ClassPath: .
 Bundle-Vendor: %Bundle-Vendor
+Bundle-Localization: plugin
 Export-Package: org.eclipse.papyrus.iotml,
+ org.eclipse.papyrus.iotml.sensinact,
+ org.eclipse.papyrus.iotml.sensinact.impl,
+ org.eclipse.papyrus.iotml.sensinact.util,
  org.eclipse.papyrus.iotml.animate,
  org.eclipse.papyrus.iotml.animate.impl,
  org.eclipse.papyrus.iotml.animate.util,
@@ -41,6 +45,9 @@
  org.eclipse.papyrus.iotml.s3pml.software,
  org.eclipse.papyrus.iotml.s3pml.software.impl,
  org.eclipse.papyrus.iotml.s3pml.software.util,
+ org.eclipse.papyrus.iotml.sensinact,
+ org.eclipse.papyrus.iotml.sensinact.impl,
+ org.eclipse.papyrus.iotml.sensinact.util,
  org.eclipse.papyrus.iotml.software,
  org.eclipse.papyrus.iotml.software.artefact,
  org.eclipse.papyrus.iotml.software.artefact.impl,
diff --git a/org.eclipse.papyrus.iotml.profile/model/IoT-ML.profile.genmodel b/org.eclipse.papyrus.iotml.profile/model/IoT-ML.profile.genmodel
index ee26a33..f895571 100644
--- a/org.eclipse.papyrus.iotml.profile/model/IoT-ML.profile.genmodel
+++ b/org.eclipse.papyrus.iotml.profile/model/IoT-ML.profile.genmodel
@@ -5,7 +5,7 @@
     modelDirectory="/org.eclipse.papyrus.iotml.profile/src-gen" modelPluginID="org.eclipse.papyrus.iotml.profile"
     modelName="IoT-ML" rootExtendsClass="org.eclipse.emf.ecore.impl.MinimalEObjectImpl$Container"
     importerID="org.eclipse.uml2.uml.ecore.importer" complianceLevel="8.0" copyrightFields="false"
-    usedGenPackages="../../org.eclipse.emf.ecore/model/Ecore.genmodel#//ecore platform:/plugin/org.eclipse.papyrus.marte.static.profile/resources/MARTE.genmodel#//MARTE platform:/plugin/org.eclipse.papyrus.marte.static.profile/resources/MARTE.genmodel#//MARTE_Library ../../org.eclipse.papyrus.sysml14/resources/profile/SysML.profile.genmodel#//sysml14 platform:/plugin/org.eclipse.uml2.types/model/Types.genmodel#//types platform:/plugin/org.eclipse.uml2.uml/model/UML.genmodel#//uml"
+    usedGenPackages="../../org.eclipse.emf.ecore/model/Ecore.genmodel#//ecore platform:/plugin/org.eclipse.papyrus.marte.static.profile/resources/MARTE.genmodel#//MARTE platform:/plugin/org.eclipse.papyrus.marte.static.profile/resources/MARTE.genmodel#//MARTE_Library ../../org.eclipse.papyrus.sysml14/resources/profile/SysML.profile.genmodel#//sysml14 platform:/plugin/org.eclipse.uml2.types/model/Types.genmodel#//types platform:/plugin/org.eclipse.uml2.uml/model/UML.genmodel#//uml ../../org.eclipse.uml2.uml.profile.standard/model/Standard.genmodel#//standard"
     importOrganizing="true">
   <genAnnotations source="http://www.eclipse.org/emf/2002/GenModel/importer/org.eclipse.uml2.uml.ecore.importer">
     <details key="OPPOSITE_ROLE_NAMES" value="IGNORE"/>
@@ -287,5 +287,77 @@
         disposableProviderFactory="true" ecorePackage="iotml.ecore#//hybrid">
       <genClasses xsi:type="genmodel:GenClass" ecoreClass="iotml.ecore#//hybrid/PhysicalEntity"/>
     </nestedGenPackages>
+    <nestedGenPackages xsi:type="genmodel:GenPackage" prefix="Sensinact" basePackage="org.eclipse.papyrus.iotml"
+        disposableProviderFactory="true" ecorePackage="iotml.ecore#//sensinact">
+      <genEnums xsi:type="genmodel:GenEnum" typeSafeEnumCompatible="false" ecoreEnum="iotml.ecore#//sensinact/AccessMethodType">
+        <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="iotml.ecore#//sensinact/AccessMethodType/GET"/>
+        <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="iotml.ecore#//sensinact/AccessMethodType/SET"/>
+        <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="iotml.ecore#//sensinact/AccessMethodType/ACT"/>
+        <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="iotml.ecore#//sensinact/AccessMethodType/SUBSCRIBE"/>
+        <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="iotml.ecore#//sensinact/AccessMethodType/UNSUBSCRIBE"/>
+      </genEnums>
+      <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="iotml.ecore#//sensinact/TypedElement">
+        <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+            propertySortChoices="true" ecoreFeature="ecore:EReference iotml.ecore#//sensinact/TypedElement/value"/>
+        <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+            propertySortChoices="true" ecoreFeature="ecore:EReference iotml.ecore#//sensinact/TypedElement/base_TypedElement"/>
+      </genClasses>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="iotml.ecore#//sensinact/Studio">
+        <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+            propertySortChoices="true" ecoreFeature="ecore:EReference iotml.ecore#//sensinact/Studio/gateways"/>
+      </genClasses>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="iotml.ecore#//sensinact/Gateway">
+        <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+            propertySortChoices="true" ecoreFeature="ecore:EReference iotml.ecore#//sensinact/Gateway/devices"/>
+      </genClasses>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="iotml.ecore#//sensinact/Device">
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute iotml.ecore#//sensinact/Device/friendlyName"/>
+        <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+            propertySortChoices="true" ecoreFeature="ecore:EReference iotml.ecore#//sensinact/Device/services"/>
+      </genClasses>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="iotml.ecore#//sensinact/Service">
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute iotml.ecore#//sensinact/Service/friendlyName"/>
+        <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+            propertySortChoices="true" ecoreFeature="ecore:EReference iotml.ecore#//sensinact/Service/resources"/>
+      </genClasses>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="iotml.ecore#//sensinact/Resource">
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute iotml.ecore#//sensinact/Resource/friendlyName"/>
+        <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+            propertySortChoices="true" ecoreFeature="ecore:EReference iotml.ecore#//sensinact/Resource/accessMethods"/>
+        <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+            propertySortChoices="true" ecoreFeature="ecore:EReference iotml.ecore#//sensinact/Resource/attributes"/>
+      </genClasses>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="iotml.ecore#//sensinact/AccessMethod">
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute iotml.ecore#//sensinact/AccessMethod/type"/>
+        <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+            propertySortChoices="true" ecoreFeature="ecore:EReference iotml.ecore#//sensinact/AccessMethod/parameters"/>
+        <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+            propertySortChoices="true" ecoreFeature="ecore:EReference iotml.ecore#//sensinact/AccessMethod/base_Operation"/>
+      </genClasses>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="iotml.ecore#//sensinact/Parameter"/>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="iotml.ecore#//sensinact/Attribute">
+        <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+            propertySortChoices="true" ecoreFeature="ecore:EReference iotml.ecore#//sensinact/Attribute/metadata"/>
+      </genClasses>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="iotml.ecore#//sensinact/Metadata"/>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="iotml.ecore#//sensinact/Property">
+        <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+            propertySortChoices="true" ecoreFeature="ecore:EReference iotml.ecore#//sensinact/Property/base_Property"/>
+      </genClasses>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="iotml.ecore#//sensinact/SensorData">
+        <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+            propertySortChoices="true" ecoreFeature="ecore:EReference iotml.ecore#//sensinact/SensorData/base_Property"/>
+      </genClasses>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="iotml.ecore#//sensinact/StateVariable">
+        <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+            propertySortChoices="true" ecoreFeature="ecore:EReference iotml.ecore#//sensinact/StateVariable/modifier"/>
+        <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+            propertySortChoices="true" ecoreFeature="ecore:EReference iotml.ecore#//sensinact/StateVariable/base_Property"/>
+      </genClasses>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="iotml.ecore#//sensinact/Action">
+        <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+            propertySortChoices="true" ecoreFeature="ecore:EReference iotml.ecore#//sensinact/Action/state"/>
+      </genClasses>
+    </nestedGenPackages>
   </genPackages>
 </genmodel:GenModel>
diff --git a/org.eclipse.papyrus.iotml.profile/model/IoT-ML.profile.notation b/org.eclipse.papyrus.iotml.profile/model/IoT-ML.profile.notation
index 3140c7a..8395747 100644
--- a/org.eclipse.papyrus.iotml.profile/model/IoT-ML.profile.notation
+++ b/org.eclipse.papyrus.iotml.profile/model/IoT-ML.profile.notation
@@ -1881,6 +1881,14 @@
       <element xmi:type="uml:Stereotype" href="IoT-ML.profile.uml#_Fw88MCtyEeeZI6rMTYV60w"/>
       <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Fw-KUStyEeeZI6rMTYV60w" x="470" y="258" width="202" height="82"/>
     </children>
+    <children xmi:type="notation:Shape" xmi:id="_iKSGWiuBEemAOL1eRjr3BA" type="StereotypeComment">
+      <styles xmi:type="notation:TitleStyle" xmi:id="_iKSGWyuBEemAOL1eRjr3BA"/>
+      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_iKSGXSuBEemAOL1eRjr3BA" name="BASE_ELEMENT">
+        <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ValueSpecification"/>
+      </styles>
+      <element xsi:nil="true"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iKSGXCuBEemAOL1eRjr3BA" x="251" y="65"/>
+    </children>
     <styles xmi:type="notation:StringValueStyle" xmi:id="_lXloMCtxEeeZI6rMTYV60w" name="diagram_compatibility_version" stringValue="1.4.0"/>
     <styles xmi:type="notation:DiagramStyle" xmi:id="_lXloMStxEeeZI6rMTYV60w"/>
     <styles xmi:type="style:PapyrusDiagramStyle" xmi:id="_TRozsAtCEeiGKKNRaLJTMQ" diagramKindId="org.eclipse.papyrus.uml.diagram.profile">
@@ -1936,6 +1944,16 @@
       <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_OM4msCtyEeeZI6rMTYV60w" id="(0.0,0.5853658536585366)"/>
       <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_OM4msStyEeeZI6rMTYV60w" id="(1.0,0.5853658536585366)"/>
     </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_iKSGXiuBEemAOL1eRjr3BA" type="StereotypeCommentLink" source="_qDFuACtxEeeZI6rMTYV60w" target="_iKSGWiuBEemAOL1eRjr3BA">
+      <styles xmi:type="notation:FontStyle" xmi:id="_iKSGXyuBEemAOL1eRjr3BA"/>
+      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_iKb3USuBEemAOL1eRjr3BA" name="BASE_ELEMENT">
+        <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ValueSpecification"/>
+      </styles>
+      <element xsi:nil="true"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_iKSGYCuBEemAOL1eRjr3BA" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_iKSGYSuBEemAOL1eRjr3BA"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_iKb3UCuBEemAOL1eRjr3BA"/>
+    </edges>
   </notation:Diagram>
   <notation:Diagram xmi:id="_v_8RgCtyEeeZI6rMTYV60w" type="PapyrusUMLClassDiagram" name="Resource package" measurementUnit="Pixel">
     <children xmi:type="notation:Shape" xmi:id="_zIq9ACtyEeeZI6rMTYV60w" type="Package_Shape">
@@ -2243,7 +2261,7 @@
       <element xmi:type="uml:Stereotype" href="IoT-ML.profile.uml#_fJDgADgYEei4Qbge_iolbQ"/>
       <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fJDgAjgYEei4Qbge_iolbQ" x="659" y="182" width="181" height="80"/>
     </children>
-    <styles xmi:type="notation:StringValueStyle" xmi:id="_WfeowTP_EeiPBNQ6rB83Ew" name="diagram_compatibility_version" stringValue="1.3.0"/>
+    <styles xmi:type="notation:StringValueStyle" xmi:id="_WfeowTP_EeiPBNQ6rB83Ew" name="diagram_compatibility_version" stringValue="1.4.0"/>
     <styles xmi:type="notation:DiagramStyle" xmi:id="_WfeowjP_EeiPBNQ6rB83Ew"/>
     <styles xmi:type="style:PapyrusDiagramStyle" xmi:id="_WfeowzP_EeiPBNQ6rB83Ew" diagramKindId="org.eclipse.papyrus.uml.diagram.profile">
       <owner xmi:type="uml:Package" href="IoT-ML.profile.uml#_UMmnMDP_EeiPBNQ6rB83Ew"/>
@@ -3060,4 +3078,1146 @@
       <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_5EyBITQFEeiPBNQ6rB83Ew" id="(1.0,0.5714285714285714)"/>
     </edges>
   </notation:Diagram>
+  <notation:Diagram xmi:id="_9lVtQCuBEemAOL1eRjr3BA" type="PapyrusUMLProfileDiagram" name="SensiNact" measurementUnit="Pixel">
+    <children xmi:type="notation:Shape" xmi:id="_-9kEcCuBEemAOL1eRjr3BA" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_-9kEciuBEemAOL1eRjr3BA" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_-9kEcyuBEemAOL1eRjr3BA" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_-9kEdCuBEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_-9kEdSuBEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_-9kEdiuBEemAOL1eRjr3BA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-9kEdyuBEemAOL1eRjr3BA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_-9kEeCuBEemAOL1eRjr3BA" visible="false" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_-9kEeSuBEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_-9kEeiuBEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_-9kEeyuBEemAOL1eRjr3BA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-9kEfCuBEemAOL1eRjr3BA"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="IoT-ML.profile.uml#_-9aTcCuBEemAOL1eRjr3BA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-9kEcSuBEemAOL1eRjr3BA" x="-140" y="-100"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="__pmrECuBEemAOL1eRjr3BA" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="__pmrEiuBEemAOL1eRjr3BA" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="__pmrEyuBEemAOL1eRjr3BA" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_KYlnMCuLEemAOL1eRjr3BA" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="IoT-ML.profile.uml#_I_xaICuLEemAOL1eRjr3BA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_KYlnMSuLEemAOL1eRjr3BA"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="__pmrFCuBEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="__pmrFSuBEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="__pmrFiuBEemAOL1eRjr3BA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="__pmrFyuBEemAOL1eRjr3BA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="__pmrGCuBEemAOL1eRjr3BA" visible="false" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="__pmrGSuBEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="__pmrGiuBEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="__pmrGyuBEemAOL1eRjr3BA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="__pmrHCuBEemAOL1eRjr3BA"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="IoT-ML.profile.uml#__pc6ECuBEemAOL1eRjr3BA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="__pmrESuBEemAOL1eRjr3BA" x="-160" y="280"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_AbI1sCuCEemAOL1eRjr3BA" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_AbI1siuCEemAOL1eRjr3BA" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_AbI1syuCEemAOL1eRjr3BA" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_MwyNoCuLEemAOL1eRjr3BA" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="IoT-ML.profile.uml#_MMCh0CuLEemAOL1eRjr3BA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_MwyNoSuLEemAOL1eRjr3BA"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_AbI1tCuCEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_AbI1tSuCEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_AbI1tiuCEemAOL1eRjr3BA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AbI1tyuCEemAOL1eRjr3BA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_AbI1uCuCEemAOL1eRjr3BA" visible="false" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_AbI1uSuCEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_AbI1uiuCEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_AbI1uyuCEemAOL1eRjr3BA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AbI1vCuCEemAOL1eRjr3BA"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="IoT-ML.profile.uml#_Aa_rwCuCEemAOL1eRjr3BA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AbI1sSuCEemAOL1eRjr3BA" x="80" y="280"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_GxJVgSuCEemAOL1eRjr3BA" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_GxJVgyuCEemAOL1eRjr3BA" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_GxJVhCuCEemAOL1eRjr3BA" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_ICFfUCuKEemAOL1eRjr3BA" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="IoT-ML.profile.uml#_IBykYCuKEemAOL1eRjr3BA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_ICFfUSuKEemAOL1eRjr3BA"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_GxJVhSuCEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_GxJVhiuCEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_GxJVhyuCEemAOL1eRjr3BA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GxJViCuCEemAOL1eRjr3BA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_GxJViSuCEemAOL1eRjr3BA" visible="false" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_GxJViiuCEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_GxJViyuCEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_GxJVjCuCEemAOL1eRjr3BA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GxJVjSuCEemAOL1eRjr3BA"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="IoT-ML.profile.uml#_GxJVgCuCEemAOL1eRjr3BA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GxJVgiuCEemAOL1eRjr3BA" x="320" y="280"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_HqRV4SuCEemAOL1eRjr3BA" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_HqRV4yuCEemAOL1eRjr3BA" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_HqRV5CuCEemAOL1eRjr3BA" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_HqRV5SuCEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_HqRV5iuCEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_HqRV5yuCEemAOL1eRjr3BA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HqRV6CuCEemAOL1eRjr3BA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_HqRV6SuCEemAOL1eRjr3BA" visible="false" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_HqRV6iuCEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_HqRV6yuCEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_HqRV7CuCEemAOL1eRjr3BA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HqRV7SuCEemAOL1eRjr3BA"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="IoT-ML.profile.uml#_HqRV4CuCEemAOL1eRjr3BA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HqRV4iuCEemAOL1eRjr3BA" x="120" y="480"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_JFBcoSuCEemAOL1eRjr3BA" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_JFLNoCuCEemAOL1eRjr3BA" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_JFLNoSuCEemAOL1eRjr3BA" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_JFLNoiuCEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_JFLNoyuCEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_JFLNpCuCEemAOL1eRjr3BA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JFLNpSuCEemAOL1eRjr3BA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_JFLNpiuCEemAOL1eRjr3BA" visible="false" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_JFLNpyuCEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_JFLNqCuCEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_JFLNqSuCEemAOL1eRjr3BA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JFLNqiuCEemAOL1eRjr3BA"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="IoT-ML.profile.uml#_JFBcoCuCEemAOL1eRjr3BA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JFBcoiuCEemAOL1eRjr3BA" x="260" y="480"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_K7TBwSuCEemAOL1eRjr3BA" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_K7cywCuCEemAOL1eRjr3BA" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_K7cywSuCEemAOL1eRjr3BA" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_K7cywiuCEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_K7cywyuCEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_K7cyxCuCEemAOL1eRjr3BA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_K7cyxSuCEemAOL1eRjr3BA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_K7cyxiuCEemAOL1eRjr3BA" visible="false" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_K7cyxyuCEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_K7cyyCuCEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_K7cyySuCEemAOL1eRjr3BA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_K7cyyiuCEemAOL1eRjr3BA"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="IoT-ML.profile.uml#_K7TBwCuCEemAOL1eRjr3BA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_K7TBwiuCEemAOL1eRjr3BA" x="400" y="480"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_LyDDkSuCEemAOL1eRjr3BA" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_LyDDkyuCEemAOL1eRjr3BA" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_LyM0kCuCEemAOL1eRjr3BA" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_LyM0kSuCEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_LyM0kiuCEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_LyM0kyuCEemAOL1eRjr3BA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LyM0lCuCEemAOL1eRjr3BA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_LyM0lSuCEemAOL1eRjr3BA" visible="false" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_LyM0liuCEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_LyM0lyuCEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_LyM0mCuCEemAOL1eRjr3BA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LyM0mSuCEemAOL1eRjr3BA"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="IoT-ML.profile.uml#_LyDDkCuCEemAOL1eRjr3BA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LyDDkiuCEemAOL1eRjr3BA" x="600" y="480"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_Mrel8CuCEemAOL1eRjr3BA" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_Mrel8iuCEemAOL1eRjr3BA" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Mrel8yuCEemAOL1eRjr3BA" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Mrel9CuCEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_Mrel9SuCEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_Mrel9iuCEemAOL1eRjr3BA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Mrel9yuCEemAOL1eRjr3BA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Mrel-CuCEemAOL1eRjr3BA" visible="false" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Mrel-SuCEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_Mrel-iuCEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_Mrel-yuCEemAOL1eRjr3BA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Mrel_CuCEemAOL1eRjr3BA"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="IoT-ML.profile.uml#_MrU08CuCEemAOL1eRjr3BA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Mrel8SuCEemAOL1eRjr3BA" x="340" y="80"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_NTyjISuCEemAOL1eRjr3BA" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_NT8UICuCEemAOL1eRjr3BA" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_NT8UISuCEemAOL1eRjr3BA" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_NT8UIiuCEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_NT8UIyuCEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_NT8UJCuCEemAOL1eRjr3BA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NT8UJSuCEemAOL1eRjr3BA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_NT8UJiuCEemAOL1eRjr3BA" visible="false" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_NT8UJyuCEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_NT8UKCuCEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_NT8UKSuCEemAOL1eRjr3BA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NT8UKiuCEemAOL1eRjr3BA"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="IoT-ML.profile.uml#_NTyjICuCEemAOL1eRjr3BA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NTyjIiuCEemAOL1eRjr3BA" x="340" y="-100"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_N7XggCuCEemAOL1eRjr3BA" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_N7XggiuCEemAOL1eRjr3BA" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_N7XggyuCEemAOL1eRjr3BA" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_N7XghCuCEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_N7XghSuCEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_N7XghiuCEemAOL1eRjr3BA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_N7XghyuCEemAOL1eRjr3BA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_N7XgiCuCEemAOL1eRjr3BA" visible="false" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_N7XgiSuCEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_N7XgiiuCEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_N7XgiyuCEemAOL1eRjr3BA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_N7XgjCuCEemAOL1eRjr3BA"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="IoT-ML.profile.uml#_N7NvgCuCEemAOL1eRjr3BA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_N7XggSuCEemAOL1eRjr3BA" x="600" y="280"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_OlnXYSuCEemAOL1eRjr3BA" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_OlxIYCuCEemAOL1eRjr3BA" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_OlxIYSuCEemAOL1eRjr3BA" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_OlxIYiuCEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_OlxIYyuCEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_OlxIZCuCEemAOL1eRjr3BA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_OlxIZSuCEemAOL1eRjr3BA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_OlxIZiuCEemAOL1eRjr3BA" visible="false" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_OlxIZyuCEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_OlxIaCuCEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_OlxIaSuCEemAOL1eRjr3BA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_OlxIaiuCEemAOL1eRjr3BA"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="IoT-ML.profile.uml#_OlnXYCuCEemAOL1eRjr3BA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_OlnXYiuCEemAOL1eRjr3BA" x="600" y="80"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_PVhxYSuCEemAOL1eRjr3BA" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_PVhxYyuCEemAOL1eRjr3BA" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_PVhxZCuCEemAOL1eRjr3BA" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_PVhxZSuCEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_PVhxZiuCEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_PVhxZyuCEemAOL1eRjr3BA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_PVhxaCuCEemAOL1eRjr3BA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_PVhxaSuCEemAOL1eRjr3BA" visible="false" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_PVhxaiuCEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_PVhxayuCEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_PVhxbCuCEemAOL1eRjr3BA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_PVhxbSuCEemAOL1eRjr3BA"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="IoT-ML.profile.uml#_PVhxYCuCEemAOL1eRjr3BA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_PVhxYiuCEemAOL1eRjr3BA" x="-140" y="80"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_7MSVwCuCEemAOL1eRjr3BA" type="Enumeration_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_7MSVwiuCEemAOL1eRjr3BA" type="Enumeration_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_7MSVwyuCEemAOL1eRjr3BA" type="Enumeration_LiteralCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_pGVOQCuIEemAOL1eRjr3BA" type="EnumerationLiteral_LiteralLabel">
+          <element xmi:type="uml:EnumerationLiteral" href="IoT-ML.profile.uml#_pGBsQCuIEemAOL1eRjr3BA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_pGVOQSuIEemAOL1eRjr3BA"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_poPogCuIEemAOL1eRjr3BA" type="EnumerationLiteral_LiteralLabel">
+          <element xmi:type="uml:EnumerationLiteral" href="IoT-ML.profile.uml#_pn8tkCuIEemAOL1eRjr3BA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_poPogSuIEemAOL1eRjr3BA"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_qIYhICuIEemAOL1eRjr3BA" type="EnumerationLiteral_LiteralLabel">
+          <element xmi:type="uml:EnumerationLiteral" href="IoT-ML.profile.uml#_qIFmMCuIEemAOL1eRjr3BA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_qIYhISuIEemAOL1eRjr3BA"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_rABTwCuIEemAOL1eRjr3BA" type="EnumerationLiteral_LiteralLabel">
+          <element xmi:type="uml:EnumerationLiteral" href="IoT-ML.profile.uml#_q_uY0CuIEemAOL1eRjr3BA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_rABTwSuIEemAOL1eRjr3BA"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_sxiicCuNEemAOL1eRjr3BA" type="EnumerationLiteral_LiteralLabel">
+          <element xmi:type="uml:EnumerationLiteral" href="IoT-ML.profile.uml#_sxF2gCuNEemAOL1eRjr3BA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_sxiicSuNEemAOL1eRjr3BA"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_7MSVxCuCEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_7MSVxSuCEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_7MSVxiuCEemAOL1eRjr3BA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7MSVxyuCEemAOL1eRjr3BA"/>
+      </children>
+      <element xmi:type="uml:Enumeration" href="IoT-ML.profile.uml#_7MIkwCuCEemAOL1eRjr3BA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7MSVwSuCEemAOL1eRjr3BA" x="780" y="280"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_S5SAcCuMEemAOL1eRjr3BA" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_S5SAciuMEemAOL1eRjr3BA" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_S5SAcyuMEemAOL1eRjr3BA" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_ZdRR4CuMEemAOL1eRjr3BA" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="IoT-ML.profile.uml#_ZcrcACuMEemAOL1eRjr3BA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_ZdRR4SuMEemAOL1eRjr3BA"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_S5SAdCuMEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_S5SAdSuMEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_S5SAdiuMEemAOL1eRjr3BA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_S5SAdyuMEemAOL1eRjr3BA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_S5SAeCuMEemAOL1eRjr3BA" visible="false" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_S5SAeSuMEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_S5SAeiuMEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_S5SAeyuMEemAOL1eRjr3BA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_S5SAfCuMEemAOL1eRjr3BA"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="IoT-ML.profile.uml#_S5I2gCuMEemAOL1eRjr3BA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_S5SAcSuMEemAOL1eRjr3BA" x="560" y="-100"/>
+    </children>
+    <styles xmi:type="notation:StringValueStyle" xmi:id="_9lVtQSuBEemAOL1eRjr3BA" name="diagram_compatibility_version" stringValue="1.4.0"/>
+    <styles xmi:type="notation:DiagramStyle" xmi:id="_9lVtQiuBEemAOL1eRjr3BA"/>
+    <styles xmi:type="style:PapyrusDiagramStyle" xmi:id="_9lVtQyuBEemAOL1eRjr3BA" diagramKindId="org.eclipse.papyrus.uml.diagram.profile">
+      <owner xmi:type="uml:Package" href="IoT-ML.profile.uml#_lz21ECuBEemAOL1eRjr3BA"/>
+    </styles>
+    <element xmi:type="uml:Package" href="IoT-ML.profile.uml#_lz21ECuBEemAOL1eRjr3BA"/>
+    <edges xmi:type="notation:Connector" xmi:id="_jSH-gCuJEemAOL1eRjr3BA" type="Association_Edge" source="_N7XggCuCEemAOL1eRjr3BA" target="_7MSVwCuCEemAOL1eRjr3BA">
+      <children xmi:type="notation:DecorationNode" xmi:id="_jSH-gyuJEemAOL1eRjr3BA" type="Association_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_xpDLUCuKEemAOL1eRjr3BA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_jSH-hCuJEemAOL1eRjr3BA" y="60"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_jSH-hSuJEemAOL1eRjr3BA" type="Association_NameLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_xpWGQCuKEemAOL1eRjr3BA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_jSH-hiuJEemAOL1eRjr3BA" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_jSH-hyuJEemAOL1eRjr3BA" type="Association_TargetRoleLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_xppBMCuKEemAOL1eRjr3BA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_jSH-iCuJEemAOL1eRjr3BA" x="-23" y="27"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_jSH-iSuJEemAOL1eRjr3BA" visible="false" type="Association_SourceRoleLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_xp78ICuKEemAOL1eRjr3BA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_jSRvgCuJEemAOL1eRjr3BA" x="12" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_jSRvgSuJEemAOL1eRjr3BA" type="Association_SourceMultiplicityLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_xqFtICuKEemAOL1eRjr3BA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_jSRvgiuJEemAOL1eRjr3BA" x="12" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_jSRvgyuJEemAOL1eRjr3BA" type="Association_TargetMultiplicityLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_xqYoECuKEemAOL1eRjr3BA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_jSRvhCuJEemAOL1eRjr3BA" x="-12" y="-20"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_jSH-gSuJEemAOL1eRjr3BA"/>
+      <element xmi:type="uml:Association" href="IoT-ML.profile.uml#_jRYXoCuJEemAOL1eRjr3BA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_jSH-giuJEemAOL1eRjr3BA" points="[700, 340, -643984, -643984]$[780, 340, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_jS3lYCuJEemAOL1eRjr3BA" id="(1.0,0.6)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_jS3lYSuJEemAOL1eRjr3BA" id="(0.0,0.5454545454545454)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_2lY-8CuJEemAOL1eRjr3BA" type="Association_Edge" source="_N7XggCuCEemAOL1eRjr3BA" target="_OlnXYSuCEemAOL1eRjr3BA">
+      <children xmi:type="notation:DecorationNode" xmi:id="_2lY-8yuJEemAOL1eRjr3BA" type="Association_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_xqiZECuKEemAOL1eRjr3BA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_2lY-9CuJEemAOL1eRjr3BA" y="60"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_2lY-9SuJEemAOL1eRjr3BA" type="Association_NameLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_xqrjACuKEemAOL1eRjr3BA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_2lY-9iuJEemAOL1eRjr3BA" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_2lY-9yuJEemAOL1eRjr3BA" type="Association_TargetRoleLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_xq1UACuKEemAOL1eRjr3BA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_2lY--CuJEemAOL1eRjr3BA" x="-27" y="35"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_2lY--SuJEemAOL1eRjr3BA" visible="false" type="Association_SourceRoleLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_xq_FACuKEemAOL1eRjr3BA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_2lY--iuJEemAOL1eRjr3BA" x="15" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_2lY--yuJEemAOL1eRjr3BA" type="Association_SourceMultiplicityLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_xrR_8CuKEemAOL1eRjr3BA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_2lY-_CuJEemAOL1eRjr3BA" x="15" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_2lY-_SuJEemAOL1eRjr3BA" type="Association_TargetMultiplicityLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_xrk64CuKEemAOL1eRjr3BA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_2lY-_iuJEemAOL1eRjr3BA" x="-15" y="-20"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_2lY-8SuJEemAOL1eRjr3BA"/>
+      <element xmi:type="uml:Association" href="IoT-ML.profile.uml#_2k86ECuJEemAOL1eRjr3BA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_2lY-8iuJEemAOL1eRjr3BA" points="[660, 280, -643984, -643984]$[660, 180, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_2l1q4CuJEemAOL1eRjr3BA" id="(0.6,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_2l1q4SuJEemAOL1eRjr3BA" id="(0.6,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_RJo5sCuKEemAOL1eRjr3BA" type="Association_Edge" source="_GxJVgSuCEemAOL1eRjr3BA" target="_N7XggCuCEemAOL1eRjr3BA">
+      <children xmi:type="notation:DecorationNode" xmi:id="_RJo5syuKEemAOL1eRjr3BA" type="Association_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_xrur4CuKEemAOL1eRjr3BA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_RJo5tCuKEemAOL1eRjr3BA" y="60"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_RJo5tSuKEemAOL1eRjr3BA" type="Association_NameLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_xsBm0CuKEemAOL1eRjr3BA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_RJo5tiuKEemAOL1eRjr3BA" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_RJo5tyuKEemAOL1eRjr3BA" type="Association_TargetRoleLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_xsKwwCuKEemAOL1eRjr3BA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_RJo5uCuKEemAOL1eRjr3BA" x="-54" y="27"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_RJo5uSuKEemAOL1eRjr3BA" visible="false" type="Association_SourceRoleLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_xsUhwCuKEemAOL1eRjr3BA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_RJo5uiuKEemAOL1eRjr3BA" x="13" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_RJo5uyuKEemAOL1eRjr3BA" type="Association_SourceMultiplicityLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_xseSwCuKEemAOL1eRjr3BA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_RJo5vCuKEemAOL1eRjr3BA" x="13" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_RJo5vSuKEemAOL1eRjr3BA" type="Association_TargetMultiplicityLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_xs6XoCuKEemAOL1eRjr3BA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_RJo5viuKEemAOL1eRjr3BA" x="-13" y="-20"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_RJo5sSuKEemAOL1eRjr3BA"/>
+      <element xmi:type="uml:Association" href="IoT-ML.profile.uml#_RJV-wCuKEemAOL1eRjr3BA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_RJo5siuKEemAOL1eRjr3BA" points="[431, 340, -643984, -643984]$[520, 340, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_RKFloCuKEemAOL1eRjr3BA" id="(1.0,0.6)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_RKFloSuKEemAOL1eRjr3BA" id="(0.0,0.6)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_Ve9UICuKEemAOL1eRjr3BA" type="Association_Edge" source="_GxJVgSuCEemAOL1eRjr3BA" target="_Mrel8CuCEemAOL1eRjr3BA">
+      <children xmi:type="notation:DecorationNode" xmi:id="_Ve9UIyuKEemAOL1eRjr3BA" type="Association_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_zCdOQCuKEemAOL1eRjr3BA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_Ve9UJCuKEemAOL1eRjr3BA" y="60"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_Ve9UJSuKEemAOL1eRjr3BA" type="Association_NameLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_zCwwQCuKEemAOL1eRjr3BA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_Ve9UJiuKEemAOL1eRjr3BA" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_Ve9UJyuKEemAOL1eRjr3BA" type="Association_TargetRoleLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_zDDrMCuKEemAOL1eRjr3BA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_Ve9UKCuKEemAOL1eRjr3BA" x="-27" y="28"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_Ve9UKSuKEemAOL1eRjr3BA" visible="false" type="Association_SourceRoleLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_zDM1ICuKEemAOL1eRjr3BA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_Ve9UKiuKEemAOL1eRjr3BA" x="15" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_Ve9UKyuKEemAOL1eRjr3BA" type="Association_SourceMultiplicityLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_zDgXICuKEemAOL1eRjr3BA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_Ve9ULCuKEemAOL1eRjr3BA" x="15" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_Ve9ULSuKEemAOL1eRjr3BA" type="Association_TargetMultiplicityLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_zDphECuKEemAOL1eRjr3BA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_Ve9ULiuKEemAOL1eRjr3BA" x="-15" y="-20"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_Ve9UISuKEemAOL1eRjr3BA"/>
+      <element xmi:type="uml:Association" href="IoT-ML.profile.uml#_VepyICuKEemAOL1eRjr3BA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Ve9UIiuKEemAOL1eRjr3BA" points="[400, 280, -643984, -643984]$[400, 180, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_VfjKACuKEemAOL1eRjr3BA" id="(0.5298013245033113,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_VfjKASuKEemAOL1eRjr3BA" id="(0.6,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_jS0FkCuKEemAOL1eRjr3BA" type="Association_Edge" source="_Mrel8CuCEemAOL1eRjr3BA" target="_NTyjISuCEemAOL1eRjr3BA">
+      <children xmi:type="notation:DecorationNode" xmi:id="_jS0FkyuKEemAOL1eRjr3BA" type="Association_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_zFIu0CuKEemAOL1eRjr3BA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_jS0FlCuKEemAOL1eRjr3BA" y="60"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_jS0FlSuKEemAOL1eRjr3BA" type="Association_NameLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_zFSf0CuKEemAOL1eRjr3BA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_jS0FliuKEemAOL1eRjr3BA" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_jS0FlyuKEemAOL1eRjr3BA" type="Association_TargetRoleLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_zFbpwCuKEemAOL1eRjr3BA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_jS0FmCuKEemAOL1eRjr3BA" x="-27" y="32"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_jS0FmSuKEemAOL1eRjr3BA" visible="false" type="Association_SourceRoleLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_zF4VsCuKEemAOL1eRjr3BA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_jS0FmiuKEemAOL1eRjr3BA" x="6" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_jS0FmyuKEemAOL1eRjr3BA" type="Association_SourceMultiplicityLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_zGCGsCuKEemAOL1eRjr3BA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_jS0FnCuKEemAOL1eRjr3BA" x="6" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_jS0FnSuKEemAOL1eRjr3BA" type="Association_TargetMultiplicityLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_zGLQoCuKEemAOL1eRjr3BA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_jS0FniuKEemAOL1eRjr3BA" x="-6" y="-20"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_jS0FkSuKEemAOL1eRjr3BA"/>
+      <element xmi:type="uml:Association" href="IoT-ML.profile.uml#_jSOPsCuKEemAOL1eRjr3BA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_jS0FkiuKEemAOL1eRjr3BA" points="[400, 80, -643984, -643984]$[400, 40, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_jTQxgCuKEemAOL1eRjr3BA" id="(0.6,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_jTQxgSuKEemAOL1eRjr3BA" id="(0.6,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_tL_xMCuKEemAOL1eRjr3BA" type="Association_Edge" source="_AbI1sCuCEemAOL1eRjr3BA" target="_GxJVgSuCEemAOL1eRjr3BA">
+      <children xmi:type="notation:DecorationNode" xmi:id="_tMJiMCuKEemAOL1eRjr3BA" type="Association_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_zDzSECuKEemAOL1eRjr3BA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_tMJiMSuKEemAOL1eRjr3BA" y="60"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_tMJiMiuKEemAOL1eRjr3BA" type="Association_NameLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_zEGNACuKEemAOL1eRjr3BA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_tMJiMyuKEemAOL1eRjr3BA" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_tMJiNCuKEemAOL1eRjr3BA" type="Association_TargetRoleLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_zEP-ACuKEemAOL1eRjr3BA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_tMJiNSuKEemAOL1eRjr3BA" x="-29" y="27"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_tMJiNiuKEemAOL1eRjr3BA" visible="false" type="Association_SourceRoleLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_zEi48CuKEemAOL1eRjr3BA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_tMJiNyuKEemAOL1eRjr3BA" x="12" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_tMJiOCuKEemAOL1eRjr3BA" type="Association_SourceMultiplicityLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_zEsC4CuKEemAOL1eRjr3BA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_tMJiOSuKEemAOL1eRjr3BA" x="12" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_tMJiOiuKEemAOL1eRjr3BA" type="Association_TargetMultiplicityLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_zE1z4CuKEemAOL1eRjr3BA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_tMJiOyuKEemAOL1eRjr3BA" x="-12" y="-20"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_tL_xMSuKEemAOL1eRjr3BA"/>
+      <element xmi:type="uml:Association" href="IoT-ML.profile.uml#_tLQKUCuKEemAOL1eRjr3BA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_tL_xMiuKEemAOL1eRjr3BA" points="[200, 340, -643984, -643984]$[280, 340, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_tMvYECuKEemAOL1eRjr3BA" id="(1.0,0.6)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_tMvYESuKEemAOL1eRjr3BA" id="(0.0,0.6)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_U-QlYCuLEemAOL1eRjr3BA" type="Association_Edge" source="__pmrECuBEemAOL1eRjr3BA" target="_AbI1sCuCEemAOL1eRjr3BA">
+      <children xmi:type="notation:DecorationNode" xmi:id="_U-QlYyuLEemAOL1eRjr3BA" type="Association_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_uka_4CuOEemAOL1eRjr3BA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_U-QlZCuLEemAOL1eRjr3BA" y="60"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_U-QlZSuLEemAOL1eRjr3BA" type="Association_NameLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_uk3r0CuOEemAOL1eRjr3BA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_U-QlZiuLEemAOL1eRjr3BA" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_U-QlZyuLEemAOL1eRjr3BA" type="Association_TargetRoleLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_ulKmwCuOEemAOL1eRjr3BA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_U-QlaCuLEemAOL1eRjr3BA" x="-34" y="27"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_U-QlaSuLEemAOL1eRjr3BA" visible="false" type="Association_SourceRoleLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_uldhsCuOEemAOL1eRjr3BA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_U-QlaiuLEemAOL1eRjr3BA" x="16" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_U-QlayuLEemAOL1eRjr3BA" type="Association_SourceMultiplicityLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_ulwcoCuOEemAOL1eRjr3BA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_U-QlbCuLEemAOL1eRjr3BA" x="16" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_U-QlbSuLEemAOL1eRjr3BA" type="Association_TargetMultiplicityLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_ul6NoCuOEemAOL1eRjr3BA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_U-QlbiuLEemAOL1eRjr3BA" x="-16" y="-20"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_U-QlYSuLEemAOL1eRjr3BA"/>
+      <element xmi:type="uml:Association" href="IoT-ML.profile.uml#_U9qIcCuLEemAOL1eRjr3BA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_U-QlYiuLEemAOL1eRjr3BA" points="[-9, 340, -643984, -643984]$[100, 340, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_U-2bQCuLEemAOL1eRjr3BA" id="(1.0,0.6)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_U-2bQSuLEemAOL1eRjr3BA" id="(0.0,0.6)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_fANygCuLEemAOL1eRjr3BA" type="Association_Edge" source="_PVhxYSuCEemAOL1eRjr3BA" target="__pmrECuBEemAOL1eRjr3BA">
+      <children xmi:type="notation:DecorationNode" xmi:id="_fANygyuLEemAOL1eRjr3BA" type="Association_StereotypeLabel">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_fANyhCuLEemAOL1eRjr3BA" y="60"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_fANyhSuLEemAOL1eRjr3BA" type="Association_NameLabel">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_fANyhiuLEemAOL1eRjr3BA" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_fANyhyuLEemAOL1eRjr3BA" type="Association_TargetRoleLabel">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_fANyiCuLEemAOL1eRjr3BA" x="2" y="36"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_fANyiSuLEemAOL1eRjr3BA" visible="false" type="Association_SourceRoleLabel">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_fANyiiuLEemAOL1eRjr3BA" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_fANyiyuLEemAOL1eRjr3BA" type="Association_SourceMultiplicityLabel">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_fANyjCuLEemAOL1eRjr3BA" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_fANyjSuLEemAOL1eRjr3BA" type="Association_TargetMultiplicityLabel">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_fANyjiuLEemAOL1eRjr3BA" y="-20"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_fANygSuLEemAOL1eRjr3BA"/>
+      <element xmi:type="uml:Association" href="IoT-ML.profile.uml#_e_xGkCuLEemAOL1eRjr3BA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_fANygiuLEemAOL1eRjr3BA" points="[-100, 180, -643984, -643984]$[-100, 280, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_fAzoYCuLEemAOL1eRjr3BA" id="(0.4,1.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_fAzoYSuLEemAOL1eRjr3BA" id="(0.3973509933774834,0.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_rqbbUCuLEemAOL1eRjr3BA" type="Association_Edge" source="_-9kEcCuBEemAOL1eRjr3BA" target="_PVhxYSuCEemAOL1eRjr3BA">
+      <children xmi:type="notation:DecorationNode" xmi:id="_rqlMUCuLEemAOL1eRjr3BA" type="Association_StereotypeLabel">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_rqlMUSuLEemAOL1eRjr3BA" y="60"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_rqlMUiuLEemAOL1eRjr3BA" type="Association_NameLabel">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_rqlMUyuLEemAOL1eRjr3BA" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_rqlMVCuLEemAOL1eRjr3BA" type="Association_TargetRoleLabel">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_rqlMVSuLEemAOL1eRjr3BA" x="-1" y="48"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_rqlMViuLEemAOL1eRjr3BA" visible="false" type="Association_SourceRoleLabel">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_rqlMVyuLEemAOL1eRjr3BA" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_rqlMWCuLEemAOL1eRjr3BA" type="Association_SourceMultiplicityLabel">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_rqlMWSuLEemAOL1eRjr3BA" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_rqlMWiuLEemAOL1eRjr3BA" type="Association_TargetMultiplicityLabel">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_rqlMWyuLEemAOL1eRjr3BA" y="-20"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_rqbbUSuLEemAOL1eRjr3BA"/>
+      <element xmi:type="uml:Association" href="IoT-ML.profile.uml#_rp_WcCuLEemAOL1eRjr3BA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_rqbbUiuLEemAOL1eRjr3BA" points="[-100, 0, -643984, -643984]$[-100, 80, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_rrUzMCuLEemAOL1eRjr3BA" id="(0.4,1.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_rrUzMSuLEemAOL1eRjr3BA" id="(0.4,0.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_-b7LcCuLEemAOL1eRjr3BA" type="Generalization_Edge" source="_HqRV4SuCEemAOL1eRjr3BA" target="_GxJVgSuCEemAOL1eRjr3BA">
+      <children xmi:type="notation:DecorationNode" xmi:id="_-b7LcyuLEemAOL1eRjr3BA" type="Generalization_StereotypeLabel">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_-b7LdCuLEemAOL1eRjr3BA" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_-b7LcSuLEemAOL1eRjr3BA"/>
+      <element xmi:type="uml:Generalization" href="IoT-ML.profile.uml#_-bCaoCuLEemAOL1eRjr3BA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_-b7LciuLEemAOL1eRjr3BA" points="[160, 480, -643984, -643984]$[400, 380, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_-cX3YCuLEemAOL1eRjr3BA" id="(0.4,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_-cX3YSuLEemAOL1eRjr3BA" id="(0.5298013245033113,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_-_yGcCuLEemAOL1eRjr3BA" type="Generalization_Edge" source="_JFBcoSuCEemAOL1eRjr3BA" target="_GxJVgSuCEemAOL1eRjr3BA">
+      <children xmi:type="notation:DecorationNode" xmi:id="_-_yGcyuLEemAOL1eRjr3BA" type="Generalization_StereotypeLabel">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_-_yGdCuLEemAOL1eRjr3BA" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_-_yGcSuLEemAOL1eRjr3BA"/>
+      <element xmi:type="uml:Generalization" href="IoT-ML.profile.uml#_-_MQkCuLEemAOL1eRjr3BA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_-_yGciuLEemAOL1eRjr3BA" points="[320, 480, -643984, -643984]$[400, 380, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="__AOyYCuLEemAOL1eRjr3BA" id="(0.6,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="__AOyYSuLEemAOL1eRjr3BA" id="(0.5298013245033113,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="__mwm4CuLEemAOL1eRjr3BA" type="Generalization_Edge" source="_K7TBwSuCEemAOL1eRjr3BA" target="_GxJVgSuCEemAOL1eRjr3BA">
+      <children xmi:type="notation:DecorationNode" xmi:id="__mwm4yuLEemAOL1eRjr3BA" type="Generalization_StereotypeLabel">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="__mwm5CuLEemAOL1eRjr3BA" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="__mwm4SuLEemAOL1eRjr3BA"/>
+      <element xmi:type="uml:Generalization" href="IoT-ML.profile.uml#__mKxACuLEemAOL1eRjr3BA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="__mwm4iuLEemAOL1eRjr3BA" points="[440, 480, -643984, -643984]$[400, 380, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="__nNS0CuLEemAOL1eRjr3BA" id="(0.4,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="__nNS0SuLEemAOL1eRjr3BA" id="(0.5298013245033113,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_ARdJsCuMEemAOL1eRjr3BA" type="Generalization_Edge" source="_LyDDkSuCEemAOL1eRjr3BA" target="_GxJVgSuCEemAOL1eRjr3BA">
+      <children xmi:type="notation:DecorationNode" xmi:id="_ARdJsyuMEemAOL1eRjr3BA" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_K8bpMCuNEemAOL1eRjr3BA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_ARdJtCuMEemAOL1eRjr3BA" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_ARdJsSuMEemAOL1eRjr3BA"/>
+      <element xmi:type="uml:Generalization" href="IoT-ML.profile.uml#_ARBE0CuMEemAOL1eRjr3BA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ARdJsiuMEemAOL1eRjr3BA" points="[580, 480, -643984, -643984]$[580, 440, -643984, -643984]$[400, 440, -643984, -643984]$[400, 380, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_AR51oCuMEemAOL1eRjr3BA" id="(0.4,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_AR51oSuMEemAOL1eRjr3BA" id="(0.5298013245033113,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_vl9nUCuMEemAOL1eRjr3BA" type="Generalization_Edge" source="_OlnXYSuCEemAOL1eRjr3BA" target="_S5SAcCuMEemAOL1eRjr3BA">
+      <children xmi:type="notation:DecorationNode" xmi:id="_vl9nUyuMEemAOL1eRjr3BA" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_MwMwECuREemAOL1eRjr3BA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_vl9nVCuMEemAOL1eRjr3BA" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_vl9nUSuMEemAOL1eRjr3BA"/>
+      <element xmi:type="uml:Generalization" href="IoT-ML.profile.uml#_vlhicCuMEemAOL1eRjr3BA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_vl9nUiuMEemAOL1eRjr3BA" points="[660, 80, -643984, -643984]$[660, 0, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_vmtOMCuMEemAOL1eRjr3BA" id="(0.6,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_vmtOMSuMEemAOL1eRjr3BA" id="(0.42735042735042733,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_wJOscCuMEemAOL1eRjr3BA" type="Generalization_Edge" source="_NTyjISuCEemAOL1eRjr3BA" target="_S5SAcCuMEemAOL1eRjr3BA">
+      <children xmi:type="notation:DecorationNode" xmi:id="_wJOscyuMEemAOL1eRjr3BA" type="Generalization_StereotypeLabel">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_wJOsdCuMEemAOL1eRjr3BA" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_wJOscSuMEemAOL1eRjr3BA"/>
+      <element xmi:type="uml:Generalization" href="IoT-ML.profile.uml#_wIoPgCuMEemAOL1eRjr3BA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_wJOsciuMEemAOL1eRjr3BA" points="[440, -60, -643984, -643984]$[560, -60, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_wJ0iUCuMEemAOL1eRjr3BA" id="(1.0,0.4)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_wJ0iUSuMEemAOL1eRjr3BA" id="(0.0,0.4)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_y1zncCuMEemAOL1eRjr3BA" type="Generalization_Edge" source="_Mrel8CuCEemAOL1eRjr3BA" target="_S5SAcCuMEemAOL1eRjr3BA">
+      <children xmi:type="notation:DecorationNode" xmi:id="_y1zncyuMEemAOL1eRjr3BA" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_zo1m4CuMEemAOL1eRjr3BA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_y1zndCuMEemAOL1eRjr3BA" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_y1zncSuMEemAOL1eRjr3BA"/>
+      <element xmi:type="uml:Generalization" href="IoT-ML.profile.uml#_y1gsgCuMEemAOL1eRjr3BA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_y1znciuMEemAOL1eRjr3BA" points="[440, 120, -643984, -643984]$[580, 120, -643984, -643984]$[580, 0, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_y2ZdUCuMEemAOL1eRjr3BA" id="(1.0,0.4)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_y2ZdUSuMEemAOL1eRjr3BA" id="(0.11428571428571428,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_KSoeQCuNEemAOL1eRjr3BA" type="Association_Edge" source="_K7TBwSuCEemAOL1eRjr3BA" target="_LyDDkSuCEemAOL1eRjr3BA">
+      <children xmi:type="notation:DecorationNode" xmi:id="_KSoeQyuNEemAOL1eRjr3BA" type="Association_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_K84VICuNEemAOL1eRjr3BA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_KSoeRCuNEemAOL1eRjr3BA" y="60"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_KSoeRSuNEemAOL1eRjr3BA" type="Association_NameLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_K9LQECuNEemAOL1eRjr3BA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_KSoeRiuNEemAOL1eRjr3BA" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_KSoeRyuNEemAOL1eRjr3BA" type="Association_TargetRoleLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_K9eyECuNEemAOL1eRjr3BA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_KSoeSCuNEemAOL1eRjr3BA" x="-31" y="7"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_KSoeSSuNEemAOL1eRjr3BA" type="Association_SourceRoleLabel">
+        <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_b0Fi0CuNEemAOL1eRjr3BA" source="PapyrusCSSForceValue">
+          <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_b0Fi0SuNEemAOL1eRjr3BA" key="visible" value="true"/>
+        </eAnnotations>
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_K9n8ACuNEemAOL1eRjr3BA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_KSoeSiuNEemAOL1eRjr3BA" x="20" y="-13"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_KSoeSyuNEemAOL1eRjr3BA" type="Association_SourceMultiplicityLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_K9628CuNEemAOL1eRjr3BA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_KSoeTCuNEemAOL1eRjr3BA" x="6" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_KSoeTSuNEemAOL1eRjr3BA" type="Association_TargetMultiplicityLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_K-OY8CuNEemAOL1eRjr3BA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_KSoeTiuNEemAOL1eRjr3BA" x="-10" y="-13"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_KSoeQSuNEemAOL1eRjr3BA"/>
+      <element xmi:type="uml:Association" href="IoT-ML.profile.uml#_KSCBUCuNEemAOL1eRjr3BA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_KSoeQiuNEemAOL1eRjr3BA" points="[500, 540, -643984, -643984]$[540, 540, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_KTYFICuNEemAOL1eRjr3BA" id="(1.0,0.6)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_KTYFISuNEemAOL1eRjr3BA" id="(0.0,0.6)"/>
+    </edges>
+  </notation:Diagram>
+  <notation:Diagram xmi:id="_01fKwCuNEemAOL1eRjr3BA" type="PapyrusUMLProfileDiagram" name="SensiNactExtensions" measurementUnit="Pixel">
+    <children xmi:type="notation:Shape" xmi:id="_4lTrcCuNEemAOL1eRjr3BA" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_4lc1YCuNEemAOL1eRjr3BA" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_4lc1YSuNEemAOL1eRjr3BA" visible="false" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_4lc1YiuNEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_4lc1YyuNEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_4lc1ZCuNEemAOL1eRjr3BA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_4lc1ZSuNEemAOL1eRjr3BA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_4lc1ZiuNEemAOL1eRjr3BA" visible="false" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_4lc1ZyuNEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_4lc1aCuNEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_4lc1aSuNEemAOL1eRjr3BA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_4lc1aiuNEemAOL1eRjr3BA"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="IoT-ML.profile.uml#_S5I2gCuMEemAOL1eRjr3BA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_4lTrcSuNEemAOL1eRjr3BA" x="840" y="160"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_JKD3MCuOEemAOL1eRjr3BA" type="Class_MetaclassShape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_JKD3MiuOEemAOL1eRjr3BA" type="Class_MetaclassNameLabel"/>
+      <element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#TypedElement"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JKD3MSuOEemAOL1eRjr3BA" x="840" y="60"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_JKWyKiuOEemAOL1eRjr3BA" type="StereotypeComment">
+      <styles xmi:type="notation:TitleStyle" xmi:id="_JKWyKyuOEemAOL1eRjr3BA"/>
+      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_JKWyLSuOEemAOL1eRjr3BA" name="BASE_ELEMENT">
+        <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#TypedElement"/>
+      </styles>
+      <element xsi:nil="true"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JKWyLCuOEemAOL1eRjr3BA" x="200"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_GcxVECuPEemAOL1eRjr3BA" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_GcxVEiuPEemAOL1eRjr3BA" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_GcxVEyuPEemAOL1eRjr3BA" visible="false" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_GcxVFCuPEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_GcxVFSuPEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_GcxVFiuPEemAOL1eRjr3BA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GcxVFyuPEemAOL1eRjr3BA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_GcxVGCuPEemAOL1eRjr3BA" visible="false" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_GcxVGSuPEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_GcxVGiuPEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_GcxVGyuPEemAOL1eRjr3BA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GcxVHCuPEemAOL1eRjr3BA"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="IoT-ML.profile.uml#_-9aTcCuBEemAOL1eRjr3BA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GcxVESuPEemAOL1eRjr3BA" x="100" y="160"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_GdEQACuPEemAOL1eRjr3BA" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_GdEQAiuPEemAOL1eRjr3BA" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_GdEQAyuPEemAOL1eRjr3BA" visible="false" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_GdEQBCuPEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_GdEQBSuPEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_GdEQBiuPEemAOL1eRjr3BA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GdEQByuPEemAOL1eRjr3BA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_GdEQCCuPEemAOL1eRjr3BA" visible="false" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_GdEQCSuPEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_GdEQCiuPEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_GdEQCyuPEemAOL1eRjr3BA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GdEQDCuPEemAOL1eRjr3BA"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="IoT-ML.profile.uml#__pc6ECuBEemAOL1eRjr3BA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GdEQASuPEemAOL1eRjr3BA" x="220" y="160"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_GdOBACuPEemAOL1eRjr3BA" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_GdOBAiuPEemAOL1eRjr3BA" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_GdOBAyuPEemAOL1eRjr3BA" visible="false" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_GdOBBCuPEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_GdOBBSuPEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_GdOBBiuPEemAOL1eRjr3BA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GdOBByuPEemAOL1eRjr3BA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_GdOBCCuPEemAOL1eRjr3BA" visible="false" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_GdOBCSuPEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_GdOBCiuPEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_GdOBCyuPEemAOL1eRjr3BA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GdOBDCuPEemAOL1eRjr3BA"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="IoT-ML.profile.uml#_Aa_rwCuCEemAOL1eRjr3BA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GdOBASuPEemAOL1eRjr3BA" x="340" y="160"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_Gdg78CuPEemAOL1eRjr3BA" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_Gdg78iuPEemAOL1eRjr3BA" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Gdg78yuPEemAOL1eRjr3BA" visible="false" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Gdg79CuPEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_Gdg79SuPEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_Gdg79iuPEemAOL1eRjr3BA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Gdg79yuPEemAOL1eRjr3BA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Gdg7-CuPEemAOL1eRjr3BA" visible="false" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Gdg7-SuPEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_Gdg7-iuPEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_Gdg7-yuPEemAOL1eRjr3BA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Gdg7_CuPEemAOL1eRjr3BA"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="IoT-ML.profile.uml#_GxJVgCuCEemAOL1eRjr3BA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Gdg78SuPEemAOL1eRjr3BA" x="460" y="160"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_OmX5cCuPEemAOL1eRjr3BA" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_OmX5ciuPEemAOL1eRjr3BA" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_OmX5cyuPEemAOL1eRjr3BA" visible="false" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_OmX5dCuPEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_OmX5dSuPEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_OmX5diuPEemAOL1eRjr3BA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_OmX5dyuPEemAOL1eRjr3BA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_OmX5eCuPEemAOL1eRjr3BA" visible="false" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_OmX5eSuPEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_OmX5eiuPEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_OmX5eyuPEemAOL1eRjr3BA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_OmX5fCuPEemAOL1eRjr3BA"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="IoT-ML.profile.uml#_N7NvgCuCEemAOL1eRjr3BA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_OmX5cSuPEemAOL1eRjr3BA" x="720" y="160"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_RueS0CuPEemAOL1eRjr3BA" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_RueS0iuPEemAOL1eRjr3BA" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_RueS0yuPEemAOL1eRjr3BA" visible="false" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_RueS1CuPEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_RueS1SuPEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_RueS1iuPEemAOL1eRjr3BA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_RueS1yuPEemAOL1eRjr3BA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_RueS2CuPEemAOL1eRjr3BA" visible="false" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_RueS2SuPEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_RueS2iuPEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_RueS2yuPEemAOL1eRjr3BA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_RueS3CuPEemAOL1eRjr3BA"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="IoT-ML.profile.uml#_PVhxYCuCEemAOL1eRjr3BA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_RueS0SuPEemAOL1eRjr3BA" x="600" y="160"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_Dcb7ICuQEemAOL1eRjr3BA" type="Stereotype_Shape" fillColor="12632256">
+      <children xmi:type="notation:DecorationNode" xmi:id="_Dcb7IiuQEemAOL1eRjr3BA" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Dcb7IyuQEemAOL1eRjr3BA" visible="false" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Dcb7JCuQEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_Dcb7JSuQEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_Dcb7JiuQEemAOL1eRjr3BA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Dcb7JyuQEemAOL1eRjr3BA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Dcb7KCuQEemAOL1eRjr3BA" visible="false" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Dcb7KSuQEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_Dcb7KiuQEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_Dcb7KyuQEemAOL1eRjr3BA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Dcb7LCuQEemAOL1eRjr3BA"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="IoT-ML.profile.uml#_9sK2ICtgEeepEtCwqDnj2w"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Dcb7ISuQEemAOL1eRjr3BA" x="100" y="20"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_KrHvYCuQEemAOL1eRjr3BA" type="Stereotype_Shape" fillColor="12632256">
+      <children xmi:type="notation:DecorationNode" xmi:id="_KrHvYiuQEemAOL1eRjr3BA" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_KrHvYyuQEemAOL1eRjr3BA" visible="false" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_KrHvZCuQEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_KrHvZSuQEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_KrHvZiuQEemAOL1eRjr3BA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_KrHvZyuQEemAOL1eRjr3BA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_KrHvaCuQEemAOL1eRjr3BA" visible="false" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_KrHvaSuQEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_KrHvaiuQEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_KrHvayuQEemAOL1eRjr3BA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_KrHvbCuQEemAOL1eRjr3BA"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="IoT-ML.profile.uml#_O9fv0CtoEeeLDNWa-Yk0bg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_KrHvYSuQEemAOL1eRjr3BA" x="600" y="20"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_N3ryACuQEemAOL1eRjr3BA" type="Stereotype_Shape" fillColor="12632256">
+      <children xmi:type="notation:DecorationNode" xmi:id="_N3ryAiuQEemAOL1eRjr3BA" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_N3ryAyuQEemAOL1eRjr3BA" visible="false" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_N3ryBCuQEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_N3ryBSuQEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_N3ryBiuQEemAOL1eRjr3BA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_N3ryByuQEemAOL1eRjr3BA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_N3ryCCuQEemAOL1eRjr3BA" visible="false" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_N3ryCSuQEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_N3ryCiuQEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_N3ryCyuQEemAOL1eRjr3BA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_N3ryDCuQEemAOL1eRjr3BA"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="IoT-ML.profile.uml#_OpOwACtoEeeLDNWa-Yk0bg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_N3ryASuQEemAOL1eRjr3BA" x="220" y="20"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_buX1ACuQEemAOL1eRjr3BA" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_buX1AiuQEemAOL1eRjr3BA" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_buX1AyuQEemAOL1eRjr3BA" visible="false" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_buX1BCuQEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_buX1BSuQEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_buX1BiuQEemAOL1eRjr3BA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_buX1ByuQEemAOL1eRjr3BA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_buX1CCuQEemAOL1eRjr3BA" visible="false" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_buX1CSuQEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_buX1CiuQEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_buX1CyuQEemAOL1eRjr3BA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_buX1DCuQEemAOL1eRjr3BA"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="IoT-ML.profile.uml#_HqRV4CuCEemAOL1eRjr3BA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_buX1ASuQEemAOL1eRjr3BA" x="140" y="440"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_bu0g8CuQEemAOL1eRjr3BA" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_bu0g8iuQEemAOL1eRjr3BA" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_bu0g8yuQEemAOL1eRjr3BA" visible="false" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_bu0g9CuQEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_bu0g9SuQEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_bu0g9iuQEemAOL1eRjr3BA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bu0g9yuQEemAOL1eRjr3BA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_bu0g-CuQEemAOL1eRjr3BA" visible="false" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_bu0g-SuQEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_bu0g-iuQEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_bu0g-yuQEemAOL1eRjr3BA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bu0g_CuQEemAOL1eRjr3BA"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="IoT-ML.profile.uml#_JFBcoCuCEemAOL1eRjr3BA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bu0g8SuQEemAOL1eRjr3BA" x="260" y="440"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_bvRM4CuQEemAOL1eRjr3BA" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_bvRM4iuQEemAOL1eRjr3BA" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_bvRM4yuQEemAOL1eRjr3BA" visible="false" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_bvRM5CuQEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_bvRM5SuQEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_bvRM5iuQEemAOL1eRjr3BA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bvRM5yuQEemAOL1eRjr3BA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_bvRM6CuQEemAOL1eRjr3BA" visible="false" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_bvRM6SuQEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_bvRM6iuQEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_bvRM6yuQEemAOL1eRjr3BA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bvRM7CuQEemAOL1eRjr3BA"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="IoT-ML.profile.uml#_K7TBwCuCEemAOL1eRjr3BA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bvRM4SuQEemAOL1eRjr3BA" x="380" y="440"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_bvkH0CuQEemAOL1eRjr3BA" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_bvkH0iuQEemAOL1eRjr3BA" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_bvkH0yuQEemAOL1eRjr3BA" visible="false" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_bvkH1CuQEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_bvkH1SuQEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_bvkH1iuQEemAOL1eRjr3BA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bvkH1yuQEemAOL1eRjr3BA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_bvkH2CuQEemAOL1eRjr3BA" visible="false" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_bvkH2SuQEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_bvkH2iuQEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_bvkH2yuQEemAOL1eRjr3BA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bvkH3CuQEemAOL1eRjr3BA"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="IoT-ML.profile.uml#_LyDDkCuCEemAOL1eRjr3BA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bvkH0SuQEemAOL1eRjr3BA" x="600" y="440"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_gFLdMCuQEemAOL1eRjr3BA" type="Stereotype_Shape" fillColor="12632256">
+      <children xmi:type="notation:DecorationNode" xmi:id="_gFLdMiuQEemAOL1eRjr3BA" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_gFLdMyuQEemAOL1eRjr3BA" visible="false" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_gFLdNCuQEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_gFLdNSuQEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_gFLdNiuQEemAOL1eRjr3BA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gFLdNyuQEemAOL1eRjr3BA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_gFLdOCuQEemAOL1eRjr3BA" visible="false" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_gFLdOSuQEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_gFLdOiuQEemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_gFLdOyuQEemAOL1eRjr3BA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gFLdPCuQEemAOL1eRjr3BA"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="IoT-ML.profile.uml#_ENBgwCtxEeeZI6rMTYV60w"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gFLdMSuQEemAOL1eRjr3BA" x="340" y="20"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_aMIwwCuREemAOL1eRjr3BA" type="Stereotype_Shape" fillColor="12632256">
+      <children xmi:type="notation:DecorationNode" xmi:id="_aMIwwiuREemAOL1eRjr3BA" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_aMIwwyuREemAOL1eRjr3BA" visible="false" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_aMIwxCuREemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_aMIwxSuREemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_aMIwxiuREemAOL1eRjr3BA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aMIwxyuREemAOL1eRjr3BA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_aMIwyCuREemAOL1eRjr3BA" visible="false" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_aMIwySuREemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_aMIwyiuREemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_aMIwyyuREemAOL1eRjr3BA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aMIwzCuREemAOL1eRjr3BA"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="IoT-ML.profile.uml#_veD3ACtzEeeZI6rMTYV60w"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aMIwwSuREemAOL1eRjr3BA" x="460" y="20"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_vPDw8CuREemAOL1eRjr3BA" type="Stereotype_Shape" fillColor="12632256">
+      <children xmi:type="notation:DecorationNode" xmi:id="_vPDw8iuREemAOL1eRjr3BA" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_vPDw8yuREemAOL1eRjr3BA" visible="false" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_vPDw9CuREemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_vPDw9SuREemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_vPDw9iuREemAOL1eRjr3BA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vPDw9yuREemAOL1eRjr3BA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_vPDw-CuREemAOL1eRjr3BA" visible="false" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_vPDw-SuREemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_vPDw-iuREemAOL1eRjr3BA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_vPDw-yuREemAOL1eRjr3BA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vPDw_CuREemAOL1eRjr3BA"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="IoT-ML.profile.uml#_mZu-gCttEeeZI6rMTYV60w"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vPDw8SuREemAOL1eRjr3BA" x="600" y="300"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_-_De8CuREemAOL1eRjr3BA" type="Class_MetaclassShape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_-_De8iuREemAOL1eRjr3BA" type="Class_MetaclassNameLabel"/>
+      <element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Operation"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-_De8SuREemAOL1eRjr3BA" x="720" y="60"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_-_WZ4yuREemAOL1eRjr3BA" type="StereotypeComment">
+      <styles xmi:type="notation:TitleStyle" xmi:id="_-_WZ5CuREemAOL1eRjr3BA"/>
+      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_-_WZ5iuREemAOL1eRjr3BA" name="BASE_ELEMENT">
+        <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Operation"/>
+      </styles>
+      <element xsi:nil="true"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-_WZ5SuREemAOL1eRjr3BA" x="200"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_yHzQ8CuXEemAOL1eRjr3BA" type="Class_MetaclassShape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_yHzQ8iuXEemAOL1eRjr3BA" type="Class_MetaclassNameLabel"/>
+      <element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Property"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yHzQ8SuXEemAOL1eRjr3BA" x="260" y="320"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_yIGL6iuXEemAOL1eRjr3BA" type="StereotypeComment">
+      <styles xmi:type="notation:TitleStyle" xmi:id="_yIGL6yuXEemAOL1eRjr3BA"/>
+      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_yIGL7SuXEemAOL1eRjr3BA" name="BASE_ELEMENT">
+        <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Property"/>
+      </styles>
+      <element xsi:nil="true"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yIGL7CuXEemAOL1eRjr3BA" x="200"/>
+    </children>
+    <styles xmi:type="notation:StringValueStyle" xmi:id="_01fKwSuNEemAOL1eRjr3BA" name="diagram_compatibility_version" stringValue="1.4.0"/>
+    <styles xmi:type="notation:DiagramStyle" xmi:id="_01fKwiuNEemAOL1eRjr3BA"/>
+    <styles xmi:type="style:PapyrusDiagramStyle" xmi:id="_01fKwyuNEemAOL1eRjr3BA" diagramKindId="org.eclipse.papyrus.uml.diagram.profile">
+      <owner xmi:type="uml:Package" href="IoT-ML.profile.uml#_lz21ECuBEemAOL1eRjr3BA"/>
+    </styles>
+    <element xmi:type="uml:Package" href="IoT-ML.profile.uml#_lz21ECuBEemAOL1eRjr3BA"/>
+    <edges xmi:type="notation:Connector" xmi:id="_JKWyLiuOEemAOL1eRjr3BA" type="StereotypeCommentLink" source="_JKD3MCuOEemAOL1eRjr3BA" target="_JKWyKiuOEemAOL1eRjr3BA">
+      <styles xmi:type="notation:FontStyle" xmi:id="_JKWyLyuOEemAOL1eRjr3BA"/>
+      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_JKWyMyuOEemAOL1eRjr3BA" name="BASE_ELEMENT">
+        <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#TypedElement"/>
+      </styles>
+      <element xsi:nil="true"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_JKWyMCuOEemAOL1eRjr3BA" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_JKWyMSuOEemAOL1eRjr3BA"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_JKWyMiuOEemAOL1eRjr3BA"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_KBQk8CuOEemAOL1eRjr3BA" type="Extension_Edge" source="_4lTrcCuNEemAOL1eRjr3BA" target="_JKD3MCuOEemAOL1eRjr3BA">
+      <styles xmi:type="notation:FontStyle" xmi:id="_KBQk8SuOEemAOL1eRjr3BA"/>
+      <element xmi:type="uml:Extension" href="IoT-ML.profile.uml#_KAXNECuOEemAOL1eRjr3BA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_KBQk8iuOEemAOL1eRjr3BA" points="[880, 160, -643984, -643984]$[880, 120, -643984, -643984]$[1100, 120, -643984, -643984]$[1100, 90, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_KBQk8yuOEemAOL1eRjr3BA" id="(0.4,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_KBQk9CuOEemAOL1eRjr3BA" id="(0.4,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_FIJPACuQEemAOL1eRjr3BA" type="Generalization_Edge" source="_GcxVECuPEemAOL1eRjr3BA" target="_Dcb7ICuQEemAOL1eRjr3BA">
+      <children xmi:type="notation:DecorationNode" xmi:id="_FIJPAyuQEemAOL1eRjr3BA" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_FwUCQCuQEemAOL1eRjr3BA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_FIJPBCuQEemAOL1eRjr3BA" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_FIJPASuQEemAOL1eRjr3BA"/>
+      <element xmi:type="uml:Generalization" href="IoT-ML.profile.uml#_FHjZICuQEemAOL1eRjr3BA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_FIJPAiuQEemAOL1eRjr3BA" points="[140, 160, -643984, -643984]$[140, 120, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_FITAACuQEemAOL1eRjr3BA" id="(0.4,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_FITAASuQEemAOL1eRjr3BA" id="(0.4,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_MMuFACuQEemAOL1eRjr3BA" type="Generalization_Edge" source="_RueS0CuPEemAOL1eRjr3BA" target="_KrHvYCuQEemAOL1eRjr3BA">
+      <children xmi:type="notation:DecorationNode" xmi:id="_MMuFAyuQEemAOL1eRjr3BA" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_b5Py0CuREemAOL1eRjr3BA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_MMuFBCuQEemAOL1eRjr3BA" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_MMuFASuQEemAOL1eRjr3BA"/>
+      <element xmi:type="uml:Generalization" href="IoT-ML.profile.uml#_MMRZECuQEemAOL1eRjr3BA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_MMuFAiuQEemAOL1eRjr3BA" points="[640, 160, -643984, -643984]$[640, 120, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_MNA_8CuQEemAOL1eRjr3BA" id="(0.4,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_MNA_8SuQEemAOL1eRjr3BA" id="(0.4,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_OsDOMCuQEemAOL1eRjr3BA" type="Generalization_Edge" source="_GdEQACuPEemAOL1eRjr3BA" target="_N3ryACuQEemAOL1eRjr3BA">
+      <children xmi:type="notation:DecorationNode" xmi:id="_OsDOMyuQEemAOL1eRjr3BA" type="Generalization_StereotypeLabel">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_OsDONCuQEemAOL1eRjr3BA" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_OsDOMSuQEemAOL1eRjr3BA"/>
+      <element xmi:type="uml:Generalization" href="IoT-ML.profile.uml#_OrTnUCuQEemAOL1eRjr3BA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_OsDOMiuQEemAOL1eRjr3BA" points="[260, 160, -643984, -643984]$[260, 120, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_OsWwMCuQEemAOL1eRjr3BA" id="(0.4,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_OsWwMSuQEemAOL1eRjr3BA" id="(0.3669724770642202,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_gyZvkCuQEemAOL1eRjr3BA" type="Generalization_Edge" source="_GdOBACuPEemAOL1eRjr3BA" target="_gFLdMCuQEemAOL1eRjr3BA">
+      <children xmi:type="notation:DecorationNode" xmi:id="_gyZvkyuQEemAOL1eRjr3BA" type="Generalization_StereotypeLabel">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_gyZvlCuQEemAOL1eRjr3BA" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_gyZvkSuQEemAOL1eRjr3BA"/>
+      <element xmi:type="uml:Generalization" href="IoT-ML.profile.uml#_gxz5sCuQEemAOL1eRjr3BA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_gyZvkiuQEemAOL1eRjr3BA" points="[380, 160, -643984, -643984]$[380, 120, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_gyjgkCuQEemAOL1eRjr3BA" id="(0.4,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_gyjgkSuQEemAOL1eRjr3BA" id="(0.4,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_dYEhQCuREemAOL1eRjr3BA" type="Generalization_Edge" source="_Gdg78CuPEemAOL1eRjr3BA" target="_aMIwwCuREemAOL1eRjr3BA">
+      <children xmi:type="notation:DecorationNode" xmi:id="_dYNrMCuREemAOL1eRjr3BA" type="Generalization_StereotypeLabel">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_dYNrMSuREemAOL1eRjr3BA" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_dYEhQSuREemAOL1eRjr3BA"/>
+      <element xmi:type="uml:Generalization" href="IoT-ML.profile.uml#_dXxmUCuREemAOL1eRjr3BA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_dYEhQiuREemAOL1eRjr3BA" points="[500, 160, -643984, -643984]$[500, 120, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_dYXcMCuREemAOL1eRjr3BA" id="(0.4,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_dYXcMSuREemAOL1eRjr3BA" id="(0.33613445378151263,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_-_WZ5yuREemAOL1eRjr3BA" type="StereotypeCommentLink" source="_-_De8CuREemAOL1eRjr3BA" target="_-_WZ4yuREemAOL1eRjr3BA">
+      <styles xmi:type="notation:FontStyle" xmi:id="_-_WZ6CuREemAOL1eRjr3BA"/>
+      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_-_WZ7CuREemAOL1eRjr3BA" name="BASE_ELEMENT">
+        <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Operation"/>
+      </styles>
+      <element xsi:nil="true"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_-_WZ6SuREemAOL1eRjr3BA" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_-_WZ6iuREemAOL1eRjr3BA"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_-_WZ6yuREemAOL1eRjr3BA"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_AaapsCuSEemAOL1eRjr3BA" type="Extension_Edge" source="_OmX5cCuPEemAOL1eRjr3BA" target="_-_De8CuREemAOL1eRjr3BA">
+      <styles xmi:type="notation:FontStyle" xmi:id="_AaapsSuSEemAOL1eRjr3BA"/>
+      <element xmi:type="uml:Extension" href="IoT-ML.profile.uml#_AZ0z0CuSEemAOL1eRjr3BA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_AaapsiuSEemAOL1eRjr3BA" points="[780, 160, -643984, -643984]$[780, 110, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_AatkoCuSEemAOL1eRjr3BA" id="(0.6,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_AatkoSuSEemAOL1eRjr3BA" id="(0.6,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_Out1wCuSEemAOL1eRjr3BA" type="Generalization_Edge" source="_bvkH0CuQEemAOL1eRjr3BA" target="_vPDw8CuREemAOL1eRjr3BA">
+      <children xmi:type="notation:DecorationNode" xmi:id="_Out1wyuSEemAOL1eRjr3BA" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_PMn5wCuSEemAOL1eRjr3BA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_Out1xCuSEemAOL1eRjr3BA" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_Out1wSuSEemAOL1eRjr3BA"/>
+      <element xmi:type="uml:Generalization" href="IoT-ML.profile.uml#_OuH_4CuSEemAOL1eRjr3BA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Out1wiuSEemAOL1eRjr3BA" points="[660, 480, -643984, -643984]$[660, 440, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_OvAwsCuSEemAOL1eRjr3BA" id="(0.6,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_OvAwsSuSEemAOL1eRjr3BA" id="(0.6,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_QzlQgCuSEemAOL1eRjr3BA" type="Generalization_Edge" source="_bvkH0CuQEemAOL1eRjr3BA" target="_Gdg78CuPEemAOL1eRjr3BA">
+      <children xmi:type="notation:DecorationNode" xmi:id="_QzlQgyuSEemAOL1eRjr3BA" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_Rwb6UCuSEemAOL1eRjr3BA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_QzlQhCuSEemAOL1eRjr3BA" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_QzlQgSuSEemAOL1eRjr3BA"/>
+      <element xmi:type="uml:Generalization" href="IoT-ML.profile.uml#_ARBE0CuMEemAOL1eRjr3BA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_QzlQgiuSEemAOL1eRjr3BA" points="[600, 480, -643984, -643984]$[520, 480, -643984, -643984]$[520, 260, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_RwIYUCuSEemAOL1eRjr3BA" id="(0.0,0.4)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_RwIYUSuSEemAOL1eRjr3BA" id="(0.6,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_yIGL7iuXEemAOL1eRjr3BA" type="StereotypeCommentLink" source="_yHzQ8CuXEemAOL1eRjr3BA" target="_yIGL6iuXEemAOL1eRjr3BA">
+      <styles xmi:type="notation:FontStyle" xmi:id="_yIGL7yuXEemAOL1eRjr3BA"/>
+      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_yIGL8yuXEemAOL1eRjr3BA" name="BASE_ELEMENT">
+        <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Property"/>
+      </styles>
+      <element xsi:nil="true"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_yIGL8CuXEemAOL1eRjr3BA" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_yIGL8SuXEemAOL1eRjr3BA"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_yIGL8iuXEemAOL1eRjr3BA"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_zRvUgCuXEemAOL1eRjr3BA" type="Extension_Edge" source="_bvRM4CuQEemAOL1eRjr3BA" target="_yHzQ8CuXEemAOL1eRjr3BA">
+      <styles xmi:type="notation:FontStyle" xmi:id="_zRvUgSuXEemAOL1eRjr3BA"/>
+      <element xmi:type="uml:Extension" href="IoT-ML.profile.uml#_zQ_toCuXEemAOL1eRjr3BA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_zRvUgiuXEemAOL1eRjr3BA" points="[420, 440, -643984, -643984]$[420, 370, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_zSCPcCuXEemAOL1eRjr3BA" id="(0.4,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_zSCPcSuXEemAOL1eRjr3BA" id="(0.4,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_0xP_cCuXEemAOL1eRjr3BA" type="Extension_Edge" source="_bu0g8CuQEemAOL1eRjr3BA" target="_yHzQ8CuXEemAOL1eRjr3BA">
+      <styles xmi:type="notation:FontStyle" xmi:id="_0xP_cSuXEemAOL1eRjr3BA"/>
+      <element xmi:type="uml:Extension" href="IoT-ML.profile.uml#_0wNdoCuXEemAOL1eRjr3BA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_0xP_ciuXEemAOL1eRjr3BA" points="[300, 440, -643984, -643984]$[300, 370, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_0xsrYCuXEemAOL1eRjr3BA" id="(0.4,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_0xsrYSuXEemAOL1eRjr3BA" id="(0.4,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_3d-rcCuXEemAOL1eRjr3BA" type="Extension_Edge" source="_buX1ACuQEemAOL1eRjr3BA" target="_yHzQ8CuXEemAOL1eRjr3BA">
+      <styles xmi:type="notation:FontStyle" xmi:id="_3d-rcSuXEemAOL1eRjr3BA"/>
+      <element xmi:type="uml:Extension" href="IoT-ML.profile.uml#_3dY1kCuXEemAOL1eRjr3BA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3d-rciuXEemAOL1eRjr3BA" points="[200, 440, -643984, -643984]$[300, 370, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3eIccCuXEemAOL1eRjr3BA" id="(0.6,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3eIccSuXEemAOL1eRjr3BA" id="(0.4,1.0)"/>
+    </edges>
+  </notation:Diagram>
 </xmi:XMI>
diff --git a/org.eclipse.papyrus.iotml.profile/model/IoT-ML.profile.uml b/org.eclipse.papyrus.iotml.profile/model/IoT-ML.profile.uml
index 37ecfda..42067a5 100644
--- a/org.eclipse.papyrus.iotml.profile/model/IoT-ML.profile.uml
+++ b/org.eclipse.papyrus.iotml.profile/model/IoT-ML.profile.uml
@@ -1,7 +1,6 @@
 <?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:Ecore="http://www.eclipse.org/uml2/schemas/Ecore/5" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xsi:schemaLocation="http://www.eclipse.org/uml2/schemas/Ecore/5 pathmap://UML_PROFILES/Ecore.profile.uml#_z1OFcHjqEdy8S4Cr8Rc_NA">
   <uml:Profile xmi:id="IoT-ML" name="IoT-ML" URI="http://www.eclipse.org/papyrus/iotml/0.7/IoTML">
-    <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_D4Rb8Ct1EeeZI6rMTYV60w" source="http://www.eclipse.org/uml2/2.0.0/UML"/>
     <packageImport xmi:type="uml:PackageImport" xmi:id="_gRWW4CtgEeepEtCwqDnj2w">
       <importedPackage xmi:type="uml:Model" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#_0"/>
     </packageImport>
@@ -67,7 +66,7 @@
         </packagedElement>
       </packagedElement>
       <packagedElement xmi:type="uml:Package" xmi:id="_INCz4CthEeepEtCwqDnj2w" name="Sensor" URI="http://www.eclipse.org/papyrus/iotml/0.7/IoTML/Hardware/Sensor">
-        <elementImport xmi:type="uml:ElementImport" xmi:id="_2-IXMCtoEeeLDNWa-Yk0bg">
+        <elementImport xmi:type="uml:ElementImport" xmi:id="_2-IXMCtoEeeLDNWa-Yk0bg" alias="">
           <importedElement xmi:type="uml:Stereotype" href="pathmap://Papyrus_PROFILES/MARTE.profile.uml#_SuQccDL2Ed2HYNz2hI9A2g"/>
         </elementImport>
         <elementImport xmi:type="uml:ElementImport" xmi:id="_6o1uYCtoEeeLDNWa-Yk0bg">
@@ -636,6 +635,202 @@
         </packagedElement>
       </packagedElement>
     </packagedElement>
+    <packagedElement xmi:type="uml:Package" xmi:id="_lz21ECuBEemAOL1eRjr3BA" name="SensiNact" URI="http://www.eclipse.org/papyrus/iotml/0.7/IoTML/SensiNact">
+      <elementImport xmi:type="uml:ElementImport" xmi:id="_oF2jsEG4EemVxLbqCCTRuA" importedElement="_9sK2ICtgEeepEtCwqDnj2w"/>
+      <elementImport xmi:type="uml:ElementImport" xmi:id="_smCxYEG4EemVxLbqCCTRuA" importedElement="_OpOwACtoEeeLDNWa-Yk0bg"/>
+      <elementImport xmi:type="uml:ElementImport" xmi:id="_xBm9wEG4EemVxLbqCCTRuA" importedElement="_ENBgwCtxEeeZI6rMTYV60w"/>
+      <elementImport xmi:type="uml:ElementImport" xmi:id="_4w3IcEG4EemVxLbqCCTRuA" importedElement="_veD3ACtzEeeZI6rMTYV60w"/>
+      <elementImport xmi:type="uml:ElementImport" xmi:id="_7BKXIEG4EemVxLbqCCTRuA" importedElement="_O9fv0CtoEeeLDNWa-Yk0bg"/>
+      <elementImport xmi:type="uml:ElementImport" xmi:id="_BV0MEEG5EemVxLbqCCTRuA" importedElement="_mZu-gCttEeeZI6rMTYV60w"/>
+      <packagedElement xmi:type="uml:Stereotype" xmi:id="_S5I2gCuMEemAOL1eRjr3BA" name="TypedElement" isAbstract="true">
+        <ownedAttribute xmi:type="uml:Property" xmi:id="_ZcrcACuMEemAOL1eRjr3BA" name="value" type="_Fw88MCtyEeeZI6rMTYV60w">
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Q4b4ICuOEemAOL1eRjr3BA"/>
+          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Q4uzECuOEemAOL1eRjr3BA" value="1"/>
+        </ownedAttribute>
+        <ownedAttribute xmi:type="uml:Property" xmi:id="_KAg-ESuOEemAOL1eRjr3BA" name="base_TypedElement" association="_KAXNECuOEemAOL1eRjr3BA">
+          <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#TypedElement"/>
+        </ownedAttribute>
+      </packagedElement>
+      <packagedElement xmi:type="uml:Stereotype" xmi:id="_-9aTcCuBEemAOL1eRjr3BA" name="Studio">
+        <generalization xmi:type="uml:Generalization" xmi:id="_FHjZICuQEemAOL1eRjr3BA" general="_9sK2ICtgEeepEtCwqDnj2w"/>
+        <ownedAttribute xmi:type="uml:Property" xmi:id="_rqIgYSuLEemAOL1eRjr3BA" name="gateways" type="_PVhxYCuCEemAOL1eRjr3BA" association="_rp_WcCuLEemAOL1eRjr3BA">
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_vKoysCuLEemAOL1eRjr3BA" value="1"/>
+          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_vK7toCuLEemAOL1eRjr3BA" value="*"/>
+        </ownedAttribute>
+      </packagedElement>
+      <packagedElement xmi:type="uml:Stereotype" xmi:id="__pc6ECuBEemAOL1eRjr3BA" name="Device">
+        <generalization xmi:type="uml:Generalization" xmi:id="_OrTnUCuQEemAOL1eRjr3BA" general="_OpOwACtoEeeLDNWa-Yk0bg"/>
+        <ownedAttribute xmi:type="uml:Property" xmi:id="_I_xaICuLEemAOL1eRjr3BA" name="friendlyName">
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+        </ownedAttribute>
+        <ownedAttribute xmi:type="uml:Property" xmi:id="_U9qIcyuLEemAOL1eRjr3BA" name="services" type="_Aa_rwCuCEemAOL1eRjr3BA" association="_U9qIcCuLEemAOL1eRjr3BA">
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_WBWaECuLEemAOL1eRjr3BA" value="1"/>
+          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_WBpVACuLEemAOL1eRjr3BA" value="*"/>
+        </ownedAttribute>
+      </packagedElement>
+      <packagedElement xmi:type="uml:Stereotype" xmi:id="_Aa_rwCuCEemAOL1eRjr3BA" name="Service">
+        <generalization xmi:type="uml:Generalization" xmi:id="_gxz5sCuQEemAOL1eRjr3BA" general="_ENBgwCtxEeeZI6rMTYV60w"/>
+        <ownedAttribute xmi:type="uml:Property" xmi:id="_MMCh0CuLEemAOL1eRjr3BA" name="friendlyName">
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+        </ownedAttribute>
+        <ownedAttribute xmi:type="uml:Property" xmi:id="_tLZ7UiuKEemAOL1eRjr3BA" name="resources" type="_GxJVgCuCEemAOL1eRjr3BA" association="_tLQKUCuKEemAOL1eRjr3BA">
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_utvQwCuKEemAOL1eRjr3BA" value="1"/>
+          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_uuCywCuKEemAOL1eRjr3BA" value="*"/>
+        </ownedAttribute>
+      </packagedElement>
+      <packagedElement xmi:type="uml:Stereotype" xmi:id="_GxJVgCuCEemAOL1eRjr3BA" name="Resource">
+        <generalization xmi:type="uml:Generalization" xmi:id="_dXxmUCuREemAOL1eRjr3BA" general="_veD3ACtzEeeZI6rMTYV60w"/>
+        <ownedAttribute xmi:type="uml:Property" xmi:id="_IBykYCuKEemAOL1eRjr3BA" name="friendlyName">
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+        </ownedAttribute>
+        <ownedAttribute xmi:type="uml:Property" xmi:id="_RJV-wyuKEemAOL1eRjr3BA" name="accessMethods" type="_N7NvgCuCEemAOL1eRjr3BA" association="_RJV-wCuKEemAOL1eRjr3BA">
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_c51xUCuKEemAOL1eRjr3BA" value="1"/>
+          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_c6SdQCuKEemAOL1eRjr3BA" value="*"/>
+        </ownedAttribute>
+        <ownedAttribute xmi:type="uml:Property" xmi:id="_VepyIyuKEemAOL1eRjr3BA" name="attributes" type="_MrU08CuCEemAOL1eRjr3BA" association="_VepyICuKEemAOL1eRjr3BA">
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_aABrkCuKEemAOL1eRjr3BA" value="1"/>
+          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_aAdwcCuKEemAOL1eRjr3BA" value="*"/>
+        </ownedAttribute>
+      </packagedElement>
+      <packagedElement xmi:type="uml:Stereotype" xmi:id="_HqRV4CuCEemAOL1eRjr3BA" name="Property">
+        <generalization xmi:type="uml:Generalization" xmi:id="_-bCaoCuLEemAOL1eRjr3BA" general="_GxJVgCuCEemAOL1eRjr3BA"/>
+        <ownedAttribute xmi:type="uml:Property" xmi:id="_3dY1kiuXEemAOL1eRjr3BA" name="base_Property" association="_3dY1kCuXEemAOL1eRjr3BA">
+          <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Property"/>
+        </ownedAttribute>
+      </packagedElement>
+      <packagedElement xmi:type="uml:Stereotype" xmi:id="_JFBcoCuCEemAOL1eRjr3BA" name="SensorData">
+        <generalization xmi:type="uml:Generalization" xmi:id="_-_MQkCuLEemAOL1eRjr3BA" general="_GxJVgCuCEemAOL1eRjr3BA"/>
+        <ownedAttribute xmi:type="uml:Property" xmi:id="_0wNdoiuXEemAOL1eRjr3BA" name="base_Property" association="_0wNdoCuXEemAOL1eRjr3BA">
+          <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Property"/>
+        </ownedAttribute>
+      </packagedElement>
+      <packagedElement xmi:type="uml:Stereotype" xmi:id="_K7TBwCuCEemAOL1eRjr3BA" name="StateVariable">
+        <generalization xmi:type="uml:Generalization" xmi:id="__mKxACuLEemAOL1eRjr3BA" general="_GxJVgCuCEemAOL1eRjr3BA"/>
+        <ownedAttribute xmi:type="uml:Property" xmi:id="_KSCBUyuNEemAOL1eRjr3BA" name="modifier" type="_LyDDkCuCEemAOL1eRjr3BA" association="_KSCBUCuNEemAOL1eRjr3BA">
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ptar8CuNEemAOL1eRjr3BA" value="1"/>
+          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_PuBI4CuNEemAOL1eRjr3BA" value="1"/>
+        </ownedAttribute>
+        <ownedAttribute xmi:type="uml:Property" xmi:id="_zQ_toiuXEemAOL1eRjr3BA" name="base_Property" association="_zQ_toCuXEemAOL1eRjr3BA">
+          <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Property"/>
+        </ownedAttribute>
+      </packagedElement>
+      <packagedElement xmi:type="uml:Stereotype" xmi:id="_LyDDkCuCEemAOL1eRjr3BA" name="Action">
+        <generalization xmi:type="uml:Generalization" xmi:id="_ARBE0CuMEemAOL1eRjr3BA" general="_GxJVgCuCEemAOL1eRjr3BA"/>
+        <generalization xmi:type="uml:Generalization" xmi:id="_OuH_4CuSEemAOL1eRjr3BA" general="_mZu-gCttEeeZI6rMTYV60w"/>
+        <ownedAttribute xmi:type="uml:Property" xmi:id="_KSCBVCuNEemAOL1eRjr3BA" name="state" type="_K7TBwCuCEemAOL1eRjr3BA" isDerived="true" association="_KSCBUCuNEemAOL1eRjr3BA"/>
+      </packagedElement>
+      <packagedElement xmi:type="uml:Stereotype" xmi:id="_MrU08CuCEemAOL1eRjr3BA" name="Attribute">
+        <generalization xmi:type="uml:Generalization" xmi:id="_y1gsgCuMEemAOL1eRjr3BA" general="_S5I2gCuMEemAOL1eRjr3BA"/>
+        <ownedAttribute xmi:type="uml:Property" xmi:id="_jSOPsyuKEemAOL1eRjr3BA" name="metadata" type="_NTyjICuCEemAOL1eRjr3BA" association="_jSOPsCuKEemAOL1eRjr3BA">
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_meVmYCuKEemAOL1eRjr3BA"/>
+          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_me8DUCuKEemAOL1eRjr3BA" value="*"/>
+        </ownedAttribute>
+      </packagedElement>
+      <packagedElement xmi:type="uml:Stereotype" xmi:id="_NTyjICuCEemAOL1eRjr3BA" name="Metadata">
+        <generalization xmi:type="uml:Generalization" xmi:id="_wIoPgCuMEemAOL1eRjr3BA" general="_S5I2gCuMEemAOL1eRjr3BA"/>
+      </packagedElement>
+      <packagedElement xmi:type="uml:Stereotype" xmi:id="_N7NvgCuCEemAOL1eRjr3BA" name="AccessMethod">
+        <ownedAttribute xmi:type="uml:Property" xmi:id="_jRrSkCuJEemAOL1eRjr3BA" name="type" type="_7MIkwCuCEemAOL1eRjr3BA" association="_jRYXoCuJEemAOL1eRjr3BA"/>
+        <ownedAttribute xmi:type="uml:Property" xmi:id="_2lGEAiuJEemAOL1eRjr3BA" name="parameters" type="_OlnXYCuCEemAOL1eRjr3BA" association="_2k86ECuJEemAOL1eRjr3BA">
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_epRHkCuKEemAOL1eRjr3BA"/>
+          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_epkpkCuKEemAOL1eRjr3BA" value="*"/>
+        </ownedAttribute>
+        <ownedAttribute xmi:type="uml:Property" xmi:id="_AZ0z0iuSEemAOL1eRjr3BA" name="base_Operation" association="_AZ0z0CuSEemAOL1eRjr3BA">
+          <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Operation"/>
+        </ownedAttribute>
+      </packagedElement>
+      <packagedElement xmi:type="uml:Stereotype" xmi:id="_OlnXYCuCEemAOL1eRjr3BA" name="Parameter">
+        <generalization xmi:type="uml:Generalization" xmi:id="_vlhicCuMEemAOL1eRjr3BA" general="_S5I2gCuMEemAOL1eRjr3BA"/>
+      </packagedElement>
+      <packagedElement xmi:type="uml:Stereotype" xmi:id="_PVhxYCuCEemAOL1eRjr3BA" name="Gateway">
+        <generalization xmi:type="uml:Generalization" xmi:id="_MMRZECuQEemAOL1eRjr3BA" general="_O9fv0CtoEeeLDNWa-Yk0bg"/>
+        <ownedAttribute xmi:type="uml:Property" xmi:id="_e_xGkyuLEemAOL1eRjr3BA" name="devices" type="__pc6ECuBEemAOL1eRjr3BA" association="_e_xGkCuLEemAOL1eRjr3BA">
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iH3f8CuLEemAOL1eRjr3BA" value="1"/>
+          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iIKa4CuLEemAOL1eRjr3BA" value="*"/>
+        </ownedAttribute>
+      </packagedElement>
+      <packagedElement xmi:type="uml:Enumeration" xmi:id="_7MIkwCuCEemAOL1eRjr3BA" name="AccessMethodType">
+        <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_pGBsQCuIEemAOL1eRjr3BA" name="GET"/>
+        <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_pn8tkCuIEemAOL1eRjr3BA" name="SET"/>
+        <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_qIFmMCuIEemAOL1eRjr3BA" name="ACT"/>
+        <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_q_uY0CuIEemAOL1eRjr3BA" name="SUBSCRIBE"/>
+        <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_sxF2gCuNEemAOL1eRjr3BA" name="UNSUBSCRIBE"/>
+      </packagedElement>
+      <packagedElement xmi:type="uml:Association" xmi:id="_jRYXoCuJEemAOL1eRjr3BA" memberEnd="_jRrSkCuJEemAOL1eRjr3BA _jRrSkSuJEemAOL1eRjr3BA">
+        <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_jRiIoCuJEemAOL1eRjr3BA" source="org.eclipse.papyrus">
+          <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jRiIoSuJEemAOL1eRjr3BA" key="nature" value="UML_Nature"/>
+        </eAnnotations>
+        <ownedEnd xmi:type="uml:Property" xmi:id="_jRrSkSuJEemAOL1eRjr3BA" name="accessmethod" type="_N7NvgCuCEemAOL1eRjr3BA" association="_jRYXoCuJEemAOL1eRjr3BA"/>
+      </packagedElement>
+      <packagedElement xmi:type="uml:Association" xmi:id="_2k86ECuJEemAOL1eRjr3BA" memberEnd="_2lGEAiuJEemAOL1eRjr3BA _2lGEAyuJEemAOL1eRjr3BA">
+        <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_2lGEACuJEemAOL1eRjr3BA" source="org.eclipse.papyrus">
+          <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_2lGEASuJEemAOL1eRjr3BA" key="nature" value="UML_Nature"/>
+        </eAnnotations>
+        <ownedEnd xmi:type="uml:Property" xmi:id="_2lGEAyuJEemAOL1eRjr3BA" name="accessmethod" type="_N7NvgCuCEemAOL1eRjr3BA" association="_2k86ECuJEemAOL1eRjr3BA"/>
+      </packagedElement>
+      <packagedElement xmi:type="uml:Association" xmi:id="_RJV-wCuKEemAOL1eRjr3BA" memberEnd="_RJV-wyuKEemAOL1eRjr3BA _RJV-xCuKEemAOL1eRjr3BA">
+        <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_RJV-wSuKEemAOL1eRjr3BA" source="org.eclipse.papyrus">
+          <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_RJV-wiuKEemAOL1eRjr3BA" key="nature" value="UML_Nature"/>
+        </eAnnotations>
+        <ownedEnd xmi:type="uml:Property" xmi:id="_RJV-xCuKEemAOL1eRjr3BA" name="resource" type="_GxJVgCuCEemAOL1eRjr3BA" association="_RJV-wCuKEemAOL1eRjr3BA"/>
+      </packagedElement>
+      <packagedElement xmi:type="uml:Association" xmi:id="_VepyICuKEemAOL1eRjr3BA" memberEnd="_VepyIyuKEemAOL1eRjr3BA _VepyJCuKEemAOL1eRjr3BA">
+        <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_VepyISuKEemAOL1eRjr3BA" source="org.eclipse.papyrus">
+          <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_VepyIiuKEemAOL1eRjr3BA" key="nature" value="UML_Nature"/>
+        </eAnnotations>
+        <ownedEnd xmi:type="uml:Property" xmi:id="_VepyJCuKEemAOL1eRjr3BA" name="resource" type="_GxJVgCuCEemAOL1eRjr3BA" association="_VepyICuKEemAOL1eRjr3BA"/>
+      </packagedElement>
+      <packagedElement xmi:type="uml:Association" xmi:id="_jSOPsCuKEemAOL1eRjr3BA" memberEnd="_jSOPsyuKEemAOL1eRjr3BA _jSOPtCuKEemAOL1eRjr3BA">
+        <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_jSOPsSuKEemAOL1eRjr3BA" source="org.eclipse.papyrus">
+          <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jSOPsiuKEemAOL1eRjr3BA" key="nature" value="UML_Nature"/>
+        </eAnnotations>
+        <ownedEnd xmi:type="uml:Property" xmi:id="_jSOPtCuKEemAOL1eRjr3BA" name="attribute" type="_MrU08CuCEemAOL1eRjr3BA" association="_jSOPsCuKEemAOL1eRjr3BA"/>
+      </packagedElement>
+      <packagedElement xmi:type="uml:Association" xmi:id="_tLQKUCuKEemAOL1eRjr3BA" memberEnd="_tLZ7UiuKEemAOL1eRjr3BA _tLZ7UyuKEemAOL1eRjr3BA">
+        <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tLZ7UCuKEemAOL1eRjr3BA" source="org.eclipse.papyrus">
+          <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tLZ7USuKEemAOL1eRjr3BA" key="nature" value="UML_Nature"/>
+        </eAnnotations>
+        <ownedEnd xmi:type="uml:Property" xmi:id="_tLZ7UyuKEemAOL1eRjr3BA" name="service" type="_Aa_rwCuCEemAOL1eRjr3BA" association="_tLQKUCuKEemAOL1eRjr3BA"/>
+      </packagedElement>
+      <packagedElement xmi:type="uml:Association" xmi:id="_U9qIcCuLEemAOL1eRjr3BA" memberEnd="_U9qIcyuLEemAOL1eRjr3BA _U9qIdCuLEemAOL1eRjr3BA">
+        <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_U9qIcSuLEemAOL1eRjr3BA" source="org.eclipse.papyrus">
+          <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_U9qIciuLEemAOL1eRjr3BA" key="nature" value="UML_Nature"/>
+        </eAnnotations>
+        <ownedEnd xmi:type="uml:Property" xmi:id="_U9qIdCuLEemAOL1eRjr3BA" name="device" type="__pc6ECuBEemAOL1eRjr3BA" association="_U9qIcCuLEemAOL1eRjr3BA"/>
+      </packagedElement>
+      <packagedElement xmi:type="uml:Association" xmi:id="_e_xGkCuLEemAOL1eRjr3BA" memberEnd="_e_xGkyuLEemAOL1eRjr3BA _e_xGlCuLEemAOL1eRjr3BA">
+        <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_e_xGkSuLEemAOL1eRjr3BA" source="org.eclipse.papyrus">
+          <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_e_xGkiuLEemAOL1eRjr3BA" key="nature" value="UML_Nature"/>
+        </eAnnotations>
+        <ownedEnd xmi:type="uml:Property" xmi:id="_e_xGlCuLEemAOL1eRjr3BA" name="gateway" type="_PVhxYCuCEemAOL1eRjr3BA" association="_e_xGkCuLEemAOL1eRjr3BA"/>
+      </packagedElement>
+      <packagedElement xmi:type="uml:Association" xmi:id="_rp_WcCuLEemAOL1eRjr3BA" memberEnd="_rqIgYSuLEemAOL1eRjr3BA _rqIgYiuLEemAOL1eRjr3BA">
+        <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_rp_WcSuLEemAOL1eRjr3BA" source="org.eclipse.papyrus">
+          <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_rqIgYCuLEemAOL1eRjr3BA" key="nature" value="UML_Nature"/>
+        </eAnnotations>
+        <ownedEnd xmi:type="uml:Property" xmi:id="_rqIgYiuLEemAOL1eRjr3BA" name="studio" type="_-9aTcCuBEemAOL1eRjr3BA" association="_rp_WcCuLEemAOL1eRjr3BA"/>
+      </packagedElement>
+      <packagedElement xmi:type="uml:Association" xmi:id="_KSCBUCuNEemAOL1eRjr3BA" memberEnd="_KSCBUyuNEemAOL1eRjr3BA _KSCBVCuNEemAOL1eRjr3BA">
+        <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_KSCBUSuNEemAOL1eRjr3BA" source="org.eclipse.papyrus">
+          <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_KSCBUiuNEemAOL1eRjr3BA" key="nature" value="UML_Nature"/>
+        </eAnnotations>
+      </packagedElement>
+      <packagedElement xmi:type="uml:Extension" xmi:id="_KAXNECuOEemAOL1eRjr3BA" name="E_TypedElement_TypedElement27" memberEnd="_KAg-ECuOEemAOL1eRjr3BA _KAg-ESuOEemAOL1eRjr3BA">
+        <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_KAg-ECuOEemAOL1eRjr3BA" name="extension_TypedElement" type="_S5I2gCuMEemAOL1eRjr3BA" aggregation="composite" association="_KAXNECuOEemAOL1eRjr3BA"/>
+      </packagedElement>
+      <packagedElement xmi:type="uml:Extension" xmi:id="_AZ0z0CuSEemAOL1eRjr3BA" name="E_AccessMethod_Operation29" memberEnd="_AZ0z0SuSEemAOL1eRjr3BA _AZ0z0iuSEemAOL1eRjr3BA">
+        <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_AZ0z0SuSEemAOL1eRjr3BA" name="extension_AccessMethod" type="_N7NvgCuCEemAOL1eRjr3BA" aggregation="composite" association="_AZ0z0CuSEemAOL1eRjr3BA"/>
+      </packagedElement>
+      <packagedElement xmi:type="uml:Extension" xmi:id="_zQ_toCuXEemAOL1eRjr3BA" name="E_StateVariable_Property31" memberEnd="_zQ_toSuXEemAOL1eRjr3BA _zQ_toiuXEemAOL1eRjr3BA">
+        <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_zQ_toSuXEemAOL1eRjr3BA" name="extension_StateVariable" type="_K7TBwCuCEemAOL1eRjr3BA" aggregation="composite" association="_zQ_toCuXEemAOL1eRjr3BA"/>
+      </packagedElement>
+      <packagedElement xmi:type="uml:Extension" xmi:id="_0wNdoCuXEemAOL1eRjr3BA" name="E_SensorData_Property32" memberEnd="_0wNdoSuXEemAOL1eRjr3BA _0wNdoiuXEemAOL1eRjr3BA">
+        <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_0wNdoSuXEemAOL1eRjr3BA" name="extension_SensorData" type="_JFBcoCuCEemAOL1eRjr3BA" aggregation="composite" association="_0wNdoCuXEemAOL1eRjr3BA"/>
+      </packagedElement>
+      <packagedElement xmi:type="uml:Extension" xmi:id="_3dY1kCuXEemAOL1eRjr3BA" name="E_Property_Property33" memberEnd="_3dY1kSuXEemAOL1eRjr3BA _3dY1kiuXEemAOL1eRjr3BA">
+        <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_3dY1kSuXEemAOL1eRjr3BA" name="extension_Property" type="_HqRV4CuCEemAOL1eRjr3BA" aggregation="composite" association="_3dY1kCuXEemAOL1eRjr3BA"/>
+      </packagedElement>
+    </packagedElement>
     <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_pVg3QApVEei53_EZrjjGeA">
       <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_pVj6kApVEei53_EZrjjGeA" source="http://www.eclipse.org/uml2/2.0.0/UML">
         <references xmi:type="ecore:EPackage" href="pathmap://UML_PROFILES/Ecore.profile.uml#_z1OFcHjqEdy8S4Cr8Rc_NA"/>
@@ -651,14 +846,15 @@
   <Ecore:EPackage xmi:id="_xMVlgAtFEeiGKKNRaLJTMQ" base_Package="_INCz4CthEeepEtCwqDnj2w" packageName="sensor" nsPrefix="Sensor" nsURI="http://www.eclipse.org/papyrus/iotml/0.7/IoTML/Hardware/Sensor" basePackage="org.eclipse.papyrus.iotml.hardware" prefix="Sensor"/>
   <Ecore:EPackage xmi:id="_xukv4AtFEeiGKKNRaLJTMQ" base_Package="_JQEXICthEeepEtCwqDnj2w" packageName="network" nsPrefix="Network" nsURI="http://www.eclipse.org/papyrus/iotml/0.7/IoTML/Hardware/Network" basePackage="org.eclipse.papyrus.iotml.hardware" prefix="Network"/>
   <Ecore:EPackage xmi:id="_yQ8dIAtFEeiGKKNRaLJTMQ" base_Package="_Ko050CthEeepEtCwqDnj2w" packageName="core" nsPrefix="Core" nsURI="http://www.eclipse.org/papyrus/iotml/0.7/IoTML/Hardware/Core" basePackage="org.eclipse.papyrus.iotml.hardware" prefix="Core"/>
-  <Ecore:EPackage xmi:id="_LS3pgAtGEeiGKKNRaLJTMQ" base_Package="_WWmukCtsEeeZI6rMTYV60w" packageName="software" nsPrefix="Software" nsURI="http://www.eclipse.org/papyrus/iotml/0.7/IoTML/Software" basePackage="org.eclipse.papyrus.iotml"/>
+  <Ecore:EPackage xmi:id="_LS3pgAtGEeiGKKNRaLJTMQ" base_Package="_WWmukCtsEeeZI6rMTYV60w" packageName="software" nsPrefix="Software" nsURI="http://www.eclipse.org/papyrus/iotml/0.7/IoTML/Software" basePackage="org.eclipse.papyrus.iotml" prefix="Software"/>
   <Ecore:EPackage xmi:id="_MLTGUAtGEeiGKKNRaLJTMQ" base_Package="_VGlbsCttEeeZI6rMTYV60w" packageName="artefact" nsPrefix="Artefact" nsURI="http://www.eclipse.org/papyrus/iotml/0.7/IoTML/Software/Artefact" basePackage="org.eclipse.papyrus.iotml.software" prefix="Artefact"/>
   <Ecore:EPackage xmi:id="_OSv7AAtGEeiGKKNRaLJTMQ" base_Package="_aILwgCtxEeeZI6rMTYV60w" packageName="core" nsPrefix="Core" nsURI="http://www.eclipse.org/papyrus/iotml/0.7/IoTML/Software/Core" basePackage="org.eclipse.papyrus.iotml.software" prefix="Core"/>
   <Ecore:EPackage xmi:id="_O0yREAtGEeiGKKNRaLJTMQ" base_Package="_hrtzYCtxEeeZI6rMTYV60w" packageName="structure" nsPrefix="Structure" nsURI="http://www.eclipse.org/papyrus/iotml/0.7/IoTML/Software/Core/Structure" basePackage="org.eclipse.papyrus.iotml.software.core" prefix="Structure"/>
   <Ecore:EPackage xmi:id="_PsHhsAtGEeiGKKNRaLJTMQ" base_Package="_skdpICtyEeeZI6rMTYV60w" packageName="resource" nsPrefix="Resource" nsURI="http://www.eclipse.org/papyrus/iotml/0.7/IoTML/Software/Resource" basePackage="org.eclipse.papyrus.iotml.software" prefix="Resource"/>
-  <Ecore:EPackage xmi:id="_S8uTsDP_EeiPBNQ6rB83Ew" base_Package="_RFXwgDP_EeiPBNQ6rB83Ew" packageName="s3pml" nsPrefix="S3PML" nsURI="http://www.eclipse.org/papyrus/iotml/0.7/IoTML/S3PML"/>
+  <Ecore:EPackage xmi:id="_S8uTsDP_EeiPBNQ6rB83Ew" base_Package="_RFXwgDP_EeiPBNQ6rB83Ew" packageName="s3pml" nsPrefix="S3PML" nsURI="http://www.eclipse.org/papyrus/iotml/0.7/IoTML/S3PML" basePackage="org.eclipse.papyrus.iotml" prefix="S3PML"/>
   <Ecore:EPackage xmi:id="_VPjR8DP_EeiPBNQ6rB83Ew" base_Package="_UMmnMDP_EeiPBNQ6rB83Ew" packageName="software" nsPrefix="Software" nsURI="http://www.eclipse.org/papyrus/iotml/0.7/IoTML/S3PML/Software"/>
   <Ecore:EPackage xmi:id="_YlDYsDQAEeiPBNQ6rB83Ew" base_Package="_XO1MoDQAEeiPBNQ6rB83Ew" packageName="protocol" nsPrefix="Protocol" nsURI="http://www.eclipse.org/papyrus/iotml/0.7/IoTML/S3PML/Protocol"/>
   <Ecore:EPackage xmi:id="_dsQRIDQCEeiPBNQ6rB83Ew" base_Package="_bRxywDQCEeiPBNQ6rB83Ew" packageName="hardware" nsPrefix="Hardware" nsURI="http://www.eclipse.org/papyrus/iotml/0.7/IoTML/S3PML/Hardware"/>
   <Ecore:EPackage xmi:id="_HcjNYDQFEeiPBNQ6rB83Ew" base_Package="_GMX-8DQFEeiPBNQ6rB83Ew" packageName="store" nsPrefix="Store" nsURI="http://www.eclipse.org/papyrus/iotml/0.7/IoTML/S3PML/Hardware/Store"/>
+  <Ecore:EPackage xmi:id="_p2Uk8CuBEemAOL1eRjr3BA" base_Package="_lz21ECuBEemAOL1eRjr3BA" packageName="sensinact" nsPrefix="SensiNact" nsURI="http://www.eclipse.org/papyrus/iotml/0.7/IoTML/SensiNact" basePackage="org.eclipse.papyrus.iotml" prefix="SensiNact"/>
 </xmi:XMI>
diff --git a/org.eclipse.papyrus.iotml.profile/model/iotml.ecore b/org.eclipse.papyrus.iotml.profile/model/iotml.ecore
index 0ee895d..6acd212 100644
--- a/org.eclipse.papyrus.iotml.profile/model/iotml.ecore
+++ b/org.eclipse.papyrus.iotml.profile/model/iotml.ecore
@@ -5,7 +5,6 @@
   <eAnnotations source="http://www.eclipse.org/uml2/2.0.0/UML">
     <details key="originalName" value="IoTML"/>
   </eAnnotations>
-  <eClassifiers xsi:type="ecore:EEnum" name="Dummy"/>
   <eSubpackages name="animate" nsURI="http://www.eclipse.org/papyrus/iotml/0.7/IoTML/Animate"
       nsPrefix="Animate">
     <eAnnotations source="http://www.eclipse.org/uml2/2.0.0/UML">
@@ -21,7 +20,6 @@
     <eAnnotations source="http://www.eclipse.org/uml2/2.0.0/UML">
       <details key="originalName" value="Hardware"/>
     </eAnnotations>
-    <eClassifiers xsi:type="ecore:EEnum" name="Dummy"/>
     <eSubpackages name="actuator" nsURI="http://www.eclipse.org/papyrus/iotml/0.7/IoTML/Hardware/Actuator"
         nsPrefix="Actuator">
       <eAnnotations source="http://www.eclipse.org/uml2/2.0.0/UML">
@@ -155,7 +153,6 @@
     <eAnnotations source="http://www.eclipse.org/uml2/2.0.0/UML">
       <details key="originalName" value="S3PML"/>
     </eAnnotations>
-    <eClassifiers xsi:type="ecore:EEnum" name="Dummy"/>
     <eSubpackages name="software" nsURI="http://www.eclipse.org/papyrus/iotml/0.7/IoTML/S3PML/Software"
         nsPrefix="Software">
       <eAnnotations source="http://www.eclipse.org/uml2/2.0.0/UML">
@@ -248,13 +245,11 @@
     <eAnnotations source="http://www.eclipse.org/uml2/2.0.0/UML">
       <details key="originalName" value="Software"/>
     </eAnnotations>
-    <eClassifiers xsi:type="ecore:EEnum" name="Dummy"/>
     <eSubpackages name="core" nsURI="http://www.eclipse.org/papyrus/iotml/0.7/IoTML/Software/Core"
         nsPrefix="Core">
       <eAnnotations source="http://www.eclipse.org/uml2/2.0.0/UML">
         <details key="originalName" value="Core"/>
       </eAnnotations>
-      <eClassifiers xsi:type="ecore:EEnum" name="Dummy"/>
       <eSubpackages name="structure" nsURI="http://www.eclipse.org/papyrus/iotml/0.7/IoTML/Software/Core/Structure"
           nsPrefix="Structure">
         <eAnnotations source="http://www.eclipse.org/uml2/2.0.0/UML">
@@ -494,4 +489,85 @@
     </eAnnotations>
     <eClassifiers xsi:type="ecore:EClass" name="PhysicalEntity" eSuperTypes="platform:/plugin/org.eclipse.papyrus.marte.static.profile/resources/MARTE.ecore#//MARTE_DesignModel/HRM/HwGeneral/HwResource"/>
   </eSubpackages>
+  <eSubpackages name="sensinact" nsURI="http://www.eclipse.org/papyrus/iotml/0.7/IoTML/SensiNact"
+      nsPrefix="SensiNact">
+    <eAnnotations source="http://www.eclipse.org/uml2/2.0.0/UML">
+      <details key="originalName" value="SensiNact"/>
+    </eAnnotations>
+    <eClassifiers xsi:type="ecore:EClass" name="TypedElement" abstract="true">
+      <eStructuralFeatures xsi:type="ecore:EReference" name="value" ordered="false"
+          eType="#//software/core/structure/DetailedValueSpecification"/>
+      <eStructuralFeatures xsi:type="ecore:EReference" name="base_TypedElement" ordered="false"
+          lowerBound="1" eType="ecore:EClass platform:/plugin/org.eclipse.uml2.uml/model/UML.ecore#//TypedElement"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="Studio" eSuperTypes="#//animate/HumanUser">
+      <eStructuralFeatures xsi:type="ecore:EReference" name="gateways" ordered="false"
+          lowerBound="1" upperBound="-1" eType="#//sensinact/Gateway"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="Gateway" eSuperTypes="#//hardware/network/Gateway">
+      <eStructuralFeatures xsi:type="ecore:EReference" name="devices" ordered="false"
+          lowerBound="1" upperBound="-1" eType="#//sensinact/Device"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="Device" eSuperTypes="#//hardware/network/ConnectedDevice">
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="friendlyName" ordered="false"
+          lowerBound="1" eType="ecore:EDataType platform:/plugin/org.eclipse.uml2.types/model/Types.ecore#//String"/>
+      <eStructuralFeatures xsi:type="ecore:EReference" name="services" ordered="false"
+          lowerBound="1" upperBound="-1" eType="#//sensinact/Service"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="Service" eSuperTypes="#//software/artefact/Service">
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="friendlyName" ordered="false"
+          lowerBound="1" eType="ecore:EDataType platform:/plugin/org.eclipse.uml2.types/model/Types.ecore#//String"/>
+      <eStructuralFeatures xsi:type="ecore:EReference" name="resources" ordered="false"
+          lowerBound="1" upperBound="-1" eType="#//sensinact/Resource"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="Resource" eSuperTypes="#//software/resource/OnDeviceResource">
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="friendlyName" ordered="false"
+          lowerBound="1" eType="ecore:EDataType platform:/plugin/org.eclipse.uml2.types/model/Types.ecore#//String"/>
+      <eStructuralFeatures xsi:type="ecore:EReference" name="accessMethods" ordered="false"
+          lowerBound="1" upperBound="-1" eType="#//sensinact/AccessMethod"/>
+      <eStructuralFeatures xsi:type="ecore:EReference" name="attributes" ordered="false"
+          lowerBound="1" upperBound="-1" eType="#//sensinact/Attribute"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="AccessMethod">
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="type" ordered="false"
+          lowerBound="1" eType="#//sensinact/AccessMethodType"/>
+      <eStructuralFeatures xsi:type="ecore:EReference" name="parameters" ordered="false"
+          upperBound="-1" eType="#//sensinact/Parameter"/>
+      <eStructuralFeatures xsi:type="ecore:EReference" name="base_Operation" ordered="false"
+          lowerBound="1" eType="ecore:EClass platform:/plugin/org.eclipse.uml2.uml/model/UML.ecore#//Operation"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EEnum" name="AccessMethodType">
+      <eLiterals name="GET"/>
+      <eLiterals name="SET" value="1"/>
+      <eLiterals name="ACT" value="2"/>
+      <eLiterals name="SUBSCRIBE" value="3"/>
+      <eLiterals name="UNSUBSCRIBE" value="4"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="Parameter" eSuperTypes="#//sensinact/TypedElement"/>
+    <eClassifiers xsi:type="ecore:EClass" name="Attribute" eSuperTypes="#//sensinact/TypedElement">
+      <eStructuralFeatures xsi:type="ecore:EReference" name="metadata" ordered="false"
+          upperBound="-1" eType="#//sensinact/Metadata"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="Metadata" eSuperTypes="#//sensinact/TypedElement"/>
+    <eClassifiers xsi:type="ecore:EClass" name="Property" eSuperTypes="#//sensinact/Resource">
+      <eStructuralFeatures xsi:type="ecore:EReference" name="base_Property" ordered="false"
+          lowerBound="1" eType="ecore:EClass platform:/plugin/org.eclipse.uml2.uml/model/UML.ecore#//Property"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="SensorData" eSuperTypes="#//sensinact/Resource">
+      <eStructuralFeatures xsi:type="ecore:EReference" name="base_Property" ordered="false"
+          lowerBound="1" eType="ecore:EClass platform:/plugin/org.eclipse.uml2.uml/model/UML.ecore#//Property"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="StateVariable" eSuperTypes="#//sensinact/Resource">
+      <eStructuralFeatures xsi:type="ecore:EReference" name="modifier" ordered="false"
+          lowerBound="1" eType="#//sensinact/Action" volatile="true" transient="true"
+          derived="true" eOpposite="#//sensinact/Action/state"/>
+      <eStructuralFeatures xsi:type="ecore:EReference" name="base_Property" ordered="false"
+          lowerBound="1" eType="ecore:EClass platform:/plugin/org.eclipse.uml2.uml/model/UML.ecore#//Property"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="Action" eSuperTypes="#//sensinact/Resource #//software/artefact/PropertyAccess">
+      <eStructuralFeatures xsi:type="ecore:EReference" name="state" ordered="false"
+          lowerBound="1" eType="#//sensinact/StateVariable" volatile="true" transient="true"
+          derived="true" eOpposite="#//sensinact/StateVariable/modifier"/>
+    </eClassifiers>
+  </eSubpackages>
 </ecore:EPackage>
diff --git a/org.eclipse.papyrus.iotml.profile/plugin.xml b/org.eclipse.papyrus.iotml.profile/plugin.xml
index 69c5fe3..188a1af 100644
--- a/org.eclipse.papyrus.iotml.profile/plugin.xml
+++ b/org.eclipse.papyrus.iotml.profile/plugin.xml
@@ -52,14 +52,6 @@
    <extension point="org.eclipse.emf.ecore.generated_package">
       <!-- @generated IoT-ML.profile -->
       <package
-            uri="http://www.eclipse.org/papyrus/iotml/0.7/IoTML/Hardware"
-            class="org.eclipse.papyrus.iotml.hardware.HardwarePackage"
-            genModel="model/IoT-ML.profile.genmodel"/>
-   </extension>
-
-   <extension point="org.eclipse.emf.ecore.generated_package">
-      <!-- @generated IoT-ML.profile -->
-      <package
             uri="http://www.eclipse.org/papyrus/iotml/0.7/IoTML/Hardware/Actuator"
             class="org.eclipse.papyrus.iotml.hardware.actuator.ActuatorPackage"
             genModel="model/IoT-ML.profile.genmodel"/>
@@ -92,14 +84,6 @@
    <extension point="org.eclipse.emf.ecore.generated_package">
       <!-- @generated IoT-ML.profile -->
       <package
-            uri="http://www.eclipse.org/papyrus/iotml/0.7/IoTML/S3PML"
-            class="org.eclipse.papyrus.iotml.s3pml.S3pmlPackage"
-            genModel="model/IoT-ML.profile.genmodel"/>
-   </extension>
-
-   <extension point="org.eclipse.emf.ecore.generated_package">
-      <!-- @generated IoT-ML.profile -->
-      <package
             uri="http://www.eclipse.org/papyrus/iotml/0.7/IoTML/S3PML/Software"
             class="org.eclipse.papyrus.iotml.s3pml.software.SoftwarePackage"
             genModel="model/IoT-ML.profile.genmodel"/>
@@ -132,22 +116,6 @@
    <extension point="org.eclipse.emf.ecore.generated_package">
       <!-- @generated IoT-ML.profile -->
       <package
-            uri="http://www.eclipse.org/papyrus/iotml/0.7/IoTML/Software"
-            class="org.eclipse.papyrus.iotml.software.SoftwarePackage"
-            genModel="model/IoT-ML.profile.genmodel"/>
-   </extension>
-
-   <extension point="org.eclipse.emf.ecore.generated_package">
-      <!-- @generated IoT-ML.profile -->
-      <package
-            uri="http://www.eclipse.org/papyrus/iotml/0.7/IoTML/Software/Core"
-            class="org.eclipse.papyrus.iotml.software.core.CorePackage"
-            genModel="model/IoT-ML.profile.genmodel"/>
-   </extension>
-
-   <extension point="org.eclipse.emf.ecore.generated_package">
-      <!-- @generated IoT-ML.profile -->
-      <package
             uri="http://www.eclipse.org/papyrus/iotml/0.7/IoTML/Software/Core/Structure"
             class="org.eclipse.papyrus.iotml.software.core.structure.StructurePackage"
             genModel="model/IoT-ML.profile.genmodel"/>
@@ -176,4 +144,13 @@
             class="org.eclipse.papyrus.iotml.hybrid.HybridPackage"
             genModel="model/IoT-ML.profile.genmodel"/>
    </extension>
+
+   <extension point="org.eclipse.emf.ecore.generated_package">
+      <!-- @generated IoT-ML.profile -->
+      <package
+            uri="http://www.eclipse.org/papyrus/iotml/0.7/IoTML/SensiNact"
+            class="org.eclipse.papyrus.iotml.sensinact.SensinactPackage"
+            genModel="model/IoT-ML.profile.genmodel"/>
+   </extension>
+
 </plugin>
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/animate/impl/AnimatePackageImpl.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/animate/impl/AnimatePackageImpl.java
index 3330c16..0e6d96b 100644
--- a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/animate/impl/AnimatePackageImpl.java
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/animate/impl/AnimatePackageImpl.java
@@ -37,9 +37,6 @@
 import org.eclipse.papyrus.MARTE_Library.TimeLibrary.TimeLibraryPackage;
 
 import org.eclipse.papyrus.MARTE_Library.TimeTypesLibrary.TimeTypesLibraryPackage;
-
-import org.eclipse.papyrus.iotml.IoTMLPackage;
-
 import org.eclipse.papyrus.iotml.animate.AnimateFactory;
 import org.eclipse.papyrus.iotml.animate.AnimatePackage;
 import org.eclipse.papyrus.iotml.animate.HumanUser;
@@ -63,10 +60,6 @@
 import org.eclipse.papyrus.iotml.hybrid.HybridPackage;
 
 import org.eclipse.papyrus.iotml.hybrid.impl.HybridPackageImpl;
-
-import org.eclipse.papyrus.iotml.impl.IoTMLPackageImpl;
-
-import org.eclipse.papyrus.iotml.s3pml.S3pmlPackage;
 import org.eclipse.papyrus.iotml.s3pml.hardware.HardwarePackage;
 
 import org.eclipse.papyrus.iotml.s3pml.hardware.impl.HardwarePackageImpl;
@@ -74,8 +67,6 @@
 import org.eclipse.papyrus.iotml.s3pml.hardware.store.StorePackage;
 
 import org.eclipse.papyrus.iotml.s3pml.hardware.store.impl.StorePackageImpl;
-
-import org.eclipse.papyrus.iotml.s3pml.impl.S3pmlPackageImpl;
 import org.eclipse.papyrus.iotml.s3pml.protocol.ProtocolPackage;
 
 import org.eclipse.papyrus.iotml.s3pml.protocol.impl.ProtocolPackageImpl;
@@ -84,6 +75,8 @@
 
 import org.eclipse.papyrus.iotml.s3pml.software.impl.SoftwarePackageImpl;
 
+import org.eclipse.papyrus.iotml.sensinact.SensinactPackage;
+import org.eclipse.papyrus.iotml.sensinact.impl.SensinactPackageImpl;
 import org.eclipse.papyrus.iotml.software.artefact.ArtefactPackage;
 
 import org.eclipse.papyrus.iotml.software.artefact.impl.ArtefactPackageImpl;
@@ -101,6 +94,7 @@
 import org.eclipse.uml2.types.TypesPackage;
 
 import org.eclipse.uml2.uml.UMLPackage;
+import org.eclipse.uml2.uml.profile.standard.StandardPackage;
 
 /**
  * <!-- begin-user-doc -->
@@ -144,7 +138,7 @@
 
 	/**
 	 * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
-	 * 
+	 *
 	 * <p>This method is used to initialize {@link AnimatePackage#eINSTANCE} when that field is accessed.
 	 * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
 	 * <!-- begin-user-doc -->
@@ -158,7 +152,8 @@
 		if (isInited) return (AnimatePackage)EPackage.Registry.INSTANCE.getEPackage(AnimatePackage.eNS_URI);
 
 		// Obtain or create and register package
-		AnimatePackageImpl theAnimatePackage = (AnimatePackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof AnimatePackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new AnimatePackageImpl());
+		Object registeredAnimatePackage = EPackage.Registry.INSTANCE.get(eNS_URI);
+		AnimatePackageImpl theAnimatePackage = registeredAnimatePackage instanceof AnimatePackageImpl ? (AnimatePackageImpl)registeredAnimatePackage : new AnimatePackageImpl();
 
 		isInited = true;
 
@@ -176,70 +171,71 @@
 		sysmlPackage.eINSTANCE.eClass();
 		TypesPackage.eINSTANCE.eClass();
 		UMLPackage.eINSTANCE.eClass();
+		StandardPackage.eINSTANCE.eClass();
 
 		// Obtain or create and register interdependencies
-		IoTMLPackageImpl theIoTMLPackage = (IoTMLPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(IoTMLPackage.eNS_URI) instanceof IoTMLPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(IoTMLPackage.eNS_URI) : IoTMLPackage.eINSTANCE);
-		org.eclipse.papyrus.iotml.hardware.impl.HardwarePackageImpl theHardwarePackage = (org.eclipse.papyrus.iotml.hardware.impl.HardwarePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(org.eclipse.papyrus.iotml.hardware.HardwarePackage.eNS_URI) instanceof org.eclipse.papyrus.iotml.hardware.impl.HardwarePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(org.eclipse.papyrus.iotml.hardware.HardwarePackage.eNS_URI) : org.eclipse.papyrus.iotml.hardware.HardwarePackage.eINSTANCE);
-		ActuatorPackageImpl theActuatorPackage = (ActuatorPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(ActuatorPackage.eNS_URI) instanceof ActuatorPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(ActuatorPackage.eNS_URI) : ActuatorPackage.eINSTANCE);
-		SensorPackageImpl theSensorPackage = (SensorPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(SensorPackage.eNS_URI) instanceof SensorPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(SensorPackage.eNS_URI) : SensorPackage.eINSTANCE);
-		NetworkPackageImpl theNetworkPackage = (NetworkPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(NetworkPackage.eNS_URI) instanceof NetworkPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(NetworkPackage.eNS_URI) : NetworkPackage.eINSTANCE);
-		CorePackageImpl theCorePackage = (CorePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(CorePackage.eNS_URI) instanceof CorePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(CorePackage.eNS_URI) : CorePackage.eINSTANCE);
-		S3pmlPackageImpl theS3pmlPackage = (S3pmlPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(S3pmlPackage.eNS_URI) instanceof S3pmlPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(S3pmlPackage.eNS_URI) : S3pmlPackage.eINSTANCE);
-		SoftwarePackageImpl theSoftwarePackage = (SoftwarePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(SoftwarePackage.eNS_URI) instanceof SoftwarePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(SoftwarePackage.eNS_URI) : SoftwarePackage.eINSTANCE);
-		ProtocolPackageImpl theProtocolPackage = (ProtocolPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(ProtocolPackage.eNS_URI) instanceof ProtocolPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(ProtocolPackage.eNS_URI) : ProtocolPackage.eINSTANCE);
-		HardwarePackageImpl theHardwarePackage_1 = (HardwarePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(HardwarePackage.eNS_URI) instanceof HardwarePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(HardwarePackage.eNS_URI) : HardwarePackage.eINSTANCE);
-		StorePackageImpl theStorePackage = (StorePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(StorePackage.eNS_URI) instanceof StorePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(StorePackage.eNS_URI) : StorePackage.eINSTANCE);
-		org.eclipse.papyrus.iotml.software.impl.SoftwarePackageImpl theSoftwarePackage_1 = (org.eclipse.papyrus.iotml.software.impl.SoftwarePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(org.eclipse.papyrus.iotml.software.SoftwarePackage.eNS_URI) instanceof org.eclipse.papyrus.iotml.software.impl.SoftwarePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(org.eclipse.papyrus.iotml.software.SoftwarePackage.eNS_URI) : org.eclipse.papyrus.iotml.software.SoftwarePackage.eINSTANCE);
-		org.eclipse.papyrus.iotml.software.core.impl.CorePackageImpl theCorePackage_1 = (org.eclipse.papyrus.iotml.software.core.impl.CorePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(org.eclipse.papyrus.iotml.software.core.CorePackage.eNS_URI) instanceof org.eclipse.papyrus.iotml.software.core.impl.CorePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(org.eclipse.papyrus.iotml.software.core.CorePackage.eNS_URI) : org.eclipse.papyrus.iotml.software.core.CorePackage.eINSTANCE);
-		StructurePackageImpl theStructurePackage = (StructurePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(StructurePackage.eNS_URI) instanceof StructurePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(StructurePackage.eNS_URI) : StructurePackage.eINSTANCE);
-		ResourcePackageImpl theResourcePackage = (ResourcePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(ResourcePackage.eNS_URI) instanceof ResourcePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(ResourcePackage.eNS_URI) : ResourcePackage.eINSTANCE);
-		ArtefactPackageImpl theArtefactPackage = (ArtefactPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(ArtefactPackage.eNS_URI) instanceof ArtefactPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(ArtefactPackage.eNS_URI) : ArtefactPackage.eINSTANCE);
-		HybridPackageImpl theHybridPackage = (HybridPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(HybridPackage.eNS_URI) instanceof HybridPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(HybridPackage.eNS_URI) : HybridPackage.eINSTANCE);
+		Object registeredPackage = EPackage.Registry.INSTANCE.getEPackage(ActuatorPackage.eNS_URI);
+		ActuatorPackageImpl theActuatorPackage = (ActuatorPackageImpl)(registeredPackage instanceof ActuatorPackageImpl ? registeredPackage : ActuatorPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(SensorPackage.eNS_URI);
+		SensorPackageImpl theSensorPackage = (SensorPackageImpl)(registeredPackage instanceof SensorPackageImpl ? registeredPackage : SensorPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(NetworkPackage.eNS_URI);
+		NetworkPackageImpl theNetworkPackage = (NetworkPackageImpl)(registeredPackage instanceof NetworkPackageImpl ? registeredPackage : NetworkPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(CorePackage.eNS_URI);
+		CorePackageImpl theCorePackage = (CorePackageImpl)(registeredPackage instanceof CorePackageImpl ? registeredPackage : CorePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(SoftwarePackage.eNS_URI);
+		SoftwarePackageImpl theSoftwarePackage = (SoftwarePackageImpl)(registeredPackage instanceof SoftwarePackageImpl ? registeredPackage : SoftwarePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(ProtocolPackage.eNS_URI);
+		ProtocolPackageImpl theProtocolPackage = (ProtocolPackageImpl)(registeredPackage instanceof ProtocolPackageImpl ? registeredPackage : ProtocolPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(HardwarePackage.eNS_URI);
+		HardwarePackageImpl theHardwarePackage = (HardwarePackageImpl)(registeredPackage instanceof HardwarePackageImpl ? registeredPackage : HardwarePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(StorePackage.eNS_URI);
+		StorePackageImpl theStorePackage = (StorePackageImpl)(registeredPackage instanceof StorePackageImpl ? registeredPackage : StorePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(StructurePackage.eNS_URI);
+		StructurePackageImpl theStructurePackage = (StructurePackageImpl)(registeredPackage instanceof StructurePackageImpl ? registeredPackage : StructurePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(ResourcePackage.eNS_URI);
+		ResourcePackageImpl theResourcePackage = (ResourcePackageImpl)(registeredPackage instanceof ResourcePackageImpl ? registeredPackage : ResourcePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(ArtefactPackage.eNS_URI);
+		ArtefactPackageImpl theArtefactPackage = (ArtefactPackageImpl)(registeredPackage instanceof ArtefactPackageImpl ? registeredPackage : ArtefactPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(HybridPackage.eNS_URI);
+		HybridPackageImpl theHybridPackage = (HybridPackageImpl)(registeredPackage instanceof HybridPackageImpl ? registeredPackage : HybridPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(SensinactPackage.eNS_URI);
+		SensinactPackageImpl theSensinactPackage = (SensinactPackageImpl)(registeredPackage instanceof SensinactPackageImpl ? registeredPackage : SensinactPackage.eINSTANCE);
 
 		// Create package meta-data objects
 		theAnimatePackage.createPackageContents();
-		theIoTMLPackage.createPackageContents();
-		theHardwarePackage.createPackageContents();
 		theActuatorPackage.createPackageContents();
 		theSensorPackage.createPackageContents();
 		theNetworkPackage.createPackageContents();
 		theCorePackage.createPackageContents();
-		theS3pmlPackage.createPackageContents();
 		theSoftwarePackage.createPackageContents();
 		theProtocolPackage.createPackageContents();
-		theHardwarePackage_1.createPackageContents();
+		theHardwarePackage.createPackageContents();
 		theStorePackage.createPackageContents();
-		theSoftwarePackage_1.createPackageContents();
-		theCorePackage_1.createPackageContents();
 		theStructurePackage.createPackageContents();
 		theResourcePackage.createPackageContents();
 		theArtefactPackage.createPackageContents();
 		theHybridPackage.createPackageContents();
+		theSensinactPackage.createPackageContents();
 
 		// Initialize created meta-data
 		theAnimatePackage.initializePackageContents();
-		theIoTMLPackage.initializePackageContents();
-		theHardwarePackage.initializePackageContents();
 		theActuatorPackage.initializePackageContents();
 		theSensorPackage.initializePackageContents();
 		theNetworkPackage.initializePackageContents();
 		theCorePackage.initializePackageContents();
-		theS3pmlPackage.initializePackageContents();
 		theSoftwarePackage.initializePackageContents();
 		theProtocolPackage.initializePackageContents();
-		theHardwarePackage_1.initializePackageContents();
+		theHardwarePackage.initializePackageContents();
 		theStorePackage.initializePackageContents();
-		theSoftwarePackage_1.initializePackageContents();
-		theCorePackage_1.initializePackageContents();
 		theStructurePackage.initializePackageContents();
 		theResourcePackage.initializePackageContents();
 		theArtefactPackage.initializePackageContents();
 		theHybridPackage.initializePackageContents();
+		theSensinactPackage.initializePackageContents();
 
 		// Mark meta-data to indicate it can't be changed
 		theAnimatePackage.freeze();
 
-  
 		// Update the registry and return the package
 		EPackage.Registry.INSTANCE.put(AnimatePackage.eNS_URI, theAnimatePackage);
 		return theAnimatePackage;
@@ -331,6 +327,9 @@
 		initEClass(humanUserEClass, HumanUser.class, "HumanUser", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 		initEReference(getHumanUser_Base_Actor(), theUMLPackage.getActor(), null, "base_Actor", null, 1, 1, HumanUser.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
 
+		// Create resource
+		createResource(eNS_URI);
+
 		// Create annotations
 		// http://www.eclipse.org/uml2/2.0.0/UML
 		createUMLAnnotations();
@@ -343,12 +342,12 @@
 	 * @generated
 	 */
 	protected void createUMLAnnotations() {
-		String source = "http://www.eclipse.org/uml2/2.0.0/UML";	
+		String source = "http://www.eclipse.org/uml2/2.0.0/UML";
 		addAnnotation
-		  (this, 
-		   source, 
+		  (this,
+		   source,
 		   new String[] {
-			 "originalName", "Animate"
+			   "originalName", "Animate"
 		   });
 	}
 
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/hardware/actuator/impl/ActuatorPackageImpl.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/hardware/actuator/impl/ActuatorPackageImpl.java
index e307e35..225c054 100644
--- a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/hardware/actuator/impl/ActuatorPackageImpl.java
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/hardware/actuator/impl/ActuatorPackageImpl.java
@@ -40,9 +40,6 @@
 import org.eclipse.papyrus.MARTE_Library.TimeLibrary.TimeLibraryPackage;
 
 import org.eclipse.papyrus.MARTE_Library.TimeTypesLibrary.TimeTypesLibraryPackage;
-
-import org.eclipse.papyrus.iotml.IoTMLPackage;
-
 import org.eclipse.papyrus.iotml.animate.AnimatePackage;
 
 import org.eclipse.papyrus.iotml.animate.impl.AnimatePackageImpl;
@@ -68,10 +65,6 @@
 import org.eclipse.papyrus.iotml.hybrid.HybridPackage;
 
 import org.eclipse.papyrus.iotml.hybrid.impl.HybridPackageImpl;
-
-import org.eclipse.papyrus.iotml.impl.IoTMLPackageImpl;
-
-import org.eclipse.papyrus.iotml.s3pml.S3pmlPackage;
 import org.eclipse.papyrus.iotml.s3pml.hardware.HardwarePackage;
 
 import org.eclipse.papyrus.iotml.s3pml.hardware.impl.HardwarePackageImpl;
@@ -79,8 +72,6 @@
 import org.eclipse.papyrus.iotml.s3pml.hardware.store.StorePackage;
 
 import org.eclipse.papyrus.iotml.s3pml.hardware.store.impl.StorePackageImpl;
-
-import org.eclipse.papyrus.iotml.s3pml.impl.S3pmlPackageImpl;
 import org.eclipse.papyrus.iotml.s3pml.protocol.ProtocolPackage;
 
 import org.eclipse.papyrus.iotml.s3pml.protocol.impl.ProtocolPackageImpl;
@@ -89,6 +80,8 @@
 
 import org.eclipse.papyrus.iotml.s3pml.software.impl.SoftwarePackageImpl;
 
+import org.eclipse.papyrus.iotml.sensinact.SensinactPackage;
+import org.eclipse.papyrus.iotml.sensinact.impl.SensinactPackageImpl;
 import org.eclipse.papyrus.iotml.software.artefact.ArtefactPackage;
 
 import org.eclipse.papyrus.iotml.software.artefact.impl.ArtefactPackageImpl;
@@ -106,6 +99,7 @@
 import org.eclipse.uml2.types.TypesPackage;
 
 import org.eclipse.uml2.uml.UMLPackage;
+import org.eclipse.uml2.uml.profile.standard.StandardPackage;
 
 /**
  * <!-- begin-user-doc -->
@@ -163,7 +157,7 @@
 
 	/**
 	 * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
-	 * 
+	 *
 	 * <p>This method is used to initialize {@link ActuatorPackage#eINSTANCE} when that field is accessed.
 	 * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
 	 * <!-- begin-user-doc -->
@@ -177,7 +171,8 @@
 		if (isInited) return (ActuatorPackage)EPackage.Registry.INSTANCE.getEPackage(ActuatorPackage.eNS_URI);
 
 		// Obtain or create and register package
-		ActuatorPackageImpl theActuatorPackage = (ActuatorPackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof ActuatorPackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new ActuatorPackageImpl());
+		Object registeredActuatorPackage = EPackage.Registry.INSTANCE.get(eNS_URI);
+		ActuatorPackageImpl theActuatorPackage = registeredActuatorPackage instanceof ActuatorPackageImpl ? (ActuatorPackageImpl)registeredActuatorPackage : new ActuatorPackageImpl();
 
 		isInited = true;
 
@@ -195,70 +190,71 @@
 		sysmlPackage.eINSTANCE.eClass();
 		TypesPackage.eINSTANCE.eClass();
 		UMLPackage.eINSTANCE.eClass();
+		StandardPackage.eINSTANCE.eClass();
 
 		// Obtain or create and register interdependencies
-		IoTMLPackageImpl theIoTMLPackage = (IoTMLPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(IoTMLPackage.eNS_URI) instanceof IoTMLPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(IoTMLPackage.eNS_URI) : IoTMLPackage.eINSTANCE);
-		AnimatePackageImpl theAnimatePackage = (AnimatePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(AnimatePackage.eNS_URI) instanceof AnimatePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(AnimatePackage.eNS_URI) : AnimatePackage.eINSTANCE);
-		org.eclipse.papyrus.iotml.hardware.impl.HardwarePackageImpl theHardwarePackage = (org.eclipse.papyrus.iotml.hardware.impl.HardwarePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(org.eclipse.papyrus.iotml.hardware.HardwarePackage.eNS_URI) instanceof org.eclipse.papyrus.iotml.hardware.impl.HardwarePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(org.eclipse.papyrus.iotml.hardware.HardwarePackage.eNS_URI) : org.eclipse.papyrus.iotml.hardware.HardwarePackage.eINSTANCE);
-		SensorPackageImpl theSensorPackage = (SensorPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(SensorPackage.eNS_URI) instanceof SensorPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(SensorPackage.eNS_URI) : SensorPackage.eINSTANCE);
-		NetworkPackageImpl theNetworkPackage = (NetworkPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(NetworkPackage.eNS_URI) instanceof NetworkPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(NetworkPackage.eNS_URI) : NetworkPackage.eINSTANCE);
-		CorePackageImpl theCorePackage = (CorePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(CorePackage.eNS_URI) instanceof CorePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(CorePackage.eNS_URI) : CorePackage.eINSTANCE);
-		S3pmlPackageImpl theS3pmlPackage = (S3pmlPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(S3pmlPackage.eNS_URI) instanceof S3pmlPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(S3pmlPackage.eNS_URI) : S3pmlPackage.eINSTANCE);
-		SoftwarePackageImpl theSoftwarePackage = (SoftwarePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(SoftwarePackage.eNS_URI) instanceof SoftwarePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(SoftwarePackage.eNS_URI) : SoftwarePackage.eINSTANCE);
-		ProtocolPackageImpl theProtocolPackage = (ProtocolPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(ProtocolPackage.eNS_URI) instanceof ProtocolPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(ProtocolPackage.eNS_URI) : ProtocolPackage.eINSTANCE);
-		HardwarePackageImpl theHardwarePackage_1 = (HardwarePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(HardwarePackage.eNS_URI) instanceof HardwarePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(HardwarePackage.eNS_URI) : HardwarePackage.eINSTANCE);
-		StorePackageImpl theStorePackage = (StorePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(StorePackage.eNS_URI) instanceof StorePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(StorePackage.eNS_URI) : StorePackage.eINSTANCE);
-		org.eclipse.papyrus.iotml.software.impl.SoftwarePackageImpl theSoftwarePackage_1 = (org.eclipse.papyrus.iotml.software.impl.SoftwarePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(org.eclipse.papyrus.iotml.software.SoftwarePackage.eNS_URI) instanceof org.eclipse.papyrus.iotml.software.impl.SoftwarePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(org.eclipse.papyrus.iotml.software.SoftwarePackage.eNS_URI) : org.eclipse.papyrus.iotml.software.SoftwarePackage.eINSTANCE);
-		org.eclipse.papyrus.iotml.software.core.impl.CorePackageImpl theCorePackage_1 = (org.eclipse.papyrus.iotml.software.core.impl.CorePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(org.eclipse.papyrus.iotml.software.core.CorePackage.eNS_URI) instanceof org.eclipse.papyrus.iotml.software.core.impl.CorePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(org.eclipse.papyrus.iotml.software.core.CorePackage.eNS_URI) : org.eclipse.papyrus.iotml.software.core.CorePackage.eINSTANCE);
-		StructurePackageImpl theStructurePackage = (StructurePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(StructurePackage.eNS_URI) instanceof StructurePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(StructurePackage.eNS_URI) : StructurePackage.eINSTANCE);
-		ResourcePackageImpl theResourcePackage = (ResourcePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(ResourcePackage.eNS_URI) instanceof ResourcePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(ResourcePackage.eNS_URI) : ResourcePackage.eINSTANCE);
-		ArtefactPackageImpl theArtefactPackage = (ArtefactPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(ArtefactPackage.eNS_URI) instanceof ArtefactPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(ArtefactPackage.eNS_URI) : ArtefactPackage.eINSTANCE);
-		HybridPackageImpl theHybridPackage = (HybridPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(HybridPackage.eNS_URI) instanceof HybridPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(HybridPackage.eNS_URI) : HybridPackage.eINSTANCE);
+		Object registeredPackage = EPackage.Registry.INSTANCE.getEPackage(AnimatePackage.eNS_URI);
+		AnimatePackageImpl theAnimatePackage = (AnimatePackageImpl)(registeredPackage instanceof AnimatePackageImpl ? registeredPackage : AnimatePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(SensorPackage.eNS_URI);
+		SensorPackageImpl theSensorPackage = (SensorPackageImpl)(registeredPackage instanceof SensorPackageImpl ? registeredPackage : SensorPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(NetworkPackage.eNS_URI);
+		NetworkPackageImpl theNetworkPackage = (NetworkPackageImpl)(registeredPackage instanceof NetworkPackageImpl ? registeredPackage : NetworkPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(CorePackage.eNS_URI);
+		CorePackageImpl theCorePackage = (CorePackageImpl)(registeredPackage instanceof CorePackageImpl ? registeredPackage : CorePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(SoftwarePackage.eNS_URI);
+		SoftwarePackageImpl theSoftwarePackage = (SoftwarePackageImpl)(registeredPackage instanceof SoftwarePackageImpl ? registeredPackage : SoftwarePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(ProtocolPackage.eNS_URI);
+		ProtocolPackageImpl theProtocolPackage = (ProtocolPackageImpl)(registeredPackage instanceof ProtocolPackageImpl ? registeredPackage : ProtocolPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(HardwarePackage.eNS_URI);
+		HardwarePackageImpl theHardwarePackage = (HardwarePackageImpl)(registeredPackage instanceof HardwarePackageImpl ? registeredPackage : HardwarePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(StorePackage.eNS_URI);
+		StorePackageImpl theStorePackage = (StorePackageImpl)(registeredPackage instanceof StorePackageImpl ? registeredPackage : StorePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(StructurePackage.eNS_URI);
+		StructurePackageImpl theStructurePackage = (StructurePackageImpl)(registeredPackage instanceof StructurePackageImpl ? registeredPackage : StructurePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(ResourcePackage.eNS_URI);
+		ResourcePackageImpl theResourcePackage = (ResourcePackageImpl)(registeredPackage instanceof ResourcePackageImpl ? registeredPackage : ResourcePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(ArtefactPackage.eNS_URI);
+		ArtefactPackageImpl theArtefactPackage = (ArtefactPackageImpl)(registeredPackage instanceof ArtefactPackageImpl ? registeredPackage : ArtefactPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(HybridPackage.eNS_URI);
+		HybridPackageImpl theHybridPackage = (HybridPackageImpl)(registeredPackage instanceof HybridPackageImpl ? registeredPackage : HybridPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(SensinactPackage.eNS_URI);
+		SensinactPackageImpl theSensinactPackage = (SensinactPackageImpl)(registeredPackage instanceof SensinactPackageImpl ? registeredPackage : SensinactPackage.eINSTANCE);
 
 		// Create package meta-data objects
 		theActuatorPackage.createPackageContents();
-		theIoTMLPackage.createPackageContents();
 		theAnimatePackage.createPackageContents();
-		theHardwarePackage.createPackageContents();
 		theSensorPackage.createPackageContents();
 		theNetworkPackage.createPackageContents();
 		theCorePackage.createPackageContents();
-		theS3pmlPackage.createPackageContents();
 		theSoftwarePackage.createPackageContents();
 		theProtocolPackage.createPackageContents();
-		theHardwarePackage_1.createPackageContents();
+		theHardwarePackage.createPackageContents();
 		theStorePackage.createPackageContents();
-		theSoftwarePackage_1.createPackageContents();
-		theCorePackage_1.createPackageContents();
 		theStructurePackage.createPackageContents();
 		theResourcePackage.createPackageContents();
 		theArtefactPackage.createPackageContents();
 		theHybridPackage.createPackageContents();
+		theSensinactPackage.createPackageContents();
 
 		// Initialize created meta-data
 		theActuatorPackage.initializePackageContents();
-		theIoTMLPackage.initializePackageContents();
 		theAnimatePackage.initializePackageContents();
-		theHardwarePackage.initializePackageContents();
 		theSensorPackage.initializePackageContents();
 		theNetworkPackage.initializePackageContents();
 		theCorePackage.initializePackageContents();
-		theS3pmlPackage.initializePackageContents();
 		theSoftwarePackage.initializePackageContents();
 		theProtocolPackage.initializePackageContents();
-		theHardwarePackage_1.initializePackageContents();
+		theHardwarePackage.initializePackageContents();
 		theStorePackage.initializePackageContents();
-		theSoftwarePackage_1.initializePackageContents();
-		theCorePackage_1.initializePackageContents();
 		theStructurePackage.initializePackageContents();
 		theResourcePackage.initializePackageContents();
 		theArtefactPackage.initializePackageContents();
 		theHybridPackage.initializePackageContents();
+		theSensinactPackage.initializePackageContents();
 
 		// Mark meta-data to indicate it can't be changed
 		theActuatorPackage.freeze();
 
-  
 		// Update the registry and return the package
 		EPackage.Registry.INSTANCE.put(ActuatorPackage.eNS_URI, theActuatorPackage);
 		return theActuatorPackage;
@@ -408,6 +404,9 @@
 		addEEnumLiteral(movementKindEEnum, MovementKind.LINEAR);
 		addEEnumLiteral(movementKindEEnum, MovementKind.ROTATIONAL);
 
+		// Create resource
+		createResource(eNS_URI);
+
 		// Create annotations
 		// http://www.eclipse.org/uml2/2.0.0/UML
 		createUMLAnnotations();
@@ -420,12 +419,12 @@
 	 * @generated
 	 */
 	protected void createUMLAnnotations() {
-		String source = "http://www.eclipse.org/uml2/2.0.0/UML";	
+		String source = "http://www.eclipse.org/uml2/2.0.0/UML";
 		addAnnotation
-		  (this, 
-		   source, 
+		  (this,
+		   source,
 		   new String[] {
-			 "originalName", "Actuator"
+			   "originalName", "Actuator"
 		   });
 	}
 
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/hardware/actuator/impl/HwCommonActuatorImpl.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/hardware/actuator/impl/HwCommonActuatorImpl.java
index 74ae99f..439c2e7 100644
--- a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/hardware/actuator/impl/HwCommonActuatorImpl.java
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/hardware/actuator/impl/HwCommonActuatorImpl.java
@@ -271,7 +271,7 @@
 	public String toString() {
 		if (eIsProxy()) return super.toString();
 
-		StringBuffer result = new StringBuffer(super.toString());
+		StringBuilder result = new StringBuilder(super.toString());
 		result.append(" (energyKind: ");
 		result.append(energyKind);
 		result.append(", movementKind: ");
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/hardware/core/impl/CorePackageImpl.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/hardware/core/impl/CorePackageImpl.java
index 9778c81..46eb918 100644
--- a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/hardware/core/impl/CorePackageImpl.java
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/hardware/core/impl/CorePackageImpl.java
@@ -42,9 +42,6 @@
 import org.eclipse.papyrus.MARTE_Library.TimeLibrary.TimeLibraryPackage;
 
 import org.eclipse.papyrus.MARTE_Library.TimeTypesLibrary.TimeTypesLibraryPackage;
-
-import org.eclipse.papyrus.iotml.IoTMLPackage;
-
 import org.eclipse.papyrus.iotml.animate.AnimatePackage;
 
 import org.eclipse.papyrus.iotml.animate.impl.AnimatePackageImpl;
@@ -71,10 +68,6 @@
 import org.eclipse.papyrus.iotml.hybrid.HybridPackage;
 
 import org.eclipse.papyrus.iotml.hybrid.impl.HybridPackageImpl;
-
-import org.eclipse.papyrus.iotml.impl.IoTMLPackageImpl;
-
-import org.eclipse.papyrus.iotml.s3pml.S3pmlPackage;
 import org.eclipse.papyrus.iotml.s3pml.hardware.HardwarePackage;
 
 import org.eclipse.papyrus.iotml.s3pml.hardware.impl.HardwarePackageImpl;
@@ -82,8 +75,6 @@
 import org.eclipse.papyrus.iotml.s3pml.hardware.store.StorePackage;
 
 import org.eclipse.papyrus.iotml.s3pml.hardware.store.impl.StorePackageImpl;
-
-import org.eclipse.papyrus.iotml.s3pml.impl.S3pmlPackageImpl;
 import org.eclipse.papyrus.iotml.s3pml.protocol.ProtocolPackage;
 
 import org.eclipse.papyrus.iotml.s3pml.protocol.impl.ProtocolPackageImpl;
@@ -92,6 +83,8 @@
 
 import org.eclipse.papyrus.iotml.s3pml.software.impl.SoftwarePackageImpl;
 
+import org.eclipse.papyrus.iotml.sensinact.SensinactPackage;
+import org.eclipse.papyrus.iotml.sensinact.impl.SensinactPackageImpl;
 import org.eclipse.papyrus.iotml.software.artefact.ArtefactPackage;
 
 import org.eclipse.papyrus.iotml.software.artefact.impl.ArtefactPackageImpl;
@@ -109,6 +102,7 @@
 import org.eclipse.uml2.types.TypesPackage;
 
 import org.eclipse.uml2.uml.UMLPackage;
+import org.eclipse.uml2.uml.profile.standard.StandardPackage;
 
 /**
  * <!-- begin-user-doc -->
@@ -159,7 +153,7 @@
 
 	/**
 	 * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
-	 * 
+	 *
 	 * <p>This method is used to initialize {@link CorePackage#eINSTANCE} when that field is accessed.
 	 * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
 	 * <!-- begin-user-doc -->
@@ -173,7 +167,8 @@
 		if (isInited) return (CorePackage)EPackage.Registry.INSTANCE.getEPackage(CorePackage.eNS_URI);
 
 		// Obtain or create and register package
-		CorePackageImpl theCorePackage = (CorePackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof CorePackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new CorePackageImpl());
+		Object registeredCorePackage = EPackage.Registry.INSTANCE.get(eNS_URI);
+		CorePackageImpl theCorePackage = registeredCorePackage instanceof CorePackageImpl ? (CorePackageImpl)registeredCorePackage : new CorePackageImpl();
 
 		isInited = true;
 
@@ -191,69 +186,71 @@
 		sysmlPackage.eINSTANCE.eClass();
 		TypesPackage.eINSTANCE.eClass();
 		UMLPackage.eINSTANCE.eClass();
+		StandardPackage.eINSTANCE.eClass();
 
 		// Obtain or create and register interdependencies
-		IoTMLPackageImpl theIoTMLPackage = (IoTMLPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(IoTMLPackage.eNS_URI) instanceof IoTMLPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(IoTMLPackage.eNS_URI) : IoTMLPackage.eINSTANCE);
-		AnimatePackageImpl theAnimatePackage = (AnimatePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(AnimatePackage.eNS_URI) instanceof AnimatePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(AnimatePackage.eNS_URI) : AnimatePackage.eINSTANCE);
-		org.eclipse.papyrus.iotml.hardware.impl.HardwarePackageImpl theHardwarePackage = (org.eclipse.papyrus.iotml.hardware.impl.HardwarePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(org.eclipse.papyrus.iotml.hardware.HardwarePackage.eNS_URI) instanceof org.eclipse.papyrus.iotml.hardware.impl.HardwarePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(org.eclipse.papyrus.iotml.hardware.HardwarePackage.eNS_URI) : org.eclipse.papyrus.iotml.hardware.HardwarePackage.eINSTANCE);
-		ActuatorPackageImpl theActuatorPackage = (ActuatorPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(ActuatorPackage.eNS_URI) instanceof ActuatorPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(ActuatorPackage.eNS_URI) : ActuatorPackage.eINSTANCE);
-		SensorPackageImpl theSensorPackage = (SensorPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(SensorPackage.eNS_URI) instanceof SensorPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(SensorPackage.eNS_URI) : SensorPackage.eINSTANCE);
-		NetworkPackageImpl theNetworkPackage = (NetworkPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(NetworkPackage.eNS_URI) instanceof NetworkPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(NetworkPackage.eNS_URI) : NetworkPackage.eINSTANCE);
-		S3pmlPackageImpl theS3pmlPackage = (S3pmlPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(S3pmlPackage.eNS_URI) instanceof S3pmlPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(S3pmlPackage.eNS_URI) : S3pmlPackage.eINSTANCE);
-		SoftwarePackageImpl theSoftwarePackage = (SoftwarePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(SoftwarePackage.eNS_URI) instanceof SoftwarePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(SoftwarePackage.eNS_URI) : SoftwarePackage.eINSTANCE);
-		ProtocolPackageImpl theProtocolPackage = (ProtocolPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(ProtocolPackage.eNS_URI) instanceof ProtocolPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(ProtocolPackage.eNS_URI) : ProtocolPackage.eINSTANCE);
-		HardwarePackageImpl theHardwarePackage_1 = (HardwarePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(HardwarePackage.eNS_URI) instanceof HardwarePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(HardwarePackage.eNS_URI) : HardwarePackage.eINSTANCE);
-		StorePackageImpl theStorePackage = (StorePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(StorePackage.eNS_URI) instanceof StorePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(StorePackage.eNS_URI) : StorePackage.eINSTANCE);
-		org.eclipse.papyrus.iotml.software.impl.SoftwarePackageImpl theSoftwarePackage_1 = (org.eclipse.papyrus.iotml.software.impl.SoftwarePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(org.eclipse.papyrus.iotml.software.SoftwarePackage.eNS_URI) instanceof org.eclipse.papyrus.iotml.software.impl.SoftwarePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(org.eclipse.papyrus.iotml.software.SoftwarePackage.eNS_URI) : org.eclipse.papyrus.iotml.software.SoftwarePackage.eINSTANCE);
-		org.eclipse.papyrus.iotml.software.core.impl.CorePackageImpl theCorePackage_1 = (org.eclipse.papyrus.iotml.software.core.impl.CorePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(org.eclipse.papyrus.iotml.software.core.CorePackage.eNS_URI) instanceof org.eclipse.papyrus.iotml.software.core.impl.CorePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(org.eclipse.papyrus.iotml.software.core.CorePackage.eNS_URI) : org.eclipse.papyrus.iotml.software.core.CorePackage.eINSTANCE);
-		StructurePackageImpl theStructurePackage = (StructurePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(StructurePackage.eNS_URI) instanceof StructurePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(StructurePackage.eNS_URI) : StructurePackage.eINSTANCE);
-		ResourcePackageImpl theResourcePackage = (ResourcePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(ResourcePackage.eNS_URI) instanceof ResourcePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(ResourcePackage.eNS_URI) : ResourcePackage.eINSTANCE);
-		ArtefactPackageImpl theArtefactPackage = (ArtefactPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(ArtefactPackage.eNS_URI) instanceof ArtefactPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(ArtefactPackage.eNS_URI) : ArtefactPackage.eINSTANCE);
-		HybridPackageImpl theHybridPackage = (HybridPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(HybridPackage.eNS_URI) instanceof HybridPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(HybridPackage.eNS_URI) : HybridPackage.eINSTANCE);
+		Object registeredPackage = EPackage.Registry.INSTANCE.getEPackage(AnimatePackage.eNS_URI);
+		AnimatePackageImpl theAnimatePackage = (AnimatePackageImpl)(registeredPackage instanceof AnimatePackageImpl ? registeredPackage : AnimatePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(ActuatorPackage.eNS_URI);
+		ActuatorPackageImpl theActuatorPackage = (ActuatorPackageImpl)(registeredPackage instanceof ActuatorPackageImpl ? registeredPackage : ActuatorPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(SensorPackage.eNS_URI);
+		SensorPackageImpl theSensorPackage = (SensorPackageImpl)(registeredPackage instanceof SensorPackageImpl ? registeredPackage : SensorPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(NetworkPackage.eNS_URI);
+		NetworkPackageImpl theNetworkPackage = (NetworkPackageImpl)(registeredPackage instanceof NetworkPackageImpl ? registeredPackage : NetworkPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(SoftwarePackage.eNS_URI);
+		SoftwarePackageImpl theSoftwarePackage = (SoftwarePackageImpl)(registeredPackage instanceof SoftwarePackageImpl ? registeredPackage : SoftwarePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(ProtocolPackage.eNS_URI);
+		ProtocolPackageImpl theProtocolPackage = (ProtocolPackageImpl)(registeredPackage instanceof ProtocolPackageImpl ? registeredPackage : ProtocolPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(HardwarePackage.eNS_URI);
+		HardwarePackageImpl theHardwarePackage = (HardwarePackageImpl)(registeredPackage instanceof HardwarePackageImpl ? registeredPackage : HardwarePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(StorePackage.eNS_URI);
+		StorePackageImpl theStorePackage = (StorePackageImpl)(registeredPackage instanceof StorePackageImpl ? registeredPackage : StorePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(StructurePackage.eNS_URI);
+		StructurePackageImpl theStructurePackage = (StructurePackageImpl)(registeredPackage instanceof StructurePackageImpl ? registeredPackage : StructurePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(ResourcePackage.eNS_URI);
+		ResourcePackageImpl theResourcePackage = (ResourcePackageImpl)(registeredPackage instanceof ResourcePackageImpl ? registeredPackage : ResourcePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(ArtefactPackage.eNS_URI);
+		ArtefactPackageImpl theArtefactPackage = (ArtefactPackageImpl)(registeredPackage instanceof ArtefactPackageImpl ? registeredPackage : ArtefactPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(HybridPackage.eNS_URI);
+		HybridPackageImpl theHybridPackage = (HybridPackageImpl)(registeredPackage instanceof HybridPackageImpl ? registeredPackage : HybridPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(SensinactPackage.eNS_URI);
+		SensinactPackageImpl theSensinactPackage = (SensinactPackageImpl)(registeredPackage instanceof SensinactPackageImpl ? registeredPackage : SensinactPackage.eINSTANCE);
 
 		// Create package meta-data objects
 		theCorePackage.createPackageContents();
-		theIoTMLPackage.createPackageContents();
 		theAnimatePackage.createPackageContents();
-		theHardwarePackage.createPackageContents();
 		theActuatorPackage.createPackageContents();
 		theSensorPackage.createPackageContents();
 		theNetworkPackage.createPackageContents();
-		theS3pmlPackage.createPackageContents();
 		theSoftwarePackage.createPackageContents();
 		theProtocolPackage.createPackageContents();
-		theHardwarePackage_1.createPackageContents();
+		theHardwarePackage.createPackageContents();
 		theStorePackage.createPackageContents();
-		theSoftwarePackage_1.createPackageContents();
-		theCorePackage_1.createPackageContents();
 		theStructurePackage.createPackageContents();
 		theResourcePackage.createPackageContents();
 		theArtefactPackage.createPackageContents();
 		theHybridPackage.createPackageContents();
+		theSensinactPackage.createPackageContents();
 
 		// Initialize created meta-data
 		theCorePackage.initializePackageContents();
-		theIoTMLPackage.initializePackageContents();
 		theAnimatePackage.initializePackageContents();
-		theHardwarePackage.initializePackageContents();
 		theActuatorPackage.initializePackageContents();
 		theSensorPackage.initializePackageContents();
 		theNetworkPackage.initializePackageContents();
-		theS3pmlPackage.initializePackageContents();
 		theSoftwarePackage.initializePackageContents();
 		theProtocolPackage.initializePackageContents();
-		theHardwarePackage_1.initializePackageContents();
+		theHardwarePackage.initializePackageContents();
 		theStorePackage.initializePackageContents();
-		theSoftwarePackage_1.initializePackageContents();
-		theCorePackage_1.initializePackageContents();
 		theStructurePackage.initializePackageContents();
 		theResourcePackage.initializePackageContents();
 		theArtefactPackage.initializePackageContents();
 		theHybridPackage.initializePackageContents();
+		theSensinactPackage.initializePackageContents();
 
 		// Register package validator
 		EValidator.Registry.INSTANCE.put
-			(theCorePackage, 
+			(theCorePackage,
 			 new EValidator.Descriptor() {
 				 public EValidator getEValidator() {
 					 return CoreValidator.INSTANCE;
@@ -263,7 +260,6 @@
 		// Mark meta-data to indicate it can't be changed
 		theCorePackage.freeze();
 
-  
 		// Update the registry and return the package
 		EPackage.Registry.INSTANCE.put(CorePackage.eNS_URI, theCorePackage);
 		return theCorePackage;
@@ -397,6 +393,9 @@
 		g1.getETypeArguments().add(g2);
 		addEParameter(op, g1, "context", 0, 1, IS_UNIQUE, IS_ORDERED);
 
+		// Create resource
+		createResource(eNS_URI);
+
 		// Create annotations
 		// http://www.eclipse.org/uml2/2.0.0/UML
 		createUMLAnnotations();
@@ -409,12 +408,12 @@
 	 * @generated
 	 */
 	protected void createUMLAnnotations() {
-		String source = "http://www.eclipse.org/uml2/2.0.0/UML";	
+		String source = "http://www.eclipse.org/uml2/2.0.0/UML";
 		addAnnotation
-		  (this, 
-		   source, 
+		  (this,
+		   source,
 		   new String[] {
-			 "originalName", "Core"
+			   "originalName", "Core"
 		   });
 	}
 
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/hardware/network/impl/NetworkPackageImpl.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/hardware/network/impl/NetworkPackageImpl.java
index 5b98882..0739339 100644
--- a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/hardware/network/impl/NetworkPackageImpl.java
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/hardware/network/impl/NetworkPackageImpl.java
@@ -40,9 +40,6 @@
 import org.eclipse.papyrus.MARTE_Library.TimeLibrary.TimeLibraryPackage;
 
 import org.eclipse.papyrus.MARTE_Library.TimeTypesLibrary.TimeTypesLibraryPackage;
-
-import org.eclipse.papyrus.iotml.IoTMLPackage;
-
 import org.eclipse.papyrus.iotml.animate.AnimatePackage;
 
 import org.eclipse.papyrus.iotml.animate.impl.AnimatePackageImpl;
@@ -68,10 +65,6 @@
 import org.eclipse.papyrus.iotml.hybrid.HybridPackage;
 
 import org.eclipse.papyrus.iotml.hybrid.impl.HybridPackageImpl;
-
-import org.eclipse.papyrus.iotml.impl.IoTMLPackageImpl;
-
-import org.eclipse.papyrus.iotml.s3pml.S3pmlPackage;
 import org.eclipse.papyrus.iotml.s3pml.hardware.HardwarePackage;
 
 import org.eclipse.papyrus.iotml.s3pml.hardware.impl.HardwarePackageImpl;
@@ -79,8 +72,6 @@
 import org.eclipse.papyrus.iotml.s3pml.hardware.store.StorePackage;
 
 import org.eclipse.papyrus.iotml.s3pml.hardware.store.impl.StorePackageImpl;
-
-import org.eclipse.papyrus.iotml.s3pml.impl.S3pmlPackageImpl;
 import org.eclipse.papyrus.iotml.s3pml.protocol.ProtocolPackage;
 
 import org.eclipse.papyrus.iotml.s3pml.protocol.impl.ProtocolPackageImpl;
@@ -89,6 +80,8 @@
 
 import org.eclipse.papyrus.iotml.s3pml.software.impl.SoftwarePackageImpl;
 
+import org.eclipse.papyrus.iotml.sensinact.SensinactPackage;
+import org.eclipse.papyrus.iotml.sensinact.impl.SensinactPackageImpl;
 import org.eclipse.papyrus.iotml.software.artefact.ArtefactPackage;
 
 import org.eclipse.papyrus.iotml.software.artefact.impl.ArtefactPackageImpl;
@@ -106,6 +99,7 @@
 import org.eclipse.uml2.types.TypesPackage;
 
 import org.eclipse.uml2.uml.UMLPackage;
+import org.eclipse.uml2.uml.profile.standard.StandardPackage;
 
 /**
  * <!-- begin-user-doc -->
@@ -163,7 +157,7 @@
 
 	/**
 	 * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
-	 * 
+	 *
 	 * <p>This method is used to initialize {@link NetworkPackage#eINSTANCE} when that field is accessed.
 	 * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
 	 * <!-- begin-user-doc -->
@@ -177,7 +171,8 @@
 		if (isInited) return (NetworkPackage)EPackage.Registry.INSTANCE.getEPackage(NetworkPackage.eNS_URI);
 
 		// Obtain or create and register package
-		NetworkPackageImpl theNetworkPackage = (NetworkPackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof NetworkPackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new NetworkPackageImpl());
+		Object registeredNetworkPackage = EPackage.Registry.INSTANCE.get(eNS_URI);
+		NetworkPackageImpl theNetworkPackage = registeredNetworkPackage instanceof NetworkPackageImpl ? (NetworkPackageImpl)registeredNetworkPackage : new NetworkPackageImpl();
 
 		isInited = true;
 
@@ -195,70 +190,71 @@
 		sysmlPackage.eINSTANCE.eClass();
 		TypesPackage.eINSTANCE.eClass();
 		UMLPackage.eINSTANCE.eClass();
+		StandardPackage.eINSTANCE.eClass();
 
 		// Obtain or create and register interdependencies
-		IoTMLPackageImpl theIoTMLPackage = (IoTMLPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(IoTMLPackage.eNS_URI) instanceof IoTMLPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(IoTMLPackage.eNS_URI) : IoTMLPackage.eINSTANCE);
-		AnimatePackageImpl theAnimatePackage = (AnimatePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(AnimatePackage.eNS_URI) instanceof AnimatePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(AnimatePackage.eNS_URI) : AnimatePackage.eINSTANCE);
-		org.eclipse.papyrus.iotml.hardware.impl.HardwarePackageImpl theHardwarePackage = (org.eclipse.papyrus.iotml.hardware.impl.HardwarePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(org.eclipse.papyrus.iotml.hardware.HardwarePackage.eNS_URI) instanceof org.eclipse.papyrus.iotml.hardware.impl.HardwarePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(org.eclipse.papyrus.iotml.hardware.HardwarePackage.eNS_URI) : org.eclipse.papyrus.iotml.hardware.HardwarePackage.eINSTANCE);
-		ActuatorPackageImpl theActuatorPackage = (ActuatorPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(ActuatorPackage.eNS_URI) instanceof ActuatorPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(ActuatorPackage.eNS_URI) : ActuatorPackage.eINSTANCE);
-		SensorPackageImpl theSensorPackage = (SensorPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(SensorPackage.eNS_URI) instanceof SensorPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(SensorPackage.eNS_URI) : SensorPackage.eINSTANCE);
-		CorePackageImpl theCorePackage = (CorePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(CorePackage.eNS_URI) instanceof CorePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(CorePackage.eNS_URI) : CorePackage.eINSTANCE);
-		S3pmlPackageImpl theS3pmlPackage = (S3pmlPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(S3pmlPackage.eNS_URI) instanceof S3pmlPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(S3pmlPackage.eNS_URI) : S3pmlPackage.eINSTANCE);
-		SoftwarePackageImpl theSoftwarePackage = (SoftwarePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(SoftwarePackage.eNS_URI) instanceof SoftwarePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(SoftwarePackage.eNS_URI) : SoftwarePackage.eINSTANCE);
-		ProtocolPackageImpl theProtocolPackage = (ProtocolPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(ProtocolPackage.eNS_URI) instanceof ProtocolPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(ProtocolPackage.eNS_URI) : ProtocolPackage.eINSTANCE);
-		HardwarePackageImpl theHardwarePackage_1 = (HardwarePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(HardwarePackage.eNS_URI) instanceof HardwarePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(HardwarePackage.eNS_URI) : HardwarePackage.eINSTANCE);
-		StorePackageImpl theStorePackage = (StorePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(StorePackage.eNS_URI) instanceof StorePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(StorePackage.eNS_URI) : StorePackage.eINSTANCE);
-		org.eclipse.papyrus.iotml.software.impl.SoftwarePackageImpl theSoftwarePackage_1 = (org.eclipse.papyrus.iotml.software.impl.SoftwarePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(org.eclipse.papyrus.iotml.software.SoftwarePackage.eNS_URI) instanceof org.eclipse.papyrus.iotml.software.impl.SoftwarePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(org.eclipse.papyrus.iotml.software.SoftwarePackage.eNS_URI) : org.eclipse.papyrus.iotml.software.SoftwarePackage.eINSTANCE);
-		org.eclipse.papyrus.iotml.software.core.impl.CorePackageImpl theCorePackage_1 = (org.eclipse.papyrus.iotml.software.core.impl.CorePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(org.eclipse.papyrus.iotml.software.core.CorePackage.eNS_URI) instanceof org.eclipse.papyrus.iotml.software.core.impl.CorePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(org.eclipse.papyrus.iotml.software.core.CorePackage.eNS_URI) : org.eclipse.papyrus.iotml.software.core.CorePackage.eINSTANCE);
-		StructurePackageImpl theStructurePackage = (StructurePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(StructurePackage.eNS_URI) instanceof StructurePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(StructurePackage.eNS_URI) : StructurePackage.eINSTANCE);
-		ResourcePackageImpl theResourcePackage = (ResourcePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(ResourcePackage.eNS_URI) instanceof ResourcePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(ResourcePackage.eNS_URI) : ResourcePackage.eINSTANCE);
-		ArtefactPackageImpl theArtefactPackage = (ArtefactPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(ArtefactPackage.eNS_URI) instanceof ArtefactPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(ArtefactPackage.eNS_URI) : ArtefactPackage.eINSTANCE);
-		HybridPackageImpl theHybridPackage = (HybridPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(HybridPackage.eNS_URI) instanceof HybridPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(HybridPackage.eNS_URI) : HybridPackage.eINSTANCE);
+		Object registeredPackage = EPackage.Registry.INSTANCE.getEPackage(AnimatePackage.eNS_URI);
+		AnimatePackageImpl theAnimatePackage = (AnimatePackageImpl)(registeredPackage instanceof AnimatePackageImpl ? registeredPackage : AnimatePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(ActuatorPackage.eNS_URI);
+		ActuatorPackageImpl theActuatorPackage = (ActuatorPackageImpl)(registeredPackage instanceof ActuatorPackageImpl ? registeredPackage : ActuatorPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(SensorPackage.eNS_URI);
+		SensorPackageImpl theSensorPackage = (SensorPackageImpl)(registeredPackage instanceof SensorPackageImpl ? registeredPackage : SensorPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(CorePackage.eNS_URI);
+		CorePackageImpl theCorePackage = (CorePackageImpl)(registeredPackage instanceof CorePackageImpl ? registeredPackage : CorePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(SoftwarePackage.eNS_URI);
+		SoftwarePackageImpl theSoftwarePackage = (SoftwarePackageImpl)(registeredPackage instanceof SoftwarePackageImpl ? registeredPackage : SoftwarePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(ProtocolPackage.eNS_URI);
+		ProtocolPackageImpl theProtocolPackage = (ProtocolPackageImpl)(registeredPackage instanceof ProtocolPackageImpl ? registeredPackage : ProtocolPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(HardwarePackage.eNS_URI);
+		HardwarePackageImpl theHardwarePackage = (HardwarePackageImpl)(registeredPackage instanceof HardwarePackageImpl ? registeredPackage : HardwarePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(StorePackage.eNS_URI);
+		StorePackageImpl theStorePackage = (StorePackageImpl)(registeredPackage instanceof StorePackageImpl ? registeredPackage : StorePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(StructurePackage.eNS_URI);
+		StructurePackageImpl theStructurePackage = (StructurePackageImpl)(registeredPackage instanceof StructurePackageImpl ? registeredPackage : StructurePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(ResourcePackage.eNS_URI);
+		ResourcePackageImpl theResourcePackage = (ResourcePackageImpl)(registeredPackage instanceof ResourcePackageImpl ? registeredPackage : ResourcePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(ArtefactPackage.eNS_URI);
+		ArtefactPackageImpl theArtefactPackage = (ArtefactPackageImpl)(registeredPackage instanceof ArtefactPackageImpl ? registeredPackage : ArtefactPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(HybridPackage.eNS_URI);
+		HybridPackageImpl theHybridPackage = (HybridPackageImpl)(registeredPackage instanceof HybridPackageImpl ? registeredPackage : HybridPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(SensinactPackage.eNS_URI);
+		SensinactPackageImpl theSensinactPackage = (SensinactPackageImpl)(registeredPackage instanceof SensinactPackageImpl ? registeredPackage : SensinactPackage.eINSTANCE);
 
 		// Create package meta-data objects
 		theNetworkPackage.createPackageContents();
-		theIoTMLPackage.createPackageContents();
 		theAnimatePackage.createPackageContents();
-		theHardwarePackage.createPackageContents();
 		theActuatorPackage.createPackageContents();
 		theSensorPackage.createPackageContents();
 		theCorePackage.createPackageContents();
-		theS3pmlPackage.createPackageContents();
 		theSoftwarePackage.createPackageContents();
 		theProtocolPackage.createPackageContents();
-		theHardwarePackage_1.createPackageContents();
+		theHardwarePackage.createPackageContents();
 		theStorePackage.createPackageContents();
-		theSoftwarePackage_1.createPackageContents();
-		theCorePackage_1.createPackageContents();
 		theStructurePackage.createPackageContents();
 		theResourcePackage.createPackageContents();
 		theArtefactPackage.createPackageContents();
 		theHybridPackage.createPackageContents();
+		theSensinactPackage.createPackageContents();
 
 		// Initialize created meta-data
 		theNetworkPackage.initializePackageContents();
-		theIoTMLPackage.initializePackageContents();
 		theAnimatePackage.initializePackageContents();
-		theHardwarePackage.initializePackageContents();
 		theActuatorPackage.initializePackageContents();
 		theSensorPackage.initializePackageContents();
 		theCorePackage.initializePackageContents();
-		theS3pmlPackage.initializePackageContents();
 		theSoftwarePackage.initializePackageContents();
 		theProtocolPackage.initializePackageContents();
-		theHardwarePackage_1.initializePackageContents();
+		theHardwarePackage.initializePackageContents();
 		theStorePackage.initializePackageContents();
-		theSoftwarePackage_1.initializePackageContents();
-		theCorePackage_1.initializePackageContents();
 		theStructurePackage.initializePackageContents();
 		theResourcePackage.initializePackageContents();
 		theArtefactPackage.initializePackageContents();
 		theHybridPackage.initializePackageContents();
+		theSensinactPackage.initializePackageContents();
 
 		// Mark meta-data to indicate it can't be changed
 		theNetworkPackage.freeze();
 
-  
 		// Update the registry and return the package
 		EPackage.Registry.INSTANCE.put(NetworkPackage.eNS_URI, theNetworkPackage);
 		return theNetworkPackage;
@@ -352,7 +348,7 @@
 		// Obtain other dependent packages
 		HwCommunicationPackage theHwCommunicationPackage = (HwCommunicationPackage)EPackage.Registry.INSTANCE.getEPackage(HwCommunicationPackage.eNS_URI);
 		HwComputingPackage theHwComputingPackage = (HwComputingPackage)EPackage.Registry.INSTANCE.getEPackage(HwComputingPackage.eNS_URI);
-		HardwarePackage theHardwarePackage_1 = (HardwarePackage)EPackage.Registry.INSTANCE.getEPackage(HardwarePackage.eNS_URI);
+		HardwarePackage theHardwarePackage = (HardwarePackage)EPackage.Registry.INSTANCE.getEPackage(HardwarePackage.eNS_URI);
 
 		// Create type parameters
 
@@ -361,7 +357,7 @@
 		// Add supertypes to classes
 		connectedDeviceEClass.getESuperTypes().add(theHwCommunicationPackage.getHwCommunicationResource());
 		gatewayEClass.getESuperTypes().add(theHwComputingPackage.getHwComputingResource());
-		gatewayEClass.getESuperTypes().add(theHardwarePackage_1.getIoTDevice());
+		gatewayEClass.getESuperTypes().add(theHardwarePackage.getIoTDevice());
 		serverEClass.getESuperTypes().add(theHwComputingPackage.getHwComputingResource());
 		serverEClass.getESuperTypes().add(this.getConnectedDevice());
 
@@ -372,6 +368,9 @@
 
 		initEClass(serverEClass, Server.class, "Server", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 
+		// Create resource
+		createResource(eNS_URI);
+
 		// Create annotations
 		// http://www.eclipse.org/uml2/2.0.0/UML
 		createUMLAnnotations();
@@ -384,12 +383,12 @@
 	 * @generated
 	 */
 	protected void createUMLAnnotations() {
-		String source = "http://www.eclipse.org/uml2/2.0.0/UML";	
+		String source = "http://www.eclipse.org/uml2/2.0.0/UML";
 		addAnnotation
-		  (this, 
-		   source, 
+		  (this,
+		   source,
 		   new String[] {
-			 "originalName", "Network"
+			   "originalName", "Network"
 		   });
 	}
 
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/hardware/sensor/impl/HwTagImpl.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/hardware/sensor/impl/HwTagImpl.java
index b86e7d2..2b6d034 100644
--- a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/hardware/sensor/impl/HwTagImpl.java
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/hardware/sensor/impl/HwTagImpl.java
@@ -165,7 +165,7 @@
 	public String toString() {
 		if (eIsProxy()) return super.toString();
 
-		StringBuffer result = new StringBuffer(super.toString());
+		StringBuilder result = new StringBuilder(super.toString());
 		result.append(" (tageFrequency: ");
 		result.append(tageFrequency);
 		result.append(')');
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/hardware/sensor/impl/SensorPackageImpl.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/hardware/sensor/impl/SensorPackageImpl.java
index 20761a3..8e4995e 100644
--- a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/hardware/sensor/impl/SensorPackageImpl.java
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/hardware/sensor/impl/SensorPackageImpl.java
@@ -40,9 +40,6 @@
 import org.eclipse.papyrus.MARTE_Library.TimeLibrary.TimeLibraryPackage;
 
 import org.eclipse.papyrus.MARTE_Library.TimeTypesLibrary.TimeTypesLibraryPackage;
-
-import org.eclipse.papyrus.iotml.IoTMLPackage;
-
 import org.eclipse.papyrus.iotml.animate.AnimatePackage;
 
 import org.eclipse.papyrus.iotml.animate.impl.AnimatePackageImpl;
@@ -68,10 +65,6 @@
 import org.eclipse.papyrus.iotml.hybrid.HybridPackage;
 
 import org.eclipse.papyrus.iotml.hybrid.impl.HybridPackageImpl;
-
-import org.eclipse.papyrus.iotml.impl.IoTMLPackageImpl;
-
-import org.eclipse.papyrus.iotml.s3pml.S3pmlPackage;
 import org.eclipse.papyrus.iotml.s3pml.hardware.HardwarePackage;
 
 import org.eclipse.papyrus.iotml.s3pml.hardware.impl.HardwarePackageImpl;
@@ -79,8 +72,6 @@
 import org.eclipse.papyrus.iotml.s3pml.hardware.store.StorePackage;
 
 import org.eclipse.papyrus.iotml.s3pml.hardware.store.impl.StorePackageImpl;
-
-import org.eclipse.papyrus.iotml.s3pml.impl.S3pmlPackageImpl;
 import org.eclipse.papyrus.iotml.s3pml.protocol.ProtocolPackage;
 
 import org.eclipse.papyrus.iotml.s3pml.protocol.impl.ProtocolPackageImpl;
@@ -89,6 +80,8 @@
 
 import org.eclipse.papyrus.iotml.s3pml.software.impl.SoftwarePackageImpl;
 
+import org.eclipse.papyrus.iotml.sensinact.SensinactPackage;
+import org.eclipse.papyrus.iotml.sensinact.impl.SensinactPackageImpl;
 import org.eclipse.papyrus.iotml.software.artefact.ArtefactPackage;
 
 import org.eclipse.papyrus.iotml.software.artefact.impl.ArtefactPackageImpl;
@@ -108,6 +101,7 @@
 import org.eclipse.uml2.types.TypesPackage;
 
 import org.eclipse.uml2.uml.UMLPackage;
+import org.eclipse.uml2.uml.profile.standard.StandardPackage;
 
 /**
  * <!-- begin-user-doc -->
@@ -165,7 +159,7 @@
 
 	/**
 	 * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
-	 * 
+	 *
 	 * <p>This method is used to initialize {@link SensorPackage#eINSTANCE} when that field is accessed.
 	 * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
 	 * <!-- begin-user-doc -->
@@ -179,7 +173,8 @@
 		if (isInited) return (SensorPackage)EPackage.Registry.INSTANCE.getEPackage(SensorPackage.eNS_URI);
 
 		// Obtain or create and register package
-		SensorPackageImpl theSensorPackage = (SensorPackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof SensorPackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new SensorPackageImpl());
+		Object registeredSensorPackage = EPackage.Registry.INSTANCE.get(eNS_URI);
+		SensorPackageImpl theSensorPackage = registeredSensorPackage instanceof SensorPackageImpl ? (SensorPackageImpl)registeredSensorPackage : new SensorPackageImpl();
 
 		isInited = true;
 
@@ -197,70 +192,71 @@
 		sysmlPackage.eINSTANCE.eClass();
 		TypesPackage.eINSTANCE.eClass();
 		UMLPackage.eINSTANCE.eClass();
+		StandardPackage.eINSTANCE.eClass();
 
 		// Obtain or create and register interdependencies
-		IoTMLPackageImpl theIoTMLPackage = (IoTMLPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(IoTMLPackage.eNS_URI) instanceof IoTMLPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(IoTMLPackage.eNS_URI) : IoTMLPackage.eINSTANCE);
-		AnimatePackageImpl theAnimatePackage = (AnimatePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(AnimatePackage.eNS_URI) instanceof AnimatePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(AnimatePackage.eNS_URI) : AnimatePackage.eINSTANCE);
-		org.eclipse.papyrus.iotml.hardware.impl.HardwarePackageImpl theHardwarePackage = (org.eclipse.papyrus.iotml.hardware.impl.HardwarePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(org.eclipse.papyrus.iotml.hardware.HardwarePackage.eNS_URI) instanceof org.eclipse.papyrus.iotml.hardware.impl.HardwarePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(org.eclipse.papyrus.iotml.hardware.HardwarePackage.eNS_URI) : org.eclipse.papyrus.iotml.hardware.HardwarePackage.eINSTANCE);
-		ActuatorPackageImpl theActuatorPackage = (ActuatorPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(ActuatorPackage.eNS_URI) instanceof ActuatorPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(ActuatorPackage.eNS_URI) : ActuatorPackage.eINSTANCE);
-		NetworkPackageImpl theNetworkPackage = (NetworkPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(NetworkPackage.eNS_URI) instanceof NetworkPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(NetworkPackage.eNS_URI) : NetworkPackage.eINSTANCE);
-		CorePackageImpl theCorePackage = (CorePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(CorePackage.eNS_URI) instanceof CorePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(CorePackage.eNS_URI) : CorePackage.eINSTANCE);
-		S3pmlPackageImpl theS3pmlPackage = (S3pmlPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(S3pmlPackage.eNS_URI) instanceof S3pmlPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(S3pmlPackage.eNS_URI) : S3pmlPackage.eINSTANCE);
-		SoftwarePackageImpl theSoftwarePackage = (SoftwarePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(SoftwarePackage.eNS_URI) instanceof SoftwarePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(SoftwarePackage.eNS_URI) : SoftwarePackage.eINSTANCE);
-		ProtocolPackageImpl theProtocolPackage = (ProtocolPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(ProtocolPackage.eNS_URI) instanceof ProtocolPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(ProtocolPackage.eNS_URI) : ProtocolPackage.eINSTANCE);
-		HardwarePackageImpl theHardwarePackage_1 = (HardwarePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(HardwarePackage.eNS_URI) instanceof HardwarePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(HardwarePackage.eNS_URI) : HardwarePackage.eINSTANCE);
-		StorePackageImpl theStorePackage = (StorePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(StorePackage.eNS_URI) instanceof StorePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(StorePackage.eNS_URI) : StorePackage.eINSTANCE);
-		org.eclipse.papyrus.iotml.software.impl.SoftwarePackageImpl theSoftwarePackage_1 = (org.eclipse.papyrus.iotml.software.impl.SoftwarePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(org.eclipse.papyrus.iotml.software.SoftwarePackage.eNS_URI) instanceof org.eclipse.papyrus.iotml.software.impl.SoftwarePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(org.eclipse.papyrus.iotml.software.SoftwarePackage.eNS_URI) : org.eclipse.papyrus.iotml.software.SoftwarePackage.eINSTANCE);
-		org.eclipse.papyrus.iotml.software.core.impl.CorePackageImpl theCorePackage_1 = (org.eclipse.papyrus.iotml.software.core.impl.CorePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(org.eclipse.papyrus.iotml.software.core.CorePackage.eNS_URI) instanceof org.eclipse.papyrus.iotml.software.core.impl.CorePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(org.eclipse.papyrus.iotml.software.core.CorePackage.eNS_URI) : org.eclipse.papyrus.iotml.software.core.CorePackage.eINSTANCE);
-		StructurePackageImpl theStructurePackage = (StructurePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(StructurePackage.eNS_URI) instanceof StructurePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(StructurePackage.eNS_URI) : StructurePackage.eINSTANCE);
-		ResourcePackageImpl theResourcePackage = (ResourcePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(ResourcePackage.eNS_URI) instanceof ResourcePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(ResourcePackage.eNS_URI) : ResourcePackage.eINSTANCE);
-		ArtefactPackageImpl theArtefactPackage = (ArtefactPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(ArtefactPackage.eNS_URI) instanceof ArtefactPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(ArtefactPackage.eNS_URI) : ArtefactPackage.eINSTANCE);
-		HybridPackageImpl theHybridPackage = (HybridPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(HybridPackage.eNS_URI) instanceof HybridPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(HybridPackage.eNS_URI) : HybridPackage.eINSTANCE);
+		Object registeredPackage = EPackage.Registry.INSTANCE.getEPackage(AnimatePackage.eNS_URI);
+		AnimatePackageImpl theAnimatePackage = (AnimatePackageImpl)(registeredPackage instanceof AnimatePackageImpl ? registeredPackage : AnimatePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(ActuatorPackage.eNS_URI);
+		ActuatorPackageImpl theActuatorPackage = (ActuatorPackageImpl)(registeredPackage instanceof ActuatorPackageImpl ? registeredPackage : ActuatorPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(NetworkPackage.eNS_URI);
+		NetworkPackageImpl theNetworkPackage = (NetworkPackageImpl)(registeredPackage instanceof NetworkPackageImpl ? registeredPackage : NetworkPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(CorePackage.eNS_URI);
+		CorePackageImpl theCorePackage = (CorePackageImpl)(registeredPackage instanceof CorePackageImpl ? registeredPackage : CorePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(SoftwarePackage.eNS_URI);
+		SoftwarePackageImpl theSoftwarePackage = (SoftwarePackageImpl)(registeredPackage instanceof SoftwarePackageImpl ? registeredPackage : SoftwarePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(ProtocolPackage.eNS_URI);
+		ProtocolPackageImpl theProtocolPackage = (ProtocolPackageImpl)(registeredPackage instanceof ProtocolPackageImpl ? registeredPackage : ProtocolPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(HardwarePackage.eNS_URI);
+		HardwarePackageImpl theHardwarePackage = (HardwarePackageImpl)(registeredPackage instanceof HardwarePackageImpl ? registeredPackage : HardwarePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(StorePackage.eNS_URI);
+		StorePackageImpl theStorePackage = (StorePackageImpl)(registeredPackage instanceof StorePackageImpl ? registeredPackage : StorePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(StructurePackage.eNS_URI);
+		StructurePackageImpl theStructurePackage = (StructurePackageImpl)(registeredPackage instanceof StructurePackageImpl ? registeredPackage : StructurePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(ResourcePackage.eNS_URI);
+		ResourcePackageImpl theResourcePackage = (ResourcePackageImpl)(registeredPackage instanceof ResourcePackageImpl ? registeredPackage : ResourcePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(ArtefactPackage.eNS_URI);
+		ArtefactPackageImpl theArtefactPackage = (ArtefactPackageImpl)(registeredPackage instanceof ArtefactPackageImpl ? registeredPackage : ArtefactPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(HybridPackage.eNS_URI);
+		HybridPackageImpl theHybridPackage = (HybridPackageImpl)(registeredPackage instanceof HybridPackageImpl ? registeredPackage : HybridPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(SensinactPackage.eNS_URI);
+		SensinactPackageImpl theSensinactPackage = (SensinactPackageImpl)(registeredPackage instanceof SensinactPackageImpl ? registeredPackage : SensinactPackage.eINSTANCE);
 
 		// Create package meta-data objects
 		theSensorPackage.createPackageContents();
-		theIoTMLPackage.createPackageContents();
 		theAnimatePackage.createPackageContents();
-		theHardwarePackage.createPackageContents();
 		theActuatorPackage.createPackageContents();
 		theNetworkPackage.createPackageContents();
 		theCorePackage.createPackageContents();
-		theS3pmlPackage.createPackageContents();
 		theSoftwarePackage.createPackageContents();
 		theProtocolPackage.createPackageContents();
-		theHardwarePackage_1.createPackageContents();
+		theHardwarePackage.createPackageContents();
 		theStorePackage.createPackageContents();
-		theSoftwarePackage_1.createPackageContents();
-		theCorePackage_1.createPackageContents();
 		theStructurePackage.createPackageContents();
 		theResourcePackage.createPackageContents();
 		theArtefactPackage.createPackageContents();
 		theHybridPackage.createPackageContents();
+		theSensinactPackage.createPackageContents();
 
 		// Initialize created meta-data
 		theSensorPackage.initializePackageContents();
-		theIoTMLPackage.initializePackageContents();
 		theAnimatePackage.initializePackageContents();
-		theHardwarePackage.initializePackageContents();
 		theActuatorPackage.initializePackageContents();
 		theNetworkPackage.initializePackageContents();
 		theCorePackage.initializePackageContents();
-		theS3pmlPackage.initializePackageContents();
 		theSoftwarePackage.initializePackageContents();
 		theProtocolPackage.initializePackageContents();
-		theHardwarePackage_1.initializePackageContents();
+		theHardwarePackage.initializePackageContents();
 		theStorePackage.initializePackageContents();
-		theSoftwarePackage_1.initializePackageContents();
-		theCorePackage_1.initializePackageContents();
 		theStructurePackage.initializePackageContents();
 		theResourcePackage.initializePackageContents();
 		theArtefactPackage.initializePackageContents();
 		theHybridPackage.initializePackageContents();
+		theSensinactPackage.initializePackageContents();
 
 		// Mark meta-data to indicate it can't be changed
 		theSensorPackage.freeze();
 
-  
 		// Update the registry and return the package
 		EPackage.Registry.INSTANCE.put(SensorPackage.eNS_URI, theSensorPackage);
 		return theSensorPackage;
@@ -439,6 +435,9 @@
 		initEClass(hwTagEClass, HwTag.class, "HwTag", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 		initEAttribute(getHwTag_TageFrequency(), theTypesPackage.getReal(), "tageFrequency", null, 0, 1, HwTag.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
 
+		// Create resource
+		createResource(eNS_URI);
+
 		// Create annotations
 		// http://www.eclipse.org/uml2/2.0.0/UML
 		createUMLAnnotations();
@@ -451,12 +450,12 @@
 	 * @generated
 	 */
 	protected void createUMLAnnotations() {
-		String source = "http://www.eclipse.org/uml2/2.0.0/UML";	
+		String source = "http://www.eclipse.org/uml2/2.0.0/UML";
 		addAnnotation
-		  (this, 
-		   source, 
+		  (this,
+		   source,
 		   new String[] {
-			 "originalName", "Sensor"
+			   "originalName", "Sensor"
 		   });
 	}
 
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/hybrid/impl/HybridPackageImpl.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/hybrid/impl/HybridPackageImpl.java
index 87bd36f..ad87d8f 100644
--- a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/hybrid/impl/HybridPackageImpl.java
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/hybrid/impl/HybridPackageImpl.java
@@ -38,9 +38,6 @@
 import org.eclipse.papyrus.MARTE_Library.TimeLibrary.TimeLibraryPackage;
 
 import org.eclipse.papyrus.MARTE_Library.TimeTypesLibrary.TimeTypesLibraryPackage;
-
-import org.eclipse.papyrus.iotml.IoTMLPackage;
-
 import org.eclipse.papyrus.iotml.animate.AnimatePackage;
 
 import org.eclipse.papyrus.iotml.animate.impl.AnimatePackageImpl;
@@ -64,10 +61,6 @@
 import org.eclipse.papyrus.iotml.hybrid.HybridFactory;
 import org.eclipse.papyrus.iotml.hybrid.HybridPackage;
 import org.eclipse.papyrus.iotml.hybrid.PhysicalEntity;
-
-import org.eclipse.papyrus.iotml.impl.IoTMLPackageImpl;
-
-import org.eclipse.papyrus.iotml.s3pml.S3pmlPackage;
 import org.eclipse.papyrus.iotml.s3pml.hardware.HardwarePackage;
 
 import org.eclipse.papyrus.iotml.s3pml.hardware.impl.HardwarePackageImpl;
@@ -75,8 +68,6 @@
 import org.eclipse.papyrus.iotml.s3pml.hardware.store.StorePackage;
 
 import org.eclipse.papyrus.iotml.s3pml.hardware.store.impl.StorePackageImpl;
-
-import org.eclipse.papyrus.iotml.s3pml.impl.S3pmlPackageImpl;
 import org.eclipse.papyrus.iotml.s3pml.protocol.ProtocolPackage;
 
 import org.eclipse.papyrus.iotml.s3pml.protocol.impl.ProtocolPackageImpl;
@@ -85,6 +76,8 @@
 
 import org.eclipse.papyrus.iotml.s3pml.software.impl.SoftwarePackageImpl;
 
+import org.eclipse.papyrus.iotml.sensinact.SensinactPackage;
+import org.eclipse.papyrus.iotml.sensinact.impl.SensinactPackageImpl;
 import org.eclipse.papyrus.iotml.software.artefact.ArtefactPackage;
 
 import org.eclipse.papyrus.iotml.software.artefact.impl.ArtefactPackageImpl;
@@ -102,6 +95,7 @@
 import org.eclipse.uml2.types.TypesPackage;
 
 import org.eclipse.uml2.uml.UMLPackage;
+import org.eclipse.uml2.uml.profile.standard.StandardPackage;
 
 /**
  * <!-- begin-user-doc -->
@@ -145,7 +139,7 @@
 
 	/**
 	 * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
-	 * 
+	 *
 	 * <p>This method is used to initialize {@link HybridPackage#eINSTANCE} when that field is accessed.
 	 * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
 	 * <!-- begin-user-doc -->
@@ -159,7 +153,8 @@
 		if (isInited) return (HybridPackage)EPackage.Registry.INSTANCE.getEPackage(HybridPackage.eNS_URI);
 
 		// Obtain or create and register package
-		HybridPackageImpl theHybridPackage = (HybridPackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof HybridPackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new HybridPackageImpl());
+		Object registeredHybridPackage = EPackage.Registry.INSTANCE.get(eNS_URI);
+		HybridPackageImpl theHybridPackage = registeredHybridPackage instanceof HybridPackageImpl ? (HybridPackageImpl)registeredHybridPackage : new HybridPackageImpl();
 
 		isInited = true;
 
@@ -177,70 +172,71 @@
 		sysmlPackage.eINSTANCE.eClass();
 		TypesPackage.eINSTANCE.eClass();
 		UMLPackage.eINSTANCE.eClass();
+		StandardPackage.eINSTANCE.eClass();
 
 		// Obtain or create and register interdependencies
-		IoTMLPackageImpl theIoTMLPackage = (IoTMLPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(IoTMLPackage.eNS_URI) instanceof IoTMLPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(IoTMLPackage.eNS_URI) : IoTMLPackage.eINSTANCE);
-		AnimatePackageImpl theAnimatePackage = (AnimatePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(AnimatePackage.eNS_URI) instanceof AnimatePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(AnimatePackage.eNS_URI) : AnimatePackage.eINSTANCE);
-		org.eclipse.papyrus.iotml.hardware.impl.HardwarePackageImpl theHardwarePackage = (org.eclipse.papyrus.iotml.hardware.impl.HardwarePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(org.eclipse.papyrus.iotml.hardware.HardwarePackage.eNS_URI) instanceof org.eclipse.papyrus.iotml.hardware.impl.HardwarePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(org.eclipse.papyrus.iotml.hardware.HardwarePackage.eNS_URI) : org.eclipse.papyrus.iotml.hardware.HardwarePackage.eINSTANCE);
-		ActuatorPackageImpl theActuatorPackage = (ActuatorPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(ActuatorPackage.eNS_URI) instanceof ActuatorPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(ActuatorPackage.eNS_URI) : ActuatorPackage.eINSTANCE);
-		SensorPackageImpl theSensorPackage = (SensorPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(SensorPackage.eNS_URI) instanceof SensorPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(SensorPackage.eNS_URI) : SensorPackage.eINSTANCE);
-		NetworkPackageImpl theNetworkPackage = (NetworkPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(NetworkPackage.eNS_URI) instanceof NetworkPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(NetworkPackage.eNS_URI) : NetworkPackage.eINSTANCE);
-		CorePackageImpl theCorePackage = (CorePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(CorePackage.eNS_URI) instanceof CorePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(CorePackage.eNS_URI) : CorePackage.eINSTANCE);
-		S3pmlPackageImpl theS3pmlPackage = (S3pmlPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(S3pmlPackage.eNS_URI) instanceof S3pmlPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(S3pmlPackage.eNS_URI) : S3pmlPackage.eINSTANCE);
-		SoftwarePackageImpl theSoftwarePackage = (SoftwarePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(SoftwarePackage.eNS_URI) instanceof SoftwarePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(SoftwarePackage.eNS_URI) : SoftwarePackage.eINSTANCE);
-		ProtocolPackageImpl theProtocolPackage = (ProtocolPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(ProtocolPackage.eNS_URI) instanceof ProtocolPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(ProtocolPackage.eNS_URI) : ProtocolPackage.eINSTANCE);
-		HardwarePackageImpl theHardwarePackage_1 = (HardwarePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(HardwarePackage.eNS_URI) instanceof HardwarePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(HardwarePackage.eNS_URI) : HardwarePackage.eINSTANCE);
-		StorePackageImpl theStorePackage = (StorePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(StorePackage.eNS_URI) instanceof StorePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(StorePackage.eNS_URI) : StorePackage.eINSTANCE);
-		org.eclipse.papyrus.iotml.software.impl.SoftwarePackageImpl theSoftwarePackage_1 = (org.eclipse.papyrus.iotml.software.impl.SoftwarePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(org.eclipse.papyrus.iotml.software.SoftwarePackage.eNS_URI) instanceof org.eclipse.papyrus.iotml.software.impl.SoftwarePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(org.eclipse.papyrus.iotml.software.SoftwarePackage.eNS_URI) : org.eclipse.papyrus.iotml.software.SoftwarePackage.eINSTANCE);
-		org.eclipse.papyrus.iotml.software.core.impl.CorePackageImpl theCorePackage_1 = (org.eclipse.papyrus.iotml.software.core.impl.CorePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(org.eclipse.papyrus.iotml.software.core.CorePackage.eNS_URI) instanceof org.eclipse.papyrus.iotml.software.core.impl.CorePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(org.eclipse.papyrus.iotml.software.core.CorePackage.eNS_URI) : org.eclipse.papyrus.iotml.software.core.CorePackage.eINSTANCE);
-		StructurePackageImpl theStructurePackage = (StructurePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(StructurePackage.eNS_URI) instanceof StructurePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(StructurePackage.eNS_URI) : StructurePackage.eINSTANCE);
-		ResourcePackageImpl theResourcePackage = (ResourcePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(ResourcePackage.eNS_URI) instanceof ResourcePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(ResourcePackage.eNS_URI) : ResourcePackage.eINSTANCE);
-		ArtefactPackageImpl theArtefactPackage = (ArtefactPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(ArtefactPackage.eNS_URI) instanceof ArtefactPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(ArtefactPackage.eNS_URI) : ArtefactPackage.eINSTANCE);
+		Object registeredPackage = EPackage.Registry.INSTANCE.getEPackage(AnimatePackage.eNS_URI);
+		AnimatePackageImpl theAnimatePackage = (AnimatePackageImpl)(registeredPackage instanceof AnimatePackageImpl ? registeredPackage : AnimatePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(ActuatorPackage.eNS_URI);
+		ActuatorPackageImpl theActuatorPackage = (ActuatorPackageImpl)(registeredPackage instanceof ActuatorPackageImpl ? registeredPackage : ActuatorPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(SensorPackage.eNS_URI);
+		SensorPackageImpl theSensorPackage = (SensorPackageImpl)(registeredPackage instanceof SensorPackageImpl ? registeredPackage : SensorPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(NetworkPackage.eNS_URI);
+		NetworkPackageImpl theNetworkPackage = (NetworkPackageImpl)(registeredPackage instanceof NetworkPackageImpl ? registeredPackage : NetworkPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(CorePackage.eNS_URI);
+		CorePackageImpl theCorePackage = (CorePackageImpl)(registeredPackage instanceof CorePackageImpl ? registeredPackage : CorePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(SoftwarePackage.eNS_URI);
+		SoftwarePackageImpl theSoftwarePackage = (SoftwarePackageImpl)(registeredPackage instanceof SoftwarePackageImpl ? registeredPackage : SoftwarePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(ProtocolPackage.eNS_URI);
+		ProtocolPackageImpl theProtocolPackage = (ProtocolPackageImpl)(registeredPackage instanceof ProtocolPackageImpl ? registeredPackage : ProtocolPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(HardwarePackage.eNS_URI);
+		HardwarePackageImpl theHardwarePackage = (HardwarePackageImpl)(registeredPackage instanceof HardwarePackageImpl ? registeredPackage : HardwarePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(StorePackage.eNS_URI);
+		StorePackageImpl theStorePackage = (StorePackageImpl)(registeredPackage instanceof StorePackageImpl ? registeredPackage : StorePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(StructurePackage.eNS_URI);
+		StructurePackageImpl theStructurePackage = (StructurePackageImpl)(registeredPackage instanceof StructurePackageImpl ? registeredPackage : StructurePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(ResourcePackage.eNS_URI);
+		ResourcePackageImpl theResourcePackage = (ResourcePackageImpl)(registeredPackage instanceof ResourcePackageImpl ? registeredPackage : ResourcePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(ArtefactPackage.eNS_URI);
+		ArtefactPackageImpl theArtefactPackage = (ArtefactPackageImpl)(registeredPackage instanceof ArtefactPackageImpl ? registeredPackage : ArtefactPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(SensinactPackage.eNS_URI);
+		SensinactPackageImpl theSensinactPackage = (SensinactPackageImpl)(registeredPackage instanceof SensinactPackageImpl ? registeredPackage : SensinactPackage.eINSTANCE);
 
 		// Create package meta-data objects
 		theHybridPackage.createPackageContents();
-		theIoTMLPackage.createPackageContents();
 		theAnimatePackage.createPackageContents();
-		theHardwarePackage.createPackageContents();
 		theActuatorPackage.createPackageContents();
 		theSensorPackage.createPackageContents();
 		theNetworkPackage.createPackageContents();
 		theCorePackage.createPackageContents();
-		theS3pmlPackage.createPackageContents();
 		theSoftwarePackage.createPackageContents();
 		theProtocolPackage.createPackageContents();
-		theHardwarePackage_1.createPackageContents();
+		theHardwarePackage.createPackageContents();
 		theStorePackage.createPackageContents();
-		theSoftwarePackage_1.createPackageContents();
-		theCorePackage_1.createPackageContents();
 		theStructurePackage.createPackageContents();
 		theResourcePackage.createPackageContents();
 		theArtefactPackage.createPackageContents();
+		theSensinactPackage.createPackageContents();
 
 		// Initialize created meta-data
 		theHybridPackage.initializePackageContents();
-		theIoTMLPackage.initializePackageContents();
 		theAnimatePackage.initializePackageContents();
-		theHardwarePackage.initializePackageContents();
 		theActuatorPackage.initializePackageContents();
 		theSensorPackage.initializePackageContents();
 		theNetworkPackage.initializePackageContents();
 		theCorePackage.initializePackageContents();
-		theS3pmlPackage.initializePackageContents();
 		theSoftwarePackage.initializePackageContents();
 		theProtocolPackage.initializePackageContents();
-		theHardwarePackage_1.initializePackageContents();
+		theHardwarePackage.initializePackageContents();
 		theStorePackage.initializePackageContents();
-		theSoftwarePackage_1.initializePackageContents();
-		theCorePackage_1.initializePackageContents();
 		theStructurePackage.initializePackageContents();
 		theResourcePackage.initializePackageContents();
 		theArtefactPackage.initializePackageContents();
+		theSensinactPackage.initializePackageContents();
 
 		// Mark meta-data to indicate it can't be changed
 		theHybridPackage.freeze();
 
-  
 		// Update the registry and return the package
 		EPackage.Registry.INSTANCE.put(HybridPackage.eNS_URI, theHybridPackage);
 		return theHybridPackage;
@@ -322,6 +318,9 @@
 		// Initialize classes and features; add operations and parameters
 		initEClass(physicalEntityEClass, PhysicalEntity.class, "PhysicalEntity", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 
+		// Create resource
+		createResource(eNS_URI);
+
 		// Create annotations
 		// http://www.eclipse.org/uml2/2.0.0/UML
 		createUMLAnnotations();
@@ -334,12 +333,12 @@
 	 * @generated
 	 */
 	protected void createUMLAnnotations() {
-		String source = "http://www.eclipse.org/uml2/2.0.0/UML";	
+		String source = "http://www.eclipse.org/uml2/2.0.0/UML";
 		addAnnotation
-		  (this, 
-		   source, 
+		  (this,
+		   source,
 		   new String[] {
-			 "originalName", "Hybrid"
+			   "originalName", "Hybrid"
 		   });
 	}
 
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/impl/IoTMLPackageImpl.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/impl/IoTMLPackageImpl.java
index 97947f7..8d5f2f1 100644
--- a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/impl/IoTMLPackageImpl.java
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/impl/IoTMLPackageImpl.java
@@ -83,6 +83,10 @@
 
 import org.eclipse.papyrus.iotml.s3pml.software.impl.SoftwarePackageImpl;
 
+import org.eclipse.papyrus.iotml.sensinact.SensinactPackage;
+
+import org.eclipse.papyrus.iotml.sensinact.impl.SensinactPackageImpl;
+
 import org.eclipse.papyrus.iotml.software.artefact.ArtefactPackage;
 
 import org.eclipse.papyrus.iotml.software.artefact.impl.ArtefactPackageImpl;
@@ -184,6 +188,7 @@
 		NetworkPackageImpl theNetworkPackage = (NetworkPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(NetworkPackage.eNS_URI) instanceof NetworkPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(NetworkPackage.eNS_URI) : NetworkPackage.eINSTANCE);
 		CorePackageImpl theCorePackage = (CorePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(CorePackage.eNS_URI) instanceof CorePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(CorePackage.eNS_URI) : CorePackage.eINSTANCE);
 		S3pmlPackageImpl theS3pmlPackage = (S3pmlPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(S3pmlPackage.eNS_URI) instanceof S3pmlPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(S3pmlPackage.eNS_URI) : S3pmlPackage.eINSTANCE);
+		SensinactPackageImpl theSensinactPackage = (SensinactPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(SensinactPackage.eNS_URI) instanceof SensinactPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(SensinactPackage.eNS_URI) : SensinactPackage.eINSTANCE);
 		SoftwarePackageImpl theSoftwarePackage = (SoftwarePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(SoftwarePackage.eNS_URI) instanceof SoftwarePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(SoftwarePackage.eNS_URI) : SoftwarePackage.eINSTANCE);
 		ProtocolPackageImpl theProtocolPackage = (ProtocolPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(ProtocolPackage.eNS_URI) instanceof ProtocolPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(ProtocolPackage.eNS_URI) : ProtocolPackage.eINSTANCE);
 		HardwarePackageImpl theHardwarePackage_1 = (HardwarePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(HardwarePackage.eNS_URI) instanceof HardwarePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(HardwarePackage.eNS_URI) : HardwarePackage.eINSTANCE);
@@ -204,6 +209,7 @@
 		theNetworkPackage.createPackageContents();
 		theCorePackage.createPackageContents();
 		theS3pmlPackage.createPackageContents();
+		theSensinactPackage.createPackageContents();
 		theSoftwarePackage.createPackageContents();
 		theProtocolPackage.createPackageContents();
 		theHardwarePackage_1.createPackageContents();
@@ -224,6 +230,7 @@
 		theNetworkPackage.initializePackageContents();
 		theCorePackage.initializePackageContents();
 		theS3pmlPackage.initializePackageContents();
+		theSensinactPackage.initializePackageContents();
 		theSoftwarePackage.initializePackageContents();
 		theProtocolPackage.initializePackageContents();
 		theHardwarePackage_1.initializePackageContents();
@@ -311,6 +318,7 @@
 		AnimatePackage theAnimatePackage = (AnimatePackage)EPackage.Registry.INSTANCE.getEPackage(AnimatePackage.eNS_URI);
 		org.eclipse.papyrus.iotml.hardware.HardwarePackage theHardwarePackage = (org.eclipse.papyrus.iotml.hardware.HardwarePackage)EPackage.Registry.INSTANCE.getEPackage(org.eclipse.papyrus.iotml.hardware.HardwarePackage.eNS_URI);
 		S3pmlPackage theS3pmlPackage = (S3pmlPackage)EPackage.Registry.INSTANCE.getEPackage(S3pmlPackage.eNS_URI);
+		SensinactPackage theSensinactPackage = (SensinactPackage)EPackage.Registry.INSTANCE.getEPackage(SensinactPackage.eNS_URI);
 		org.eclipse.papyrus.iotml.software.SoftwarePackage theSoftwarePackage_1 = (org.eclipse.papyrus.iotml.software.SoftwarePackage)EPackage.Registry.INSTANCE.getEPackage(org.eclipse.papyrus.iotml.software.SoftwarePackage.eNS_URI);
 		HybridPackage theHybridPackage = (HybridPackage)EPackage.Registry.INSTANCE.getEPackage(HybridPackage.eNS_URI);
 
@@ -318,6 +326,7 @@
 		getESubpackages().add(theAnimatePackage);
 		getESubpackages().add(theHardwarePackage);
 		getESubpackages().add(theS3pmlPackage);
+		getESubpackages().add(theSensinactPackage);
 		getESubpackages().add(theSoftwarePackage_1);
 		getESubpackages().add(theHybridPackage);
 
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/s3pml/hardware/impl/HardwarePackageImpl.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/s3pml/hardware/impl/HardwarePackageImpl.java
index ea0eb54..9660403 100644
--- a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/s3pml/hardware/impl/HardwarePackageImpl.java
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/s3pml/hardware/impl/HardwarePackageImpl.java
@@ -40,9 +40,6 @@
 import org.eclipse.papyrus.MARTE_Library.TimeLibrary.TimeLibraryPackage;
 
 import org.eclipse.papyrus.MARTE_Library.TimeTypesLibrary.TimeTypesLibraryPackage;
-
-import org.eclipse.papyrus.iotml.IoTMLPackage;
-
 import org.eclipse.papyrus.iotml.animate.AnimatePackage;
 
 import org.eclipse.papyrus.iotml.animate.impl.AnimatePackageImpl;
@@ -66,10 +63,6 @@
 import org.eclipse.papyrus.iotml.hybrid.HybridPackage;
 
 import org.eclipse.papyrus.iotml.hybrid.impl.HybridPackageImpl;
-
-import org.eclipse.papyrus.iotml.impl.IoTMLPackageImpl;
-
-import org.eclipse.papyrus.iotml.s3pml.S3pmlPackage;
 import org.eclipse.papyrus.iotml.s3pml.hardware.HardwareFactory;
 import org.eclipse.papyrus.iotml.s3pml.hardware.HardwarePackage;
 import org.eclipse.papyrus.iotml.s3pml.hardware.IoTBoard;
@@ -80,8 +73,6 @@
 import org.eclipse.papyrus.iotml.s3pml.hardware.store.StorePackage;
 
 import org.eclipse.papyrus.iotml.s3pml.hardware.store.impl.StorePackageImpl;
-
-import org.eclipse.papyrus.iotml.s3pml.impl.S3pmlPackageImpl;
 import org.eclipse.papyrus.iotml.s3pml.protocol.ProtocolPackage;
 
 import org.eclipse.papyrus.iotml.s3pml.protocol.impl.ProtocolPackageImpl;
@@ -90,6 +81,8 @@
 
 import org.eclipse.papyrus.iotml.s3pml.software.impl.SoftwarePackageImpl;
 
+import org.eclipse.papyrus.iotml.sensinact.SensinactPackage;
+import org.eclipse.papyrus.iotml.sensinact.impl.SensinactPackageImpl;
 import org.eclipse.papyrus.iotml.software.artefact.ArtefactPackage;
 
 import org.eclipse.papyrus.iotml.software.artefact.impl.ArtefactPackageImpl;
@@ -107,6 +100,7 @@
 import org.eclipse.uml2.types.TypesPackage;
 
 import org.eclipse.uml2.uml.UMLPackage;
+import org.eclipse.uml2.uml.profile.standard.StandardPackage;
 
 /**
  * <!-- begin-user-doc -->
@@ -171,7 +165,7 @@
 
 	/**
 	 * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
-	 * 
+	 *
 	 * <p>This method is used to initialize {@link HardwarePackage#eINSTANCE} when that field is accessed.
 	 * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
 	 * <!-- begin-user-doc -->
@@ -185,7 +179,8 @@
 		if (isInited) return (HardwarePackage)EPackage.Registry.INSTANCE.getEPackage(HardwarePackage.eNS_URI);
 
 		// Obtain or create and register package
-		HardwarePackageImpl theHardwarePackage = (HardwarePackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof HardwarePackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new HardwarePackageImpl());
+		Object registeredHardwarePackage = EPackage.Registry.INSTANCE.get(eNS_URI);
+		HardwarePackageImpl theHardwarePackage = registeredHardwarePackage instanceof HardwarePackageImpl ? (HardwarePackageImpl)registeredHardwarePackage : new HardwarePackageImpl();
 
 		isInited = true;
 
@@ -203,70 +198,71 @@
 		sysmlPackage.eINSTANCE.eClass();
 		TypesPackage.eINSTANCE.eClass();
 		UMLPackage.eINSTANCE.eClass();
+		StandardPackage.eINSTANCE.eClass();
 
 		// Obtain or create and register interdependencies
-		IoTMLPackageImpl theIoTMLPackage = (IoTMLPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(IoTMLPackage.eNS_URI) instanceof IoTMLPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(IoTMLPackage.eNS_URI) : IoTMLPackage.eINSTANCE);
-		AnimatePackageImpl theAnimatePackage = (AnimatePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(AnimatePackage.eNS_URI) instanceof AnimatePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(AnimatePackage.eNS_URI) : AnimatePackage.eINSTANCE);
-		org.eclipse.papyrus.iotml.hardware.impl.HardwarePackageImpl theHardwarePackage_1 = (org.eclipse.papyrus.iotml.hardware.impl.HardwarePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(org.eclipse.papyrus.iotml.hardware.HardwarePackage.eNS_URI) instanceof org.eclipse.papyrus.iotml.hardware.impl.HardwarePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(org.eclipse.papyrus.iotml.hardware.HardwarePackage.eNS_URI) : org.eclipse.papyrus.iotml.hardware.HardwarePackage.eINSTANCE);
-		ActuatorPackageImpl theActuatorPackage = (ActuatorPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(ActuatorPackage.eNS_URI) instanceof ActuatorPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(ActuatorPackage.eNS_URI) : ActuatorPackage.eINSTANCE);
-		SensorPackageImpl theSensorPackage = (SensorPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(SensorPackage.eNS_URI) instanceof SensorPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(SensorPackage.eNS_URI) : SensorPackage.eINSTANCE);
-		NetworkPackageImpl theNetworkPackage = (NetworkPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(NetworkPackage.eNS_URI) instanceof NetworkPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(NetworkPackage.eNS_URI) : NetworkPackage.eINSTANCE);
-		CorePackageImpl theCorePackage = (CorePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(CorePackage.eNS_URI) instanceof CorePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(CorePackage.eNS_URI) : CorePackage.eINSTANCE);
-		S3pmlPackageImpl theS3pmlPackage = (S3pmlPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(S3pmlPackage.eNS_URI) instanceof S3pmlPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(S3pmlPackage.eNS_URI) : S3pmlPackage.eINSTANCE);
-		SoftwarePackageImpl theSoftwarePackage = (SoftwarePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(SoftwarePackage.eNS_URI) instanceof SoftwarePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(SoftwarePackage.eNS_URI) : SoftwarePackage.eINSTANCE);
-		ProtocolPackageImpl theProtocolPackage = (ProtocolPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(ProtocolPackage.eNS_URI) instanceof ProtocolPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(ProtocolPackage.eNS_URI) : ProtocolPackage.eINSTANCE);
-		StorePackageImpl theStorePackage = (StorePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(StorePackage.eNS_URI) instanceof StorePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(StorePackage.eNS_URI) : StorePackage.eINSTANCE);
-		org.eclipse.papyrus.iotml.software.impl.SoftwarePackageImpl theSoftwarePackage_1 = (org.eclipse.papyrus.iotml.software.impl.SoftwarePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(org.eclipse.papyrus.iotml.software.SoftwarePackage.eNS_URI) instanceof org.eclipse.papyrus.iotml.software.impl.SoftwarePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(org.eclipse.papyrus.iotml.software.SoftwarePackage.eNS_URI) : org.eclipse.papyrus.iotml.software.SoftwarePackage.eINSTANCE);
-		org.eclipse.papyrus.iotml.software.core.impl.CorePackageImpl theCorePackage_1 = (org.eclipse.papyrus.iotml.software.core.impl.CorePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(org.eclipse.papyrus.iotml.software.core.CorePackage.eNS_URI) instanceof org.eclipse.papyrus.iotml.software.core.impl.CorePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(org.eclipse.papyrus.iotml.software.core.CorePackage.eNS_URI) : org.eclipse.papyrus.iotml.software.core.CorePackage.eINSTANCE);
-		StructurePackageImpl theStructurePackage = (StructurePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(StructurePackage.eNS_URI) instanceof StructurePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(StructurePackage.eNS_URI) : StructurePackage.eINSTANCE);
-		ResourcePackageImpl theResourcePackage = (ResourcePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(ResourcePackage.eNS_URI) instanceof ResourcePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(ResourcePackage.eNS_URI) : ResourcePackage.eINSTANCE);
-		ArtefactPackageImpl theArtefactPackage = (ArtefactPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(ArtefactPackage.eNS_URI) instanceof ArtefactPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(ArtefactPackage.eNS_URI) : ArtefactPackage.eINSTANCE);
-		HybridPackageImpl theHybridPackage = (HybridPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(HybridPackage.eNS_URI) instanceof HybridPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(HybridPackage.eNS_URI) : HybridPackage.eINSTANCE);
+		Object registeredPackage = EPackage.Registry.INSTANCE.getEPackage(AnimatePackage.eNS_URI);
+		AnimatePackageImpl theAnimatePackage = (AnimatePackageImpl)(registeredPackage instanceof AnimatePackageImpl ? registeredPackage : AnimatePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(ActuatorPackage.eNS_URI);
+		ActuatorPackageImpl theActuatorPackage = (ActuatorPackageImpl)(registeredPackage instanceof ActuatorPackageImpl ? registeredPackage : ActuatorPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(SensorPackage.eNS_URI);
+		SensorPackageImpl theSensorPackage = (SensorPackageImpl)(registeredPackage instanceof SensorPackageImpl ? registeredPackage : SensorPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(NetworkPackage.eNS_URI);
+		NetworkPackageImpl theNetworkPackage = (NetworkPackageImpl)(registeredPackage instanceof NetworkPackageImpl ? registeredPackage : NetworkPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(CorePackage.eNS_URI);
+		CorePackageImpl theCorePackage = (CorePackageImpl)(registeredPackage instanceof CorePackageImpl ? registeredPackage : CorePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(SoftwarePackage.eNS_URI);
+		SoftwarePackageImpl theSoftwarePackage = (SoftwarePackageImpl)(registeredPackage instanceof SoftwarePackageImpl ? registeredPackage : SoftwarePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(ProtocolPackage.eNS_URI);
+		ProtocolPackageImpl theProtocolPackage = (ProtocolPackageImpl)(registeredPackage instanceof ProtocolPackageImpl ? registeredPackage : ProtocolPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(StorePackage.eNS_URI);
+		StorePackageImpl theStorePackage = (StorePackageImpl)(registeredPackage instanceof StorePackageImpl ? registeredPackage : StorePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(StructurePackage.eNS_URI);
+		StructurePackageImpl theStructurePackage = (StructurePackageImpl)(registeredPackage instanceof StructurePackageImpl ? registeredPackage : StructurePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(ResourcePackage.eNS_URI);
+		ResourcePackageImpl theResourcePackage = (ResourcePackageImpl)(registeredPackage instanceof ResourcePackageImpl ? registeredPackage : ResourcePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(ArtefactPackage.eNS_URI);
+		ArtefactPackageImpl theArtefactPackage = (ArtefactPackageImpl)(registeredPackage instanceof ArtefactPackageImpl ? registeredPackage : ArtefactPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(HybridPackage.eNS_URI);
+		HybridPackageImpl theHybridPackage = (HybridPackageImpl)(registeredPackage instanceof HybridPackageImpl ? registeredPackage : HybridPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(SensinactPackage.eNS_URI);
+		SensinactPackageImpl theSensinactPackage = (SensinactPackageImpl)(registeredPackage instanceof SensinactPackageImpl ? registeredPackage : SensinactPackage.eINSTANCE);
 
 		// Create package meta-data objects
 		theHardwarePackage.createPackageContents();
-		theIoTMLPackage.createPackageContents();
 		theAnimatePackage.createPackageContents();
-		theHardwarePackage_1.createPackageContents();
 		theActuatorPackage.createPackageContents();
 		theSensorPackage.createPackageContents();
 		theNetworkPackage.createPackageContents();
 		theCorePackage.createPackageContents();
-		theS3pmlPackage.createPackageContents();
 		theSoftwarePackage.createPackageContents();
 		theProtocolPackage.createPackageContents();
 		theStorePackage.createPackageContents();
-		theSoftwarePackage_1.createPackageContents();
-		theCorePackage_1.createPackageContents();
 		theStructurePackage.createPackageContents();
 		theResourcePackage.createPackageContents();
 		theArtefactPackage.createPackageContents();
 		theHybridPackage.createPackageContents();
+		theSensinactPackage.createPackageContents();
 
 		// Initialize created meta-data
 		theHardwarePackage.initializePackageContents();
-		theIoTMLPackage.initializePackageContents();
 		theAnimatePackage.initializePackageContents();
-		theHardwarePackage_1.initializePackageContents();
 		theActuatorPackage.initializePackageContents();
 		theSensorPackage.initializePackageContents();
 		theNetworkPackage.initializePackageContents();
 		theCorePackage.initializePackageContents();
-		theS3pmlPackage.initializePackageContents();
 		theSoftwarePackage.initializePackageContents();
 		theProtocolPackage.initializePackageContents();
 		theStorePackage.initializePackageContents();
-		theSoftwarePackage_1.initializePackageContents();
-		theCorePackage_1.initializePackageContents();
 		theStructurePackage.initializePackageContents();
 		theResourcePackage.initializePackageContents();
 		theArtefactPackage.initializePackageContents();
 		theHybridPackage.initializePackageContents();
+		theSensinactPackage.initializePackageContents();
 
 		// Mark meta-data to indicate it can't be changed
 		theHardwarePackage.freeze();
 
-  
 		// Update the registry and return the package
 		EPackage.Registry.INSTANCE.put(HardwarePackage.eNS_URI, theHardwarePackage);
 		return theHardwarePackage;
@@ -462,6 +458,9 @@
 		initEReference(getIoTDevice_DeviceType(), this.getIoTDeviceType(), null, "deviceType", null, 0, 1, IoTDevice.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
 		initEReference(getIoTDevice_Board(), this.getIoTBoard(), null, "board", null, 0, 1, IoTDevice.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
 
+		// Create resource
+		createResource(eNS_URI);
+
 		// Create annotations
 		// http://www.eclipse.org/uml2/2.0.0/UML
 		createUMLAnnotations();
@@ -474,12 +473,12 @@
 	 * @generated
 	 */
 	protected void createUMLAnnotations() {
-		String source = "http://www.eclipse.org/uml2/2.0.0/UML";	
+		String source = "http://www.eclipse.org/uml2/2.0.0/UML";
 		addAnnotation
-		  (this, 
-		   source, 
+		  (this,
+		   source,
 		   new String[] {
-			 "originalName", "Hardware"
+			   "originalName", "Hardware"
 		   });
 	}
 
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/s3pml/hardware/impl/IoTBoardImpl.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/s3pml/hardware/impl/IoTBoardImpl.java
index 097d661..521c9f3 100644
--- a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/s3pml/hardware/impl/IoTBoardImpl.java
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/s3pml/hardware/impl/IoTBoardImpl.java
@@ -215,7 +215,7 @@
 	public String toString() {
 		if (eIsProxy()) return super.toString();
 
-		StringBuffer result = new StringBuffer(super.toString());
+		StringBuilder result = new StringBuilder(super.toString());
 		result.append(" (uid: ");
 		result.append(uid);
 		result.append(", auto: ");
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/s3pml/hardware/store/impl/StoreImpl.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/s3pml/hardware/store/impl/StoreImpl.java
index 8b388ff..68667a2 100644
--- a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/s3pml/hardware/store/impl/StoreImpl.java
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/s3pml/hardware/store/impl/StoreImpl.java
@@ -165,7 +165,7 @@
 	public String toString() {
 		if (eIsProxy()) return super.toString();
 
-		StringBuffer result = new StringBuffer(super.toString());
+		StringBuilder result = new StringBuilder(super.toString());
 		result.append(" (url: ");
 		result.append(url);
 		result.append(')');
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/s3pml/hardware/store/impl/StorePackageImpl.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/s3pml/hardware/store/impl/StorePackageImpl.java
index 1f7e259..ef62407 100644
--- a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/s3pml/hardware/store/impl/StorePackageImpl.java
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/s3pml/hardware/store/impl/StorePackageImpl.java
@@ -38,15 +38,9 @@
 import org.eclipse.papyrus.MARTE_Library.TimeLibrary.TimeLibraryPackage;
 
 import org.eclipse.papyrus.MARTE_Library.TimeTypesLibrary.TimeTypesLibraryPackage;
-
-import org.eclipse.papyrus.iotml.IoTMLPackage;
-
 import org.eclipse.papyrus.iotml.animate.AnimatePackage;
 
 import org.eclipse.papyrus.iotml.animate.impl.AnimatePackageImpl;
-
-import org.eclipse.papyrus.iotml.hardware.HardwarePackage;
-
 import org.eclipse.papyrus.iotml.hardware.actuator.ActuatorPackage;
 
 import org.eclipse.papyrus.iotml.hardware.actuator.impl.ActuatorPackageImpl;
@@ -54,9 +48,6 @@
 import org.eclipse.papyrus.iotml.hardware.core.CorePackage;
 
 import org.eclipse.papyrus.iotml.hardware.core.impl.CorePackageImpl;
-
-import org.eclipse.papyrus.iotml.hardware.impl.HardwarePackageImpl;
-
 import org.eclipse.papyrus.iotml.hardware.network.NetworkPackage;
 
 import org.eclipse.papyrus.iotml.hardware.network.impl.NetworkPackageImpl;
@@ -68,16 +59,12 @@
 import org.eclipse.papyrus.iotml.hybrid.HybridPackage;
 
 import org.eclipse.papyrus.iotml.hybrid.impl.HybridPackageImpl;
-
-import org.eclipse.papyrus.iotml.impl.IoTMLPackageImpl;
-
-import org.eclipse.papyrus.iotml.s3pml.S3pmlPackage;
+import org.eclipse.papyrus.iotml.s3pml.hardware.HardwarePackage;
+import org.eclipse.papyrus.iotml.s3pml.hardware.impl.HardwarePackageImpl;
 import org.eclipse.papyrus.iotml.s3pml.hardware.store.CompositeStore;
 import org.eclipse.papyrus.iotml.s3pml.hardware.store.Store;
 import org.eclipse.papyrus.iotml.s3pml.hardware.store.StoreFactory;
 import org.eclipse.papyrus.iotml.s3pml.hardware.store.StorePackage;
-
-import org.eclipse.papyrus.iotml.s3pml.impl.S3pmlPackageImpl;
 import org.eclipse.papyrus.iotml.s3pml.protocol.ProtocolPackage;
 
 import org.eclipse.papyrus.iotml.s3pml.protocol.impl.ProtocolPackageImpl;
@@ -86,6 +73,8 @@
 
 import org.eclipse.papyrus.iotml.s3pml.software.impl.SoftwarePackageImpl;
 
+import org.eclipse.papyrus.iotml.sensinact.SensinactPackage;
+import org.eclipse.papyrus.iotml.sensinact.impl.SensinactPackageImpl;
 import org.eclipse.papyrus.iotml.software.artefact.ArtefactPackage;
 
 import org.eclipse.papyrus.iotml.software.artefact.impl.ArtefactPackageImpl;
@@ -103,6 +92,7 @@
 import org.eclipse.uml2.types.TypesPackage;
 
 import org.eclipse.uml2.uml.UMLPackage;
+import org.eclipse.uml2.uml.profile.standard.StandardPackage;
 
 /**
  * <!-- begin-user-doc -->
@@ -153,7 +143,7 @@
 
 	/**
 	 * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
-	 * 
+	 *
 	 * <p>This method is used to initialize {@link StorePackage#eINSTANCE} when that field is accessed.
 	 * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
 	 * <!-- begin-user-doc -->
@@ -167,7 +157,8 @@
 		if (isInited) return (StorePackage)EPackage.Registry.INSTANCE.getEPackage(StorePackage.eNS_URI);
 
 		// Obtain or create and register package
-		StorePackageImpl theStorePackage = (StorePackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof StorePackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new StorePackageImpl());
+		Object registeredStorePackage = EPackage.Registry.INSTANCE.get(eNS_URI);
+		StorePackageImpl theStorePackage = registeredStorePackage instanceof StorePackageImpl ? (StorePackageImpl)registeredStorePackage : new StorePackageImpl();
 
 		isInited = true;
 
@@ -185,70 +176,71 @@
 		sysmlPackage.eINSTANCE.eClass();
 		TypesPackage.eINSTANCE.eClass();
 		UMLPackage.eINSTANCE.eClass();
+		StandardPackage.eINSTANCE.eClass();
 
 		// Obtain or create and register interdependencies
-		IoTMLPackageImpl theIoTMLPackage = (IoTMLPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(IoTMLPackage.eNS_URI) instanceof IoTMLPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(IoTMLPackage.eNS_URI) : IoTMLPackage.eINSTANCE);
-		AnimatePackageImpl theAnimatePackage = (AnimatePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(AnimatePackage.eNS_URI) instanceof AnimatePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(AnimatePackage.eNS_URI) : AnimatePackage.eINSTANCE);
-		HardwarePackageImpl theHardwarePackage = (HardwarePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(HardwarePackage.eNS_URI) instanceof HardwarePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(HardwarePackage.eNS_URI) : HardwarePackage.eINSTANCE);
-		ActuatorPackageImpl theActuatorPackage = (ActuatorPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(ActuatorPackage.eNS_URI) instanceof ActuatorPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(ActuatorPackage.eNS_URI) : ActuatorPackage.eINSTANCE);
-		SensorPackageImpl theSensorPackage = (SensorPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(SensorPackage.eNS_URI) instanceof SensorPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(SensorPackage.eNS_URI) : SensorPackage.eINSTANCE);
-		NetworkPackageImpl theNetworkPackage = (NetworkPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(NetworkPackage.eNS_URI) instanceof NetworkPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(NetworkPackage.eNS_URI) : NetworkPackage.eINSTANCE);
-		CorePackageImpl theCorePackage = (CorePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(CorePackage.eNS_URI) instanceof CorePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(CorePackage.eNS_URI) : CorePackage.eINSTANCE);
-		S3pmlPackageImpl theS3pmlPackage = (S3pmlPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(S3pmlPackage.eNS_URI) instanceof S3pmlPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(S3pmlPackage.eNS_URI) : S3pmlPackage.eINSTANCE);
-		SoftwarePackageImpl theSoftwarePackage = (SoftwarePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(SoftwarePackage.eNS_URI) instanceof SoftwarePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(SoftwarePackage.eNS_URI) : SoftwarePackage.eINSTANCE);
-		ProtocolPackageImpl theProtocolPackage = (ProtocolPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(ProtocolPackage.eNS_URI) instanceof ProtocolPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(ProtocolPackage.eNS_URI) : ProtocolPackage.eINSTANCE);
-		org.eclipse.papyrus.iotml.s3pml.hardware.impl.HardwarePackageImpl theHardwarePackage_1 = (org.eclipse.papyrus.iotml.s3pml.hardware.impl.HardwarePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(org.eclipse.papyrus.iotml.s3pml.hardware.HardwarePackage.eNS_URI) instanceof org.eclipse.papyrus.iotml.s3pml.hardware.impl.HardwarePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(org.eclipse.papyrus.iotml.s3pml.hardware.HardwarePackage.eNS_URI) : org.eclipse.papyrus.iotml.s3pml.hardware.HardwarePackage.eINSTANCE);
-		org.eclipse.papyrus.iotml.software.impl.SoftwarePackageImpl theSoftwarePackage_1 = (org.eclipse.papyrus.iotml.software.impl.SoftwarePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(org.eclipse.papyrus.iotml.software.SoftwarePackage.eNS_URI) instanceof org.eclipse.papyrus.iotml.software.impl.SoftwarePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(org.eclipse.papyrus.iotml.software.SoftwarePackage.eNS_URI) : org.eclipse.papyrus.iotml.software.SoftwarePackage.eINSTANCE);
-		org.eclipse.papyrus.iotml.software.core.impl.CorePackageImpl theCorePackage_1 = (org.eclipse.papyrus.iotml.software.core.impl.CorePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(org.eclipse.papyrus.iotml.software.core.CorePackage.eNS_URI) instanceof org.eclipse.papyrus.iotml.software.core.impl.CorePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(org.eclipse.papyrus.iotml.software.core.CorePackage.eNS_URI) : org.eclipse.papyrus.iotml.software.core.CorePackage.eINSTANCE);
-		StructurePackageImpl theStructurePackage = (StructurePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(StructurePackage.eNS_URI) instanceof StructurePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(StructurePackage.eNS_URI) : StructurePackage.eINSTANCE);
-		ResourcePackageImpl theResourcePackage = (ResourcePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(ResourcePackage.eNS_URI) instanceof ResourcePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(ResourcePackage.eNS_URI) : ResourcePackage.eINSTANCE);
-		ArtefactPackageImpl theArtefactPackage = (ArtefactPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(ArtefactPackage.eNS_URI) instanceof ArtefactPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(ArtefactPackage.eNS_URI) : ArtefactPackage.eINSTANCE);
-		HybridPackageImpl theHybridPackage = (HybridPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(HybridPackage.eNS_URI) instanceof HybridPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(HybridPackage.eNS_URI) : HybridPackage.eINSTANCE);
+		Object registeredPackage = EPackage.Registry.INSTANCE.getEPackage(AnimatePackage.eNS_URI);
+		AnimatePackageImpl theAnimatePackage = (AnimatePackageImpl)(registeredPackage instanceof AnimatePackageImpl ? registeredPackage : AnimatePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(ActuatorPackage.eNS_URI);
+		ActuatorPackageImpl theActuatorPackage = (ActuatorPackageImpl)(registeredPackage instanceof ActuatorPackageImpl ? registeredPackage : ActuatorPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(SensorPackage.eNS_URI);
+		SensorPackageImpl theSensorPackage = (SensorPackageImpl)(registeredPackage instanceof SensorPackageImpl ? registeredPackage : SensorPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(NetworkPackage.eNS_URI);
+		NetworkPackageImpl theNetworkPackage = (NetworkPackageImpl)(registeredPackage instanceof NetworkPackageImpl ? registeredPackage : NetworkPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(CorePackage.eNS_URI);
+		CorePackageImpl theCorePackage = (CorePackageImpl)(registeredPackage instanceof CorePackageImpl ? registeredPackage : CorePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(SoftwarePackage.eNS_URI);
+		SoftwarePackageImpl theSoftwarePackage = (SoftwarePackageImpl)(registeredPackage instanceof SoftwarePackageImpl ? registeredPackage : SoftwarePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(ProtocolPackage.eNS_URI);
+		ProtocolPackageImpl theProtocolPackage = (ProtocolPackageImpl)(registeredPackage instanceof ProtocolPackageImpl ? registeredPackage : ProtocolPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(HardwarePackage.eNS_URI);
+		HardwarePackageImpl theHardwarePackage = (HardwarePackageImpl)(registeredPackage instanceof HardwarePackageImpl ? registeredPackage : HardwarePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(StructurePackage.eNS_URI);
+		StructurePackageImpl theStructurePackage = (StructurePackageImpl)(registeredPackage instanceof StructurePackageImpl ? registeredPackage : StructurePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(ResourcePackage.eNS_URI);
+		ResourcePackageImpl theResourcePackage = (ResourcePackageImpl)(registeredPackage instanceof ResourcePackageImpl ? registeredPackage : ResourcePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(ArtefactPackage.eNS_URI);
+		ArtefactPackageImpl theArtefactPackage = (ArtefactPackageImpl)(registeredPackage instanceof ArtefactPackageImpl ? registeredPackage : ArtefactPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(HybridPackage.eNS_URI);
+		HybridPackageImpl theHybridPackage = (HybridPackageImpl)(registeredPackage instanceof HybridPackageImpl ? registeredPackage : HybridPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(SensinactPackage.eNS_URI);
+		SensinactPackageImpl theSensinactPackage = (SensinactPackageImpl)(registeredPackage instanceof SensinactPackageImpl ? registeredPackage : SensinactPackage.eINSTANCE);
 
 		// Create package meta-data objects
 		theStorePackage.createPackageContents();
-		theIoTMLPackage.createPackageContents();
 		theAnimatePackage.createPackageContents();
-		theHardwarePackage.createPackageContents();
 		theActuatorPackage.createPackageContents();
 		theSensorPackage.createPackageContents();
 		theNetworkPackage.createPackageContents();
 		theCorePackage.createPackageContents();
-		theS3pmlPackage.createPackageContents();
 		theSoftwarePackage.createPackageContents();
 		theProtocolPackage.createPackageContents();
-		theHardwarePackage_1.createPackageContents();
-		theSoftwarePackage_1.createPackageContents();
-		theCorePackage_1.createPackageContents();
+		theHardwarePackage.createPackageContents();
 		theStructurePackage.createPackageContents();
 		theResourcePackage.createPackageContents();
 		theArtefactPackage.createPackageContents();
 		theHybridPackage.createPackageContents();
+		theSensinactPackage.createPackageContents();
 
 		// Initialize created meta-data
 		theStorePackage.initializePackageContents();
-		theIoTMLPackage.initializePackageContents();
 		theAnimatePackage.initializePackageContents();
-		theHardwarePackage.initializePackageContents();
 		theActuatorPackage.initializePackageContents();
 		theSensorPackage.initializePackageContents();
 		theNetworkPackage.initializePackageContents();
 		theCorePackage.initializePackageContents();
-		theS3pmlPackage.initializePackageContents();
 		theSoftwarePackage.initializePackageContents();
 		theProtocolPackage.initializePackageContents();
-		theHardwarePackage_1.initializePackageContents();
-		theSoftwarePackage_1.initializePackageContents();
-		theCorePackage_1.initializePackageContents();
+		theHardwarePackage.initializePackageContents();
 		theStructurePackage.initializePackageContents();
 		theResourcePackage.initializePackageContents();
 		theArtefactPackage.initializePackageContents();
 		theHybridPackage.initializePackageContents();
+		theSensinactPackage.initializePackageContents();
 
 		// Mark meta-data to indicate it can't be changed
 		theStorePackage.freeze();
 
-  
 		// Update the registry and return the package
 		EPackage.Registry.INSTANCE.put(StorePackage.eNS_URI, theStorePackage);
 		return theStorePackage;
@@ -378,12 +370,12 @@
 	 * @generated
 	 */
 	protected void createUMLAnnotations() {
-		String source = "http://www.eclipse.org/uml2/2.0.0/UML";	
+		String source = "http://www.eclipse.org/uml2/2.0.0/UML";
 		addAnnotation
-		  (this, 
-		   source, 
+		  (this,
+		   source,
 		   new String[] {
-			 "originalName", "Store"
+			   "originalName", "Store"
 		   });
 	}
 
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/s3pml/protocol/impl/ProtocolPackageImpl.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/s3pml/protocol/impl/ProtocolPackageImpl.java
index 4de2811..a51257f 100644
--- a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/s3pml/protocol/impl/ProtocolPackageImpl.java
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/s3pml/protocol/impl/ProtocolPackageImpl.java
@@ -37,15 +37,9 @@
 import org.eclipse.papyrus.MARTE_Library.TimeLibrary.TimeLibraryPackage;
 
 import org.eclipse.papyrus.MARTE_Library.TimeTypesLibrary.TimeTypesLibraryPackage;
-
-import org.eclipse.papyrus.iotml.IoTMLPackage;
-
 import org.eclipse.papyrus.iotml.animate.AnimatePackage;
 
 import org.eclipse.papyrus.iotml.animate.impl.AnimatePackageImpl;
-
-import org.eclipse.papyrus.iotml.hardware.HardwarePackage;
-
 import org.eclipse.papyrus.iotml.hardware.actuator.ActuatorPackage;
 
 import org.eclipse.papyrus.iotml.hardware.actuator.impl.ActuatorPackageImpl;
@@ -53,9 +47,6 @@
 import org.eclipse.papyrus.iotml.hardware.core.CorePackage;
 
 import org.eclipse.papyrus.iotml.hardware.core.impl.CorePackageImpl;
-
-import org.eclipse.papyrus.iotml.hardware.impl.HardwarePackageImpl;
-
 import org.eclipse.papyrus.iotml.hardware.network.NetworkPackage;
 
 import org.eclipse.papyrus.iotml.hardware.network.impl.NetworkPackageImpl;
@@ -67,15 +58,11 @@
 import org.eclipse.papyrus.iotml.hybrid.HybridPackage;
 
 import org.eclipse.papyrus.iotml.hybrid.impl.HybridPackageImpl;
-
-import org.eclipse.papyrus.iotml.impl.IoTMLPackageImpl;
-
-import org.eclipse.papyrus.iotml.s3pml.S3pmlPackage;
+import org.eclipse.papyrus.iotml.s3pml.hardware.HardwarePackage;
+import org.eclipse.papyrus.iotml.s3pml.hardware.impl.HardwarePackageImpl;
 import org.eclipse.papyrus.iotml.s3pml.hardware.store.StorePackage;
 
 import org.eclipse.papyrus.iotml.s3pml.hardware.store.impl.StorePackageImpl;
-
-import org.eclipse.papyrus.iotml.s3pml.impl.S3pmlPackageImpl;
 import org.eclipse.papyrus.iotml.s3pml.protocol.Protocol;
 import org.eclipse.papyrus.iotml.s3pml.protocol.ProtocolFactory;
 import org.eclipse.papyrus.iotml.s3pml.protocol.ProtocolPackage;
@@ -85,6 +72,8 @@
 
 import org.eclipse.papyrus.iotml.s3pml.software.impl.SoftwarePackageImpl;
 
+import org.eclipse.papyrus.iotml.sensinact.SensinactPackage;
+import org.eclipse.papyrus.iotml.sensinact.impl.SensinactPackageImpl;
 import org.eclipse.papyrus.iotml.software.artefact.ArtefactPackage;
 
 import org.eclipse.papyrus.iotml.software.artefact.impl.ArtefactPackageImpl;
@@ -102,6 +91,7 @@
 import org.eclipse.uml2.types.TypesPackage;
 
 import org.eclipse.uml2.uml.UMLPackage;
+import org.eclipse.uml2.uml.profile.standard.StandardPackage;
 
 /**
  * <!-- begin-user-doc -->
@@ -152,7 +142,7 @@
 
 	/**
 	 * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
-	 * 
+	 *
 	 * <p>This method is used to initialize {@link ProtocolPackage#eINSTANCE} when that field is accessed.
 	 * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
 	 * <!-- begin-user-doc -->
@@ -166,7 +156,8 @@
 		if (isInited) return (ProtocolPackage)EPackage.Registry.INSTANCE.getEPackage(ProtocolPackage.eNS_URI);
 
 		// Obtain or create and register package
-		ProtocolPackageImpl theProtocolPackage = (ProtocolPackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof ProtocolPackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new ProtocolPackageImpl());
+		Object registeredProtocolPackage = EPackage.Registry.INSTANCE.get(eNS_URI);
+		ProtocolPackageImpl theProtocolPackage = registeredProtocolPackage instanceof ProtocolPackageImpl ? (ProtocolPackageImpl)registeredProtocolPackage : new ProtocolPackageImpl();
 
 		isInited = true;
 
@@ -184,70 +175,71 @@
 		sysmlPackage.eINSTANCE.eClass();
 		TypesPackage.eINSTANCE.eClass();
 		UMLPackage.eINSTANCE.eClass();
+		StandardPackage.eINSTANCE.eClass();
 
 		// Obtain or create and register interdependencies
-		IoTMLPackageImpl theIoTMLPackage = (IoTMLPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(IoTMLPackage.eNS_URI) instanceof IoTMLPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(IoTMLPackage.eNS_URI) : IoTMLPackage.eINSTANCE);
-		AnimatePackageImpl theAnimatePackage = (AnimatePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(AnimatePackage.eNS_URI) instanceof AnimatePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(AnimatePackage.eNS_URI) : AnimatePackage.eINSTANCE);
-		HardwarePackageImpl theHardwarePackage = (HardwarePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(HardwarePackage.eNS_URI) instanceof HardwarePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(HardwarePackage.eNS_URI) : HardwarePackage.eINSTANCE);
-		ActuatorPackageImpl theActuatorPackage = (ActuatorPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(ActuatorPackage.eNS_URI) instanceof ActuatorPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(ActuatorPackage.eNS_URI) : ActuatorPackage.eINSTANCE);
-		SensorPackageImpl theSensorPackage = (SensorPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(SensorPackage.eNS_URI) instanceof SensorPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(SensorPackage.eNS_URI) : SensorPackage.eINSTANCE);
-		NetworkPackageImpl theNetworkPackage = (NetworkPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(NetworkPackage.eNS_URI) instanceof NetworkPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(NetworkPackage.eNS_URI) : NetworkPackage.eINSTANCE);
-		CorePackageImpl theCorePackage = (CorePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(CorePackage.eNS_URI) instanceof CorePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(CorePackage.eNS_URI) : CorePackage.eINSTANCE);
-		S3pmlPackageImpl theS3pmlPackage = (S3pmlPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(S3pmlPackage.eNS_URI) instanceof S3pmlPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(S3pmlPackage.eNS_URI) : S3pmlPackage.eINSTANCE);
-		SoftwarePackageImpl theSoftwarePackage = (SoftwarePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(SoftwarePackage.eNS_URI) instanceof SoftwarePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(SoftwarePackage.eNS_URI) : SoftwarePackage.eINSTANCE);
-		org.eclipse.papyrus.iotml.s3pml.hardware.impl.HardwarePackageImpl theHardwarePackage_1 = (org.eclipse.papyrus.iotml.s3pml.hardware.impl.HardwarePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(org.eclipse.papyrus.iotml.s3pml.hardware.HardwarePackage.eNS_URI) instanceof org.eclipse.papyrus.iotml.s3pml.hardware.impl.HardwarePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(org.eclipse.papyrus.iotml.s3pml.hardware.HardwarePackage.eNS_URI) : org.eclipse.papyrus.iotml.s3pml.hardware.HardwarePackage.eINSTANCE);
-		StorePackageImpl theStorePackage = (StorePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(StorePackage.eNS_URI) instanceof StorePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(StorePackage.eNS_URI) : StorePackage.eINSTANCE);
-		org.eclipse.papyrus.iotml.software.impl.SoftwarePackageImpl theSoftwarePackage_1 = (org.eclipse.papyrus.iotml.software.impl.SoftwarePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(org.eclipse.papyrus.iotml.software.SoftwarePackage.eNS_URI) instanceof org.eclipse.papyrus.iotml.software.impl.SoftwarePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(org.eclipse.papyrus.iotml.software.SoftwarePackage.eNS_URI) : org.eclipse.papyrus.iotml.software.SoftwarePackage.eINSTANCE);
-		org.eclipse.papyrus.iotml.software.core.impl.CorePackageImpl theCorePackage_1 = (org.eclipse.papyrus.iotml.software.core.impl.CorePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(org.eclipse.papyrus.iotml.software.core.CorePackage.eNS_URI) instanceof org.eclipse.papyrus.iotml.software.core.impl.CorePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(org.eclipse.papyrus.iotml.software.core.CorePackage.eNS_URI) : org.eclipse.papyrus.iotml.software.core.CorePackage.eINSTANCE);
-		StructurePackageImpl theStructurePackage = (StructurePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(StructurePackage.eNS_URI) instanceof StructurePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(StructurePackage.eNS_URI) : StructurePackage.eINSTANCE);
-		ResourcePackageImpl theResourcePackage = (ResourcePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(ResourcePackage.eNS_URI) instanceof ResourcePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(ResourcePackage.eNS_URI) : ResourcePackage.eINSTANCE);
-		ArtefactPackageImpl theArtefactPackage = (ArtefactPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(ArtefactPackage.eNS_URI) instanceof ArtefactPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(ArtefactPackage.eNS_URI) : ArtefactPackage.eINSTANCE);
-		HybridPackageImpl theHybridPackage = (HybridPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(HybridPackage.eNS_URI) instanceof HybridPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(HybridPackage.eNS_URI) : HybridPackage.eINSTANCE);
+		Object registeredPackage = EPackage.Registry.INSTANCE.getEPackage(AnimatePackage.eNS_URI);
+		AnimatePackageImpl theAnimatePackage = (AnimatePackageImpl)(registeredPackage instanceof AnimatePackageImpl ? registeredPackage : AnimatePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(ActuatorPackage.eNS_URI);
+		ActuatorPackageImpl theActuatorPackage = (ActuatorPackageImpl)(registeredPackage instanceof ActuatorPackageImpl ? registeredPackage : ActuatorPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(SensorPackage.eNS_URI);
+		SensorPackageImpl theSensorPackage = (SensorPackageImpl)(registeredPackage instanceof SensorPackageImpl ? registeredPackage : SensorPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(NetworkPackage.eNS_URI);
+		NetworkPackageImpl theNetworkPackage = (NetworkPackageImpl)(registeredPackage instanceof NetworkPackageImpl ? registeredPackage : NetworkPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(CorePackage.eNS_URI);
+		CorePackageImpl theCorePackage = (CorePackageImpl)(registeredPackage instanceof CorePackageImpl ? registeredPackage : CorePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(SoftwarePackage.eNS_URI);
+		SoftwarePackageImpl theSoftwarePackage = (SoftwarePackageImpl)(registeredPackage instanceof SoftwarePackageImpl ? registeredPackage : SoftwarePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(HardwarePackage.eNS_URI);
+		HardwarePackageImpl theHardwarePackage = (HardwarePackageImpl)(registeredPackage instanceof HardwarePackageImpl ? registeredPackage : HardwarePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(StorePackage.eNS_URI);
+		StorePackageImpl theStorePackage = (StorePackageImpl)(registeredPackage instanceof StorePackageImpl ? registeredPackage : StorePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(StructurePackage.eNS_URI);
+		StructurePackageImpl theStructurePackage = (StructurePackageImpl)(registeredPackage instanceof StructurePackageImpl ? registeredPackage : StructurePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(ResourcePackage.eNS_URI);
+		ResourcePackageImpl theResourcePackage = (ResourcePackageImpl)(registeredPackage instanceof ResourcePackageImpl ? registeredPackage : ResourcePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(ArtefactPackage.eNS_URI);
+		ArtefactPackageImpl theArtefactPackage = (ArtefactPackageImpl)(registeredPackage instanceof ArtefactPackageImpl ? registeredPackage : ArtefactPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(HybridPackage.eNS_URI);
+		HybridPackageImpl theHybridPackage = (HybridPackageImpl)(registeredPackage instanceof HybridPackageImpl ? registeredPackage : HybridPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(SensinactPackage.eNS_URI);
+		SensinactPackageImpl theSensinactPackage = (SensinactPackageImpl)(registeredPackage instanceof SensinactPackageImpl ? registeredPackage : SensinactPackage.eINSTANCE);
 
 		// Create package meta-data objects
 		theProtocolPackage.createPackageContents();
-		theIoTMLPackage.createPackageContents();
 		theAnimatePackage.createPackageContents();
-		theHardwarePackage.createPackageContents();
 		theActuatorPackage.createPackageContents();
 		theSensorPackage.createPackageContents();
 		theNetworkPackage.createPackageContents();
 		theCorePackage.createPackageContents();
-		theS3pmlPackage.createPackageContents();
 		theSoftwarePackage.createPackageContents();
-		theHardwarePackage_1.createPackageContents();
+		theHardwarePackage.createPackageContents();
 		theStorePackage.createPackageContents();
-		theSoftwarePackage_1.createPackageContents();
-		theCorePackage_1.createPackageContents();
 		theStructurePackage.createPackageContents();
 		theResourcePackage.createPackageContents();
 		theArtefactPackage.createPackageContents();
 		theHybridPackage.createPackageContents();
+		theSensinactPackage.createPackageContents();
 
 		// Initialize created meta-data
 		theProtocolPackage.initializePackageContents();
-		theIoTMLPackage.initializePackageContents();
 		theAnimatePackage.initializePackageContents();
-		theHardwarePackage.initializePackageContents();
 		theActuatorPackage.initializePackageContents();
 		theSensorPackage.initializePackageContents();
 		theNetworkPackage.initializePackageContents();
 		theCorePackage.initializePackageContents();
-		theS3pmlPackage.initializePackageContents();
 		theSoftwarePackage.initializePackageContents();
-		theHardwarePackage_1.initializePackageContents();
+		theHardwarePackage.initializePackageContents();
 		theStorePackage.initializePackageContents();
-		theSoftwarePackage_1.initializePackageContents();
-		theCorePackage_1.initializePackageContents();
 		theStructurePackage.initializePackageContents();
 		theResourcePackage.initializePackageContents();
 		theArtefactPackage.initializePackageContents();
 		theHybridPackage.initializePackageContents();
+		theSensinactPackage.initializePackageContents();
 
 		// Mark meta-data to indicate it can't be changed
 		theProtocolPackage.freeze();
 
-  
 		// Update the registry and return the package
 		EPackage.Registry.INSTANCE.put(ProtocolPackage.eNS_URI, theProtocolPackage);
 		return theProtocolPackage;
@@ -418,6 +410,9 @@
 		initEReference(getProtocol_Base_InstanceSpecification(), theUMLPackage.getInstanceSpecification(), null, "base_InstanceSpecification", null, 1, 1, Protocol.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
 		initEReference(getProtocol_Type(), this.getProtocolType(), null, "type", null, 0, 1, Protocol.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
 
+		// Create resource
+		createResource(eNS_URI);
+
 		// Create annotations
 		// http://www.eclipse.org/uml2/2.0.0/UML
 		createUMLAnnotations();
@@ -430,12 +425,12 @@
 	 * @generated
 	 */
 	protected void createUMLAnnotations() {
-		String source = "http://www.eclipse.org/uml2/2.0.0/UML";	
+		String source = "http://www.eclipse.org/uml2/2.0.0/UML";
 		addAnnotation
-		  (this, 
-		   source, 
+		  (this,
+		   source,
 		   new String[] {
-			 "originalName", "Protocol"
+			   "originalName", "Protocol"
 		   });
 	}
 
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/s3pml/software/impl/APIImpl.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/s3pml/software/impl/APIImpl.java
index 44f38e8..66d3920 100644
--- a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/s3pml/software/impl/APIImpl.java
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/s3pml/software/impl/APIImpl.java
@@ -217,7 +217,7 @@
 	public String toString() {
 		if (eIsProxy()) return super.toString();
 
-		StringBuffer result = new StringBuffer(super.toString());
+		StringBuilder result = new StringBuilder(super.toString());
 		result.append(" (module: ");
 		result.append(module);
 		result.append(", version: ");
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/s3pml/software/impl/SoftwarePackageImpl.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/s3pml/software/impl/SoftwarePackageImpl.java
index e3eba76..faadc35 100644
--- a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/s3pml/software/impl/SoftwarePackageImpl.java
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/s3pml/software/impl/SoftwarePackageImpl.java
@@ -38,15 +38,9 @@
 import org.eclipse.papyrus.MARTE_Library.TimeLibrary.TimeLibraryPackage;
 
 import org.eclipse.papyrus.MARTE_Library.TimeTypesLibrary.TimeTypesLibraryPackage;
-
-import org.eclipse.papyrus.iotml.IoTMLPackage;
-
 import org.eclipse.papyrus.iotml.animate.AnimatePackage;
 
 import org.eclipse.papyrus.iotml.animate.impl.AnimatePackageImpl;
-
-import org.eclipse.papyrus.iotml.hardware.HardwarePackage;
-
 import org.eclipse.papyrus.iotml.hardware.actuator.ActuatorPackage;
 
 import org.eclipse.papyrus.iotml.hardware.actuator.impl.ActuatorPackageImpl;
@@ -54,9 +48,6 @@
 import org.eclipse.papyrus.iotml.hardware.core.CorePackage;
 
 import org.eclipse.papyrus.iotml.hardware.core.impl.CorePackageImpl;
-
-import org.eclipse.papyrus.iotml.hardware.impl.HardwarePackageImpl;
-
 import org.eclipse.papyrus.iotml.hardware.network.NetworkPackage;
 
 import org.eclipse.papyrus.iotml.hardware.network.impl.NetworkPackageImpl;
@@ -68,15 +59,11 @@
 import org.eclipse.papyrus.iotml.hybrid.HybridPackage;
 
 import org.eclipse.papyrus.iotml.hybrid.impl.HybridPackageImpl;
-
-import org.eclipse.papyrus.iotml.impl.IoTMLPackageImpl;
-
-import org.eclipse.papyrus.iotml.s3pml.S3pmlPackage;
+import org.eclipse.papyrus.iotml.s3pml.hardware.HardwarePackage;
+import org.eclipse.papyrus.iotml.s3pml.hardware.impl.HardwarePackageImpl;
 import org.eclipse.papyrus.iotml.s3pml.hardware.store.StorePackage;
 
 import org.eclipse.papyrus.iotml.s3pml.hardware.store.impl.StorePackageImpl;
-
-import org.eclipse.papyrus.iotml.s3pml.impl.S3pmlPackageImpl;
 import org.eclipse.papyrus.iotml.s3pml.protocol.ProtocolPackage;
 
 import org.eclipse.papyrus.iotml.s3pml.protocol.impl.ProtocolPackageImpl;
@@ -87,6 +74,8 @@
 import org.eclipse.papyrus.iotml.s3pml.software.SoftwareFactory;
 import org.eclipse.papyrus.iotml.s3pml.software.SoftwarePackage;
 
+import org.eclipse.papyrus.iotml.sensinact.SensinactPackage;
+import org.eclipse.papyrus.iotml.sensinact.impl.SensinactPackageImpl;
 import org.eclipse.papyrus.iotml.software.artefact.ArtefactPackage;
 
 import org.eclipse.papyrus.iotml.software.artefact.impl.ArtefactPackageImpl;
@@ -104,6 +93,7 @@
 import org.eclipse.uml2.types.TypesPackage;
 
 import org.eclipse.uml2.uml.UMLPackage;
+import org.eclipse.uml2.uml.profile.standard.StandardPackage;
 
 /**
  * <!-- begin-user-doc -->
@@ -168,7 +158,7 @@
 
 	/**
 	 * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
-	 * 
+	 *
 	 * <p>This method is used to initialize {@link SoftwarePackage#eINSTANCE} when that field is accessed.
 	 * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
 	 * <!-- begin-user-doc -->
@@ -182,7 +172,8 @@
 		if (isInited) return (SoftwarePackage)EPackage.Registry.INSTANCE.getEPackage(SoftwarePackage.eNS_URI);
 
 		// Obtain or create and register package
-		SoftwarePackageImpl theSoftwarePackage = (SoftwarePackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof SoftwarePackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new SoftwarePackageImpl());
+		Object registeredSoftwarePackage = EPackage.Registry.INSTANCE.get(eNS_URI);
+		SoftwarePackageImpl theSoftwarePackage = registeredSoftwarePackage instanceof SoftwarePackageImpl ? (SoftwarePackageImpl)registeredSoftwarePackage : new SoftwarePackageImpl();
 
 		isInited = true;
 
@@ -200,70 +191,71 @@
 		sysmlPackage.eINSTANCE.eClass();
 		TypesPackage.eINSTANCE.eClass();
 		UMLPackage.eINSTANCE.eClass();
+		StandardPackage.eINSTANCE.eClass();
 
 		// Obtain or create and register interdependencies
-		IoTMLPackageImpl theIoTMLPackage = (IoTMLPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(IoTMLPackage.eNS_URI) instanceof IoTMLPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(IoTMLPackage.eNS_URI) : IoTMLPackage.eINSTANCE);
-		AnimatePackageImpl theAnimatePackage = (AnimatePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(AnimatePackage.eNS_URI) instanceof AnimatePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(AnimatePackage.eNS_URI) : AnimatePackage.eINSTANCE);
-		HardwarePackageImpl theHardwarePackage = (HardwarePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(HardwarePackage.eNS_URI) instanceof HardwarePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(HardwarePackage.eNS_URI) : HardwarePackage.eINSTANCE);
-		ActuatorPackageImpl theActuatorPackage = (ActuatorPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(ActuatorPackage.eNS_URI) instanceof ActuatorPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(ActuatorPackage.eNS_URI) : ActuatorPackage.eINSTANCE);
-		SensorPackageImpl theSensorPackage = (SensorPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(SensorPackage.eNS_URI) instanceof SensorPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(SensorPackage.eNS_URI) : SensorPackage.eINSTANCE);
-		NetworkPackageImpl theNetworkPackage = (NetworkPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(NetworkPackage.eNS_URI) instanceof NetworkPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(NetworkPackage.eNS_URI) : NetworkPackage.eINSTANCE);
-		CorePackageImpl theCorePackage = (CorePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(CorePackage.eNS_URI) instanceof CorePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(CorePackage.eNS_URI) : CorePackage.eINSTANCE);
-		S3pmlPackageImpl theS3pmlPackage = (S3pmlPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(S3pmlPackage.eNS_URI) instanceof S3pmlPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(S3pmlPackage.eNS_URI) : S3pmlPackage.eINSTANCE);
-		ProtocolPackageImpl theProtocolPackage = (ProtocolPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(ProtocolPackage.eNS_URI) instanceof ProtocolPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(ProtocolPackage.eNS_URI) : ProtocolPackage.eINSTANCE);
-		org.eclipse.papyrus.iotml.s3pml.hardware.impl.HardwarePackageImpl theHardwarePackage_1 = (org.eclipse.papyrus.iotml.s3pml.hardware.impl.HardwarePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(org.eclipse.papyrus.iotml.s3pml.hardware.HardwarePackage.eNS_URI) instanceof org.eclipse.papyrus.iotml.s3pml.hardware.impl.HardwarePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(org.eclipse.papyrus.iotml.s3pml.hardware.HardwarePackage.eNS_URI) : org.eclipse.papyrus.iotml.s3pml.hardware.HardwarePackage.eINSTANCE);
-		StorePackageImpl theStorePackage = (StorePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(StorePackage.eNS_URI) instanceof StorePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(StorePackage.eNS_URI) : StorePackage.eINSTANCE);
-		org.eclipse.papyrus.iotml.software.impl.SoftwarePackageImpl theSoftwarePackage_1 = (org.eclipse.papyrus.iotml.software.impl.SoftwarePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(org.eclipse.papyrus.iotml.software.SoftwarePackage.eNS_URI) instanceof org.eclipse.papyrus.iotml.software.impl.SoftwarePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(org.eclipse.papyrus.iotml.software.SoftwarePackage.eNS_URI) : org.eclipse.papyrus.iotml.software.SoftwarePackage.eINSTANCE);
-		org.eclipse.papyrus.iotml.software.core.impl.CorePackageImpl theCorePackage_1 = (org.eclipse.papyrus.iotml.software.core.impl.CorePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(org.eclipse.papyrus.iotml.software.core.CorePackage.eNS_URI) instanceof org.eclipse.papyrus.iotml.software.core.impl.CorePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(org.eclipse.papyrus.iotml.software.core.CorePackage.eNS_URI) : org.eclipse.papyrus.iotml.software.core.CorePackage.eINSTANCE);
-		StructurePackageImpl theStructurePackage = (StructurePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(StructurePackage.eNS_URI) instanceof StructurePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(StructurePackage.eNS_URI) : StructurePackage.eINSTANCE);
-		ResourcePackageImpl theResourcePackage = (ResourcePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(ResourcePackage.eNS_URI) instanceof ResourcePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(ResourcePackage.eNS_URI) : ResourcePackage.eINSTANCE);
-		ArtefactPackageImpl theArtefactPackage = (ArtefactPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(ArtefactPackage.eNS_URI) instanceof ArtefactPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(ArtefactPackage.eNS_URI) : ArtefactPackage.eINSTANCE);
-		HybridPackageImpl theHybridPackage = (HybridPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(HybridPackage.eNS_URI) instanceof HybridPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(HybridPackage.eNS_URI) : HybridPackage.eINSTANCE);
+		Object registeredPackage = EPackage.Registry.INSTANCE.getEPackage(AnimatePackage.eNS_URI);
+		AnimatePackageImpl theAnimatePackage = (AnimatePackageImpl)(registeredPackage instanceof AnimatePackageImpl ? registeredPackage : AnimatePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(ActuatorPackage.eNS_URI);
+		ActuatorPackageImpl theActuatorPackage = (ActuatorPackageImpl)(registeredPackage instanceof ActuatorPackageImpl ? registeredPackage : ActuatorPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(SensorPackage.eNS_URI);
+		SensorPackageImpl theSensorPackage = (SensorPackageImpl)(registeredPackage instanceof SensorPackageImpl ? registeredPackage : SensorPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(NetworkPackage.eNS_URI);
+		NetworkPackageImpl theNetworkPackage = (NetworkPackageImpl)(registeredPackage instanceof NetworkPackageImpl ? registeredPackage : NetworkPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(CorePackage.eNS_URI);
+		CorePackageImpl theCorePackage = (CorePackageImpl)(registeredPackage instanceof CorePackageImpl ? registeredPackage : CorePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(ProtocolPackage.eNS_URI);
+		ProtocolPackageImpl theProtocolPackage = (ProtocolPackageImpl)(registeredPackage instanceof ProtocolPackageImpl ? registeredPackage : ProtocolPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(HardwarePackage.eNS_URI);
+		HardwarePackageImpl theHardwarePackage = (HardwarePackageImpl)(registeredPackage instanceof HardwarePackageImpl ? registeredPackage : HardwarePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(StorePackage.eNS_URI);
+		StorePackageImpl theStorePackage = (StorePackageImpl)(registeredPackage instanceof StorePackageImpl ? registeredPackage : StorePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(StructurePackage.eNS_URI);
+		StructurePackageImpl theStructurePackage = (StructurePackageImpl)(registeredPackage instanceof StructurePackageImpl ? registeredPackage : StructurePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(ResourcePackage.eNS_URI);
+		ResourcePackageImpl theResourcePackage = (ResourcePackageImpl)(registeredPackage instanceof ResourcePackageImpl ? registeredPackage : ResourcePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(ArtefactPackage.eNS_URI);
+		ArtefactPackageImpl theArtefactPackage = (ArtefactPackageImpl)(registeredPackage instanceof ArtefactPackageImpl ? registeredPackage : ArtefactPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(HybridPackage.eNS_URI);
+		HybridPackageImpl theHybridPackage = (HybridPackageImpl)(registeredPackage instanceof HybridPackageImpl ? registeredPackage : HybridPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(SensinactPackage.eNS_URI);
+		SensinactPackageImpl theSensinactPackage = (SensinactPackageImpl)(registeredPackage instanceof SensinactPackageImpl ? registeredPackage : SensinactPackage.eINSTANCE);
 
 		// Create package meta-data objects
 		theSoftwarePackage.createPackageContents();
-		theIoTMLPackage.createPackageContents();
 		theAnimatePackage.createPackageContents();
-		theHardwarePackage.createPackageContents();
 		theActuatorPackage.createPackageContents();
 		theSensorPackage.createPackageContents();
 		theNetworkPackage.createPackageContents();
 		theCorePackage.createPackageContents();
-		theS3pmlPackage.createPackageContents();
 		theProtocolPackage.createPackageContents();
-		theHardwarePackage_1.createPackageContents();
+		theHardwarePackage.createPackageContents();
 		theStorePackage.createPackageContents();
-		theSoftwarePackage_1.createPackageContents();
-		theCorePackage_1.createPackageContents();
 		theStructurePackage.createPackageContents();
 		theResourcePackage.createPackageContents();
 		theArtefactPackage.createPackageContents();
 		theHybridPackage.createPackageContents();
+		theSensinactPackage.createPackageContents();
 
 		// Initialize created meta-data
 		theSoftwarePackage.initializePackageContents();
-		theIoTMLPackage.initializePackageContents();
 		theAnimatePackage.initializePackageContents();
-		theHardwarePackage.initializePackageContents();
 		theActuatorPackage.initializePackageContents();
 		theSensorPackage.initializePackageContents();
 		theNetworkPackage.initializePackageContents();
 		theCorePackage.initializePackageContents();
-		theS3pmlPackage.initializePackageContents();
 		theProtocolPackage.initializePackageContents();
-		theHardwarePackage_1.initializePackageContents();
+		theHardwarePackage.initializePackageContents();
 		theStorePackage.initializePackageContents();
-		theSoftwarePackage_1.initializePackageContents();
-		theCorePackage_1.initializePackageContents();
 		theStructurePackage.initializePackageContents();
 		theResourcePackage.initializePackageContents();
 		theArtefactPackage.initializePackageContents();
 		theHybridPackage.initializePackageContents();
+		theSensinactPackage.initializePackageContents();
 
 		// Mark meta-data to indicate it can't be changed
 		theSoftwarePackage.freeze();
 
-  
 		// Update the registry and return the package
 		EPackage.Registry.INSTANCE.put(SoftwarePackage.eNS_URI, theSoftwarePackage);
 		return theSoftwarePackage;
@@ -432,6 +424,9 @@
 
 		initEClass(requireEClass, Require.class, "Require", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 
+		// Create resource
+		createResource(eNS_URI);
+
 		// Create annotations
 		// http://www.eclipse.org/uml2/2.0.0/UML
 		createUMLAnnotations();
@@ -444,12 +439,12 @@
 	 * @generated
 	 */
 	protected void createUMLAnnotations() {
-		String source = "http://www.eclipse.org/uml2/2.0.0/UML";	
+		String source = "http://www.eclipse.org/uml2/2.0.0/UML";
 		addAnnotation
-		  (this, 
-		   source, 
+		  (this,
+		   source,
 		   new String[] {
-			 "originalName", "Software"
+			   "originalName", "Software"
 		   });
 	}
 
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/AccessMethod.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/AccessMethod.java
new file mode 100644
index 0000000..fecc283
--- /dev/null
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/AccessMethod.java
@@ -0,0 +1,112 @@
+/**
+ * Copyright (c) 2018 CEA
+ * 
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
+ *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ * 
+ */
+package org.eclipse.papyrus.iotml.sensinact;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.uml2.uml.Operation;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Access Method</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.iotml.sensinact.AccessMethod#getType <em>Type</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.iotml.sensinact.AccessMethod#getParameters <em>Parameters</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.iotml.sensinact.AccessMethod#getBase_Operation <em>Base Operation</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.iotml.sensinact.SensinactPackage#getAccessMethod()
+ * @model
+ * @generated
+ */
+public interface AccessMethod extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Type</b></em>' attribute.
+	 * The literals are from the enumeration {@link org.eclipse.papyrus.iotml.sensinact.AccessMethodType}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Type</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Type</em>' attribute.
+	 * @see org.eclipse.papyrus.iotml.sensinact.AccessMethodType
+	 * @see #setType(AccessMethodType)
+	 * @see org.eclipse.papyrus.iotml.sensinact.SensinactPackage#getAccessMethod_Type()
+	 * @model required="true" ordered="false"
+	 * @generated
+	 */
+	AccessMethodType getType();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.iotml.sensinact.AccessMethod#getType <em>Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Type</em>' attribute.
+	 * @see org.eclipse.papyrus.iotml.sensinact.AccessMethodType
+	 * @see #getType()
+	 * @generated
+	 */
+	void setType(AccessMethodType value);
+
+	/**
+	 * Returns the value of the '<em><b>Parameters</b></em>' reference list.
+	 * The list contents are of type {@link org.eclipse.papyrus.iotml.sensinact.Parameter}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Parameters</em>' reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Parameters</em>' reference list.
+	 * @see org.eclipse.papyrus.iotml.sensinact.SensinactPackage#getAccessMethod_Parameters()
+	 * @model ordered="false"
+	 * @generated
+	 */
+	EList<Parameter> getParameters();
+
+	/**
+	 * Returns the value of the '<em><b>Base Operation</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Base Operation</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Base Operation</em>' reference.
+	 * @see #setBase_Operation(Operation)
+	 * @see org.eclipse.papyrus.iotml.sensinact.SensinactPackage#getAccessMethod_Base_Operation()
+	 * @model required="true" ordered="false"
+	 * @generated
+	 */
+	Operation getBase_Operation();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.iotml.sensinact.AccessMethod#getBase_Operation <em>Base Operation</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Base Operation</em>' reference.
+	 * @see #getBase_Operation()
+	 * @generated
+	 */
+	void setBase_Operation(Operation value);
+
+} // AccessMethod
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/AccessMethodType.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/AccessMethodType.java
new file mode 100644
index 0000000..3192bb9
--- /dev/null
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/AccessMethodType.java
@@ -0,0 +1,306 @@
+/**
+ * Copyright (c) 2018 CEA
+ * 
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
+ *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ * 
+ */
+package org.eclipse.papyrus.iotml.sensinact;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Access Method Type</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.iotml.sensinact.SensinactPackage#getAccessMethodType()
+ * @model
+ * @generated
+ */
+public enum AccessMethodType implements Enumerator {
+	/**
+	 * The '<em><b>GET</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #GET_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	GET(0, "GET", "GET"),
+
+	/**
+	 * The '<em><b>SET</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #SET_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	SET(1, "SET", "SET"),
+
+	/**
+	 * The '<em><b>ACT</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #ACT_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	ACT(2, "ACT", "ACT"),
+
+	/**
+	 * The '<em><b>SUBSCRIBE</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #SUBSCRIBE_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	SUBSCRIBE(3, "SUBSCRIBE", "SUBSCRIBE"),
+
+	/**
+	 * The '<em><b>UNSUBSCRIBE</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #UNSUBSCRIBE_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	UNSUBSCRIBE(4, "UNSUBSCRIBE", "UNSUBSCRIBE");
+
+	/**
+	 * The '<em><b>GET</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>GET</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #GET
+	 * @model
+	 * @generated
+	 * @ordered
+	 */
+	public static final int GET_VALUE = 0;
+
+	/**
+	 * The '<em><b>SET</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>SET</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #SET
+	 * @model
+	 * @generated
+	 * @ordered
+	 */
+	public static final int SET_VALUE = 1;
+
+	/**
+	 * The '<em><b>ACT</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>ACT</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #ACT
+	 * @model
+	 * @generated
+	 * @ordered
+	 */
+	public static final int ACT_VALUE = 2;
+
+	/**
+	 * The '<em><b>SUBSCRIBE</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>SUBSCRIBE</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #SUBSCRIBE
+	 * @model
+	 * @generated
+	 * @ordered
+	 */
+	public static final int SUBSCRIBE_VALUE = 3;
+
+	/**
+	 * The '<em><b>UNSUBSCRIBE</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>UNSUBSCRIBE</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #UNSUBSCRIBE
+	 * @model
+	 * @generated
+	 * @ordered
+	 */
+	public static final int UNSUBSCRIBE_VALUE = 4;
+
+	/**
+	 * An array of all the '<em><b>Access Method Type</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static final AccessMethodType[] VALUES_ARRAY =
+		new AccessMethodType[] {
+			GET,
+			SET,
+			ACT,
+			SUBSCRIBE,
+			UNSUBSCRIBE,
+		};
+
+	/**
+	 * A public read-only list of all the '<em><b>Access Method Type</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final List<AccessMethodType> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>Access Method Type</b></em>' literal with the specified literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param literal the literal.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static AccessMethodType get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			AccessMethodType result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Access Method Type</b></em>' literal with the specified name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param name the name.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static AccessMethodType getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			AccessMethodType result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Access Method Type</b></em>' literal with the specified integer value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the integer value.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static AccessMethodType get(int value) {
+		switch (value) {
+			case GET_VALUE: return GET;
+			case SET_VALUE: return SET;
+			case ACT_VALUE: return ACT;
+			case SUBSCRIBE_VALUE: return SUBSCRIBE;
+			case UNSUBSCRIBE_VALUE: return UNSUBSCRIBE;
+		}
+		return null;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final int value;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String name;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String literal;
+
+	/**
+	 * Only this class can construct instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private AccessMethodType(int value, String name, String literal) {
+		this.value = value;
+		this.name = name;
+		this.literal = literal;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getValue() {
+	  return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getName() {
+	  return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getLiteral() {
+	  return literal;
+	}
+
+	/**
+	 * Returns the literal value of the enumerator, which is its string representation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		return literal;
+	}
+	
+} //AccessMethodType
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/Action.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/Action.java
new file mode 100644
index 0000000..91e3356
--- /dev/null
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/Action.java
@@ -0,0 +1,63 @@
+/**
+ * Copyright (c) 2018 CEA
+ * 
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
+ *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ * 
+ */
+package org.eclipse.papyrus.iotml.sensinact;
+
+import org.eclipse.papyrus.iotml.software.artefact.PropertyAccess;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Action</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.iotml.sensinact.Action#getState <em>State</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.iotml.sensinact.SensinactPackage#getAction()
+ * @model
+ * @generated
+ */
+public interface Action extends Resource, PropertyAccess {
+	/**
+	 * Returns the value of the '<em><b>State</b></em>' reference.
+	 * It is bidirectional and its opposite is '{@link org.eclipse.papyrus.iotml.sensinact.StateVariable#getModifier <em>Modifier</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>State</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>State</em>' reference.
+	 * @see #setState(StateVariable)
+	 * @see org.eclipse.papyrus.iotml.sensinact.SensinactPackage#getAction_State()
+	 * @see org.eclipse.papyrus.iotml.sensinact.StateVariable#getModifier
+	 * @model opposite="modifier" required="true" transient="true" volatile="true" derived="true" ordered="false"
+	 * @generated
+	 */
+	StateVariable getState();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.iotml.sensinact.Action#getState <em>State</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>State</em>' reference.
+	 * @see #getState()
+	 * @generated
+	 */
+	void setState(StateVariable value);
+
+} // Action
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/Attribute.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/Attribute.java
new file mode 100644
index 0000000..8849281
--- /dev/null
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/Attribute.java
@@ -0,0 +1,51 @@
+/**
+ * Copyright (c) 2018 CEA
+ * 
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
+ *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ * 
+ */
+package org.eclipse.papyrus.iotml.sensinact;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Attribute</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.iotml.sensinact.Attribute#getMetadata <em>Metadata</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.iotml.sensinact.SensinactPackage#getAttribute()
+ * @model
+ * @generated
+ */
+public interface Attribute extends TypedElement {
+	/**
+	 * Returns the value of the '<em><b>Metadata</b></em>' reference list.
+	 * The list contents are of type {@link org.eclipse.papyrus.iotml.sensinact.Metadata}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Metadata</em>' reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Metadata</em>' reference list.
+	 * @see org.eclipse.papyrus.iotml.sensinact.SensinactPackage#getAttribute_Metadata()
+	 * @model ordered="false"
+	 * @generated
+	 */
+	EList<Metadata> getMetadata();
+
+} // Attribute
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/Device.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/Device.java
new file mode 100644
index 0000000..68be6a8
--- /dev/null
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/Device.java
@@ -0,0 +1,80 @@
+/**
+ * Copyright (c) 2018 CEA
+ * 
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
+ *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ * 
+ */
+package org.eclipse.papyrus.iotml.sensinact;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.papyrus.iotml.hardware.network.ConnectedDevice;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Device</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.iotml.sensinact.Device#getFriendlyName <em>Friendly Name</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.iotml.sensinact.Device#getServices <em>Services</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.iotml.sensinact.SensinactPackage#getDevice()
+ * @model
+ * @generated
+ */
+public interface Device extends ConnectedDevice {
+	/**
+	 * Returns the value of the '<em><b>Friendly Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Friendly Name</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Friendly Name</em>' attribute.
+	 * @see #setFriendlyName(String)
+	 * @see org.eclipse.papyrus.iotml.sensinact.SensinactPackage#getDevice_FriendlyName()
+	 * @model dataType="org.eclipse.uml2.types.String" required="true" ordered="false"
+	 * @generated
+	 */
+	String getFriendlyName();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.iotml.sensinact.Device#getFriendlyName <em>Friendly Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Friendly Name</em>' attribute.
+	 * @see #getFriendlyName()
+	 * @generated
+	 */
+	void setFriendlyName(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Services</b></em>' reference list.
+	 * The list contents are of type {@link org.eclipse.papyrus.iotml.sensinact.Service}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Services</em>' reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Services</em>' reference list.
+	 * @see org.eclipse.papyrus.iotml.sensinact.SensinactPackage#getDevice_Services()
+	 * @model required="true" ordered="false"
+	 * @generated
+	 */
+	EList<Service> getServices();
+
+} // Device
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/Gateway.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/Gateway.java
new file mode 100644
index 0000000..4f3089e
--- /dev/null
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/Gateway.java
@@ -0,0 +1,51 @@
+/**
+ * Copyright (c) 2018 CEA
+ * 
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
+ *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ * 
+ */
+package org.eclipse.papyrus.iotml.sensinact;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Gateway</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.iotml.sensinact.Gateway#getDevices <em>Devices</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.iotml.sensinact.SensinactPackage#getGateway()
+ * @model
+ * @generated
+ */
+public interface Gateway extends org.eclipse.papyrus.iotml.hardware.network.Gateway {
+	/**
+	 * Returns the value of the '<em><b>Devices</b></em>' reference list.
+	 * The list contents are of type {@link org.eclipse.papyrus.iotml.sensinact.Device}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Devices</em>' reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Devices</em>' reference list.
+	 * @see org.eclipse.papyrus.iotml.sensinact.SensinactPackage#getGateway_Devices()
+	 * @model required="true" ordered="false"
+	 * @generated
+	 */
+	EList<Device> getDevices();
+
+} // Gateway
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/Metadata.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/Metadata.java
new file mode 100644
index 0000000..7dd59d6
--- /dev/null
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/Metadata.java
@@ -0,0 +1,28 @@
+/**
+ * Copyright (c) 2018 CEA
+ * 
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
+ *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ * 
+ */
+package org.eclipse.papyrus.iotml.sensinact;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Metadata</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.iotml.sensinact.SensinactPackage#getMetadata()
+ * @model
+ * @generated
+ */
+public interface Metadata extends TypedElement {
+} // Metadata
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/Parameter.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/Parameter.java
new file mode 100644
index 0000000..9c572f0
--- /dev/null
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/Parameter.java
@@ -0,0 +1,28 @@
+/**
+ * Copyright (c) 2018 CEA
+ * 
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
+ *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ * 
+ */
+package org.eclipse.papyrus.iotml.sensinact;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Parameter</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.iotml.sensinact.SensinactPackage#getParameter()
+ * @model
+ * @generated
+ */
+public interface Parameter extends TypedElement {
+} // Parameter
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/Property.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/Property.java
new file mode 100644
index 0000000..1d38eb1
--- /dev/null
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/Property.java
@@ -0,0 +1,60 @@
+/**
+ * Copyright (c) 2018 CEA
+ * 
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
+ *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ * 
+ */
+package org.eclipse.papyrus.iotml.sensinact;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Property</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.iotml.sensinact.Property#getBase_Property <em>Base Property</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.iotml.sensinact.SensinactPackage#getProperty()
+ * @model
+ * @generated
+ */
+public interface Property extends Resource {
+	/**
+	 * Returns the value of the '<em><b>Base Property</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Base Property</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Base Property</em>' reference.
+	 * @see #setBase_Property(org.eclipse.uml2.uml.Property)
+	 * @see org.eclipse.papyrus.iotml.sensinact.SensinactPackage#getProperty_Base_Property()
+	 * @model required="true" ordered="false"
+	 * @generated
+	 */
+	org.eclipse.uml2.uml.Property getBase_Property();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.iotml.sensinact.Property#getBase_Property <em>Base Property</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Base Property</em>' reference.
+	 * @see #getBase_Property()
+	 * @generated
+	 */
+	void setBase_Property(org.eclipse.uml2.uml.Property value);
+
+} // Property
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/Resource.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/Resource.java
new file mode 100644
index 0000000..8ae2443
--- /dev/null
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/Resource.java
@@ -0,0 +1,97 @@
+/**
+ * Copyright (c) 2018 CEA
+ * 
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
+ *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ * 
+ */
+package org.eclipse.papyrus.iotml.sensinact;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.papyrus.iotml.software.resource.OnDeviceResource;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Resource</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.iotml.sensinact.Resource#getFriendlyName <em>Friendly Name</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.iotml.sensinact.Resource#getAccessMethods <em>Access Methods</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.iotml.sensinact.Resource#getAttributes <em>Attributes</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.iotml.sensinact.SensinactPackage#getResource()
+ * @model
+ * @generated
+ */
+public interface Resource extends OnDeviceResource {
+	/**
+	 * Returns the value of the '<em><b>Friendly Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Friendly Name</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Friendly Name</em>' attribute.
+	 * @see #setFriendlyName(String)
+	 * @see org.eclipse.papyrus.iotml.sensinact.SensinactPackage#getResource_FriendlyName()
+	 * @model dataType="org.eclipse.uml2.types.String" required="true" ordered="false"
+	 * @generated
+	 */
+	String getFriendlyName();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.iotml.sensinact.Resource#getFriendlyName <em>Friendly Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Friendly Name</em>' attribute.
+	 * @see #getFriendlyName()
+	 * @generated
+	 */
+	void setFriendlyName(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Access Methods</b></em>' reference list.
+	 * The list contents are of type {@link org.eclipse.papyrus.iotml.sensinact.AccessMethod}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Access Methods</em>' reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Access Methods</em>' reference list.
+	 * @see org.eclipse.papyrus.iotml.sensinact.SensinactPackage#getResource_AccessMethods()
+	 * @model required="true" ordered="false"
+	 * @generated
+	 */
+	EList<AccessMethod> getAccessMethods();
+
+	/**
+	 * Returns the value of the '<em><b>Attributes</b></em>' reference list.
+	 * The list contents are of type {@link org.eclipse.papyrus.iotml.sensinact.Attribute}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Attributes</em>' reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Attributes</em>' reference list.
+	 * @see org.eclipse.papyrus.iotml.sensinact.SensinactPackage#getResource_Attributes()
+	 * @model required="true" ordered="false"
+	 * @generated
+	 */
+	EList<Attribute> getAttributes();
+
+} // Resource
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/SensinactFactory.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/SensinactFactory.java
new file mode 100644
index 0000000..b4cfde7
--- /dev/null
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/SensinactFactory.java
@@ -0,0 +1,161 @@
+/**
+ * Copyright (c) 2018 CEA
+ * 
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
+ *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ * 
+ */
+package org.eclipse.papyrus.iotml.sensinact;
+
+import org.eclipse.emf.ecore.EFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.iotml.sensinact.SensinactPackage
+ * @generated
+ */
+public interface SensinactFactory extends EFactory {
+	/**
+	 * The singleton instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	SensinactFactory eINSTANCE = org.eclipse.papyrus.iotml.sensinact.impl.SensinactFactoryImpl.init();
+
+	/**
+	 * Returns a new object of class '<em>Studio</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Studio</em>'.
+	 * @generated
+	 */
+	Studio createStudio();
+
+	/**
+	 * Returns a new object of class '<em>Gateway</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Gateway</em>'.
+	 * @generated
+	 */
+	Gateway createGateway();
+
+	/**
+	 * Returns a new object of class '<em>Device</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Device</em>'.
+	 * @generated
+	 */
+	Device createDevice();
+
+	/**
+	 * Returns a new object of class '<em>Service</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Service</em>'.
+	 * @generated
+	 */
+	Service createService();
+
+	/**
+	 * Returns a new object of class '<em>Resource</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Resource</em>'.
+	 * @generated
+	 */
+	Resource createResource();
+
+	/**
+	 * Returns a new object of class '<em>Access Method</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Access Method</em>'.
+	 * @generated
+	 */
+	AccessMethod createAccessMethod();
+
+	/**
+	 * Returns a new object of class '<em>Parameter</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Parameter</em>'.
+	 * @generated
+	 */
+	Parameter createParameter();
+
+	/**
+	 * Returns a new object of class '<em>Attribute</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Attribute</em>'.
+	 * @generated
+	 */
+	Attribute createAttribute();
+
+	/**
+	 * Returns a new object of class '<em>Metadata</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Metadata</em>'.
+	 * @generated
+	 */
+	Metadata createMetadata();
+
+	/**
+	 * Returns a new object of class '<em>Property</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Property</em>'.
+	 * @generated
+	 */
+	Property createProperty();
+
+	/**
+	 * Returns a new object of class '<em>Sensor Data</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Sensor Data</em>'.
+	 * @generated
+	 */
+	SensorData createSensorData();
+
+	/**
+	 * Returns a new object of class '<em>State Variable</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>State Variable</em>'.
+	 * @generated
+	 */
+	StateVariable createStateVariable();
+
+	/**
+	 * Returns a new object of class '<em>Action</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Action</em>'.
+	 * @generated
+	 */
+	Action createAction();
+
+	/**
+	 * Returns the package supported by this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the package supported by this factory.
+	 * @generated
+	 */
+	SensinactPackage getSensinactPackage();
+
+} //SensinactFactory
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/SensinactPackage.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/SensinactPackage.java
new file mode 100644
index 0000000..1655435
--- /dev/null
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/SensinactPackage.java
@@ -0,0 +1,1870 @@
+/**
+ * Copyright (c) 2018 CEA
+ * 
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
+ *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ * 
+ */
+package org.eclipse.papyrus.iotml.sensinact;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EEnum;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+import org.eclipse.papyrus.iotml.animate.AnimatePackage;
+
+import org.eclipse.papyrus.iotml.hardware.network.NetworkPackage;
+
+import org.eclipse.papyrus.iotml.software.artefact.ArtefactPackage;
+
+import org.eclipse.papyrus.iotml.software.resource.ResourcePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ *   <li>each class,</li>
+ *   <li>each feature of each class,</li>
+ *   <li>each enum,</li>
+ *   <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.iotml.sensinact.SensinactFactory
+ * @model kind="package"
+ *        annotation="http://www.eclipse.org/uml2/2.0.0/UML originalName='SensiNact'"
+ * @generated
+ */
+public interface SensinactPackage extends EPackage {
+	/**
+	 * The package name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNAME = "sensinact";
+
+	/**
+	 * The package namespace URI.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_URI = "http://www.eclipse.org/papyrus/iotml/0.7/IoTML/SensiNact";
+
+	/**
+	 * The package namespace name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_PREFIX = "SensiNact";
+
+	/**
+	 * The singleton instance of the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	SensinactPackage eINSTANCE = org.eclipse.papyrus.iotml.sensinact.impl.SensinactPackageImpl.init();
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.iotml.sensinact.impl.TypedElementImpl <em>Typed Element</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.iotml.sensinact.impl.TypedElementImpl
+	 * @see org.eclipse.papyrus.iotml.sensinact.impl.SensinactPackageImpl#getTypedElement()
+	 * @generated
+	 */
+	int TYPED_ELEMENT = 0;
+
+	/**
+	 * The feature id for the '<em><b>Value</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TYPED_ELEMENT__VALUE = 0;
+
+	/**
+	 * The feature id for the '<em><b>Base Typed Element</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TYPED_ELEMENT__BASE_TYPED_ELEMENT = 1;
+
+	/**
+	 * The number of structural features of the '<em>Typed Element</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TYPED_ELEMENT_FEATURE_COUNT = 2;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.iotml.sensinact.impl.StudioImpl <em>Studio</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.iotml.sensinact.impl.StudioImpl
+	 * @see org.eclipse.papyrus.iotml.sensinact.impl.SensinactPackageImpl#getStudio()
+	 * @generated
+	 */
+	int STUDIO = 1;
+
+	/**
+	 * The feature id for the '<em><b>Base Actor</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STUDIO__BASE_ACTOR = AnimatePackage.HUMAN_USER__BASE_ACTOR;
+
+	/**
+	 * The feature id for the '<em><b>Gateways</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STUDIO__GATEWAYS = AnimatePackage.HUMAN_USER_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Studio</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STUDIO_FEATURE_COUNT = AnimatePackage.HUMAN_USER_FEATURE_COUNT + 1;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.iotml.sensinact.impl.GatewayImpl <em>Gateway</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.iotml.sensinact.impl.GatewayImpl
+	 * @see org.eclipse.papyrus.iotml.sensinact.impl.SensinactPackageImpl#getGateway()
+	 * @generated
+	 */
+	int GATEWAY = 2;
+
+	/**
+	 * The feature id for the '<em><b>Res Mult</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GATEWAY__RES_MULT = NetworkPackage.GATEWAY__RES_MULT;
+
+	/**
+	 * The feature id for the '<em><b>Is Protected</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GATEWAY__IS_PROTECTED = NetworkPackage.GATEWAY__IS_PROTECTED;
+
+	/**
+	 * The feature id for the '<em><b>Is Active</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GATEWAY__IS_ACTIVE = NetworkPackage.GATEWAY__IS_ACTIVE;
+
+	/**
+	 * The feature id for the '<em><b>Base Property</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GATEWAY__BASE_PROPERTY = NetworkPackage.GATEWAY__BASE_PROPERTY;
+
+	/**
+	 * The feature id for the '<em><b>Base Instance Specification</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GATEWAY__BASE_INSTANCE_SPECIFICATION = NetworkPackage.GATEWAY__BASE_INSTANCE_SPECIFICATION;
+
+	/**
+	 * The feature id for the '<em><b>Base Classifier</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GATEWAY__BASE_CLASSIFIER = NetworkPackage.GATEWAY__BASE_CLASSIFIER;
+
+	/**
+	 * The feature id for the '<em><b>Base Lifeline</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GATEWAY__BASE_LIFELINE = NetworkPackage.GATEWAY__BASE_LIFELINE;
+
+	/**
+	 * The feature id for the '<em><b>Base Connectable Element</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GATEWAY__BASE_CONNECTABLE_ELEMENT = NetworkPackage.GATEWAY__BASE_CONNECTABLE_ELEMENT;
+
+	/**
+	 * The feature id for the '<em><b>Description</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GATEWAY__DESCRIPTION = NetworkPackage.GATEWAY__DESCRIPTION;
+
+	/**
+	 * The feature id for the '<em><b>Frequency</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GATEWAY__FREQUENCY = NetworkPackage.GATEWAY__FREQUENCY;
+
+	/**
+	 * The feature id for the '<em><b>End Points</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GATEWAY__END_POINTS = NetworkPackage.GATEWAY__END_POINTS;
+
+	/**
+	 * The feature id for the '<em><b>PHW Services</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GATEWAY__PHW_SERVICES = NetworkPackage.GATEWAY__PHW_SERVICES;
+
+	/**
+	 * The feature id for the '<em><b>RHW Services</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GATEWAY__RHW_SERVICES = NetworkPackage.GATEWAY__RHW_SERVICES;
+
+	/**
+	 * The feature id for the '<em><b>Owned HW</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GATEWAY__OWNED_HW = NetworkPackage.GATEWAY__OWNED_HW;
+
+	/**
+	 * The feature id for the '<em><b>Speed Factor</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GATEWAY__SPEED_FACTOR = NetworkPackage.GATEWAY__SPEED_FACTOR;
+
+	/**
+	 * The feature id for the '<em><b>Main Scheduler</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GATEWAY__MAIN_SCHEDULER = NetworkPackage.GATEWAY__MAIN_SCHEDULER;
+
+	/**
+	 * The feature id for the '<em><b>Op Frequencies</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GATEWAY__OP_FREQUENCIES = NetworkPackage.GATEWAY__OP_FREQUENCIES;
+
+	/**
+	 * The feature id for the '<em><b>Device Type</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GATEWAY__DEVICE_TYPE = NetworkPackage.GATEWAY__DEVICE_TYPE;
+
+	/**
+	 * The feature id for the '<em><b>Board</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GATEWAY__BOARD = NetworkPackage.GATEWAY__BOARD;
+
+	/**
+	 * The feature id for the '<em><b>Devices</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GATEWAY__DEVICES = NetworkPackage.GATEWAY_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Gateway</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GATEWAY_FEATURE_COUNT = NetworkPackage.GATEWAY_FEATURE_COUNT + 1;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.iotml.sensinact.impl.DeviceImpl <em>Device</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.iotml.sensinact.impl.DeviceImpl
+	 * @see org.eclipse.papyrus.iotml.sensinact.impl.SensinactPackageImpl#getDevice()
+	 * @generated
+	 */
+	int DEVICE = 3;
+
+	/**
+	 * The feature id for the '<em><b>Res Mult</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DEVICE__RES_MULT = NetworkPackage.CONNECTED_DEVICE__RES_MULT;
+
+	/**
+	 * The feature id for the '<em><b>Is Protected</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DEVICE__IS_PROTECTED = NetworkPackage.CONNECTED_DEVICE__IS_PROTECTED;
+
+	/**
+	 * The feature id for the '<em><b>Is Active</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DEVICE__IS_ACTIVE = NetworkPackage.CONNECTED_DEVICE__IS_ACTIVE;
+
+	/**
+	 * The feature id for the '<em><b>Base Property</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DEVICE__BASE_PROPERTY = NetworkPackage.CONNECTED_DEVICE__BASE_PROPERTY;
+
+	/**
+	 * The feature id for the '<em><b>Base Instance Specification</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DEVICE__BASE_INSTANCE_SPECIFICATION = NetworkPackage.CONNECTED_DEVICE__BASE_INSTANCE_SPECIFICATION;
+
+	/**
+	 * The feature id for the '<em><b>Base Classifier</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DEVICE__BASE_CLASSIFIER = NetworkPackage.CONNECTED_DEVICE__BASE_CLASSIFIER;
+
+	/**
+	 * The feature id for the '<em><b>Base Lifeline</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DEVICE__BASE_LIFELINE = NetworkPackage.CONNECTED_DEVICE__BASE_LIFELINE;
+
+	/**
+	 * The feature id for the '<em><b>Base Connectable Element</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DEVICE__BASE_CONNECTABLE_ELEMENT = NetworkPackage.CONNECTED_DEVICE__BASE_CONNECTABLE_ELEMENT;
+
+	/**
+	 * The feature id for the '<em><b>Description</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DEVICE__DESCRIPTION = NetworkPackage.CONNECTED_DEVICE__DESCRIPTION;
+
+	/**
+	 * The feature id for the '<em><b>Frequency</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DEVICE__FREQUENCY = NetworkPackage.CONNECTED_DEVICE__FREQUENCY;
+
+	/**
+	 * The feature id for the '<em><b>End Points</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DEVICE__END_POINTS = NetworkPackage.CONNECTED_DEVICE__END_POINTS;
+
+	/**
+	 * The feature id for the '<em><b>PHW Services</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DEVICE__PHW_SERVICES = NetworkPackage.CONNECTED_DEVICE__PHW_SERVICES;
+
+	/**
+	 * The feature id for the '<em><b>RHW Services</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DEVICE__RHW_SERVICES = NetworkPackage.CONNECTED_DEVICE__RHW_SERVICES;
+
+	/**
+	 * The feature id for the '<em><b>Owned HW</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DEVICE__OWNED_HW = NetworkPackage.CONNECTED_DEVICE__OWNED_HW;
+
+	/**
+	 * The feature id for the '<em><b>Friendly Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DEVICE__FRIENDLY_NAME = NetworkPackage.CONNECTED_DEVICE_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Services</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DEVICE__SERVICES = NetworkPackage.CONNECTED_DEVICE_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>Device</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DEVICE_FEATURE_COUNT = NetworkPackage.CONNECTED_DEVICE_FEATURE_COUNT + 2;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.iotml.sensinact.impl.ServiceImpl <em>Service</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.iotml.sensinact.impl.ServiceImpl
+	 * @see org.eclipse.papyrus.iotml.sensinact.impl.SensinactPackageImpl#getService()
+	 * @generated
+	 */
+	int SERVICE = 4;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SERVICE__BASE_CLASS = ArtefactPackage.SERVICE__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Friendly Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SERVICE__FRIENDLY_NAME = ArtefactPackage.SERVICE_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Resources</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SERVICE__RESOURCES = ArtefactPackage.SERVICE_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>Service</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SERVICE_FEATURE_COUNT = ArtefactPackage.SERVICE_FEATURE_COUNT + 2;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.iotml.sensinact.impl.ResourceImpl <em>Resource</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.iotml.sensinact.impl.ResourceImpl
+	 * @see org.eclipse.papyrus.iotml.sensinact.impl.SensinactPackageImpl#getResource()
+	 * @generated
+	 */
+	int RESOURCE = 5;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RESOURCE__BASE_CLASS = ResourcePackage.ON_DEVICE_RESOURCE__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Device Broker</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RESOURCE__DEVICE_BROKER = ResourcePackage.ON_DEVICE_RESOURCE__DEVICE_BROKER;
+
+	/**
+	 * The feature id for the '<em><b>Memory Broker</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RESOURCE__MEMORY_BROKER = ResourcePackage.ON_DEVICE_RESOURCE__MEMORY_BROKER;
+
+	/**
+	 * The feature id for the '<em><b>Friendly Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RESOURCE__FRIENDLY_NAME = ResourcePackage.ON_DEVICE_RESOURCE_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Access Methods</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RESOURCE__ACCESS_METHODS = ResourcePackage.ON_DEVICE_RESOURCE_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Attributes</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RESOURCE__ATTRIBUTES = ResourcePackage.ON_DEVICE_RESOURCE_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of structural features of the '<em>Resource</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RESOURCE_FEATURE_COUNT = ResourcePackage.ON_DEVICE_RESOURCE_FEATURE_COUNT + 3;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.iotml.sensinact.impl.AccessMethodImpl <em>Access Method</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.iotml.sensinact.impl.AccessMethodImpl
+	 * @see org.eclipse.papyrus.iotml.sensinact.impl.SensinactPackageImpl#getAccessMethod()
+	 * @generated
+	 */
+	int ACCESS_METHOD = 6;
+
+	/**
+	 * The feature id for the '<em><b>Type</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACCESS_METHOD__TYPE = 0;
+
+	/**
+	 * The feature id for the '<em><b>Parameters</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACCESS_METHOD__PARAMETERS = 1;
+
+	/**
+	 * The feature id for the '<em><b>Base Operation</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACCESS_METHOD__BASE_OPERATION = 2;
+
+	/**
+	 * The number of structural features of the '<em>Access Method</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACCESS_METHOD_FEATURE_COUNT = 3;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.iotml.sensinact.impl.ParameterImpl <em>Parameter</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.iotml.sensinact.impl.ParameterImpl
+	 * @see org.eclipse.papyrus.iotml.sensinact.impl.SensinactPackageImpl#getParameter()
+	 * @generated
+	 */
+	int PARAMETER = 7;
+
+	/**
+	 * The feature id for the '<em><b>Value</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PARAMETER__VALUE = TYPED_ELEMENT__VALUE;
+
+	/**
+	 * The feature id for the '<em><b>Base Typed Element</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PARAMETER__BASE_TYPED_ELEMENT = TYPED_ELEMENT__BASE_TYPED_ELEMENT;
+
+	/**
+	 * The number of structural features of the '<em>Parameter</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PARAMETER_FEATURE_COUNT = TYPED_ELEMENT_FEATURE_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.iotml.sensinact.impl.AttributeImpl <em>Attribute</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.iotml.sensinact.impl.AttributeImpl
+	 * @see org.eclipse.papyrus.iotml.sensinact.impl.SensinactPackageImpl#getAttribute()
+	 * @generated
+	 */
+	int ATTRIBUTE = 8;
+
+	/**
+	 * The feature id for the '<em><b>Value</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ATTRIBUTE__VALUE = TYPED_ELEMENT__VALUE;
+
+	/**
+	 * The feature id for the '<em><b>Base Typed Element</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ATTRIBUTE__BASE_TYPED_ELEMENT = TYPED_ELEMENT__BASE_TYPED_ELEMENT;
+
+	/**
+	 * The feature id for the '<em><b>Metadata</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ATTRIBUTE__METADATA = TYPED_ELEMENT_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Attribute</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ATTRIBUTE_FEATURE_COUNT = TYPED_ELEMENT_FEATURE_COUNT + 1;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.iotml.sensinact.impl.MetadataImpl <em>Metadata</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.iotml.sensinact.impl.MetadataImpl
+	 * @see org.eclipse.papyrus.iotml.sensinact.impl.SensinactPackageImpl#getMetadata()
+	 * @generated
+	 */
+	int METADATA = 9;
+
+	/**
+	 * The feature id for the '<em><b>Value</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int METADATA__VALUE = TYPED_ELEMENT__VALUE;
+
+	/**
+	 * The feature id for the '<em><b>Base Typed Element</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int METADATA__BASE_TYPED_ELEMENT = TYPED_ELEMENT__BASE_TYPED_ELEMENT;
+
+	/**
+	 * The number of structural features of the '<em>Metadata</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int METADATA_FEATURE_COUNT = TYPED_ELEMENT_FEATURE_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.iotml.sensinact.impl.PropertyImpl <em>Property</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.iotml.sensinact.impl.PropertyImpl
+	 * @see org.eclipse.papyrus.iotml.sensinact.impl.SensinactPackageImpl#getProperty()
+	 * @generated
+	 */
+	int PROPERTY = 10;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY__BASE_CLASS = RESOURCE__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Device Broker</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY__DEVICE_BROKER = RESOURCE__DEVICE_BROKER;
+
+	/**
+	 * The feature id for the '<em><b>Memory Broker</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY__MEMORY_BROKER = RESOURCE__MEMORY_BROKER;
+
+	/**
+	 * The feature id for the '<em><b>Friendly Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY__FRIENDLY_NAME = RESOURCE__FRIENDLY_NAME;
+
+	/**
+	 * The feature id for the '<em><b>Access Methods</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY__ACCESS_METHODS = RESOURCE__ACCESS_METHODS;
+
+	/**
+	 * The feature id for the '<em><b>Attributes</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY__ATTRIBUTES = RESOURCE__ATTRIBUTES;
+
+	/**
+	 * The feature id for the '<em><b>Base Property</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY__BASE_PROPERTY = RESOURCE_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Property</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_FEATURE_COUNT = RESOURCE_FEATURE_COUNT + 1;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.iotml.sensinact.impl.SensorDataImpl <em>Sensor Data</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.iotml.sensinact.impl.SensorDataImpl
+	 * @see org.eclipse.papyrus.iotml.sensinact.impl.SensinactPackageImpl#getSensorData()
+	 * @generated
+	 */
+	int SENSOR_DATA = 11;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SENSOR_DATA__BASE_CLASS = RESOURCE__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Device Broker</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SENSOR_DATA__DEVICE_BROKER = RESOURCE__DEVICE_BROKER;
+
+	/**
+	 * The feature id for the '<em><b>Memory Broker</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SENSOR_DATA__MEMORY_BROKER = RESOURCE__MEMORY_BROKER;
+
+	/**
+	 * The feature id for the '<em><b>Friendly Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SENSOR_DATA__FRIENDLY_NAME = RESOURCE__FRIENDLY_NAME;
+
+	/**
+	 * The feature id for the '<em><b>Access Methods</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SENSOR_DATA__ACCESS_METHODS = RESOURCE__ACCESS_METHODS;
+
+	/**
+	 * The feature id for the '<em><b>Attributes</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SENSOR_DATA__ATTRIBUTES = RESOURCE__ATTRIBUTES;
+
+	/**
+	 * The feature id for the '<em><b>Base Property</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SENSOR_DATA__BASE_PROPERTY = RESOURCE_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Sensor Data</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SENSOR_DATA_FEATURE_COUNT = RESOURCE_FEATURE_COUNT + 1;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.iotml.sensinact.impl.StateVariableImpl <em>State Variable</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.iotml.sensinact.impl.StateVariableImpl
+	 * @see org.eclipse.papyrus.iotml.sensinact.impl.SensinactPackageImpl#getStateVariable()
+	 * @generated
+	 */
+	int STATE_VARIABLE = 12;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATE_VARIABLE__BASE_CLASS = RESOURCE__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Device Broker</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATE_VARIABLE__DEVICE_BROKER = RESOURCE__DEVICE_BROKER;
+
+	/**
+	 * The feature id for the '<em><b>Memory Broker</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATE_VARIABLE__MEMORY_BROKER = RESOURCE__MEMORY_BROKER;
+
+	/**
+	 * The feature id for the '<em><b>Friendly Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATE_VARIABLE__FRIENDLY_NAME = RESOURCE__FRIENDLY_NAME;
+
+	/**
+	 * The feature id for the '<em><b>Access Methods</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATE_VARIABLE__ACCESS_METHODS = RESOURCE__ACCESS_METHODS;
+
+	/**
+	 * The feature id for the '<em><b>Attributes</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATE_VARIABLE__ATTRIBUTES = RESOURCE__ATTRIBUTES;
+
+	/**
+	 * The feature id for the '<em><b>Modifier</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATE_VARIABLE__MODIFIER = RESOURCE_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Base Property</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATE_VARIABLE__BASE_PROPERTY = RESOURCE_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>State Variable</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATE_VARIABLE_FEATURE_COUNT = RESOURCE_FEATURE_COUNT + 2;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.iotml.sensinact.impl.ActionImpl <em>Action</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.iotml.sensinact.impl.ActionImpl
+	 * @see org.eclipse.papyrus.iotml.sensinact.impl.SensinactPackageImpl#getAction()
+	 * @generated
+	 */
+	int ACTION = 13;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACTION__BASE_CLASS = RESOURCE__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Device Broker</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACTION__DEVICE_BROKER = RESOURCE__DEVICE_BROKER;
+
+	/**
+	 * The feature id for the '<em><b>Memory Broker</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACTION__MEMORY_BROKER = RESOURCE__MEMORY_BROKER;
+
+	/**
+	 * The feature id for the '<em><b>Friendly Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACTION__FRIENDLY_NAME = RESOURCE__FRIENDLY_NAME;
+
+	/**
+	 * The feature id for the '<em><b>Access Methods</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACTION__ACCESS_METHODS = RESOURCE__ACCESS_METHODS;
+
+	/**
+	 * The feature id for the '<em><b>Attributes</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACTION__ATTRIBUTES = RESOURCE__ATTRIBUTES;
+
+	/**
+	 * The feature id for the '<em><b>Base Association</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACTION__BASE_ASSOCIATION = RESOURCE_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Accessed Property</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACTION__ACCESSED_PROPERTY = RESOURCE_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>State</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACTION__STATE = RESOURCE_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of structural features of the '<em>Action</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACTION_FEATURE_COUNT = RESOURCE_FEATURE_COUNT + 3;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.iotml.sensinact.AccessMethodType <em>Access Method Type</em>}' enum.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.iotml.sensinact.AccessMethodType
+	 * @see org.eclipse.papyrus.iotml.sensinact.impl.SensinactPackageImpl#getAccessMethodType()
+	 * @generated
+	 */
+	int ACCESS_METHOD_TYPE = 14;
+
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.iotml.sensinact.TypedElement <em>Typed Element</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Typed Element</em>'.
+	 * @see org.eclipse.papyrus.iotml.sensinact.TypedElement
+	 * @generated
+	 */
+	EClass getTypedElement();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.papyrus.iotml.sensinact.TypedElement#getValue <em>Value</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Value</em>'.
+	 * @see org.eclipse.papyrus.iotml.sensinact.TypedElement#getValue()
+	 * @see #getTypedElement()
+	 * @generated
+	 */
+	EReference getTypedElement_Value();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.papyrus.iotml.sensinact.TypedElement#getBase_TypedElement <em>Base Typed Element</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Base Typed Element</em>'.
+	 * @see org.eclipse.papyrus.iotml.sensinact.TypedElement#getBase_TypedElement()
+	 * @see #getTypedElement()
+	 * @generated
+	 */
+	EReference getTypedElement_Base_TypedElement();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.iotml.sensinact.Studio <em>Studio</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Studio</em>'.
+	 * @see org.eclipse.papyrus.iotml.sensinact.Studio
+	 * @generated
+	 */
+	EClass getStudio();
+
+	/**
+	 * Returns the meta object for the reference list '{@link org.eclipse.papyrus.iotml.sensinact.Studio#getGateways <em>Gateways</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference list '<em>Gateways</em>'.
+	 * @see org.eclipse.papyrus.iotml.sensinact.Studio#getGateways()
+	 * @see #getStudio()
+	 * @generated
+	 */
+	EReference getStudio_Gateways();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.iotml.sensinact.Gateway <em>Gateway</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Gateway</em>'.
+	 * @see org.eclipse.papyrus.iotml.sensinact.Gateway
+	 * @generated
+	 */
+	EClass getGateway();
+
+	/**
+	 * Returns the meta object for the reference list '{@link org.eclipse.papyrus.iotml.sensinact.Gateway#getDevices <em>Devices</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference list '<em>Devices</em>'.
+	 * @see org.eclipse.papyrus.iotml.sensinact.Gateway#getDevices()
+	 * @see #getGateway()
+	 * @generated
+	 */
+	EReference getGateway_Devices();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.iotml.sensinact.Device <em>Device</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Device</em>'.
+	 * @see org.eclipse.papyrus.iotml.sensinact.Device
+	 * @generated
+	 */
+	EClass getDevice();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.iotml.sensinact.Device#getFriendlyName <em>Friendly Name</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Friendly Name</em>'.
+	 * @see org.eclipse.papyrus.iotml.sensinact.Device#getFriendlyName()
+	 * @see #getDevice()
+	 * @generated
+	 */
+	EAttribute getDevice_FriendlyName();
+
+	/**
+	 * Returns the meta object for the reference list '{@link org.eclipse.papyrus.iotml.sensinact.Device#getServices <em>Services</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference list '<em>Services</em>'.
+	 * @see org.eclipse.papyrus.iotml.sensinact.Device#getServices()
+	 * @see #getDevice()
+	 * @generated
+	 */
+	EReference getDevice_Services();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.iotml.sensinact.Service <em>Service</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Service</em>'.
+	 * @see org.eclipse.papyrus.iotml.sensinact.Service
+	 * @generated
+	 */
+	EClass getService();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.iotml.sensinact.Service#getFriendlyName <em>Friendly Name</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Friendly Name</em>'.
+	 * @see org.eclipse.papyrus.iotml.sensinact.Service#getFriendlyName()
+	 * @see #getService()
+	 * @generated
+	 */
+	EAttribute getService_FriendlyName();
+
+	/**
+	 * Returns the meta object for the reference list '{@link org.eclipse.papyrus.iotml.sensinact.Service#getResources <em>Resources</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference list '<em>Resources</em>'.
+	 * @see org.eclipse.papyrus.iotml.sensinact.Service#getResources()
+	 * @see #getService()
+	 * @generated
+	 */
+	EReference getService_Resources();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.iotml.sensinact.Resource <em>Resource</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Resource</em>'.
+	 * @see org.eclipse.papyrus.iotml.sensinact.Resource
+	 * @generated
+	 */
+	EClass getResource();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.iotml.sensinact.Resource#getFriendlyName <em>Friendly Name</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Friendly Name</em>'.
+	 * @see org.eclipse.papyrus.iotml.sensinact.Resource#getFriendlyName()
+	 * @see #getResource()
+	 * @generated
+	 */
+	EAttribute getResource_FriendlyName();
+
+	/**
+	 * Returns the meta object for the reference list '{@link org.eclipse.papyrus.iotml.sensinact.Resource#getAccessMethods <em>Access Methods</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference list '<em>Access Methods</em>'.
+	 * @see org.eclipse.papyrus.iotml.sensinact.Resource#getAccessMethods()
+	 * @see #getResource()
+	 * @generated
+	 */
+	EReference getResource_AccessMethods();
+
+	/**
+	 * Returns the meta object for the reference list '{@link org.eclipse.papyrus.iotml.sensinact.Resource#getAttributes <em>Attributes</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference list '<em>Attributes</em>'.
+	 * @see org.eclipse.papyrus.iotml.sensinact.Resource#getAttributes()
+	 * @see #getResource()
+	 * @generated
+	 */
+	EReference getResource_Attributes();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.iotml.sensinact.AccessMethod <em>Access Method</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Access Method</em>'.
+	 * @see org.eclipse.papyrus.iotml.sensinact.AccessMethod
+	 * @generated
+	 */
+	EClass getAccessMethod();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.iotml.sensinact.AccessMethod#getType <em>Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Type</em>'.
+	 * @see org.eclipse.papyrus.iotml.sensinact.AccessMethod#getType()
+	 * @see #getAccessMethod()
+	 * @generated
+	 */
+	EAttribute getAccessMethod_Type();
+
+	/**
+	 * Returns the meta object for the reference list '{@link org.eclipse.papyrus.iotml.sensinact.AccessMethod#getParameters <em>Parameters</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference list '<em>Parameters</em>'.
+	 * @see org.eclipse.papyrus.iotml.sensinact.AccessMethod#getParameters()
+	 * @see #getAccessMethod()
+	 * @generated
+	 */
+	EReference getAccessMethod_Parameters();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.papyrus.iotml.sensinact.AccessMethod#getBase_Operation <em>Base Operation</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Base Operation</em>'.
+	 * @see org.eclipse.papyrus.iotml.sensinact.AccessMethod#getBase_Operation()
+	 * @see #getAccessMethod()
+	 * @generated
+	 */
+	EReference getAccessMethod_Base_Operation();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.iotml.sensinact.Parameter <em>Parameter</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Parameter</em>'.
+	 * @see org.eclipse.papyrus.iotml.sensinact.Parameter
+	 * @generated
+	 */
+	EClass getParameter();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.iotml.sensinact.Attribute <em>Attribute</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Attribute</em>'.
+	 * @see org.eclipse.papyrus.iotml.sensinact.Attribute
+	 * @generated
+	 */
+	EClass getAttribute();
+
+	/**
+	 * Returns the meta object for the reference list '{@link org.eclipse.papyrus.iotml.sensinact.Attribute#getMetadata <em>Metadata</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference list '<em>Metadata</em>'.
+	 * @see org.eclipse.papyrus.iotml.sensinact.Attribute#getMetadata()
+	 * @see #getAttribute()
+	 * @generated
+	 */
+	EReference getAttribute_Metadata();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.iotml.sensinact.Metadata <em>Metadata</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Metadata</em>'.
+	 * @see org.eclipse.papyrus.iotml.sensinact.Metadata
+	 * @generated
+	 */
+	EClass getMetadata();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.iotml.sensinact.Property <em>Property</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Property</em>'.
+	 * @see org.eclipse.papyrus.iotml.sensinact.Property
+	 * @generated
+	 */
+	EClass getProperty();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.papyrus.iotml.sensinact.Property#getBase_Property <em>Base Property</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Base Property</em>'.
+	 * @see org.eclipse.papyrus.iotml.sensinact.Property#getBase_Property()
+	 * @see #getProperty()
+	 * @generated
+	 */
+	EReference getProperty_Base_Property();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.iotml.sensinact.SensorData <em>Sensor Data</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Sensor Data</em>'.
+	 * @see org.eclipse.papyrus.iotml.sensinact.SensorData
+	 * @generated
+	 */
+	EClass getSensorData();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.papyrus.iotml.sensinact.SensorData#getBase_Property <em>Base Property</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Base Property</em>'.
+	 * @see org.eclipse.papyrus.iotml.sensinact.SensorData#getBase_Property()
+	 * @see #getSensorData()
+	 * @generated
+	 */
+	EReference getSensorData_Base_Property();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.iotml.sensinact.StateVariable <em>State Variable</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>State Variable</em>'.
+	 * @see org.eclipse.papyrus.iotml.sensinact.StateVariable
+	 * @generated
+	 */
+	EClass getStateVariable();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.papyrus.iotml.sensinact.StateVariable#getModifier <em>Modifier</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Modifier</em>'.
+	 * @see org.eclipse.papyrus.iotml.sensinact.StateVariable#getModifier()
+	 * @see #getStateVariable()
+	 * @generated
+	 */
+	EReference getStateVariable_Modifier();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.papyrus.iotml.sensinact.StateVariable#getBase_Property <em>Base Property</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Base Property</em>'.
+	 * @see org.eclipse.papyrus.iotml.sensinact.StateVariable#getBase_Property()
+	 * @see #getStateVariable()
+	 * @generated
+	 */
+	EReference getStateVariable_Base_Property();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.iotml.sensinact.Action <em>Action</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Action</em>'.
+	 * @see org.eclipse.papyrus.iotml.sensinact.Action
+	 * @generated
+	 */
+	EClass getAction();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.papyrus.iotml.sensinact.Action#getState <em>State</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>State</em>'.
+	 * @see org.eclipse.papyrus.iotml.sensinact.Action#getState()
+	 * @see #getAction()
+	 * @generated
+	 */
+	EReference getAction_State();
+
+	/**
+	 * Returns the meta object for enum '{@link org.eclipse.papyrus.iotml.sensinact.AccessMethodType <em>Access Method Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for enum '<em>Access Method Type</em>'.
+	 * @see org.eclipse.papyrus.iotml.sensinact.AccessMethodType
+	 * @generated
+	 */
+	EEnum getAccessMethodType();
+
+	/**
+	 * Returns the factory that creates the instances of the model.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the factory that creates the instances of the model.
+	 * @generated
+	 */
+	SensinactFactory getSensinactFactory();
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * Defines literals for the meta objects that represent
+	 * <ul>
+	 *   <li>each class,</li>
+	 *   <li>each feature of each class,</li>
+	 *   <li>each enum,</li>
+	 *   <li>and each data type</li>
+	 * </ul>
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	interface Literals {
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.iotml.sensinact.impl.TypedElementImpl <em>Typed Element</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.iotml.sensinact.impl.TypedElementImpl
+		 * @see org.eclipse.papyrus.iotml.sensinact.impl.SensinactPackageImpl#getTypedElement()
+		 * @generated
+		 */
+		EClass TYPED_ELEMENT = eINSTANCE.getTypedElement();
+
+		/**
+		 * The meta object literal for the '<em><b>Value</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference TYPED_ELEMENT__VALUE = eINSTANCE.getTypedElement_Value();
+
+		/**
+		 * The meta object literal for the '<em><b>Base Typed Element</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference TYPED_ELEMENT__BASE_TYPED_ELEMENT = eINSTANCE.getTypedElement_Base_TypedElement();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.iotml.sensinact.impl.StudioImpl <em>Studio</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.iotml.sensinact.impl.StudioImpl
+		 * @see org.eclipse.papyrus.iotml.sensinact.impl.SensinactPackageImpl#getStudio()
+		 * @generated
+		 */
+		EClass STUDIO = eINSTANCE.getStudio();
+
+		/**
+		 * The meta object literal for the '<em><b>Gateways</b></em>' reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STUDIO__GATEWAYS = eINSTANCE.getStudio_Gateways();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.iotml.sensinact.impl.GatewayImpl <em>Gateway</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.iotml.sensinact.impl.GatewayImpl
+		 * @see org.eclipse.papyrus.iotml.sensinact.impl.SensinactPackageImpl#getGateway()
+		 * @generated
+		 */
+		EClass GATEWAY = eINSTANCE.getGateway();
+
+		/**
+		 * The meta object literal for the '<em><b>Devices</b></em>' reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference GATEWAY__DEVICES = eINSTANCE.getGateway_Devices();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.iotml.sensinact.impl.DeviceImpl <em>Device</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.iotml.sensinact.impl.DeviceImpl
+		 * @see org.eclipse.papyrus.iotml.sensinact.impl.SensinactPackageImpl#getDevice()
+		 * @generated
+		 */
+		EClass DEVICE = eINSTANCE.getDevice();
+
+		/**
+		 * The meta object literal for the '<em><b>Friendly Name</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute DEVICE__FRIENDLY_NAME = eINSTANCE.getDevice_FriendlyName();
+
+		/**
+		 * The meta object literal for the '<em><b>Services</b></em>' reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference DEVICE__SERVICES = eINSTANCE.getDevice_Services();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.iotml.sensinact.impl.ServiceImpl <em>Service</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.iotml.sensinact.impl.ServiceImpl
+		 * @see org.eclipse.papyrus.iotml.sensinact.impl.SensinactPackageImpl#getService()
+		 * @generated
+		 */
+		EClass SERVICE = eINSTANCE.getService();
+
+		/**
+		 * The meta object literal for the '<em><b>Friendly Name</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute SERVICE__FRIENDLY_NAME = eINSTANCE.getService_FriendlyName();
+
+		/**
+		 * The meta object literal for the '<em><b>Resources</b></em>' reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference SERVICE__RESOURCES = eINSTANCE.getService_Resources();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.iotml.sensinact.impl.ResourceImpl <em>Resource</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.iotml.sensinact.impl.ResourceImpl
+		 * @see org.eclipse.papyrus.iotml.sensinact.impl.SensinactPackageImpl#getResource()
+		 * @generated
+		 */
+		EClass RESOURCE = eINSTANCE.getResource();
+
+		/**
+		 * The meta object literal for the '<em><b>Friendly Name</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute RESOURCE__FRIENDLY_NAME = eINSTANCE.getResource_FriendlyName();
+
+		/**
+		 * The meta object literal for the '<em><b>Access Methods</b></em>' reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference RESOURCE__ACCESS_METHODS = eINSTANCE.getResource_AccessMethods();
+
+		/**
+		 * The meta object literal for the '<em><b>Attributes</b></em>' reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference RESOURCE__ATTRIBUTES = eINSTANCE.getResource_Attributes();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.iotml.sensinact.impl.AccessMethodImpl <em>Access Method</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.iotml.sensinact.impl.AccessMethodImpl
+		 * @see org.eclipse.papyrus.iotml.sensinact.impl.SensinactPackageImpl#getAccessMethod()
+		 * @generated
+		 */
+		EClass ACCESS_METHOD = eINSTANCE.getAccessMethod();
+
+		/**
+		 * The meta object literal for the '<em><b>Type</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute ACCESS_METHOD__TYPE = eINSTANCE.getAccessMethod_Type();
+
+		/**
+		 * The meta object literal for the '<em><b>Parameters</b></em>' reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference ACCESS_METHOD__PARAMETERS = eINSTANCE.getAccessMethod_Parameters();
+
+		/**
+		 * The meta object literal for the '<em><b>Base Operation</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference ACCESS_METHOD__BASE_OPERATION = eINSTANCE.getAccessMethod_Base_Operation();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.iotml.sensinact.impl.ParameterImpl <em>Parameter</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.iotml.sensinact.impl.ParameterImpl
+		 * @see org.eclipse.papyrus.iotml.sensinact.impl.SensinactPackageImpl#getParameter()
+		 * @generated
+		 */
+		EClass PARAMETER = eINSTANCE.getParameter();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.iotml.sensinact.impl.AttributeImpl <em>Attribute</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.iotml.sensinact.impl.AttributeImpl
+		 * @see org.eclipse.papyrus.iotml.sensinact.impl.SensinactPackageImpl#getAttribute()
+		 * @generated
+		 */
+		EClass ATTRIBUTE = eINSTANCE.getAttribute();
+
+		/**
+		 * The meta object literal for the '<em><b>Metadata</b></em>' reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference ATTRIBUTE__METADATA = eINSTANCE.getAttribute_Metadata();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.iotml.sensinact.impl.MetadataImpl <em>Metadata</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.iotml.sensinact.impl.MetadataImpl
+		 * @see org.eclipse.papyrus.iotml.sensinact.impl.SensinactPackageImpl#getMetadata()
+		 * @generated
+		 */
+		EClass METADATA = eINSTANCE.getMetadata();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.iotml.sensinact.impl.PropertyImpl <em>Property</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.iotml.sensinact.impl.PropertyImpl
+		 * @see org.eclipse.papyrus.iotml.sensinact.impl.SensinactPackageImpl#getProperty()
+		 * @generated
+		 */
+		EClass PROPERTY = eINSTANCE.getProperty();
+
+		/**
+		 * The meta object literal for the '<em><b>Base Property</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference PROPERTY__BASE_PROPERTY = eINSTANCE.getProperty_Base_Property();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.iotml.sensinact.impl.SensorDataImpl <em>Sensor Data</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.iotml.sensinact.impl.SensorDataImpl
+		 * @see org.eclipse.papyrus.iotml.sensinact.impl.SensinactPackageImpl#getSensorData()
+		 * @generated
+		 */
+		EClass SENSOR_DATA = eINSTANCE.getSensorData();
+
+		/**
+		 * The meta object literal for the '<em><b>Base Property</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference SENSOR_DATA__BASE_PROPERTY = eINSTANCE.getSensorData_Base_Property();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.iotml.sensinact.impl.StateVariableImpl <em>State Variable</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.iotml.sensinact.impl.StateVariableImpl
+		 * @see org.eclipse.papyrus.iotml.sensinact.impl.SensinactPackageImpl#getStateVariable()
+		 * @generated
+		 */
+		EClass STATE_VARIABLE = eINSTANCE.getStateVariable();
+
+		/**
+		 * The meta object literal for the '<em><b>Modifier</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STATE_VARIABLE__MODIFIER = eINSTANCE.getStateVariable_Modifier();
+
+		/**
+		 * The meta object literal for the '<em><b>Base Property</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STATE_VARIABLE__BASE_PROPERTY = eINSTANCE.getStateVariable_Base_Property();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.iotml.sensinact.impl.ActionImpl <em>Action</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.iotml.sensinact.impl.ActionImpl
+		 * @see org.eclipse.papyrus.iotml.sensinact.impl.SensinactPackageImpl#getAction()
+		 * @generated
+		 */
+		EClass ACTION = eINSTANCE.getAction();
+
+		/**
+		 * The meta object literal for the '<em><b>State</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference ACTION__STATE = eINSTANCE.getAction_State();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.iotml.sensinact.AccessMethodType <em>Access Method Type</em>}' enum.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.iotml.sensinact.AccessMethodType
+		 * @see org.eclipse.papyrus.iotml.sensinact.impl.SensinactPackageImpl#getAccessMethodType()
+		 * @generated
+		 */
+		EEnum ACCESS_METHOD_TYPE = eINSTANCE.getAccessMethodType();
+
+	}
+
+} //SensinactPackage
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/SensorData.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/SensorData.java
new file mode 100644
index 0000000..ac29d9e
--- /dev/null
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/SensorData.java
@@ -0,0 +1,61 @@
+/**
+ * Copyright (c) 2018 CEA
+ * 
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
+ *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ * 
+ */
+package org.eclipse.papyrus.iotml.sensinact;
+
+import org.eclipse.uml2.uml.Property;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Sensor Data</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.iotml.sensinact.SensorData#getBase_Property <em>Base Property</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.iotml.sensinact.SensinactPackage#getSensorData()
+ * @model
+ * @generated
+ */
+public interface SensorData extends Resource {
+	/**
+	 * Returns the value of the '<em><b>Base Property</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Base Property</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Base Property</em>' reference.
+	 * @see #setBase_Property(Property)
+	 * @see org.eclipse.papyrus.iotml.sensinact.SensinactPackage#getSensorData_Base_Property()
+	 * @model required="true" ordered="false"
+	 * @generated
+	 */
+	Property getBase_Property();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.iotml.sensinact.SensorData#getBase_Property <em>Base Property</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Base Property</em>' reference.
+	 * @see #getBase_Property()
+	 * @generated
+	 */
+	void setBase_Property(Property value);
+
+} // SensorData
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/Service.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/Service.java
new file mode 100644
index 0000000..246d080
--- /dev/null
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/Service.java
@@ -0,0 +1,78 @@
+/**
+ * Copyright (c) 2018 CEA
+ * 
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
+ *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ * 
+ */
+package org.eclipse.papyrus.iotml.sensinact;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Service</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.iotml.sensinact.Service#getFriendlyName <em>Friendly Name</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.iotml.sensinact.Service#getResources <em>Resources</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.iotml.sensinact.SensinactPackage#getService()
+ * @model
+ * @generated
+ */
+public interface Service extends org.eclipse.papyrus.iotml.software.artefact.Service {
+	/**
+	 * Returns the value of the '<em><b>Friendly Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Friendly Name</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Friendly Name</em>' attribute.
+	 * @see #setFriendlyName(String)
+	 * @see org.eclipse.papyrus.iotml.sensinact.SensinactPackage#getService_FriendlyName()
+	 * @model dataType="org.eclipse.uml2.types.String" required="true" ordered="false"
+	 * @generated
+	 */
+	String getFriendlyName();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.iotml.sensinact.Service#getFriendlyName <em>Friendly Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Friendly Name</em>' attribute.
+	 * @see #getFriendlyName()
+	 * @generated
+	 */
+	void setFriendlyName(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Resources</b></em>' reference list.
+	 * The list contents are of type {@link org.eclipse.papyrus.iotml.sensinact.Resource}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Resources</em>' reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Resources</em>' reference list.
+	 * @see org.eclipse.papyrus.iotml.sensinact.SensinactPackage#getService_Resources()
+	 * @model required="true" ordered="false"
+	 * @generated
+	 */
+	EList<Resource> getResources();
+
+} // Service
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/StateVariable.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/StateVariable.java
new file mode 100644
index 0000000..f609c2c
--- /dev/null
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/StateVariable.java
@@ -0,0 +1,90 @@
+/**
+ * Copyright (c) 2018 CEA
+ * 
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
+ *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ * 
+ */
+package org.eclipse.papyrus.iotml.sensinact;
+
+import org.eclipse.uml2.uml.Property;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>State Variable</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.iotml.sensinact.StateVariable#getModifier <em>Modifier</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.iotml.sensinact.StateVariable#getBase_Property <em>Base Property</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.iotml.sensinact.SensinactPackage#getStateVariable()
+ * @model
+ * @generated
+ */
+public interface StateVariable extends Resource {
+	/**
+	 * Returns the value of the '<em><b>Modifier</b></em>' reference.
+	 * It is bidirectional and its opposite is '{@link org.eclipse.papyrus.iotml.sensinact.Action#getState <em>State</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Modifier</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Modifier</em>' reference.
+	 * @see #setModifier(Action)
+	 * @see org.eclipse.papyrus.iotml.sensinact.SensinactPackage#getStateVariable_Modifier()
+	 * @see org.eclipse.papyrus.iotml.sensinact.Action#getState
+	 * @model opposite="state" required="true" transient="true" volatile="true" derived="true" ordered="false"
+	 * @generated
+	 */
+	Action getModifier();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.iotml.sensinact.StateVariable#getModifier <em>Modifier</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Modifier</em>' reference.
+	 * @see #getModifier()
+	 * @generated
+	 */
+	void setModifier(Action value);
+
+	/**
+	 * Returns the value of the '<em><b>Base Property</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Base Property</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Base Property</em>' reference.
+	 * @see #setBase_Property(Property)
+	 * @see org.eclipse.papyrus.iotml.sensinact.SensinactPackage#getStateVariable_Base_Property()
+	 * @model required="true" ordered="false"
+	 * @generated
+	 */
+	Property getBase_Property();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.iotml.sensinact.StateVariable#getBase_Property <em>Base Property</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Base Property</em>' reference.
+	 * @see #getBase_Property()
+	 * @generated
+	 */
+	void setBase_Property(Property value);
+
+} // StateVariable
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/Studio.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/Studio.java
new file mode 100644
index 0000000..a99d2c8
--- /dev/null
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/Studio.java
@@ -0,0 +1,53 @@
+/**
+ * Copyright (c) 2018 CEA
+ * 
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
+ *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ * 
+ */
+package org.eclipse.papyrus.iotml.sensinact;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.papyrus.iotml.animate.HumanUser;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Studio</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.iotml.sensinact.Studio#getGateways <em>Gateways</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.iotml.sensinact.SensinactPackage#getStudio()
+ * @model
+ * @generated
+ */
+public interface Studio extends HumanUser {
+	/**
+	 * Returns the value of the '<em><b>Gateways</b></em>' reference list.
+	 * The list contents are of type {@link org.eclipse.papyrus.iotml.sensinact.Gateway}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Gateways</em>' reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Gateways</em>' reference list.
+	 * @see org.eclipse.papyrus.iotml.sensinact.SensinactPackage#getStudio_Gateways()
+	 * @model required="true" ordered="false"
+	 * @generated
+	 */
+	EList<Gateway> getGateways();
+
+} // Studio
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/TypedElement.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/TypedElement.java
new file mode 100644
index 0000000..bf6ce26
--- /dev/null
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/TypedElement.java
@@ -0,0 +1,90 @@
+/**
+ * Copyright (c) 2018 CEA
+ * 
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
+ *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ * 
+ */
+package org.eclipse.papyrus.iotml.sensinact;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.papyrus.iotml.software.core.structure.DetailedValueSpecification;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Typed Element</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.iotml.sensinact.TypedElement#getValue <em>Value</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.iotml.sensinact.TypedElement#getBase_TypedElement <em>Base Typed Element</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.iotml.sensinact.SensinactPackage#getTypedElement()
+ * @model abstract="true"
+ * @generated
+ */
+public interface TypedElement extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Value</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Value</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Value</em>' reference.
+	 * @see #setValue(DetailedValueSpecification)
+	 * @see org.eclipse.papyrus.iotml.sensinact.SensinactPackage#getTypedElement_Value()
+	 * @model ordered="false"
+	 * @generated
+	 */
+	DetailedValueSpecification getValue();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.iotml.sensinact.TypedElement#getValue <em>Value</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Value</em>' reference.
+	 * @see #getValue()
+	 * @generated
+	 */
+	void setValue(DetailedValueSpecification value);
+
+	/**
+	 * Returns the value of the '<em><b>Base Typed Element</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Base Typed Element</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Base Typed Element</em>' reference.
+	 * @see #setBase_TypedElement(org.eclipse.uml2.uml.TypedElement)
+	 * @see org.eclipse.papyrus.iotml.sensinact.SensinactPackage#getTypedElement_Base_TypedElement()
+	 * @model required="true" ordered="false"
+	 * @generated
+	 */
+	org.eclipse.uml2.uml.TypedElement getBase_TypedElement();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.iotml.sensinact.TypedElement#getBase_TypedElement <em>Base Typed Element</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Base Typed Element</em>' reference.
+	 * @see #getBase_TypedElement()
+	 * @generated
+	 */
+	void setBase_TypedElement(org.eclipse.uml2.uml.TypedElement value);
+
+} // TypedElement
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/AccessMethodImpl.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/AccessMethodImpl.java
new file mode 100644
index 0000000..3b4a52d
--- /dev/null
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/AccessMethodImpl.java
@@ -0,0 +1,280 @@
+/**
+ * Copyright (c) 2018 CEA
+ * 
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
+ *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ * 
+ */
+package org.eclipse.papyrus.iotml.sensinact.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.emf.ecore.util.EObjectResolvingEList;
+
+import org.eclipse.papyrus.iotml.sensinact.AccessMethod;
+import org.eclipse.papyrus.iotml.sensinact.AccessMethodType;
+import org.eclipse.papyrus.iotml.sensinact.Parameter;
+import org.eclipse.papyrus.iotml.sensinact.SensinactPackage;
+
+import org.eclipse.uml2.uml.Operation;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Access Method</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.iotml.sensinact.impl.AccessMethodImpl#getType <em>Type</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.iotml.sensinact.impl.AccessMethodImpl#getParameters <em>Parameters</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.iotml.sensinact.impl.AccessMethodImpl#getBase_Operation <em>Base Operation</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class AccessMethodImpl extends MinimalEObjectImpl.Container implements AccessMethod {
+	/**
+	 * The default value of the '{@link #getType() <em>Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getType()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final AccessMethodType TYPE_EDEFAULT = AccessMethodType.GET;
+
+	/**
+	 * The cached value of the '{@link #getType() <em>Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getType()
+	 * @generated
+	 * @ordered
+	 */
+	protected AccessMethodType type = TYPE_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getParameters() <em>Parameters</em>}' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getParameters()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Parameter> parameters;
+
+	/**
+	 * The cached value of the '{@link #getBase_Operation() <em>Base Operation</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getBase_Operation()
+	 * @generated
+	 * @ordered
+	 */
+	protected Operation base_Operation;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected AccessMethodImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return SensinactPackage.Literals.ACCESS_METHOD;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public AccessMethodType getType() {
+		return type;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setType(AccessMethodType newType) {
+		AccessMethodType oldType = type;
+		type = newType == null ? TYPE_EDEFAULT : newType;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, SensinactPackage.ACCESS_METHOD__TYPE, oldType, type));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<Parameter> getParameters() {
+		if (parameters == null) {
+			parameters = new EObjectResolvingEList<Parameter>(Parameter.class, this, SensinactPackage.ACCESS_METHOD__PARAMETERS);
+		}
+		return parameters;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Operation getBase_Operation() {
+		if (base_Operation != null && base_Operation.eIsProxy()) {
+			InternalEObject oldBase_Operation = (InternalEObject)base_Operation;
+			base_Operation = (Operation)eResolveProxy(oldBase_Operation);
+			if (base_Operation != oldBase_Operation) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, SensinactPackage.ACCESS_METHOD__BASE_OPERATION, oldBase_Operation, base_Operation));
+			}
+		}
+		return base_Operation;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Operation basicGetBase_Operation() {
+		return base_Operation;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setBase_Operation(Operation newBase_Operation) {
+		Operation oldBase_Operation = base_Operation;
+		base_Operation = newBase_Operation;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, SensinactPackage.ACCESS_METHOD__BASE_OPERATION, oldBase_Operation, base_Operation));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case SensinactPackage.ACCESS_METHOD__TYPE:
+				return getType();
+			case SensinactPackage.ACCESS_METHOD__PARAMETERS:
+				return getParameters();
+			case SensinactPackage.ACCESS_METHOD__BASE_OPERATION:
+				if (resolve) return getBase_Operation();
+				return basicGetBase_Operation();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case SensinactPackage.ACCESS_METHOD__TYPE:
+				setType((AccessMethodType)newValue);
+				return;
+			case SensinactPackage.ACCESS_METHOD__PARAMETERS:
+				getParameters().clear();
+				getParameters().addAll((Collection<? extends Parameter>)newValue);
+				return;
+			case SensinactPackage.ACCESS_METHOD__BASE_OPERATION:
+				setBase_Operation((Operation)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case SensinactPackage.ACCESS_METHOD__TYPE:
+				setType(TYPE_EDEFAULT);
+				return;
+			case SensinactPackage.ACCESS_METHOD__PARAMETERS:
+				getParameters().clear();
+				return;
+			case SensinactPackage.ACCESS_METHOD__BASE_OPERATION:
+				setBase_Operation((Operation)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case SensinactPackage.ACCESS_METHOD__TYPE:
+				return type != TYPE_EDEFAULT;
+			case SensinactPackage.ACCESS_METHOD__PARAMETERS:
+				return parameters != null && !parameters.isEmpty();
+			case SensinactPackage.ACCESS_METHOD__BASE_OPERATION:
+				return base_Operation != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (type: ");
+		result.append(type);
+		result.append(')');
+		return result.toString();
+	}
+
+} //AccessMethodImpl
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/ActionImpl.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/ActionImpl.java
new file mode 100644
index 0000000..5b3f12b
--- /dev/null
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/ActionImpl.java
@@ -0,0 +1,399 @@
+/**
+ * Copyright (c) 2018 CEA
+ * 
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
+ *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ * 
+ */
+package org.eclipse.papyrus.iotml.sensinact.impl;
+
+import java.util.Map;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.BasicDiagnostic;
+import org.eclipse.emf.common.util.Diagnostic;
+import org.eclipse.emf.common.util.DiagnosticChain;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+
+import org.eclipse.emf.ecore.util.EObjectValidator;
+
+import org.eclipse.papyrus.iotml.sensinact.Action;
+import org.eclipse.papyrus.iotml.sensinact.SensinactPackage;
+import org.eclipse.papyrus.iotml.sensinact.StateVariable;
+
+import org.eclipse.papyrus.iotml.software.artefact.ArtefactPackage;
+import org.eclipse.papyrus.iotml.software.artefact.PropertyAccess;
+
+import org.eclipse.papyrus.iotml.software.artefact.util.ArtefactValidator;
+
+import org.eclipse.uml2.uml.Association;
+import org.eclipse.uml2.uml.Property;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Action</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.iotml.sensinact.impl.ActionImpl#getBase_Association <em>Base Association</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.iotml.sensinact.impl.ActionImpl#getAccessedProperty <em>Accessed Property</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.iotml.sensinact.impl.ActionImpl#getState <em>State</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class ActionImpl extends ResourceImpl implements Action {
+	/**
+	 * The cached value of the '{@link #getBase_Association() <em>Base Association</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getBase_Association()
+	 * @generated
+	 * @ordered
+	 */
+	protected Association base_Association;
+
+	/**
+	 * The cached value of the '{@link #getAccessedProperty() <em>Accessed Property</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getAccessedProperty()
+	 * @generated
+	 * @ordered
+	 */
+	protected Property accessedProperty;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ActionImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return SensinactPackage.Literals.ACTION;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Association getBase_Association() {
+		if (base_Association != null && base_Association.eIsProxy()) {
+			InternalEObject oldBase_Association = (InternalEObject)base_Association;
+			base_Association = (Association)eResolveProxy(oldBase_Association);
+			if (base_Association != oldBase_Association) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, SensinactPackage.ACTION__BASE_ASSOCIATION, oldBase_Association, base_Association));
+			}
+		}
+		return base_Association;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Association basicGetBase_Association() {
+		return base_Association;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setBase_Association(Association newBase_Association) {
+		Association oldBase_Association = base_Association;
+		base_Association = newBase_Association;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, SensinactPackage.ACTION__BASE_ASSOCIATION, oldBase_Association, base_Association));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Property getAccessedProperty() {
+		if (accessedProperty != null && accessedProperty.eIsProxy()) {
+			InternalEObject oldAccessedProperty = (InternalEObject)accessedProperty;
+			accessedProperty = (Property)eResolveProxy(oldAccessedProperty);
+			if (accessedProperty != oldAccessedProperty) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, SensinactPackage.ACTION__ACCESSED_PROPERTY, oldAccessedProperty, accessedProperty));
+			}
+		}
+		return accessedProperty;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Property basicGetAccessedProperty() {
+		return accessedProperty;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setAccessedProperty(Property newAccessedProperty) {
+		Property oldAccessedProperty = accessedProperty;
+		accessedProperty = newAccessedProperty;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, SensinactPackage.ACTION__ACCESSED_PROPERTY, oldAccessedProperty, accessedProperty));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StateVariable getState() {
+		StateVariable state = basicGetState();
+		return state != null && state.eIsProxy() ? (StateVariable)eResolveProxy((InternalEObject)state) : state;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StateVariable basicGetState() {
+		// TODO: implement this method to return the 'State' reference
+		// -> do not perform proxy resolution
+		// Ensure that you remove @generated or mark it @generated NOT
+		throw new UnsupportedOperationException();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setState(StateVariable newState) {
+		// TODO: implement this method to set the 'State' reference
+		// Ensure that you remove @generated or mark it @generated NOT
+		throw new UnsupportedOperationException();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean PropertyAccess_C1(DiagnosticChain diagnostics, Map<Object, Object> context) {
+		// TODO: implement this method
+		// -> specify the condition that violates the invariant
+		// -> verify the details of the diagnostic, including severity and message
+		// Ensure that you remove @generated or mark it @generated NOT
+		if (false) {
+			if (diagnostics != null) {
+				diagnostics.add
+					(new BasicDiagnostic
+						(Diagnostic.ERROR,
+						 ArtefactValidator.DIAGNOSTIC_SOURCE,
+						 ArtefactValidator.PROPERTY_ACCESS__PROPERTY_ACCESS_C1,
+						 EcorePlugin.INSTANCE.getString("_UI_GenericInvariant_diagnostic", new Object[] { "PropertyAccess_C1", EObjectValidator.getObjectLabel(this, context) }),
+						 new Object [] { this }));
+			}
+			return false;
+		}
+		return true;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean PropertyAccess_C2(DiagnosticChain diagnostics, Map<Object, Object> context) {
+		// TODO: implement this method
+		// -> specify the condition that violates the invariant
+		// -> verify the details of the diagnostic, including severity and message
+		// Ensure that you remove @generated or mark it @generated NOT
+		if (false) {
+			if (diagnostics != null) {
+				diagnostics.add
+					(new BasicDiagnostic
+						(Diagnostic.ERROR,
+						 ArtefactValidator.DIAGNOSTIC_SOURCE,
+						 ArtefactValidator.PROPERTY_ACCESS__PROPERTY_ACCESS_C2,
+						 EcorePlugin.INSTANCE.getString("_UI_GenericInvariant_diagnostic", new Object[] { "PropertyAccess_C2", EObjectValidator.getObjectLabel(this, context) }),
+						 new Object [] { this }));
+			}
+			return false;
+		}
+		return true;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean propertyAccess_C3(DiagnosticChain diagnostics, Map<Object, Object> context) {
+		// TODO: implement this method
+		// -> specify the condition that violates the invariant
+		// -> verify the details of the diagnostic, including severity and message
+		// Ensure that you remove @generated or mark it @generated NOT
+		if (false) {
+			if (diagnostics != null) {
+				diagnostics.add
+					(new BasicDiagnostic
+						(Diagnostic.ERROR,
+						 ArtefactValidator.DIAGNOSTIC_SOURCE,
+						 ArtefactValidator.PROPERTY_ACCESS__PROPERTY_ACCESS_C3,
+						 EcorePlugin.INSTANCE.getString("_UI_GenericInvariant_diagnostic", new Object[] { "propertyAccess_C3", EObjectValidator.getObjectLabel(this, context) }),
+						 new Object [] { this }));
+			}
+			return false;
+		}
+		return true;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case SensinactPackage.ACTION__BASE_ASSOCIATION:
+				if (resolve) return getBase_Association();
+				return basicGetBase_Association();
+			case SensinactPackage.ACTION__ACCESSED_PROPERTY:
+				if (resolve) return getAccessedProperty();
+				return basicGetAccessedProperty();
+			case SensinactPackage.ACTION__STATE:
+				if (resolve) return getState();
+				return basicGetState();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case SensinactPackage.ACTION__BASE_ASSOCIATION:
+				setBase_Association((Association)newValue);
+				return;
+			case SensinactPackage.ACTION__ACCESSED_PROPERTY:
+				setAccessedProperty((Property)newValue);
+				return;
+			case SensinactPackage.ACTION__STATE:
+				setState((StateVariable)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case SensinactPackage.ACTION__BASE_ASSOCIATION:
+				setBase_Association((Association)null);
+				return;
+			case SensinactPackage.ACTION__ACCESSED_PROPERTY:
+				setAccessedProperty((Property)null);
+				return;
+			case SensinactPackage.ACTION__STATE:
+				setState((StateVariable)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case SensinactPackage.ACTION__BASE_ASSOCIATION:
+				return base_Association != null;
+			case SensinactPackage.ACTION__ACCESSED_PROPERTY:
+				return accessedProperty != null;
+			case SensinactPackage.ACTION__STATE:
+				return basicGetState() != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+		if (baseClass == PropertyAccess.class) {
+			switch (derivedFeatureID) {
+				case SensinactPackage.ACTION__BASE_ASSOCIATION: return ArtefactPackage.PROPERTY_ACCESS__BASE_ASSOCIATION;
+				case SensinactPackage.ACTION__ACCESSED_PROPERTY: return ArtefactPackage.PROPERTY_ACCESS__ACCESSED_PROPERTY;
+				default: return -1;
+			}
+		}
+		return super.eBaseStructuralFeatureID(derivedFeatureID, baseClass);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
+		if (baseClass == PropertyAccess.class) {
+			switch (baseFeatureID) {
+				case ArtefactPackage.PROPERTY_ACCESS__BASE_ASSOCIATION: return SensinactPackage.ACTION__BASE_ASSOCIATION;
+				case ArtefactPackage.PROPERTY_ACCESS__ACCESSED_PROPERTY: return SensinactPackage.ACTION__ACCESSED_PROPERTY;
+				default: return -1;
+			}
+		}
+		return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+	}
+
+} //ActionImpl
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/AttributeImpl.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/AttributeImpl.java
new file mode 100644
index 0000000..a53e5b8
--- /dev/null
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/AttributeImpl.java
@@ -0,0 +1,143 @@
+/**
+ * Copyright (c) 2018 CEA
+ * 
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
+ *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ * 
+ */
+package org.eclipse.papyrus.iotml.sensinact.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.util.EObjectResolvingEList;
+
+import org.eclipse.papyrus.iotml.sensinact.Attribute;
+import org.eclipse.papyrus.iotml.sensinact.Metadata;
+import org.eclipse.papyrus.iotml.sensinact.SensinactPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Attribute</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.iotml.sensinact.impl.AttributeImpl#getMetadata <em>Metadata</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class AttributeImpl extends TypedElementImpl implements Attribute {
+	/**
+	 * The cached value of the '{@link #getMetadata() <em>Metadata</em>}' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMetadata()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Metadata> metadata;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected AttributeImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return SensinactPackage.Literals.ATTRIBUTE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<Metadata> getMetadata() {
+		if (metadata == null) {
+			metadata = new EObjectResolvingEList<Metadata>(Metadata.class, this, SensinactPackage.ATTRIBUTE__METADATA);
+		}
+		return metadata;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case SensinactPackage.ATTRIBUTE__METADATA:
+				return getMetadata();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case SensinactPackage.ATTRIBUTE__METADATA:
+				getMetadata().clear();
+				getMetadata().addAll((Collection<? extends Metadata>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case SensinactPackage.ATTRIBUTE__METADATA:
+				getMetadata().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case SensinactPackage.ATTRIBUTE__METADATA:
+				return metadata != null && !metadata.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //AttributeImpl
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/DeviceImpl.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/DeviceImpl.java
new file mode 100644
index 0000000..41f5818
--- /dev/null
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/DeviceImpl.java
@@ -0,0 +1,217 @@
+/**
+ * Copyright (c) 2018 CEA
+ * 
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
+ *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ * 
+ */
+package org.eclipse.papyrus.iotml.sensinact.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.emf.ecore.util.EObjectResolvingEList;
+
+import org.eclipse.papyrus.iotml.hardware.network.impl.ConnectedDeviceImpl;
+
+import org.eclipse.papyrus.iotml.sensinact.Device;
+import org.eclipse.papyrus.iotml.sensinact.SensinactPackage;
+import org.eclipse.papyrus.iotml.sensinact.Service;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Device</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.iotml.sensinact.impl.DeviceImpl#getFriendlyName <em>Friendly Name</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.iotml.sensinact.impl.DeviceImpl#getServices <em>Services</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class DeviceImpl extends ConnectedDeviceImpl implements Device {
+	/**
+	 * The default value of the '{@link #getFriendlyName() <em>Friendly Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getFriendlyName()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String FRIENDLY_NAME_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getFriendlyName() <em>Friendly Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getFriendlyName()
+	 * @generated
+	 * @ordered
+	 */
+	protected String friendlyName = FRIENDLY_NAME_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getServices() <em>Services</em>}' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getServices()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Service> services;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected DeviceImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return SensinactPackage.Literals.DEVICE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getFriendlyName() {
+		return friendlyName;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setFriendlyName(String newFriendlyName) {
+		String oldFriendlyName = friendlyName;
+		friendlyName = newFriendlyName;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, SensinactPackage.DEVICE__FRIENDLY_NAME, oldFriendlyName, friendlyName));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<Service> getServices() {
+		if (services == null) {
+			services = new EObjectResolvingEList<Service>(Service.class, this, SensinactPackage.DEVICE__SERVICES);
+		}
+		return services;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case SensinactPackage.DEVICE__FRIENDLY_NAME:
+				return getFriendlyName();
+			case SensinactPackage.DEVICE__SERVICES:
+				return getServices();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case SensinactPackage.DEVICE__FRIENDLY_NAME:
+				setFriendlyName((String)newValue);
+				return;
+			case SensinactPackage.DEVICE__SERVICES:
+				getServices().clear();
+				getServices().addAll((Collection<? extends Service>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case SensinactPackage.DEVICE__FRIENDLY_NAME:
+				setFriendlyName(FRIENDLY_NAME_EDEFAULT);
+				return;
+			case SensinactPackage.DEVICE__SERVICES:
+				getServices().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case SensinactPackage.DEVICE__FRIENDLY_NAME:
+				return FRIENDLY_NAME_EDEFAULT == null ? friendlyName != null : !FRIENDLY_NAME_EDEFAULT.equals(friendlyName);
+			case SensinactPackage.DEVICE__SERVICES:
+				return services != null && !services.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (friendlyName: ");
+		result.append(friendlyName);
+		result.append(')');
+		return result.toString();
+	}
+
+} //DeviceImpl
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/GatewayImpl.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/GatewayImpl.java
new file mode 100644
index 0000000..f3cca49
--- /dev/null
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/GatewayImpl.java
@@ -0,0 +1,143 @@
+/**
+ * Copyright (c) 2018 CEA
+ * 
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
+ *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ * 
+ */
+package org.eclipse.papyrus.iotml.sensinact.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.util.EObjectResolvingEList;
+
+import org.eclipse.papyrus.iotml.sensinact.Device;
+import org.eclipse.papyrus.iotml.sensinact.Gateway;
+import org.eclipse.papyrus.iotml.sensinact.SensinactPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Gateway</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.iotml.sensinact.impl.GatewayImpl#getDevices <em>Devices</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class GatewayImpl extends org.eclipse.papyrus.iotml.hardware.network.impl.GatewayImpl implements Gateway {
+	/**
+	 * The cached value of the '{@link #getDevices() <em>Devices</em>}' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDevices()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Device> devices;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected GatewayImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return SensinactPackage.Literals.GATEWAY;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<Device> getDevices() {
+		if (devices == null) {
+			devices = new EObjectResolvingEList<Device>(Device.class, this, SensinactPackage.GATEWAY__DEVICES);
+		}
+		return devices;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case SensinactPackage.GATEWAY__DEVICES:
+				return getDevices();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case SensinactPackage.GATEWAY__DEVICES:
+				getDevices().clear();
+				getDevices().addAll((Collection<? extends Device>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case SensinactPackage.GATEWAY__DEVICES:
+				getDevices().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case SensinactPackage.GATEWAY__DEVICES:
+				return devices != null && !devices.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //GatewayImpl
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/MetadataImpl.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/MetadataImpl.java
new file mode 100644
index 0000000..edc709b
--- /dev/null
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/MetadataImpl.java
@@ -0,0 +1,48 @@
+/**
+ * Copyright (c) 2018 CEA
+ * 
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
+ *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ * 
+ */
+package org.eclipse.papyrus.iotml.sensinact.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.iotml.sensinact.Metadata;
+import org.eclipse.papyrus.iotml.sensinact.SensinactPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Metadata</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class MetadataImpl extends TypedElementImpl implements Metadata {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected MetadataImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return SensinactPackage.Literals.METADATA;
+	}
+
+} //MetadataImpl
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/ParameterImpl.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/ParameterImpl.java
new file mode 100644
index 0000000..80c6590
--- /dev/null
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/ParameterImpl.java
@@ -0,0 +1,48 @@
+/**
+ * Copyright (c) 2018 CEA
+ * 
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
+ *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ * 
+ */
+package org.eclipse.papyrus.iotml.sensinact.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.iotml.sensinact.Parameter;
+import org.eclipse.papyrus.iotml.sensinact.SensinactPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Parameter</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class ParameterImpl extends TypedElementImpl implements Parameter {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ParameterImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return SensinactPackage.Literals.PARAMETER;
+	}
+
+} //ParameterImpl
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/PropertyImpl.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/PropertyImpl.java
new file mode 100644
index 0000000..010ce4f
--- /dev/null
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/PropertyImpl.java
@@ -0,0 +1,166 @@
+/**
+ * Copyright (c) 2018 CEA
+ * 
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
+ *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ * 
+ */
+package org.eclipse.papyrus.iotml.sensinact.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.papyrus.iotml.sensinact.Property;
+import org.eclipse.papyrus.iotml.sensinact.SensinactPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Property</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.iotml.sensinact.impl.PropertyImpl#getBase_Property <em>Base Property</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class PropertyImpl extends ResourceImpl implements Property {
+	/**
+	 * The cached value of the '{@link #getBase_Property() <em>Base Property</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getBase_Property()
+	 * @generated
+	 * @ordered
+	 */
+	protected org.eclipse.uml2.uml.Property base_Property;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected PropertyImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return SensinactPackage.Literals.PROPERTY;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public org.eclipse.uml2.uml.Property getBase_Property() {
+		if (base_Property != null && base_Property.eIsProxy()) {
+			InternalEObject oldBase_Property = (InternalEObject)base_Property;
+			base_Property = (org.eclipse.uml2.uml.Property)eResolveProxy(oldBase_Property);
+			if (base_Property != oldBase_Property) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, SensinactPackage.PROPERTY__BASE_PROPERTY, oldBase_Property, base_Property));
+			}
+		}
+		return base_Property;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public org.eclipse.uml2.uml.Property basicGetBase_Property() {
+		return base_Property;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setBase_Property(org.eclipse.uml2.uml.Property newBase_Property) {
+		org.eclipse.uml2.uml.Property oldBase_Property = base_Property;
+		base_Property = newBase_Property;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, SensinactPackage.PROPERTY__BASE_PROPERTY, oldBase_Property, base_Property));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case SensinactPackage.PROPERTY__BASE_PROPERTY:
+				if (resolve) return getBase_Property();
+				return basicGetBase_Property();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case SensinactPackage.PROPERTY__BASE_PROPERTY:
+				setBase_Property((org.eclipse.uml2.uml.Property)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case SensinactPackage.PROPERTY__BASE_PROPERTY:
+				setBase_Property((org.eclipse.uml2.uml.Property)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case SensinactPackage.PROPERTY__BASE_PROPERTY:
+				return base_Property != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //PropertyImpl
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/ResourceImpl.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/ResourceImpl.java
new file mode 100644
index 0000000..5e083ce
--- /dev/null
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/ResourceImpl.java
@@ -0,0 +1,252 @@
+/**
+ * Copyright (c) 2018 CEA
+ * 
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
+ *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ * 
+ */
+package org.eclipse.papyrus.iotml.sensinact.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.emf.ecore.util.EObjectResolvingEList;
+
+import org.eclipse.papyrus.iotml.sensinact.AccessMethod;
+import org.eclipse.papyrus.iotml.sensinact.Attribute;
+import org.eclipse.papyrus.iotml.sensinact.Resource;
+import org.eclipse.papyrus.iotml.sensinact.SensinactPackage;
+
+import org.eclipse.papyrus.iotml.software.resource.impl.OnDeviceResourceImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Resource</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.iotml.sensinact.impl.ResourceImpl#getFriendlyName <em>Friendly Name</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.iotml.sensinact.impl.ResourceImpl#getAccessMethods <em>Access Methods</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.iotml.sensinact.impl.ResourceImpl#getAttributes <em>Attributes</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class ResourceImpl extends OnDeviceResourceImpl implements Resource {
+	/**
+	 * The default value of the '{@link #getFriendlyName() <em>Friendly Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getFriendlyName()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String FRIENDLY_NAME_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getFriendlyName() <em>Friendly Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getFriendlyName()
+	 * @generated
+	 * @ordered
+	 */
+	protected String friendlyName = FRIENDLY_NAME_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getAccessMethods() <em>Access Methods</em>}' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getAccessMethods()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<AccessMethod> accessMethods;
+
+	/**
+	 * The cached value of the '{@link #getAttributes() <em>Attributes</em>}' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getAttributes()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Attribute> attributes;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ResourceImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return SensinactPackage.Literals.RESOURCE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getFriendlyName() {
+		return friendlyName;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setFriendlyName(String newFriendlyName) {
+		String oldFriendlyName = friendlyName;
+		friendlyName = newFriendlyName;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, SensinactPackage.RESOURCE__FRIENDLY_NAME, oldFriendlyName, friendlyName));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<AccessMethod> getAccessMethods() {
+		if (accessMethods == null) {
+			accessMethods = new EObjectResolvingEList<AccessMethod>(AccessMethod.class, this, SensinactPackage.RESOURCE__ACCESS_METHODS);
+		}
+		return accessMethods;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<Attribute> getAttributes() {
+		if (attributes == null) {
+			attributes = new EObjectResolvingEList<Attribute>(Attribute.class, this, SensinactPackage.RESOURCE__ATTRIBUTES);
+		}
+		return attributes;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case SensinactPackage.RESOURCE__FRIENDLY_NAME:
+				return getFriendlyName();
+			case SensinactPackage.RESOURCE__ACCESS_METHODS:
+				return getAccessMethods();
+			case SensinactPackage.RESOURCE__ATTRIBUTES:
+				return getAttributes();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case SensinactPackage.RESOURCE__FRIENDLY_NAME:
+				setFriendlyName((String)newValue);
+				return;
+			case SensinactPackage.RESOURCE__ACCESS_METHODS:
+				getAccessMethods().clear();
+				getAccessMethods().addAll((Collection<? extends AccessMethod>)newValue);
+				return;
+			case SensinactPackage.RESOURCE__ATTRIBUTES:
+				getAttributes().clear();
+				getAttributes().addAll((Collection<? extends Attribute>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case SensinactPackage.RESOURCE__FRIENDLY_NAME:
+				setFriendlyName(FRIENDLY_NAME_EDEFAULT);
+				return;
+			case SensinactPackage.RESOURCE__ACCESS_METHODS:
+				getAccessMethods().clear();
+				return;
+			case SensinactPackage.RESOURCE__ATTRIBUTES:
+				getAttributes().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case SensinactPackage.RESOURCE__FRIENDLY_NAME:
+				return FRIENDLY_NAME_EDEFAULT == null ? friendlyName != null : !FRIENDLY_NAME_EDEFAULT.equals(friendlyName);
+			case SensinactPackage.RESOURCE__ACCESS_METHODS:
+				return accessMethods != null && !accessMethods.isEmpty();
+			case SensinactPackage.RESOURCE__ATTRIBUTES:
+				return attributes != null && !attributes.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (friendlyName: ");
+		result.append(friendlyName);
+		result.append(')');
+		return result.toString();
+	}
+
+} //ResourceImpl
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/SensinactFactoryImpl.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/SensinactFactoryImpl.java
new file mode 100644
index 0000000..e9d96e0
--- /dev/null
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/SensinactFactoryImpl.java
@@ -0,0 +1,289 @@
+/**
+ * Copyright (c) 2018 CEA
+ * 
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
+ *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ * 
+ */
+package org.eclipse.papyrus.iotml.sensinact.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+
+import org.eclipse.papyrus.iotml.sensinact.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class SensinactFactoryImpl extends EFactoryImpl implements SensinactFactory {
+	/**
+	 * Creates the default factory implementation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static SensinactFactory init() {
+		try {
+			SensinactFactory theSensinactFactory = (SensinactFactory)EPackage.Registry.INSTANCE.getEFactory(SensinactPackage.eNS_URI);
+			if (theSensinactFactory != null) {
+				return theSensinactFactory;
+			}
+		}
+		catch (Exception exception) {
+			EcorePlugin.INSTANCE.log(exception);
+		}
+		return new SensinactFactoryImpl();
+	}
+
+	/**
+	 * Creates an instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public SensinactFactoryImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EObject create(EClass eClass) {
+		switch (eClass.getClassifierID()) {
+			case SensinactPackage.STUDIO: return createStudio();
+			case SensinactPackage.GATEWAY: return createGateway();
+			case SensinactPackage.DEVICE: return createDevice();
+			case SensinactPackage.SERVICE: return createService();
+			case SensinactPackage.RESOURCE: return createResource();
+			case SensinactPackage.ACCESS_METHOD: return createAccessMethod();
+			case SensinactPackage.PARAMETER: return createParameter();
+			case SensinactPackage.ATTRIBUTE: return createAttribute();
+			case SensinactPackage.METADATA: return createMetadata();
+			case SensinactPackage.PROPERTY: return createProperty();
+			case SensinactPackage.SENSOR_DATA: return createSensorData();
+			case SensinactPackage.STATE_VARIABLE: return createStateVariable();
+			case SensinactPackage.ACTION: return createAction();
+			default:
+				throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object createFromString(EDataType eDataType, String initialValue) {
+		switch (eDataType.getClassifierID()) {
+			case SensinactPackage.ACCESS_METHOD_TYPE:
+				return createAccessMethodTypeFromString(eDataType, initialValue);
+			default:
+				throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String convertToString(EDataType eDataType, Object instanceValue) {
+		switch (eDataType.getClassifierID()) {
+			case SensinactPackage.ACCESS_METHOD_TYPE:
+				return convertAccessMethodTypeToString(eDataType, instanceValue);
+			default:
+				throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Studio createStudio() {
+		StudioImpl studio = new StudioImpl();
+		return studio;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Gateway createGateway() {
+		GatewayImpl gateway = new GatewayImpl();
+		return gateway;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Device createDevice() {
+		DeviceImpl device = new DeviceImpl();
+		return device;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Service createService() {
+		ServiceImpl service = new ServiceImpl();
+		return service;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Resource createResource() {
+		ResourceImpl resource = new ResourceImpl();
+		return resource;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public AccessMethod createAccessMethod() {
+		AccessMethodImpl accessMethod = new AccessMethodImpl();
+		return accessMethod;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Parameter createParameter() {
+		ParameterImpl parameter = new ParameterImpl();
+		return parameter;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Attribute createAttribute() {
+		AttributeImpl attribute = new AttributeImpl();
+		return attribute;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Metadata createMetadata() {
+		MetadataImpl metadata = new MetadataImpl();
+		return metadata;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Property createProperty() {
+		PropertyImpl property = new PropertyImpl();
+		return property;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public SensorData createSensorData() {
+		SensorDataImpl sensorData = new SensorDataImpl();
+		return sensorData;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StateVariable createStateVariable() {
+		StateVariableImpl stateVariable = new StateVariableImpl();
+		return stateVariable;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Action createAction() {
+		ActionImpl action = new ActionImpl();
+		return action;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public AccessMethodType createAccessMethodTypeFromString(EDataType eDataType, String initialValue) {
+		AccessMethodType result = AccessMethodType.get(initialValue);
+		if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+		return result;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String convertAccessMethodTypeToString(EDataType eDataType, Object instanceValue) {
+		return instanceValue == null ? null : instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public SensinactPackage getSensinactPackage() {
+		return (SensinactPackage)getEPackage();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @deprecated
+	 * @generated
+	 */
+	@Deprecated
+	public static SensinactPackage getPackage() {
+		return SensinactPackage.eINSTANCE;
+	}
+
+} //SensinactFactoryImpl
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/SensinactPackageImpl.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/SensinactPackageImpl.java
new file mode 100644
index 0000000..92f8236
--- /dev/null
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/SensinactPackageImpl.java
@@ -0,0 +1,891 @@
+/**
+ * Copyright (c) 2018 CEA
+ * 
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
+ *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ * 
+ */
+package org.eclipse.papyrus.iotml.sensinact.impl;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EEnum;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EcorePackage;
+
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+
+import org.eclipse.papyrus.MARTE.MARTEPackage;
+
+import org.eclipse.papyrus.MARTE_Library.BasicNFP_Types.BasicNFP_TypesPackage;
+
+import org.eclipse.papyrus.MARTE_Library.GRM_BasicTypes.GRM_BasicTypesPackage;
+
+import org.eclipse.papyrus.MARTE_Library.MARTE_DataTypes.MARTE_DataTypesPackage;
+
+import org.eclipse.papyrus.MARTE_Library.MARTE_PrimitivesTypes.MARTE_PrimitivesTypesPackage;
+
+import org.eclipse.papyrus.MARTE_Library.MeasurementUnits.MeasurementUnitsPackage;
+
+import org.eclipse.papyrus.MARTE_Library.RS_Library.RS_LibraryPackage;
+
+import org.eclipse.papyrus.MARTE_Library.TimeLibrary.TimeLibraryPackage;
+
+import org.eclipse.papyrus.MARTE_Library.TimeTypesLibrary.TimeTypesLibraryPackage;
+
+import org.eclipse.papyrus.iotml.animate.AnimatePackage;
+
+import org.eclipse.papyrus.iotml.animate.impl.AnimatePackageImpl;
+
+import org.eclipse.papyrus.iotml.hardware.actuator.ActuatorPackage;
+
+import org.eclipse.papyrus.iotml.hardware.actuator.impl.ActuatorPackageImpl;
+
+import org.eclipse.papyrus.iotml.hardware.core.CorePackage;
+
+import org.eclipse.papyrus.iotml.hardware.core.impl.CorePackageImpl;
+
+import org.eclipse.papyrus.iotml.hardware.network.NetworkPackage;
+
+import org.eclipse.papyrus.iotml.hardware.network.impl.NetworkPackageImpl;
+
+import org.eclipse.papyrus.iotml.hardware.sensor.SensorPackage;
+
+import org.eclipse.papyrus.iotml.hardware.sensor.impl.SensorPackageImpl;
+
+import org.eclipse.papyrus.iotml.hybrid.HybridPackage;
+
+import org.eclipse.papyrus.iotml.hybrid.impl.HybridPackageImpl;
+
+import org.eclipse.papyrus.iotml.s3pml.hardware.HardwarePackage;
+
+import org.eclipse.papyrus.iotml.s3pml.hardware.impl.HardwarePackageImpl;
+
+import org.eclipse.papyrus.iotml.s3pml.hardware.store.StorePackage;
+
+import org.eclipse.papyrus.iotml.s3pml.hardware.store.impl.StorePackageImpl;
+
+import org.eclipse.papyrus.iotml.s3pml.protocol.ProtocolPackage;
+
+import org.eclipse.papyrus.iotml.s3pml.protocol.impl.ProtocolPackageImpl;
+
+import org.eclipse.papyrus.iotml.s3pml.software.SoftwarePackage;
+
+import org.eclipse.papyrus.iotml.s3pml.software.impl.SoftwarePackageImpl;
+
+import org.eclipse.papyrus.iotml.sensinact.AccessMethod;
+import org.eclipse.papyrus.iotml.sensinact.AccessMethodType;
+import org.eclipse.papyrus.iotml.sensinact.Action;
+import org.eclipse.papyrus.iotml.sensinact.Attribute;
+import org.eclipse.papyrus.iotml.sensinact.Device;
+import org.eclipse.papyrus.iotml.sensinact.Gateway;
+import org.eclipse.papyrus.iotml.sensinact.Metadata;
+import org.eclipse.papyrus.iotml.sensinact.Parameter;
+import org.eclipse.papyrus.iotml.sensinact.Property;
+import org.eclipse.papyrus.iotml.sensinact.Resource;
+import org.eclipse.papyrus.iotml.sensinact.SensinactFactory;
+import org.eclipse.papyrus.iotml.sensinact.SensinactPackage;
+import org.eclipse.papyrus.iotml.sensinact.SensorData;
+import org.eclipse.papyrus.iotml.sensinact.Service;
+import org.eclipse.papyrus.iotml.sensinact.StateVariable;
+import org.eclipse.papyrus.iotml.sensinact.Studio;
+import org.eclipse.papyrus.iotml.sensinact.TypedElement;
+
+import org.eclipse.papyrus.iotml.software.artefact.ArtefactPackage;
+
+import org.eclipse.papyrus.iotml.software.artefact.impl.ArtefactPackageImpl;
+
+import org.eclipse.papyrus.iotml.software.core.structure.StructurePackage;
+
+import org.eclipse.papyrus.iotml.software.core.structure.impl.StructurePackageImpl;
+
+import org.eclipse.papyrus.iotml.software.resource.ResourcePackage;
+
+import org.eclipse.papyrus.iotml.software.resource.impl.ResourcePackageImpl;
+
+import org.eclipse.papyrus.sysml14.sysmlPackage;
+
+import org.eclipse.uml2.types.TypesPackage;
+
+import org.eclipse.uml2.uml.UMLPackage;
+
+import org.eclipse.uml2.uml.profile.standard.StandardPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class SensinactPackageImpl extends EPackageImpl implements SensinactPackage {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass typedElementEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass studioEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass gatewayEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass deviceEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass serviceEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass resourceEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass accessMethodEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass parameterEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass attributeEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass metadataEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass propertyEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass sensorDataEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass stateVariableEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass actionEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EEnum accessMethodTypeEEnum = null;
+
+	/**
+	 * Creates an instance of the model <b>Package</b>, registered with
+	 * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
+	 * package URI value.
+	 * <p>Note: the correct way to create the package is via the static
+	 * factory method {@link #init init()}, which also performs
+	 * initialization of the package, or returns the registered package,
+	 * if one already exists.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.emf.ecore.EPackage.Registry
+	 * @see org.eclipse.papyrus.iotml.sensinact.SensinactPackage#eNS_URI
+	 * @see #init()
+	 * @generated
+	 */
+	private SensinactPackageImpl() {
+		super(eNS_URI, SensinactFactory.eINSTANCE);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static boolean isInited = false;
+
+	/**
+	 * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
+	 *
+	 * <p>This method is used to initialize {@link SensinactPackage#eINSTANCE} when that field is accessed.
+	 * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #eNS_URI
+	 * @see #createPackageContents()
+	 * @see #initializePackageContents()
+	 * @generated
+	 */
+	public static SensinactPackage init() {
+		if (isInited) return (SensinactPackage)EPackage.Registry.INSTANCE.getEPackage(SensinactPackage.eNS_URI);
+
+		// Obtain or create and register package
+		Object registeredSensinactPackage = EPackage.Registry.INSTANCE.get(eNS_URI);
+		SensinactPackageImpl theSensinactPackage = registeredSensinactPackage instanceof SensinactPackageImpl ? (SensinactPackageImpl)registeredSensinactPackage : new SensinactPackageImpl();
+
+		isInited = true;
+
+		// Initialize simple dependencies
+		EcorePackage.eINSTANCE.eClass();
+		MARTEPackage.eINSTANCE.eClass();
+		MARTE_PrimitivesTypesPackage.eINSTANCE.eClass();
+		MeasurementUnitsPackage.eINSTANCE.eClass();
+		GRM_BasicTypesPackage.eINSTANCE.eClass();
+		BasicNFP_TypesPackage.eINSTANCE.eClass();
+		MARTE_DataTypesPackage.eINSTANCE.eClass();
+		TimeTypesLibraryPackage.eINSTANCE.eClass();
+		TimeLibraryPackage.eINSTANCE.eClass();
+		RS_LibraryPackage.eINSTANCE.eClass();
+		sysmlPackage.eINSTANCE.eClass();
+		TypesPackage.eINSTANCE.eClass();
+		UMLPackage.eINSTANCE.eClass();
+		StandardPackage.eINSTANCE.eClass();
+
+		// Obtain or create and register interdependencies
+		Object registeredPackage = EPackage.Registry.INSTANCE.getEPackage(AnimatePackage.eNS_URI);
+		AnimatePackageImpl theAnimatePackage = (AnimatePackageImpl)(registeredPackage instanceof AnimatePackageImpl ? registeredPackage : AnimatePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(ActuatorPackage.eNS_URI);
+		ActuatorPackageImpl theActuatorPackage = (ActuatorPackageImpl)(registeredPackage instanceof ActuatorPackageImpl ? registeredPackage : ActuatorPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(SensorPackage.eNS_URI);
+		SensorPackageImpl theSensorPackage = (SensorPackageImpl)(registeredPackage instanceof SensorPackageImpl ? registeredPackage : SensorPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(NetworkPackage.eNS_URI);
+		NetworkPackageImpl theNetworkPackage = (NetworkPackageImpl)(registeredPackage instanceof NetworkPackageImpl ? registeredPackage : NetworkPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(CorePackage.eNS_URI);
+		CorePackageImpl theCorePackage = (CorePackageImpl)(registeredPackage instanceof CorePackageImpl ? registeredPackage : CorePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(SoftwarePackage.eNS_URI);
+		SoftwarePackageImpl theSoftwarePackage = (SoftwarePackageImpl)(registeredPackage instanceof SoftwarePackageImpl ? registeredPackage : SoftwarePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(ProtocolPackage.eNS_URI);
+		ProtocolPackageImpl theProtocolPackage = (ProtocolPackageImpl)(registeredPackage instanceof ProtocolPackageImpl ? registeredPackage : ProtocolPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(HardwarePackage.eNS_URI);
+		HardwarePackageImpl theHardwarePackage = (HardwarePackageImpl)(registeredPackage instanceof HardwarePackageImpl ? registeredPackage : HardwarePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(StorePackage.eNS_URI);
+		StorePackageImpl theStorePackage = (StorePackageImpl)(registeredPackage instanceof StorePackageImpl ? registeredPackage : StorePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(StructurePackage.eNS_URI);
+		StructurePackageImpl theStructurePackage = (StructurePackageImpl)(registeredPackage instanceof StructurePackageImpl ? registeredPackage : StructurePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(ResourcePackage.eNS_URI);
+		ResourcePackageImpl theResourcePackage = (ResourcePackageImpl)(registeredPackage instanceof ResourcePackageImpl ? registeredPackage : ResourcePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(ArtefactPackage.eNS_URI);
+		ArtefactPackageImpl theArtefactPackage = (ArtefactPackageImpl)(registeredPackage instanceof ArtefactPackageImpl ? registeredPackage : ArtefactPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(HybridPackage.eNS_URI);
+		HybridPackageImpl theHybridPackage = (HybridPackageImpl)(registeredPackage instanceof HybridPackageImpl ? registeredPackage : HybridPackage.eINSTANCE);
+
+		// Create package meta-data objects
+		theSensinactPackage.createPackageContents();
+		theAnimatePackage.createPackageContents();
+		theActuatorPackage.createPackageContents();
+		theSensorPackage.createPackageContents();
+		theNetworkPackage.createPackageContents();
+		theCorePackage.createPackageContents();
+		theSoftwarePackage.createPackageContents();
+		theProtocolPackage.createPackageContents();
+		theHardwarePackage.createPackageContents();
+		theStorePackage.createPackageContents();
+		theStructurePackage.createPackageContents();
+		theResourcePackage.createPackageContents();
+		theArtefactPackage.createPackageContents();
+		theHybridPackage.createPackageContents();
+
+		// Initialize created meta-data
+		theSensinactPackage.initializePackageContents();
+		theAnimatePackage.initializePackageContents();
+		theActuatorPackage.initializePackageContents();
+		theSensorPackage.initializePackageContents();
+		theNetworkPackage.initializePackageContents();
+		theCorePackage.initializePackageContents();
+		theSoftwarePackage.initializePackageContents();
+		theProtocolPackage.initializePackageContents();
+		theHardwarePackage.initializePackageContents();
+		theStorePackage.initializePackageContents();
+		theStructurePackage.initializePackageContents();
+		theResourcePackage.initializePackageContents();
+		theArtefactPackage.initializePackageContents();
+		theHybridPackage.initializePackageContents();
+
+		// Mark meta-data to indicate it can't be changed
+		theSensinactPackage.freeze();
+
+		// Update the registry and return the package
+		EPackage.Registry.INSTANCE.put(SensinactPackage.eNS_URI, theSensinactPackage);
+		return theSensinactPackage;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getTypedElement() {
+		return typedElementEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getTypedElement_Value() {
+		return (EReference)typedElementEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getTypedElement_Base_TypedElement() {
+		return (EReference)typedElementEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getStudio() {
+		return studioEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStudio_Gateways() {
+		return (EReference)studioEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getGateway() {
+		return gatewayEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getGateway_Devices() {
+		return (EReference)gatewayEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getDevice() {
+		return deviceEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getDevice_FriendlyName() {
+		return (EAttribute)deviceEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getDevice_Services() {
+		return (EReference)deviceEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getService() {
+		return serviceEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getService_FriendlyName() {
+		return (EAttribute)serviceEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getService_Resources() {
+		return (EReference)serviceEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getResource() {
+		return resourceEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getResource_FriendlyName() {
+		return (EAttribute)resourceEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getResource_AccessMethods() {
+		return (EReference)resourceEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getResource_Attributes() {
+		return (EReference)resourceEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getAccessMethod() {
+		return accessMethodEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getAccessMethod_Type() {
+		return (EAttribute)accessMethodEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getAccessMethod_Parameters() {
+		return (EReference)accessMethodEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getAccessMethod_Base_Operation() {
+		return (EReference)accessMethodEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getParameter() {
+		return parameterEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getAttribute() {
+		return attributeEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getAttribute_Metadata() {
+		return (EReference)attributeEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getMetadata() {
+		return metadataEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getProperty() {
+		return propertyEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getProperty_Base_Property() {
+		return (EReference)propertyEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getSensorData() {
+		return sensorDataEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getSensorData_Base_Property() {
+		return (EReference)sensorDataEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getStateVariable() {
+		return stateVariableEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStateVariable_Modifier() {
+		return (EReference)stateVariableEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStateVariable_Base_Property() {
+		return (EReference)stateVariableEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getAction() {
+		return actionEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getAction_State() {
+		return (EReference)actionEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EEnum getAccessMethodType() {
+		return accessMethodTypeEEnum;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public SensinactFactory getSensinactFactory() {
+		return (SensinactFactory)getEFactoryInstance();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private boolean isCreated = false;
+
+	/**
+	 * Creates the meta-model objects for the package.  This method is
+	 * guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void createPackageContents() {
+		if (isCreated) return;
+		isCreated = true;
+
+		// Create classes and their features
+		typedElementEClass = createEClass(TYPED_ELEMENT);
+		createEReference(typedElementEClass, TYPED_ELEMENT__VALUE);
+		createEReference(typedElementEClass, TYPED_ELEMENT__BASE_TYPED_ELEMENT);
+
+		studioEClass = createEClass(STUDIO);
+		createEReference(studioEClass, STUDIO__GATEWAYS);
+
+		gatewayEClass = createEClass(GATEWAY);
+		createEReference(gatewayEClass, GATEWAY__DEVICES);
+
+		deviceEClass = createEClass(DEVICE);
+		createEAttribute(deviceEClass, DEVICE__FRIENDLY_NAME);
+		createEReference(deviceEClass, DEVICE__SERVICES);
+
+		serviceEClass = createEClass(SERVICE);
+		createEAttribute(serviceEClass, SERVICE__FRIENDLY_NAME);
+		createEReference(serviceEClass, SERVICE__RESOURCES);
+
+		resourceEClass = createEClass(RESOURCE);
+		createEAttribute(resourceEClass, RESOURCE__FRIENDLY_NAME);
+		createEReference(resourceEClass, RESOURCE__ACCESS_METHODS);
+		createEReference(resourceEClass, RESOURCE__ATTRIBUTES);
+
+		accessMethodEClass = createEClass(ACCESS_METHOD);
+		createEAttribute(accessMethodEClass, ACCESS_METHOD__TYPE);
+		createEReference(accessMethodEClass, ACCESS_METHOD__PARAMETERS);
+		createEReference(accessMethodEClass, ACCESS_METHOD__BASE_OPERATION);
+
+		parameterEClass = createEClass(PARAMETER);
+
+		attributeEClass = createEClass(ATTRIBUTE);
+		createEReference(attributeEClass, ATTRIBUTE__METADATA);
+
+		metadataEClass = createEClass(METADATA);
+
+		propertyEClass = createEClass(PROPERTY);
+		createEReference(propertyEClass, PROPERTY__BASE_PROPERTY);
+
+		sensorDataEClass = createEClass(SENSOR_DATA);
+		createEReference(sensorDataEClass, SENSOR_DATA__BASE_PROPERTY);
+
+		stateVariableEClass = createEClass(STATE_VARIABLE);
+		createEReference(stateVariableEClass, STATE_VARIABLE__MODIFIER);
+		createEReference(stateVariableEClass, STATE_VARIABLE__BASE_PROPERTY);
+
+		actionEClass = createEClass(ACTION);
+		createEReference(actionEClass, ACTION__STATE);
+
+		// Create enums
+		accessMethodTypeEEnum = createEEnum(ACCESS_METHOD_TYPE);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private boolean isInitialized = false;
+
+	/**
+	 * Complete the initialization of the package and its meta-model.  This
+	 * method is guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void initializePackageContents() {
+		if (isInitialized) return;
+		isInitialized = true;
+
+		// Initialize package
+		setName(eNAME);
+		setNsPrefix(eNS_PREFIX);
+		setNsURI(eNS_URI);
+
+		// Obtain other dependent packages
+		StructurePackage theStructurePackage = (StructurePackage)EPackage.Registry.INSTANCE.getEPackage(StructurePackage.eNS_URI);
+		UMLPackage theUMLPackage = (UMLPackage)EPackage.Registry.INSTANCE.getEPackage(UMLPackage.eNS_URI);
+		AnimatePackage theAnimatePackage = (AnimatePackage)EPackage.Registry.INSTANCE.getEPackage(AnimatePackage.eNS_URI);
+		NetworkPackage theNetworkPackage = (NetworkPackage)EPackage.Registry.INSTANCE.getEPackage(NetworkPackage.eNS_URI);
+		TypesPackage theTypesPackage = (TypesPackage)EPackage.Registry.INSTANCE.getEPackage(TypesPackage.eNS_URI);
+		ArtefactPackage theArtefactPackage = (ArtefactPackage)EPackage.Registry.INSTANCE.getEPackage(ArtefactPackage.eNS_URI);
+		ResourcePackage theResourcePackage = (ResourcePackage)EPackage.Registry.INSTANCE.getEPackage(ResourcePackage.eNS_URI);
+
+		// Create type parameters
+
+		// Set bounds for type parameters
+
+		// Add supertypes to classes
+		studioEClass.getESuperTypes().add(theAnimatePackage.getHumanUser());
+		gatewayEClass.getESuperTypes().add(theNetworkPackage.getGateway());
+		deviceEClass.getESuperTypes().add(theNetworkPackage.getConnectedDevice());
+		serviceEClass.getESuperTypes().add(theArtefactPackage.getService());
+		resourceEClass.getESuperTypes().add(theResourcePackage.getOnDeviceResource());
+		parameterEClass.getESuperTypes().add(this.getTypedElement());
+		attributeEClass.getESuperTypes().add(this.getTypedElement());
+		metadataEClass.getESuperTypes().add(this.getTypedElement());
+		propertyEClass.getESuperTypes().add(this.getResource());
+		sensorDataEClass.getESuperTypes().add(this.getResource());
+		stateVariableEClass.getESuperTypes().add(this.getResource());
+		actionEClass.getESuperTypes().add(this.getResource());
+		actionEClass.getESuperTypes().add(theArtefactPackage.getPropertyAccess());
+
+		// Initialize classes and features; add operations and parameters
+		initEClass(typedElementEClass, TypedElement.class, "TypedElement", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getTypedElement_Value(), theStructurePackage.getDetailedValueSpecification(), null, "value", null, 0, 1, TypedElement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+		initEReference(getTypedElement_Base_TypedElement(), theUMLPackage.getTypedElement(), null, "base_TypedElement", null, 1, 1, TypedElement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+		initEClass(studioEClass, Studio.class, "Studio", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getStudio_Gateways(), this.getGateway(), null, "gateways", null, 1, -1, Studio.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+		initEClass(gatewayEClass, Gateway.class, "Gateway", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getGateway_Devices(), this.getDevice(), null, "devices", null, 1, -1, Gateway.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+		initEClass(deviceEClass, Device.class, "Device", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getDevice_FriendlyName(), theTypesPackage.getString(), "friendlyName", null, 1, 1, Device.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+		initEReference(getDevice_Services(), this.getService(), null, "services", null, 1, -1, Device.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+		initEClass(serviceEClass, Service.class, "Service", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getService_FriendlyName(), theTypesPackage.getString(), "friendlyName", null, 1, 1, Service.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+		initEReference(getService_Resources(), this.getResource(), null, "resources", null, 1, -1, Service.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+		initEClass(resourceEClass, Resource.class, "Resource", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getResource_FriendlyName(), theTypesPackage.getString(), "friendlyName", null, 1, 1, Resource.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+		initEReference(getResource_AccessMethods(), this.getAccessMethod(), null, "accessMethods", null, 1, -1, Resource.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+		initEReference(getResource_Attributes(), this.getAttribute(), null, "attributes", null, 1, -1, Resource.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+		initEClass(accessMethodEClass, AccessMethod.class, "AccessMethod", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getAccessMethod_Type(), this.getAccessMethodType(), "type", null, 1, 1, AccessMethod.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+		initEReference(getAccessMethod_Parameters(), this.getParameter(), null, "parameters", null, 0, -1, AccessMethod.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+		initEReference(getAccessMethod_Base_Operation(), theUMLPackage.getOperation(), null, "base_Operation", null, 1, 1, AccessMethod.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+		initEClass(parameterEClass, Parameter.class, "Parameter", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(attributeEClass, Attribute.class, "Attribute", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getAttribute_Metadata(), this.getMetadata(), null, "metadata", null, 0, -1, Attribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+		initEClass(metadataEClass, Metadata.class, "Metadata", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(propertyEClass, Property.class, "Property", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getProperty_Base_Property(), theUMLPackage.getProperty(), null, "base_Property", null, 1, 1, Property.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+		initEClass(sensorDataEClass, SensorData.class, "SensorData", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getSensorData_Base_Property(), theUMLPackage.getProperty(), null, "base_Property", null, 1, 1, SensorData.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+		initEClass(stateVariableEClass, StateVariable.class, "StateVariable", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getStateVariable_Modifier(), this.getAction(), this.getAction_State(), "modifier", null, 1, 1, StateVariable.class, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, !IS_ORDERED);
+		initEReference(getStateVariable_Base_Property(), theUMLPackage.getProperty(), null, "base_Property", null, 1, 1, StateVariable.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+		initEClass(actionEClass, Action.class, "Action", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getAction_State(), this.getStateVariable(), this.getStateVariable_Modifier(), "state", null, 1, 1, Action.class, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, !IS_ORDERED);
+
+		// Initialize enums and add enum literals
+		initEEnum(accessMethodTypeEEnum, AccessMethodType.class, "AccessMethodType");
+		addEEnumLiteral(accessMethodTypeEEnum, AccessMethodType.GET);
+		addEEnumLiteral(accessMethodTypeEEnum, AccessMethodType.SET);
+		addEEnumLiteral(accessMethodTypeEEnum, AccessMethodType.ACT);
+		addEEnumLiteral(accessMethodTypeEEnum, AccessMethodType.SUBSCRIBE);
+		addEEnumLiteral(accessMethodTypeEEnum, AccessMethodType.UNSUBSCRIBE);
+
+		// Create resource
+		createResource(eNS_URI);
+
+		// Create annotations
+		// http://www.eclipse.org/uml2/2.0.0/UML
+		createUMLAnnotations();
+	}
+
+	/**
+	 * Initializes the annotations for <b>http://www.eclipse.org/uml2/2.0.0/UML</b>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void createUMLAnnotations() {
+		String source = "http://www.eclipse.org/uml2/2.0.0/UML";
+		addAnnotation
+		  (this,
+		   source,
+		   new String[] {
+			   "originalName", "SensiNact"
+		   });
+	}
+
+} //SensinactPackageImpl
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/SensorDataImpl.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/SensorDataImpl.java
new file mode 100644
index 0000000..f391ccf
--- /dev/null
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/SensorDataImpl.java
@@ -0,0 +1,168 @@
+/**
+ * Copyright (c) 2018 CEA
+ * 
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
+ *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ * 
+ */
+package org.eclipse.papyrus.iotml.sensinact.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.papyrus.iotml.sensinact.SensinactPackage;
+import org.eclipse.papyrus.iotml.sensinact.SensorData;
+
+import org.eclipse.uml2.uml.Property;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Sensor Data</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.iotml.sensinact.impl.SensorDataImpl#getBase_Property <em>Base Property</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class SensorDataImpl extends ResourceImpl implements SensorData {
+	/**
+	 * The cached value of the '{@link #getBase_Property() <em>Base Property</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getBase_Property()
+	 * @generated
+	 * @ordered
+	 */
+	protected Property base_Property;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected SensorDataImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return SensinactPackage.Literals.SENSOR_DATA;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Property getBase_Property() {
+		if (base_Property != null && base_Property.eIsProxy()) {
+			InternalEObject oldBase_Property = (InternalEObject)base_Property;
+			base_Property = (Property)eResolveProxy(oldBase_Property);
+			if (base_Property != oldBase_Property) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, SensinactPackage.SENSOR_DATA__BASE_PROPERTY, oldBase_Property, base_Property));
+			}
+		}
+		return base_Property;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Property basicGetBase_Property() {
+		return base_Property;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setBase_Property(Property newBase_Property) {
+		Property oldBase_Property = base_Property;
+		base_Property = newBase_Property;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, SensinactPackage.SENSOR_DATA__BASE_PROPERTY, oldBase_Property, base_Property));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case SensinactPackage.SENSOR_DATA__BASE_PROPERTY:
+				if (resolve) return getBase_Property();
+				return basicGetBase_Property();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case SensinactPackage.SENSOR_DATA__BASE_PROPERTY:
+				setBase_Property((Property)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case SensinactPackage.SENSOR_DATA__BASE_PROPERTY:
+				setBase_Property((Property)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case SensinactPackage.SENSOR_DATA__BASE_PROPERTY:
+				return base_Property != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //SensorDataImpl
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/ServiceImpl.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/ServiceImpl.java
new file mode 100644
index 0000000..0edadea
--- /dev/null
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/ServiceImpl.java
@@ -0,0 +1,215 @@
+/**
+ * Copyright (c) 2018 CEA
+ * 
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
+ *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ * 
+ */
+package org.eclipse.papyrus.iotml.sensinact.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.emf.ecore.util.EObjectResolvingEList;
+
+import org.eclipse.papyrus.iotml.sensinact.Resource;
+import org.eclipse.papyrus.iotml.sensinact.SensinactPackage;
+import org.eclipse.papyrus.iotml.sensinact.Service;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Service</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.iotml.sensinact.impl.ServiceImpl#getFriendlyName <em>Friendly Name</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.iotml.sensinact.impl.ServiceImpl#getResources <em>Resources</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class ServiceImpl extends org.eclipse.papyrus.iotml.software.artefact.impl.ServiceImpl implements Service {
+	/**
+	 * The default value of the '{@link #getFriendlyName() <em>Friendly Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getFriendlyName()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String FRIENDLY_NAME_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getFriendlyName() <em>Friendly Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getFriendlyName()
+	 * @generated
+	 * @ordered
+	 */
+	protected String friendlyName = FRIENDLY_NAME_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getResources() <em>Resources</em>}' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getResources()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Resource> resources;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ServiceImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return SensinactPackage.Literals.SERVICE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getFriendlyName() {
+		return friendlyName;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setFriendlyName(String newFriendlyName) {
+		String oldFriendlyName = friendlyName;
+		friendlyName = newFriendlyName;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, SensinactPackage.SERVICE__FRIENDLY_NAME, oldFriendlyName, friendlyName));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<Resource> getResources() {
+		if (resources == null) {
+			resources = new EObjectResolvingEList<Resource>(Resource.class, this, SensinactPackage.SERVICE__RESOURCES);
+		}
+		return resources;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case SensinactPackage.SERVICE__FRIENDLY_NAME:
+				return getFriendlyName();
+			case SensinactPackage.SERVICE__RESOURCES:
+				return getResources();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case SensinactPackage.SERVICE__FRIENDLY_NAME:
+				setFriendlyName((String)newValue);
+				return;
+			case SensinactPackage.SERVICE__RESOURCES:
+				getResources().clear();
+				getResources().addAll((Collection<? extends Resource>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case SensinactPackage.SERVICE__FRIENDLY_NAME:
+				setFriendlyName(FRIENDLY_NAME_EDEFAULT);
+				return;
+			case SensinactPackage.SERVICE__RESOURCES:
+				getResources().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case SensinactPackage.SERVICE__FRIENDLY_NAME:
+				return FRIENDLY_NAME_EDEFAULT == null ? friendlyName != null : !FRIENDLY_NAME_EDEFAULT.equals(friendlyName);
+			case SensinactPackage.SERVICE__RESOURCES:
+				return resources != null && !resources.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (friendlyName: ");
+		result.append(friendlyName);
+		result.append(')');
+		return result.toString();
+	}
+
+} //ServiceImpl
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/StateVariableImpl.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/StateVariableImpl.java
new file mode 100644
index 0000000..fb50bf3
--- /dev/null
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/StateVariableImpl.java
@@ -0,0 +1,214 @@
+/**
+ * Copyright (c) 2018 CEA
+ * 
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
+ *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ * 
+ */
+package org.eclipse.papyrus.iotml.sensinact.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.papyrus.iotml.sensinact.Action;
+import org.eclipse.papyrus.iotml.sensinact.SensinactPackage;
+import org.eclipse.papyrus.iotml.sensinact.StateVariable;
+
+import org.eclipse.uml2.uml.Property;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>State Variable</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.iotml.sensinact.impl.StateVariableImpl#getModifier <em>Modifier</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.iotml.sensinact.impl.StateVariableImpl#getBase_Property <em>Base Property</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class StateVariableImpl extends ResourceImpl implements StateVariable {
+	/**
+	 * The cached value of the '{@link #getBase_Property() <em>Base Property</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getBase_Property()
+	 * @generated
+	 * @ordered
+	 */
+	protected Property base_Property;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected StateVariableImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return SensinactPackage.Literals.STATE_VARIABLE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Action getModifier() {
+		Action modifier = basicGetModifier();
+		return modifier != null && modifier.eIsProxy() ? (Action)eResolveProxy((InternalEObject)modifier) : modifier;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Action basicGetModifier() {
+		// TODO: implement this method to return the 'Modifier' reference
+		// -> do not perform proxy resolution
+		// Ensure that you remove @generated or mark it @generated NOT
+		throw new UnsupportedOperationException();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setModifier(Action newModifier) {
+		// TODO: implement this method to set the 'Modifier' reference
+		// Ensure that you remove @generated or mark it @generated NOT
+		throw new UnsupportedOperationException();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Property getBase_Property() {
+		if (base_Property != null && base_Property.eIsProxy()) {
+			InternalEObject oldBase_Property = (InternalEObject)base_Property;
+			base_Property = (Property)eResolveProxy(oldBase_Property);
+			if (base_Property != oldBase_Property) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, SensinactPackage.STATE_VARIABLE__BASE_PROPERTY, oldBase_Property, base_Property));
+			}
+		}
+		return base_Property;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Property basicGetBase_Property() {
+		return base_Property;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setBase_Property(Property newBase_Property) {
+		Property oldBase_Property = base_Property;
+		base_Property = newBase_Property;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, SensinactPackage.STATE_VARIABLE__BASE_PROPERTY, oldBase_Property, base_Property));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case SensinactPackage.STATE_VARIABLE__MODIFIER:
+				if (resolve) return getModifier();
+				return basicGetModifier();
+			case SensinactPackage.STATE_VARIABLE__BASE_PROPERTY:
+				if (resolve) return getBase_Property();
+				return basicGetBase_Property();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case SensinactPackage.STATE_VARIABLE__MODIFIER:
+				setModifier((Action)newValue);
+				return;
+			case SensinactPackage.STATE_VARIABLE__BASE_PROPERTY:
+				setBase_Property((Property)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case SensinactPackage.STATE_VARIABLE__MODIFIER:
+				setModifier((Action)null);
+				return;
+			case SensinactPackage.STATE_VARIABLE__BASE_PROPERTY:
+				setBase_Property((Property)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case SensinactPackage.STATE_VARIABLE__MODIFIER:
+				return basicGetModifier() != null;
+			case SensinactPackage.STATE_VARIABLE__BASE_PROPERTY:
+				return base_Property != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //StateVariableImpl
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/StudioImpl.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/StudioImpl.java
new file mode 100644
index 0000000..0b6c30b
--- /dev/null
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/StudioImpl.java
@@ -0,0 +1,145 @@
+/**
+ * Copyright (c) 2018 CEA
+ * 
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
+ *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ * 
+ */
+package org.eclipse.papyrus.iotml.sensinact.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.util.EObjectResolvingEList;
+
+import org.eclipse.papyrus.iotml.animate.impl.HumanUserImpl;
+
+import org.eclipse.papyrus.iotml.sensinact.Gateway;
+import org.eclipse.papyrus.iotml.sensinact.SensinactPackage;
+import org.eclipse.papyrus.iotml.sensinact.Studio;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Studio</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.iotml.sensinact.impl.StudioImpl#getGateways <em>Gateways</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class StudioImpl extends HumanUserImpl implements Studio {
+	/**
+	 * The cached value of the '{@link #getGateways() <em>Gateways</em>}' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getGateways()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Gateway> gateways;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected StudioImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return SensinactPackage.Literals.STUDIO;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<Gateway> getGateways() {
+		if (gateways == null) {
+			gateways = new EObjectResolvingEList<Gateway>(Gateway.class, this, SensinactPackage.STUDIO__GATEWAYS);
+		}
+		return gateways;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case SensinactPackage.STUDIO__GATEWAYS:
+				return getGateways();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case SensinactPackage.STUDIO__GATEWAYS:
+				getGateways().clear();
+				getGateways().addAll((Collection<? extends Gateway>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case SensinactPackage.STUDIO__GATEWAYS:
+				getGateways().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case SensinactPackage.STUDIO__GATEWAYS:
+				return gateways != null && !gateways.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //StudioImpl
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/TypedElementImpl.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/TypedElementImpl.java
new file mode 100644
index 0000000..cc46a8a
--- /dev/null
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/TypedElementImpl.java
@@ -0,0 +1,229 @@
+/**
+ * Copyright (c) 2018 CEA
+ * 
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
+ *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ * 
+ */
+package org.eclipse.papyrus.iotml.sensinact.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.papyrus.iotml.sensinact.SensinactPackage;
+import org.eclipse.papyrus.iotml.sensinact.TypedElement;
+
+import org.eclipse.papyrus.iotml.software.core.structure.DetailedValueSpecification;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Typed Element</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.iotml.sensinact.impl.TypedElementImpl#getValue <em>Value</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.iotml.sensinact.impl.TypedElementImpl#getBase_TypedElement <em>Base Typed Element</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public abstract class TypedElementImpl extends MinimalEObjectImpl.Container implements TypedElement {
+	/**
+	 * The cached value of the '{@link #getValue() <em>Value</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected DetailedValueSpecification value;
+
+	/**
+	 * The cached value of the '{@link #getBase_TypedElement() <em>Base Typed Element</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getBase_TypedElement()
+	 * @generated
+	 * @ordered
+	 */
+	protected org.eclipse.uml2.uml.TypedElement base_TypedElement;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected TypedElementImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return SensinactPackage.Literals.TYPED_ELEMENT;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DetailedValueSpecification getValue() {
+		if (value != null && value.eIsProxy()) {
+			InternalEObject oldValue = (InternalEObject)value;
+			value = (DetailedValueSpecification)eResolveProxy(oldValue);
+			if (value != oldValue) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, SensinactPackage.TYPED_ELEMENT__VALUE, oldValue, value));
+			}
+		}
+		return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DetailedValueSpecification basicGetValue() {
+		return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setValue(DetailedValueSpecification newValue) {
+		DetailedValueSpecification oldValue = value;
+		value = newValue;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, SensinactPackage.TYPED_ELEMENT__VALUE, oldValue, value));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public org.eclipse.uml2.uml.TypedElement getBase_TypedElement() {
+		if (base_TypedElement != null && base_TypedElement.eIsProxy()) {
+			InternalEObject oldBase_TypedElement = (InternalEObject)base_TypedElement;
+			base_TypedElement = (org.eclipse.uml2.uml.TypedElement)eResolveProxy(oldBase_TypedElement);
+			if (base_TypedElement != oldBase_TypedElement) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, SensinactPackage.TYPED_ELEMENT__BASE_TYPED_ELEMENT, oldBase_TypedElement, base_TypedElement));
+			}
+		}
+		return base_TypedElement;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public org.eclipse.uml2.uml.TypedElement basicGetBase_TypedElement() {
+		return base_TypedElement;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setBase_TypedElement(org.eclipse.uml2.uml.TypedElement newBase_TypedElement) {
+		org.eclipse.uml2.uml.TypedElement oldBase_TypedElement = base_TypedElement;
+		base_TypedElement = newBase_TypedElement;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, SensinactPackage.TYPED_ELEMENT__BASE_TYPED_ELEMENT, oldBase_TypedElement, base_TypedElement));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case SensinactPackage.TYPED_ELEMENT__VALUE:
+				if (resolve) return getValue();
+				return basicGetValue();
+			case SensinactPackage.TYPED_ELEMENT__BASE_TYPED_ELEMENT:
+				if (resolve) return getBase_TypedElement();
+				return basicGetBase_TypedElement();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case SensinactPackage.TYPED_ELEMENT__VALUE:
+				setValue((DetailedValueSpecification)newValue);
+				return;
+			case SensinactPackage.TYPED_ELEMENT__BASE_TYPED_ELEMENT:
+				setBase_TypedElement((org.eclipse.uml2.uml.TypedElement)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case SensinactPackage.TYPED_ELEMENT__VALUE:
+				setValue((DetailedValueSpecification)null);
+				return;
+			case SensinactPackage.TYPED_ELEMENT__BASE_TYPED_ELEMENT:
+				setBase_TypedElement((org.eclipse.uml2.uml.TypedElement)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case SensinactPackage.TYPED_ELEMENT__VALUE:
+				return value != null;
+			case SensinactPackage.TYPED_ELEMENT__BASE_TYPED_ELEMENT:
+				return base_TypedElement != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //TypedElementImpl
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/util/SensinactAdapterFactory.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/util/SensinactAdapterFactory.java
new file mode 100644
index 0000000..251c831
--- /dev/null
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/util/SensinactAdapterFactory.java
@@ -0,0 +1,637 @@
+/**
+ * Copyright (c) 2018 CEA
+ * 
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
+ *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ * 
+ */
+package org.eclipse.papyrus.iotml.sensinact.util;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.papyrus.MARTE.MARTE_DesignModel.HRM.HwGeneral.HwResource;
+
+import org.eclipse.papyrus.MARTE.MARTE_DesignModel.HRM.HwLogical.HwCommunication.HwCommunicationResource;
+
+import org.eclipse.papyrus.MARTE.MARTE_DesignModel.HRM.HwLogical.HwComputing.HwComputingResource;
+
+import org.eclipse.papyrus.MARTE.MARTE_Foundations.GRM.ComputingResource;
+import org.eclipse.papyrus.MARTE.MARTE_Foundations.GRM.ProcessingResource;
+
+import org.eclipse.papyrus.iotml.animate.HumanUser;
+
+import org.eclipse.papyrus.iotml.hardware.network.ConnectedDevice;
+
+import org.eclipse.papyrus.iotml.s3pml.hardware.IoTDevice;
+
+import org.eclipse.papyrus.iotml.sensinact.*;
+
+import org.eclipse.papyrus.iotml.software.artefact.DigitalArtefact;
+import org.eclipse.papyrus.iotml.software.artefact.PropertyAccess;
+
+import org.eclipse.papyrus.iotml.software.resource.OnDeviceResource;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Adapter Factory</b> for the model.
+ * It provides an adapter <code>createXXX</code> method for each class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.iotml.sensinact.SensinactPackage
+ * @generated
+ */
+public class SensinactAdapterFactory extends AdapterFactoryImpl {
+	/**
+	 * The cached model package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static SensinactPackage modelPackage;
+
+	/**
+	 * Creates an instance of the adapter factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public SensinactAdapterFactory() {
+		if (modelPackage == null) {
+			modelPackage = SensinactPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Returns whether this factory is applicable for the type of the object.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns <code>true</code> if the object is either the model's package or is an instance object of the model.
+	 * <!-- end-user-doc -->
+	 * @return whether this factory is applicable for the type of the object.
+	 * @generated
+	 */
+	@Override
+	public boolean isFactoryForType(Object object) {
+		if (object == modelPackage) {
+			return true;
+		}
+		if (object instanceof EObject) {
+			return ((EObject)object).eClass().getEPackage() == modelPackage;
+		}
+		return false;
+	}
+
+	/**
+	 * The switch that delegates to the <code>createXXX</code> methods.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected SensinactSwitch<Adapter> modelSwitch =
+		new SensinactSwitch<Adapter>() {
+			@Override
+			public Adapter caseTypedElement(TypedElement object) {
+				return createTypedElementAdapter();
+			}
+			@Override
+			public Adapter caseStudio(Studio object) {
+				return createStudioAdapter();
+			}
+			@Override
+			public Adapter caseGateway(Gateway object) {
+				return createGatewayAdapter();
+			}
+			@Override
+			public Adapter caseDevice(Device object) {
+				return createDeviceAdapter();
+			}
+			@Override
+			public Adapter caseService(Service object) {
+				return createServiceAdapter();
+			}
+			@Override
+			public Adapter caseResource(Resource object) {
+				return createResourceAdapter();
+			}
+			@Override
+			public Adapter caseAccessMethod(AccessMethod object) {
+				return createAccessMethodAdapter();
+			}
+			@Override
+			public Adapter caseParameter(Parameter object) {
+				return createParameterAdapter();
+			}
+			@Override
+			public Adapter caseAttribute(Attribute object) {
+				return createAttributeAdapter();
+			}
+			@Override
+			public Adapter caseMetadata(Metadata object) {
+				return createMetadataAdapter();
+			}
+			@Override
+			public Adapter caseProperty(Property object) {
+				return createPropertyAdapter();
+			}
+			@Override
+			public Adapter caseSensorData(SensorData object) {
+				return createSensorDataAdapter();
+			}
+			@Override
+			public Adapter caseStateVariable(StateVariable object) {
+				return createStateVariableAdapter();
+			}
+			@Override
+			public Adapter caseAction(Action object) {
+				return createActionAdapter();
+			}
+			@Override
+			public Adapter caseHumanUser(HumanUser object) {
+				return createHumanUserAdapter();
+			}
+			@Override
+			public Adapter caseGRM_Resource(org.eclipse.papyrus.MARTE.MARTE_Foundations.GRM.Resource object) {
+				return createGRM_ResourceAdapter();
+			}
+			@Override
+			public Adapter caseHwResource(HwResource object) {
+				return createHwResourceAdapter();
+			}
+			@Override
+			public Adapter caseProcessingResource(ProcessingResource object) {
+				return createProcessingResourceAdapter();
+			}
+			@Override
+			public Adapter caseComputingResource(ComputingResource object) {
+				return createComputingResourceAdapter();
+			}
+			@Override
+			public Adapter caseHwComputingResource(HwComputingResource object) {
+				return createHwComputingResourceAdapter();
+			}
+			@Override
+			public Adapter caseHwCommunicationResource(HwCommunicationResource object) {
+				return createHwCommunicationResourceAdapter();
+			}
+			@Override
+			public Adapter caseConnectedDevice(ConnectedDevice object) {
+				return createConnectedDeviceAdapter();
+			}
+			@Override
+			public Adapter caseIoTDevice(IoTDevice object) {
+				return createIoTDeviceAdapter();
+			}
+			@Override
+			public Adapter caseNetwork_Gateway(org.eclipse.papyrus.iotml.hardware.network.Gateway object) {
+				return createNetwork_GatewayAdapter();
+			}
+			@Override
+			public Adapter caseDigitalArtefact(DigitalArtefact object) {
+				return createDigitalArtefactAdapter();
+			}
+			@Override
+			public Adapter caseArtefact_Service(org.eclipse.papyrus.iotml.software.artefact.Service object) {
+				return createArtefact_ServiceAdapter();
+			}
+			@Override
+			public Adapter caseOnDeviceResource(OnDeviceResource object) {
+				return createOnDeviceResourceAdapter();
+			}
+			@Override
+			public Adapter casePropertyAccess(PropertyAccess object) {
+				return createPropertyAccessAdapter();
+			}
+			@Override
+			public Adapter defaultCase(EObject object) {
+				return createEObjectAdapter();
+			}
+		};
+
+	/**
+	 * Creates an adapter for the <code>target</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param target the object to adapt.
+	 * @return the adapter for the <code>target</code>.
+	 * @generated
+	 */
+	@Override
+	public Adapter createAdapter(Notifier target) {
+		return modelSwitch.doSwitch((EObject)target);
+	}
+
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.iotml.sensinact.TypedElement <em>Typed Element</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.iotml.sensinact.TypedElement
+	 * @generated
+	 */
+	public Adapter createTypedElementAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.iotml.sensinact.Studio <em>Studio</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.iotml.sensinact.Studio
+	 * @generated
+	 */
+	public Adapter createStudioAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.iotml.sensinact.Gateway <em>Gateway</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.iotml.sensinact.Gateway
+	 * @generated
+	 */
+	public Adapter createGatewayAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.iotml.sensinact.Device <em>Device</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.iotml.sensinact.Device
+	 * @generated
+	 */
+	public Adapter createDeviceAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.iotml.sensinact.Service <em>Service</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.iotml.sensinact.Service
+	 * @generated
+	 */
+	public Adapter createServiceAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.iotml.sensinact.Resource <em>Resource</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.iotml.sensinact.Resource
+	 * @generated
+	 */
+	public Adapter createResourceAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.iotml.sensinact.AccessMethod <em>Access Method</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.iotml.sensinact.AccessMethod
+	 * @generated
+	 */
+	public Adapter createAccessMethodAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.iotml.sensinact.Parameter <em>Parameter</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.iotml.sensinact.Parameter
+	 * @generated
+	 */
+	public Adapter createParameterAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.iotml.sensinact.Attribute <em>Attribute</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.iotml.sensinact.Attribute
+	 * @generated
+	 */
+	public Adapter createAttributeAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.iotml.sensinact.Metadata <em>Metadata</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.iotml.sensinact.Metadata
+	 * @generated
+	 */
+	public Adapter createMetadataAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.iotml.sensinact.Property <em>Property</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.iotml.sensinact.Property
+	 * @generated
+	 */
+	public Adapter createPropertyAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.iotml.sensinact.SensorData <em>Sensor Data</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.iotml.sensinact.SensorData
+	 * @generated
+	 */
+	public Adapter createSensorDataAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.iotml.sensinact.StateVariable <em>State Variable</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.iotml.sensinact.StateVariable
+	 * @generated
+	 */
+	public Adapter createStateVariableAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.iotml.sensinact.Action <em>Action</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.iotml.sensinact.Action
+	 * @generated
+	 */
+	public Adapter createActionAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.iotml.animate.HumanUser <em>Human User</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.iotml.animate.HumanUser
+	 * @generated
+	 */
+	public Adapter createHumanUserAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.MARTE.MARTE_Foundations.GRM.Resource <em>Resource</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.MARTE.MARTE_Foundations.GRM.Resource
+	 * @generated
+	 */
+	public Adapter createGRM_ResourceAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.MARTE.MARTE_DesignModel.HRM.HwGeneral.HwResource <em>Hw Resource</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.MARTE.MARTE_DesignModel.HRM.HwGeneral.HwResource
+	 * @generated
+	 */
+	public Adapter createHwResourceAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.MARTE.MARTE_Foundations.GRM.ProcessingResource <em>Processing Resource</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.MARTE.MARTE_Foundations.GRM.ProcessingResource
+	 * @generated
+	 */
+	public Adapter createProcessingResourceAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.MARTE.MARTE_Foundations.GRM.ComputingResource <em>Computing Resource</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.MARTE.MARTE_Foundations.GRM.ComputingResource
+	 * @generated
+	 */
+	public Adapter createComputingResourceAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.MARTE.MARTE_DesignModel.HRM.HwLogical.HwComputing.HwComputingResource <em>Resource</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.MARTE.MARTE_DesignModel.HRM.HwLogical.HwComputing.HwComputingResource
+	 * @generated
+	 */
+	public Adapter createHwComputingResourceAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.MARTE.MARTE_DesignModel.HRM.HwLogical.HwCommunication.HwCommunicationResource <em>Resource</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.MARTE.MARTE_DesignModel.HRM.HwLogical.HwCommunication.HwCommunicationResource
+	 * @generated
+	 */
+	public Adapter createHwCommunicationResourceAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.iotml.hardware.network.ConnectedDevice <em>Connected Device</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.iotml.hardware.network.ConnectedDevice
+	 * @generated
+	 */
+	public Adapter createConnectedDeviceAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.iotml.s3pml.hardware.IoTDevice <em>Io TDevice</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.iotml.s3pml.hardware.IoTDevice
+	 * @generated
+	 */
+	public Adapter createIoTDeviceAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.iotml.hardware.network.Gateway <em>Gateway</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.iotml.hardware.network.Gateway
+	 * @generated
+	 */
+	public Adapter createNetwork_GatewayAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.iotml.software.artefact.DigitalArtefact <em>Digital Artefact</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.iotml.software.artefact.DigitalArtefact
+	 * @generated
+	 */
+	public Adapter createDigitalArtefactAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.iotml.software.artefact.Service <em>Service</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.iotml.software.artefact.Service
+	 * @generated
+	 */
+	public Adapter createArtefact_ServiceAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.iotml.software.resource.OnDeviceResource <em>On Device Resource</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.iotml.software.resource.OnDeviceResource
+	 * @generated
+	 */
+	public Adapter createOnDeviceResourceAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.iotml.software.artefact.PropertyAccess <em>Property Access</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.iotml.software.artefact.PropertyAccess
+	 * @generated
+	 */
+	public Adapter createPropertyAccessAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for the default case.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @generated
+	 */
+	public Adapter createEObjectAdapter() {
+		return null;
+	}
+
+} //SensinactAdapterFactory
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/util/SensinactSwitch.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/util/SensinactSwitch.java
new file mode 100644
index 0000000..c3d531c
--- /dev/null
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/util/SensinactSwitch.java
@@ -0,0 +1,653 @@
+/**
+ * Copyright (c) 2018 CEA
+ * 
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
+ *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ * 
+ */
+package org.eclipse.papyrus.iotml.sensinact.util;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.util.Switch;
+
+import org.eclipse.papyrus.MARTE.MARTE_DesignModel.HRM.HwGeneral.HwResource;
+
+import org.eclipse.papyrus.MARTE.MARTE_DesignModel.HRM.HwLogical.HwCommunication.HwCommunicationResource;
+
+import org.eclipse.papyrus.MARTE.MARTE_DesignModel.HRM.HwLogical.HwComputing.HwComputingResource;
+
+import org.eclipse.papyrus.MARTE.MARTE_Foundations.GRM.ComputingResource;
+import org.eclipse.papyrus.MARTE.MARTE_Foundations.GRM.ProcessingResource;
+
+import org.eclipse.papyrus.iotml.animate.HumanUser;
+
+import org.eclipse.papyrus.iotml.hardware.network.ConnectedDevice;
+
+import org.eclipse.papyrus.iotml.s3pml.hardware.IoTDevice;
+
+import org.eclipse.papyrus.iotml.sensinact.*;
+
+import org.eclipse.papyrus.iotml.software.artefact.DigitalArtefact;
+import org.eclipse.papyrus.iotml.software.artefact.PropertyAccess;
+
+import org.eclipse.papyrus.iotml.software.resource.OnDeviceResource;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Switch</b> for the model's inheritance hierarchy.
+ * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
+ * to invoke the <code>caseXXX</code> method for each class of the model,
+ * starting with the actual class of the object
+ * and proceeding up the inheritance hierarchy
+ * until a non-null result is returned,
+ * which is the result of the switch.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.iotml.sensinact.SensinactPackage
+ * @generated
+ */
+public class SensinactSwitch<T> extends Switch<T> {
+	/**
+	 * The cached model package
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static SensinactPackage modelPackage;
+
+	/**
+	 * Creates an instance of the switch.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public SensinactSwitch() {
+		if (modelPackage == null) {
+			modelPackage = SensinactPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Checks whether this is a switch for the given package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param ePackage the package in question.
+	 * @return whether this is a switch for the given package.
+	 * @generated
+	 */
+	@Override
+	protected boolean isSwitchFor(EPackage ePackage) {
+		return ePackage == modelPackage;
+	}
+
+	/**
+	 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the first non-null result returned by a <code>caseXXX</code> call.
+	 * @generated
+	 */
+	@Override
+	protected T doSwitch(int classifierID, EObject theEObject) {
+		switch (classifierID) {
+			case SensinactPackage.TYPED_ELEMENT: {
+				TypedElement typedElement = (TypedElement)theEObject;
+				T result = caseTypedElement(typedElement);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case SensinactPackage.STUDIO: {
+				Studio studio = (Studio)theEObject;
+				T result = caseStudio(studio);
+				if (result == null) result = caseHumanUser(studio);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case SensinactPackage.GATEWAY: {
+				Gateway gateway = (Gateway)theEObject;
+				T result = caseGateway(gateway);
+				if (result == null) result = caseNetwork_Gateway(gateway);
+				if (result == null) result = caseHwComputingResource(gateway);
+				if (result == null) result = caseIoTDevice(gateway);
+				if (result == null) result = caseComputingResource(gateway);
+				if (result == null) result = caseConnectedDevice(gateway);
+				if (result == null) result = caseProcessingResource(gateway);
+				if (result == null) result = caseHwCommunicationResource(gateway);
+				if (result == null) result = caseHwResource(gateway);
+				if (result == null) result = caseGRM_Resource(gateway);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case SensinactPackage.DEVICE: {
+				Device device = (Device)theEObject;
+				T result = caseDevice(device);
+				if (result == null) result = caseConnectedDevice(device);
+				if (result == null) result = caseHwCommunicationResource(device);
+				if (result == null) result = caseHwResource(device);
+				if (result == null) result = caseGRM_Resource(device);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case SensinactPackage.SERVICE: {
+				Service service = (Service)theEObject;
+				T result = caseService(service);
+				if (result == null) result = caseArtefact_Service(service);
+				if (result == null) result = caseDigitalArtefact(service);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case SensinactPackage.RESOURCE: {
+				Resource resource = (Resource)theEObject;
+				T result = caseResource(resource);
+				if (result == null) result = caseOnDeviceResource(resource);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case SensinactPackage.ACCESS_METHOD: {
+				AccessMethod accessMethod = (AccessMethod)theEObject;
+				T result = caseAccessMethod(accessMethod);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case SensinactPackage.PARAMETER: {
+				Parameter parameter = (Parameter)theEObject;
+				T result = caseParameter(parameter);
+				if (result == null) result = caseTypedElement(parameter);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case SensinactPackage.ATTRIBUTE: {
+				Attribute attribute = (Attribute)theEObject;
+				T result = caseAttribute(attribute);
+				if (result == null) result = caseTypedElement(attribute);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case SensinactPackage.METADATA: {
+				Metadata metadata = (Metadata)theEObject;
+				T result = caseMetadata(metadata);
+				if (result == null) result = caseTypedElement(metadata);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case SensinactPackage.PROPERTY: {
+				Property property = (Property)theEObject;
+				T result = caseProperty(property);
+				if (result == null) result = caseResource(property);
+				if (result == null) result = caseOnDeviceResource(property);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case SensinactPackage.SENSOR_DATA: {
+				SensorData sensorData = (SensorData)theEObject;
+				T result = caseSensorData(sensorData);
+				if (result == null) result = caseResource(sensorData);
+				if (result == null) result = caseOnDeviceResource(sensorData);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case SensinactPackage.STATE_VARIABLE: {
+				StateVariable stateVariable = (StateVariable)theEObject;
+				T result = caseStateVariable(stateVariable);
+				if (result == null) result = caseResource(stateVariable);
+				if (result == null) result = caseOnDeviceResource(stateVariable);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case SensinactPackage.ACTION: {
+				Action action = (Action)theEObject;
+				T result = caseAction(action);
+				if (result == null) result = caseResource(action);
+				if (result == null) result = casePropertyAccess(action);
+				if (result == null) result = caseOnDeviceResource(action);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			default: return defaultCase(theEObject);
+		}
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Typed Element</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Typed Element</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseTypedElement(TypedElement object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Studio</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Studio</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseStudio(Studio object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Gateway</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Gateway</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseGateway(Gateway object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Device</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Device</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseDevice(Device object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Service</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Service</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseService(Service object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Resource</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Resource</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseResource(Resource object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Access Method</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Access Method</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseAccessMethod(AccessMethod object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Parameter</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Parameter</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseParameter(Parameter object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Attribute</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Attribute</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseAttribute(Attribute object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Metadata</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Metadata</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseMetadata(Metadata object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Property</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Property</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseProperty(Property object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Sensor Data</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Sensor Data</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseSensorData(SensorData object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>State Variable</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>State Variable</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseStateVariable(StateVariable object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Action</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Action</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseAction(Action object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Human User</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Human User</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseHumanUser(HumanUser object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Resource</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Resource</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseGRM_Resource(org.eclipse.papyrus.MARTE.MARTE_Foundations.GRM.Resource object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Hw Resource</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Hw Resource</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseHwResource(HwResource object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Processing Resource</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Processing Resource</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseProcessingResource(ProcessingResource object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Computing Resource</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Computing Resource</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseComputingResource(ComputingResource object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Resource</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Resource</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseHwComputingResource(HwComputingResource object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Resource</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Resource</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseHwCommunicationResource(HwCommunicationResource object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Connected Device</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Connected Device</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseConnectedDevice(ConnectedDevice object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Io TDevice</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Io TDevice</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseIoTDevice(IoTDevice object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Gateway</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Gateway</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseNetwork_Gateway(org.eclipse.papyrus.iotml.hardware.network.Gateway object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Digital Artefact</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Digital Artefact</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseDigitalArtefact(DigitalArtefact object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Service</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Service</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseArtefact_Service(org.eclipse.papyrus.iotml.software.artefact.Service object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>On Device Resource</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>On Device Resource</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseOnDeviceResource(OnDeviceResource object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Property Access</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Property Access</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T casePropertyAccess(PropertyAccess object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch, but this is the last case anyway.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+	 * @generated
+	 */
+	@Override
+	public T defaultCase(EObject object) {
+		return null;
+	}
+
+} //SensinactSwitch
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/software/artefact/impl/ArtefactPackageImpl.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/software/artefact/impl/ArtefactPackageImpl.java
index 87a4f19..6a6d0cc 100644
--- a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/software/artefact/impl/ArtefactPackageImpl.java
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/software/artefact/impl/ArtefactPackageImpl.java
@@ -40,9 +40,6 @@
 import org.eclipse.papyrus.MARTE_Library.TimeLibrary.TimeLibraryPackage;
 
 import org.eclipse.papyrus.MARTE_Library.TimeTypesLibrary.TimeTypesLibraryPackage;
-
-import org.eclipse.papyrus.iotml.IoTMLPackage;
-
 import org.eclipse.papyrus.iotml.animate.AnimatePackage;
 
 import org.eclipse.papyrus.iotml.animate.impl.AnimatePackageImpl;
@@ -66,10 +63,6 @@
 import org.eclipse.papyrus.iotml.hybrid.HybridPackage;
 
 import org.eclipse.papyrus.iotml.hybrid.impl.HybridPackageImpl;
-
-import org.eclipse.papyrus.iotml.impl.IoTMLPackageImpl;
-
-import org.eclipse.papyrus.iotml.s3pml.S3pmlPackage;
 import org.eclipse.papyrus.iotml.s3pml.hardware.HardwarePackage;
 
 import org.eclipse.papyrus.iotml.s3pml.hardware.impl.HardwarePackageImpl;
@@ -77,8 +70,6 @@
 import org.eclipse.papyrus.iotml.s3pml.hardware.store.StorePackage;
 
 import org.eclipse.papyrus.iotml.s3pml.hardware.store.impl.StorePackageImpl;
-
-import org.eclipse.papyrus.iotml.s3pml.impl.S3pmlPackageImpl;
 import org.eclipse.papyrus.iotml.s3pml.protocol.ProtocolPackage;
 
 import org.eclipse.papyrus.iotml.s3pml.protocol.impl.ProtocolPackageImpl;
@@ -87,6 +78,8 @@
 
 import org.eclipse.papyrus.iotml.s3pml.software.impl.SoftwarePackageImpl;
 
+import org.eclipse.papyrus.iotml.sensinact.SensinactPackage;
+import org.eclipse.papyrus.iotml.sensinact.impl.SensinactPackageImpl;
 import org.eclipse.papyrus.iotml.software.artefact.ArtefactFactory;
 import org.eclipse.papyrus.iotml.software.artefact.ArtefactPackage;
 import org.eclipse.papyrus.iotml.software.artefact.DigitalArtefact;
@@ -112,6 +105,7 @@
 import org.eclipse.uml2.types.TypesPackage;
 
 import org.eclipse.uml2.uml.UMLPackage;
+import org.eclipse.uml2.uml.profile.standard.StandardPackage;
 
 /**
  * <!-- begin-user-doc -->
@@ -197,7 +191,7 @@
 
 	/**
 	 * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
-	 * 
+	 *
 	 * <p>This method is used to initialize {@link ArtefactPackage#eINSTANCE} when that field is accessed.
 	 * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
 	 * <!-- begin-user-doc -->
@@ -211,7 +205,8 @@
 		if (isInited) return (ArtefactPackage)EPackage.Registry.INSTANCE.getEPackage(ArtefactPackage.eNS_URI);
 
 		// Obtain or create and register package
-		ArtefactPackageImpl theArtefactPackage = (ArtefactPackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof ArtefactPackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new ArtefactPackageImpl());
+		Object registeredArtefactPackage = EPackage.Registry.INSTANCE.get(eNS_URI);
+		ArtefactPackageImpl theArtefactPackage = registeredArtefactPackage instanceof ArtefactPackageImpl ? (ArtefactPackageImpl)registeredArtefactPackage : new ArtefactPackageImpl();
 
 		isInited = true;
 
@@ -229,69 +224,71 @@
 		sysmlPackage.eINSTANCE.eClass();
 		TypesPackage.eINSTANCE.eClass();
 		UMLPackage.eINSTANCE.eClass();
+		StandardPackage.eINSTANCE.eClass();
 
 		// Obtain or create and register interdependencies
-		IoTMLPackageImpl theIoTMLPackage = (IoTMLPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(IoTMLPackage.eNS_URI) instanceof IoTMLPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(IoTMLPackage.eNS_URI) : IoTMLPackage.eINSTANCE);
-		AnimatePackageImpl theAnimatePackage = (AnimatePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(AnimatePackage.eNS_URI) instanceof AnimatePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(AnimatePackage.eNS_URI) : AnimatePackage.eINSTANCE);
-		org.eclipse.papyrus.iotml.hardware.impl.HardwarePackageImpl theHardwarePackage = (org.eclipse.papyrus.iotml.hardware.impl.HardwarePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(org.eclipse.papyrus.iotml.hardware.HardwarePackage.eNS_URI) instanceof org.eclipse.papyrus.iotml.hardware.impl.HardwarePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(org.eclipse.papyrus.iotml.hardware.HardwarePackage.eNS_URI) : org.eclipse.papyrus.iotml.hardware.HardwarePackage.eINSTANCE);
-		ActuatorPackageImpl theActuatorPackage = (ActuatorPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(ActuatorPackage.eNS_URI) instanceof ActuatorPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(ActuatorPackage.eNS_URI) : ActuatorPackage.eINSTANCE);
-		SensorPackageImpl theSensorPackage = (SensorPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(SensorPackage.eNS_URI) instanceof SensorPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(SensorPackage.eNS_URI) : SensorPackage.eINSTANCE);
-		NetworkPackageImpl theNetworkPackage = (NetworkPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(NetworkPackage.eNS_URI) instanceof NetworkPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(NetworkPackage.eNS_URI) : NetworkPackage.eINSTANCE);
-		CorePackageImpl theCorePackage = (CorePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(CorePackage.eNS_URI) instanceof CorePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(CorePackage.eNS_URI) : CorePackage.eINSTANCE);
-		S3pmlPackageImpl theS3pmlPackage = (S3pmlPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(S3pmlPackage.eNS_URI) instanceof S3pmlPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(S3pmlPackage.eNS_URI) : S3pmlPackage.eINSTANCE);
-		SoftwarePackageImpl theSoftwarePackage = (SoftwarePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(SoftwarePackage.eNS_URI) instanceof SoftwarePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(SoftwarePackage.eNS_URI) : SoftwarePackage.eINSTANCE);
-		ProtocolPackageImpl theProtocolPackage = (ProtocolPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(ProtocolPackage.eNS_URI) instanceof ProtocolPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(ProtocolPackage.eNS_URI) : ProtocolPackage.eINSTANCE);
-		HardwarePackageImpl theHardwarePackage_1 = (HardwarePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(HardwarePackage.eNS_URI) instanceof HardwarePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(HardwarePackage.eNS_URI) : HardwarePackage.eINSTANCE);
-		StorePackageImpl theStorePackage = (StorePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(StorePackage.eNS_URI) instanceof StorePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(StorePackage.eNS_URI) : StorePackage.eINSTANCE);
-		org.eclipse.papyrus.iotml.software.impl.SoftwarePackageImpl theSoftwarePackage_1 = (org.eclipse.papyrus.iotml.software.impl.SoftwarePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(org.eclipse.papyrus.iotml.software.SoftwarePackage.eNS_URI) instanceof org.eclipse.papyrus.iotml.software.impl.SoftwarePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(org.eclipse.papyrus.iotml.software.SoftwarePackage.eNS_URI) : org.eclipse.papyrus.iotml.software.SoftwarePackage.eINSTANCE);
-		org.eclipse.papyrus.iotml.software.core.impl.CorePackageImpl theCorePackage_1 = (org.eclipse.papyrus.iotml.software.core.impl.CorePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(org.eclipse.papyrus.iotml.software.core.CorePackage.eNS_URI) instanceof org.eclipse.papyrus.iotml.software.core.impl.CorePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(org.eclipse.papyrus.iotml.software.core.CorePackage.eNS_URI) : org.eclipse.papyrus.iotml.software.core.CorePackage.eINSTANCE);
-		StructurePackageImpl theStructurePackage = (StructurePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(StructurePackage.eNS_URI) instanceof StructurePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(StructurePackage.eNS_URI) : StructurePackage.eINSTANCE);
-		ResourcePackageImpl theResourcePackage = (ResourcePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(ResourcePackage.eNS_URI) instanceof ResourcePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(ResourcePackage.eNS_URI) : ResourcePackage.eINSTANCE);
-		HybridPackageImpl theHybridPackage = (HybridPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(HybridPackage.eNS_URI) instanceof HybridPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(HybridPackage.eNS_URI) : HybridPackage.eINSTANCE);
+		Object registeredPackage = EPackage.Registry.INSTANCE.getEPackage(AnimatePackage.eNS_URI);
+		AnimatePackageImpl theAnimatePackage = (AnimatePackageImpl)(registeredPackage instanceof AnimatePackageImpl ? registeredPackage : AnimatePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(ActuatorPackage.eNS_URI);
+		ActuatorPackageImpl theActuatorPackage = (ActuatorPackageImpl)(registeredPackage instanceof ActuatorPackageImpl ? registeredPackage : ActuatorPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(SensorPackage.eNS_URI);
+		SensorPackageImpl theSensorPackage = (SensorPackageImpl)(registeredPackage instanceof SensorPackageImpl ? registeredPackage : SensorPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(NetworkPackage.eNS_URI);
+		NetworkPackageImpl theNetworkPackage = (NetworkPackageImpl)(registeredPackage instanceof NetworkPackageImpl ? registeredPackage : NetworkPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(CorePackage.eNS_URI);
+		CorePackageImpl theCorePackage = (CorePackageImpl)(registeredPackage instanceof CorePackageImpl ? registeredPackage : CorePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(SoftwarePackage.eNS_URI);
+		SoftwarePackageImpl theSoftwarePackage = (SoftwarePackageImpl)(registeredPackage instanceof SoftwarePackageImpl ? registeredPackage : SoftwarePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(ProtocolPackage.eNS_URI);
+		ProtocolPackageImpl theProtocolPackage = (ProtocolPackageImpl)(registeredPackage instanceof ProtocolPackageImpl ? registeredPackage : ProtocolPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(HardwarePackage.eNS_URI);
+		HardwarePackageImpl theHardwarePackage = (HardwarePackageImpl)(registeredPackage instanceof HardwarePackageImpl ? registeredPackage : HardwarePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(StorePackage.eNS_URI);
+		StorePackageImpl theStorePackage = (StorePackageImpl)(registeredPackage instanceof StorePackageImpl ? registeredPackage : StorePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(StructurePackage.eNS_URI);
+		StructurePackageImpl theStructurePackage = (StructurePackageImpl)(registeredPackage instanceof StructurePackageImpl ? registeredPackage : StructurePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(ResourcePackage.eNS_URI);
+		ResourcePackageImpl theResourcePackage = (ResourcePackageImpl)(registeredPackage instanceof ResourcePackageImpl ? registeredPackage : ResourcePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(HybridPackage.eNS_URI);
+		HybridPackageImpl theHybridPackage = (HybridPackageImpl)(registeredPackage instanceof HybridPackageImpl ? registeredPackage : HybridPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(SensinactPackage.eNS_URI);
+		SensinactPackageImpl theSensinactPackage = (SensinactPackageImpl)(registeredPackage instanceof SensinactPackageImpl ? registeredPackage : SensinactPackage.eINSTANCE);
 
 		// Create package meta-data objects
 		theArtefactPackage.createPackageContents();
-		theIoTMLPackage.createPackageContents();
 		theAnimatePackage.createPackageContents();
-		theHardwarePackage.createPackageContents();
 		theActuatorPackage.createPackageContents();
 		theSensorPackage.createPackageContents();
 		theNetworkPackage.createPackageContents();
 		theCorePackage.createPackageContents();
-		theS3pmlPackage.createPackageContents();
 		theSoftwarePackage.createPackageContents();
 		theProtocolPackage.createPackageContents();
-		theHardwarePackage_1.createPackageContents();
+		theHardwarePackage.createPackageContents();
 		theStorePackage.createPackageContents();
-		theSoftwarePackage_1.createPackageContents();
-		theCorePackage_1.createPackageContents();
 		theStructurePackage.createPackageContents();
 		theResourcePackage.createPackageContents();
 		theHybridPackage.createPackageContents();
+		theSensinactPackage.createPackageContents();
 
 		// Initialize created meta-data
 		theArtefactPackage.initializePackageContents();
-		theIoTMLPackage.initializePackageContents();
 		theAnimatePackage.initializePackageContents();
-		theHardwarePackage.initializePackageContents();
 		theActuatorPackage.initializePackageContents();
 		theSensorPackage.initializePackageContents();
 		theNetworkPackage.initializePackageContents();
 		theCorePackage.initializePackageContents();
-		theS3pmlPackage.initializePackageContents();
 		theSoftwarePackage.initializePackageContents();
 		theProtocolPackage.initializePackageContents();
-		theHardwarePackage_1.initializePackageContents();
+		theHardwarePackage.initializePackageContents();
 		theStorePackage.initializePackageContents();
-		theSoftwarePackage_1.initializePackageContents();
-		theCorePackage_1.initializePackageContents();
 		theStructurePackage.initializePackageContents();
 		theResourcePackage.initializePackageContents();
 		theHybridPackage.initializePackageContents();
+		theSensinactPackage.initializePackageContents();
 
 		// Register package validator
 		EValidator.Registry.INSTANCE.put
-			(theArtefactPackage, 
+			(theArtefactPackage,
 			 new EValidator.Descriptor() {
 				 public EValidator getEValidator() {
 					 return ArtefactValidator.INSTANCE;
@@ -301,7 +298,6 @@
 		// Mark meta-data to indicate it can't be changed
 		theArtefactPackage.freeze();
 
-  
 		// Update the registry and return the package
 		EPackage.Registry.INSTANCE.put(ArtefactPackage.eNS_URI, theArtefactPackage);
 		return theArtefactPackage;
@@ -634,6 +630,9 @@
 		g1.getETypeArguments().add(g2);
 		addEParameter(op, g1, "context", 0, 1, IS_UNIQUE, IS_ORDERED);
 
+		// Create resource
+		createResource(eNS_URI);
+
 		// Create annotations
 		// http://www.eclipse.org/uml2/2.0.0/UML
 		createUMLAnnotations();
@@ -646,12 +645,12 @@
 	 * @generated
 	 */
 	protected void createUMLAnnotations() {
-		String source = "http://www.eclipse.org/uml2/2.0.0/UML";	
+		String source = "http://www.eclipse.org/uml2/2.0.0/UML";
 		addAnnotation
-		  (this, 
-		   source, 
+		  (this,
+		   source,
 		   new String[] {
-			 "originalName", "Artefact"
+			   "originalName", "Artefact"
 		   });
 	}
 
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/software/core/structure/impl/MetaValueSpecificationImpl.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/software/core/structure/impl/MetaValueSpecificationImpl.java
index edfeb72..5df1e98 100644
--- a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/software/core/structure/impl/MetaValueSpecificationImpl.java
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/software/core/structure/impl/MetaValueSpecificationImpl.java
@@ -268,7 +268,7 @@
 	public String toString() {
 		if (eIsProxy()) return super.toString();
 
-		StringBuffer result = new StringBuffer(super.toString());
+		StringBuilder result = new StringBuilder(super.toString());
 		result.append(" (description: ");
 		result.append(description);
 		result.append(')');
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/software/core/structure/impl/StructurePackageImpl.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/software/core/structure/impl/StructurePackageImpl.java
index 40574c9..f0a0f94 100644
--- a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/software/core/structure/impl/StructurePackageImpl.java
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/software/core/structure/impl/StructurePackageImpl.java
@@ -38,9 +38,6 @@
 import org.eclipse.papyrus.MARTE_Library.TimeLibrary.TimeLibraryPackage;
 
 import org.eclipse.papyrus.MARTE_Library.TimeTypesLibrary.TimeTypesLibraryPackage;
-
-import org.eclipse.papyrus.iotml.IoTMLPackage;
-
 import org.eclipse.papyrus.iotml.animate.AnimatePackage;
 
 import org.eclipse.papyrus.iotml.animate.impl.AnimatePackageImpl;
@@ -64,10 +61,6 @@
 import org.eclipse.papyrus.iotml.hybrid.HybridPackage;
 
 import org.eclipse.papyrus.iotml.hybrid.impl.HybridPackageImpl;
-
-import org.eclipse.papyrus.iotml.impl.IoTMLPackageImpl;
-
-import org.eclipse.papyrus.iotml.s3pml.S3pmlPackage;
 import org.eclipse.papyrus.iotml.s3pml.hardware.HardwarePackage;
 
 import org.eclipse.papyrus.iotml.s3pml.hardware.impl.HardwarePackageImpl;
@@ -75,8 +68,6 @@
 import org.eclipse.papyrus.iotml.s3pml.hardware.store.StorePackage;
 
 import org.eclipse.papyrus.iotml.s3pml.hardware.store.impl.StorePackageImpl;
-
-import org.eclipse.papyrus.iotml.s3pml.impl.S3pmlPackageImpl;
 import org.eclipse.papyrus.iotml.s3pml.protocol.ProtocolPackage;
 
 import org.eclipse.papyrus.iotml.s3pml.protocol.impl.ProtocolPackageImpl;
@@ -85,6 +76,8 @@
 
 import org.eclipse.papyrus.iotml.s3pml.software.impl.SoftwarePackageImpl;
 
+import org.eclipse.papyrus.iotml.sensinact.SensinactPackage;
+import org.eclipse.papyrus.iotml.sensinact.impl.SensinactPackageImpl;
 import org.eclipse.papyrus.iotml.software.artefact.ArtefactPackage;
 
 import org.eclipse.papyrus.iotml.software.artefact.impl.ArtefactPackageImpl;
@@ -103,6 +96,7 @@
 import org.eclipse.uml2.types.TypesPackage;
 
 import org.eclipse.uml2.uml.UMLPackage;
+import org.eclipse.uml2.uml.profile.standard.StandardPackage;
 
 /**
  * <!-- begin-user-doc -->
@@ -153,7 +147,7 @@
 
 	/**
 	 * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
-	 * 
+	 *
 	 * <p>This method is used to initialize {@link StructurePackage#eINSTANCE} when that field is accessed.
 	 * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
 	 * <!-- begin-user-doc -->
@@ -167,7 +161,8 @@
 		if (isInited) return (StructurePackage)EPackage.Registry.INSTANCE.getEPackage(StructurePackage.eNS_URI);
 
 		// Obtain or create and register package
-		StructurePackageImpl theStructurePackage = (StructurePackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof StructurePackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new StructurePackageImpl());
+		Object registeredStructurePackage = EPackage.Registry.INSTANCE.get(eNS_URI);
+		StructurePackageImpl theStructurePackage = registeredStructurePackage instanceof StructurePackageImpl ? (StructurePackageImpl)registeredStructurePackage : new StructurePackageImpl();
 
 		isInited = true;
 
@@ -185,70 +180,71 @@
 		sysmlPackage.eINSTANCE.eClass();
 		TypesPackage.eINSTANCE.eClass();
 		UMLPackage.eINSTANCE.eClass();
+		StandardPackage.eINSTANCE.eClass();
 
 		// Obtain or create and register interdependencies
-		IoTMLPackageImpl theIoTMLPackage = (IoTMLPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(IoTMLPackage.eNS_URI) instanceof IoTMLPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(IoTMLPackage.eNS_URI) : IoTMLPackage.eINSTANCE);
-		AnimatePackageImpl theAnimatePackage = (AnimatePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(AnimatePackage.eNS_URI) instanceof AnimatePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(AnimatePackage.eNS_URI) : AnimatePackage.eINSTANCE);
-		org.eclipse.papyrus.iotml.hardware.impl.HardwarePackageImpl theHardwarePackage = (org.eclipse.papyrus.iotml.hardware.impl.HardwarePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(org.eclipse.papyrus.iotml.hardware.HardwarePackage.eNS_URI) instanceof org.eclipse.papyrus.iotml.hardware.impl.HardwarePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(org.eclipse.papyrus.iotml.hardware.HardwarePackage.eNS_URI) : org.eclipse.papyrus.iotml.hardware.HardwarePackage.eINSTANCE);
-		ActuatorPackageImpl theActuatorPackage = (ActuatorPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(ActuatorPackage.eNS_URI) instanceof ActuatorPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(ActuatorPackage.eNS_URI) : ActuatorPackage.eINSTANCE);
-		SensorPackageImpl theSensorPackage = (SensorPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(SensorPackage.eNS_URI) instanceof SensorPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(SensorPackage.eNS_URI) : SensorPackage.eINSTANCE);
-		NetworkPackageImpl theNetworkPackage = (NetworkPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(NetworkPackage.eNS_URI) instanceof NetworkPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(NetworkPackage.eNS_URI) : NetworkPackage.eINSTANCE);
-		CorePackageImpl theCorePackage = (CorePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(CorePackage.eNS_URI) instanceof CorePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(CorePackage.eNS_URI) : CorePackage.eINSTANCE);
-		S3pmlPackageImpl theS3pmlPackage = (S3pmlPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(S3pmlPackage.eNS_URI) instanceof S3pmlPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(S3pmlPackage.eNS_URI) : S3pmlPackage.eINSTANCE);
-		SoftwarePackageImpl theSoftwarePackage = (SoftwarePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(SoftwarePackage.eNS_URI) instanceof SoftwarePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(SoftwarePackage.eNS_URI) : SoftwarePackage.eINSTANCE);
-		ProtocolPackageImpl theProtocolPackage = (ProtocolPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(ProtocolPackage.eNS_URI) instanceof ProtocolPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(ProtocolPackage.eNS_URI) : ProtocolPackage.eINSTANCE);
-		HardwarePackageImpl theHardwarePackage_1 = (HardwarePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(HardwarePackage.eNS_URI) instanceof HardwarePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(HardwarePackage.eNS_URI) : HardwarePackage.eINSTANCE);
-		StorePackageImpl theStorePackage = (StorePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(StorePackage.eNS_URI) instanceof StorePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(StorePackage.eNS_URI) : StorePackage.eINSTANCE);
-		org.eclipse.papyrus.iotml.software.impl.SoftwarePackageImpl theSoftwarePackage_1 = (org.eclipse.papyrus.iotml.software.impl.SoftwarePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(org.eclipse.papyrus.iotml.software.SoftwarePackage.eNS_URI) instanceof org.eclipse.papyrus.iotml.software.impl.SoftwarePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(org.eclipse.papyrus.iotml.software.SoftwarePackage.eNS_URI) : org.eclipse.papyrus.iotml.software.SoftwarePackage.eINSTANCE);
-		org.eclipse.papyrus.iotml.software.core.impl.CorePackageImpl theCorePackage_1 = (org.eclipse.papyrus.iotml.software.core.impl.CorePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(org.eclipse.papyrus.iotml.software.core.CorePackage.eNS_URI) instanceof org.eclipse.papyrus.iotml.software.core.impl.CorePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(org.eclipse.papyrus.iotml.software.core.CorePackage.eNS_URI) : org.eclipse.papyrus.iotml.software.core.CorePackage.eINSTANCE);
-		ResourcePackageImpl theResourcePackage = (ResourcePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(ResourcePackage.eNS_URI) instanceof ResourcePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(ResourcePackage.eNS_URI) : ResourcePackage.eINSTANCE);
-		ArtefactPackageImpl theArtefactPackage = (ArtefactPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(ArtefactPackage.eNS_URI) instanceof ArtefactPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(ArtefactPackage.eNS_URI) : ArtefactPackage.eINSTANCE);
-		HybridPackageImpl theHybridPackage = (HybridPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(HybridPackage.eNS_URI) instanceof HybridPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(HybridPackage.eNS_URI) : HybridPackage.eINSTANCE);
+		Object registeredPackage = EPackage.Registry.INSTANCE.getEPackage(AnimatePackage.eNS_URI);
+		AnimatePackageImpl theAnimatePackage = (AnimatePackageImpl)(registeredPackage instanceof AnimatePackageImpl ? registeredPackage : AnimatePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(ActuatorPackage.eNS_URI);
+		ActuatorPackageImpl theActuatorPackage = (ActuatorPackageImpl)(registeredPackage instanceof ActuatorPackageImpl ? registeredPackage : ActuatorPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(SensorPackage.eNS_URI);
+		SensorPackageImpl theSensorPackage = (SensorPackageImpl)(registeredPackage instanceof SensorPackageImpl ? registeredPackage : SensorPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(NetworkPackage.eNS_URI);
+		NetworkPackageImpl theNetworkPackage = (NetworkPackageImpl)(registeredPackage instanceof NetworkPackageImpl ? registeredPackage : NetworkPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(CorePackage.eNS_URI);
+		CorePackageImpl theCorePackage = (CorePackageImpl)(registeredPackage instanceof CorePackageImpl ? registeredPackage : CorePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(SoftwarePackage.eNS_URI);
+		SoftwarePackageImpl theSoftwarePackage = (SoftwarePackageImpl)(registeredPackage instanceof SoftwarePackageImpl ? registeredPackage : SoftwarePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(ProtocolPackage.eNS_URI);
+		ProtocolPackageImpl theProtocolPackage = (ProtocolPackageImpl)(registeredPackage instanceof ProtocolPackageImpl ? registeredPackage : ProtocolPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(HardwarePackage.eNS_URI);
+		HardwarePackageImpl theHardwarePackage = (HardwarePackageImpl)(registeredPackage instanceof HardwarePackageImpl ? registeredPackage : HardwarePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(StorePackage.eNS_URI);
+		StorePackageImpl theStorePackage = (StorePackageImpl)(registeredPackage instanceof StorePackageImpl ? registeredPackage : StorePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(ResourcePackage.eNS_URI);
+		ResourcePackageImpl theResourcePackage = (ResourcePackageImpl)(registeredPackage instanceof ResourcePackageImpl ? registeredPackage : ResourcePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(ArtefactPackage.eNS_URI);
+		ArtefactPackageImpl theArtefactPackage = (ArtefactPackageImpl)(registeredPackage instanceof ArtefactPackageImpl ? registeredPackage : ArtefactPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(HybridPackage.eNS_URI);
+		HybridPackageImpl theHybridPackage = (HybridPackageImpl)(registeredPackage instanceof HybridPackageImpl ? registeredPackage : HybridPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(SensinactPackage.eNS_URI);
+		SensinactPackageImpl theSensinactPackage = (SensinactPackageImpl)(registeredPackage instanceof SensinactPackageImpl ? registeredPackage : SensinactPackage.eINSTANCE);
 
 		// Create package meta-data objects
 		theStructurePackage.createPackageContents();
-		theIoTMLPackage.createPackageContents();
 		theAnimatePackage.createPackageContents();
-		theHardwarePackage.createPackageContents();
 		theActuatorPackage.createPackageContents();
 		theSensorPackage.createPackageContents();
 		theNetworkPackage.createPackageContents();
 		theCorePackage.createPackageContents();
-		theS3pmlPackage.createPackageContents();
 		theSoftwarePackage.createPackageContents();
 		theProtocolPackage.createPackageContents();
-		theHardwarePackage_1.createPackageContents();
+		theHardwarePackage.createPackageContents();
 		theStorePackage.createPackageContents();
-		theSoftwarePackage_1.createPackageContents();
-		theCorePackage_1.createPackageContents();
 		theResourcePackage.createPackageContents();
 		theArtefactPackage.createPackageContents();
 		theHybridPackage.createPackageContents();
+		theSensinactPackage.createPackageContents();
 
 		// Initialize created meta-data
 		theStructurePackage.initializePackageContents();
-		theIoTMLPackage.initializePackageContents();
 		theAnimatePackage.initializePackageContents();
-		theHardwarePackage.initializePackageContents();
 		theActuatorPackage.initializePackageContents();
 		theSensorPackage.initializePackageContents();
 		theNetworkPackage.initializePackageContents();
 		theCorePackage.initializePackageContents();
-		theS3pmlPackage.initializePackageContents();
 		theSoftwarePackage.initializePackageContents();
 		theProtocolPackage.initializePackageContents();
-		theHardwarePackage_1.initializePackageContents();
+		theHardwarePackage.initializePackageContents();
 		theStorePackage.initializePackageContents();
-		theSoftwarePackage_1.initializePackageContents();
-		theCorePackage_1.initializePackageContents();
 		theResourcePackage.initializePackageContents();
 		theArtefactPackage.initializePackageContents();
 		theHybridPackage.initializePackageContents();
+		theSensinactPackage.initializePackageContents();
 
 		// Mark meta-data to indicate it can't be changed
 		theStructurePackage.freeze();
 
-  
 		// Update the registry and return the package
 		EPackage.Registry.INSTANCE.put(StructurePackage.eNS_URI, theStructurePackage);
 		return theStructurePackage;
@@ -398,6 +394,9 @@
 		initEReference(getDetailedValueSpecification_Base_ValueSpecification(), theUMLPackage.getValueSpecification(), null, "base_ValueSpecification", null, 1, 1, DetailedValueSpecification.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
 		initEReference(getDetailedValueSpecification_MetaSpecification(), this.getMetaValueSpecification(), null, "metaSpecification", null, 0, -1, DetailedValueSpecification.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
 
+		// Create resource
+		createResource(eNS_URI);
+
 		// Create annotations
 		// http://www.eclipse.org/uml2/2.0.0/UML
 		createUMLAnnotations();
@@ -410,12 +409,12 @@
 	 * @generated
 	 */
 	protected void createUMLAnnotations() {
-		String source = "http://www.eclipse.org/uml2/2.0.0/UML";	
+		String source = "http://www.eclipse.org/uml2/2.0.0/UML";
 		addAnnotation
-		  (this, 
-		   source, 
+		  (this,
+		   source,
 		   new String[] {
-			 "originalName", "Structure"
+			   "originalName", "Structure"
 		   });
 	}
 
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/software/resource/impl/ResourcePackageImpl.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/software/resource/impl/ResourcePackageImpl.java
index d6872f3..0a429b7 100644
--- a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/software/resource/impl/ResourcePackageImpl.java
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/software/resource/impl/ResourcePackageImpl.java
@@ -39,9 +39,6 @@
 import org.eclipse.papyrus.MARTE_Library.TimeLibrary.TimeLibraryPackage;
 
 import org.eclipse.papyrus.MARTE_Library.TimeTypesLibrary.TimeTypesLibraryPackage;
-
-import org.eclipse.papyrus.iotml.IoTMLPackage;
-
 import org.eclipse.papyrus.iotml.animate.AnimatePackage;
 
 import org.eclipse.papyrus.iotml.animate.impl.AnimatePackageImpl;
@@ -65,10 +62,6 @@
 import org.eclipse.papyrus.iotml.hybrid.HybridPackage;
 
 import org.eclipse.papyrus.iotml.hybrid.impl.HybridPackageImpl;
-
-import org.eclipse.papyrus.iotml.impl.IoTMLPackageImpl;
-
-import org.eclipse.papyrus.iotml.s3pml.S3pmlPackage;
 import org.eclipse.papyrus.iotml.s3pml.hardware.HardwarePackage;
 
 import org.eclipse.papyrus.iotml.s3pml.hardware.impl.HardwarePackageImpl;
@@ -76,8 +69,6 @@
 import org.eclipse.papyrus.iotml.s3pml.hardware.store.StorePackage;
 
 import org.eclipse.papyrus.iotml.s3pml.hardware.store.impl.StorePackageImpl;
-
-import org.eclipse.papyrus.iotml.s3pml.impl.S3pmlPackageImpl;
 import org.eclipse.papyrus.iotml.s3pml.protocol.ProtocolPackage;
 
 import org.eclipse.papyrus.iotml.s3pml.protocol.impl.ProtocolPackageImpl;
@@ -86,6 +77,8 @@
 
 import org.eclipse.papyrus.iotml.s3pml.software.impl.SoftwarePackageImpl;
 
+import org.eclipse.papyrus.iotml.sensinact.SensinactPackage;
+import org.eclipse.papyrus.iotml.sensinact.impl.SensinactPackageImpl;
 import org.eclipse.papyrus.iotml.software.artefact.ArtefactPackage;
 
 import org.eclipse.papyrus.iotml.software.artefact.impl.ArtefactPackageImpl;
@@ -104,6 +97,7 @@
 import org.eclipse.uml2.types.TypesPackage;
 
 import org.eclipse.uml2.uml.UMLPackage;
+import org.eclipse.uml2.uml.profile.standard.StandardPackage;
 
 /**
  * <!-- begin-user-doc -->
@@ -154,7 +148,7 @@
 
 	/**
 	 * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
-	 * 
+	 *
 	 * <p>This method is used to initialize {@link ResourcePackage#eINSTANCE} when that field is accessed.
 	 * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
 	 * <!-- begin-user-doc -->
@@ -168,7 +162,8 @@
 		if (isInited) return (ResourcePackage)EPackage.Registry.INSTANCE.getEPackage(ResourcePackage.eNS_URI);
 
 		// Obtain or create and register package
-		ResourcePackageImpl theResourcePackage = (ResourcePackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof ResourcePackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new ResourcePackageImpl());
+		Object registeredResourcePackage = EPackage.Registry.INSTANCE.get(eNS_URI);
+		ResourcePackageImpl theResourcePackage = registeredResourcePackage instanceof ResourcePackageImpl ? (ResourcePackageImpl)registeredResourcePackage : new ResourcePackageImpl();
 
 		isInited = true;
 
@@ -186,70 +181,71 @@
 		sysmlPackage.eINSTANCE.eClass();
 		TypesPackage.eINSTANCE.eClass();
 		UMLPackage.eINSTANCE.eClass();
+		StandardPackage.eINSTANCE.eClass();
 
 		// Obtain or create and register interdependencies
-		IoTMLPackageImpl theIoTMLPackage = (IoTMLPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(IoTMLPackage.eNS_URI) instanceof IoTMLPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(IoTMLPackage.eNS_URI) : IoTMLPackage.eINSTANCE);
-		AnimatePackageImpl theAnimatePackage = (AnimatePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(AnimatePackage.eNS_URI) instanceof AnimatePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(AnimatePackage.eNS_URI) : AnimatePackage.eINSTANCE);
-		org.eclipse.papyrus.iotml.hardware.impl.HardwarePackageImpl theHardwarePackage = (org.eclipse.papyrus.iotml.hardware.impl.HardwarePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(org.eclipse.papyrus.iotml.hardware.HardwarePackage.eNS_URI) instanceof org.eclipse.papyrus.iotml.hardware.impl.HardwarePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(org.eclipse.papyrus.iotml.hardware.HardwarePackage.eNS_URI) : org.eclipse.papyrus.iotml.hardware.HardwarePackage.eINSTANCE);
-		ActuatorPackageImpl theActuatorPackage = (ActuatorPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(ActuatorPackage.eNS_URI) instanceof ActuatorPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(ActuatorPackage.eNS_URI) : ActuatorPackage.eINSTANCE);
-		SensorPackageImpl theSensorPackage = (SensorPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(SensorPackage.eNS_URI) instanceof SensorPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(SensorPackage.eNS_URI) : SensorPackage.eINSTANCE);
-		NetworkPackageImpl theNetworkPackage = (NetworkPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(NetworkPackage.eNS_URI) instanceof NetworkPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(NetworkPackage.eNS_URI) : NetworkPackage.eINSTANCE);
-		CorePackageImpl theCorePackage = (CorePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(CorePackage.eNS_URI) instanceof CorePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(CorePackage.eNS_URI) : CorePackage.eINSTANCE);
-		S3pmlPackageImpl theS3pmlPackage = (S3pmlPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(S3pmlPackage.eNS_URI) instanceof S3pmlPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(S3pmlPackage.eNS_URI) : S3pmlPackage.eINSTANCE);
-		SoftwarePackageImpl theSoftwarePackage = (SoftwarePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(SoftwarePackage.eNS_URI) instanceof SoftwarePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(SoftwarePackage.eNS_URI) : SoftwarePackage.eINSTANCE);
-		ProtocolPackageImpl theProtocolPackage = (ProtocolPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(ProtocolPackage.eNS_URI) instanceof ProtocolPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(ProtocolPackage.eNS_URI) : ProtocolPackage.eINSTANCE);
-		HardwarePackageImpl theHardwarePackage_1 = (HardwarePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(HardwarePackage.eNS_URI) instanceof HardwarePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(HardwarePackage.eNS_URI) : HardwarePackage.eINSTANCE);
-		StorePackageImpl theStorePackage = (StorePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(StorePackage.eNS_URI) instanceof StorePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(StorePackage.eNS_URI) : StorePackage.eINSTANCE);
-		org.eclipse.papyrus.iotml.software.impl.SoftwarePackageImpl theSoftwarePackage_1 = (org.eclipse.papyrus.iotml.software.impl.SoftwarePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(org.eclipse.papyrus.iotml.software.SoftwarePackage.eNS_URI) instanceof org.eclipse.papyrus.iotml.software.impl.SoftwarePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(org.eclipse.papyrus.iotml.software.SoftwarePackage.eNS_URI) : org.eclipse.papyrus.iotml.software.SoftwarePackage.eINSTANCE);
-		org.eclipse.papyrus.iotml.software.core.impl.CorePackageImpl theCorePackage_1 = (org.eclipse.papyrus.iotml.software.core.impl.CorePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(org.eclipse.papyrus.iotml.software.core.CorePackage.eNS_URI) instanceof org.eclipse.papyrus.iotml.software.core.impl.CorePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(org.eclipse.papyrus.iotml.software.core.CorePackage.eNS_URI) : org.eclipse.papyrus.iotml.software.core.CorePackage.eINSTANCE);
-		StructurePackageImpl theStructurePackage = (StructurePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(StructurePackage.eNS_URI) instanceof StructurePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(StructurePackage.eNS_URI) : StructurePackage.eINSTANCE);
-		ArtefactPackageImpl theArtefactPackage = (ArtefactPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(ArtefactPackage.eNS_URI) instanceof ArtefactPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(ArtefactPackage.eNS_URI) : ArtefactPackage.eINSTANCE);
-		HybridPackageImpl theHybridPackage = (HybridPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(HybridPackage.eNS_URI) instanceof HybridPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(HybridPackage.eNS_URI) : HybridPackage.eINSTANCE);
+		Object registeredPackage = EPackage.Registry.INSTANCE.getEPackage(AnimatePackage.eNS_URI);
+		AnimatePackageImpl theAnimatePackage = (AnimatePackageImpl)(registeredPackage instanceof AnimatePackageImpl ? registeredPackage : AnimatePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(ActuatorPackage.eNS_URI);
+		ActuatorPackageImpl theActuatorPackage = (ActuatorPackageImpl)(registeredPackage instanceof ActuatorPackageImpl ? registeredPackage : ActuatorPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(SensorPackage.eNS_URI);
+		SensorPackageImpl theSensorPackage = (SensorPackageImpl)(registeredPackage instanceof SensorPackageImpl ? registeredPackage : SensorPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(NetworkPackage.eNS_URI);
+		NetworkPackageImpl theNetworkPackage = (NetworkPackageImpl)(registeredPackage instanceof NetworkPackageImpl ? registeredPackage : NetworkPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(CorePackage.eNS_URI);
+		CorePackageImpl theCorePackage = (CorePackageImpl)(registeredPackage instanceof CorePackageImpl ? registeredPackage : CorePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(SoftwarePackage.eNS_URI);
+		SoftwarePackageImpl theSoftwarePackage = (SoftwarePackageImpl)(registeredPackage instanceof SoftwarePackageImpl ? registeredPackage : SoftwarePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(ProtocolPackage.eNS_URI);
+		ProtocolPackageImpl theProtocolPackage = (ProtocolPackageImpl)(registeredPackage instanceof ProtocolPackageImpl ? registeredPackage : ProtocolPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(HardwarePackage.eNS_URI);
+		HardwarePackageImpl theHardwarePackage = (HardwarePackageImpl)(registeredPackage instanceof HardwarePackageImpl ? registeredPackage : HardwarePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(StorePackage.eNS_URI);
+		StorePackageImpl theStorePackage = (StorePackageImpl)(registeredPackage instanceof StorePackageImpl ? registeredPackage : StorePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(StructurePackage.eNS_URI);
+		StructurePackageImpl theStructurePackage = (StructurePackageImpl)(registeredPackage instanceof StructurePackageImpl ? registeredPackage : StructurePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(ArtefactPackage.eNS_URI);
+		ArtefactPackageImpl theArtefactPackage = (ArtefactPackageImpl)(registeredPackage instanceof ArtefactPackageImpl ? registeredPackage : ArtefactPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(HybridPackage.eNS_URI);
+		HybridPackageImpl theHybridPackage = (HybridPackageImpl)(registeredPackage instanceof HybridPackageImpl ? registeredPackage : HybridPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(SensinactPackage.eNS_URI);
+		SensinactPackageImpl theSensinactPackage = (SensinactPackageImpl)(registeredPackage instanceof SensinactPackageImpl ? registeredPackage : SensinactPackage.eINSTANCE);
 
 		// Create package meta-data objects
 		theResourcePackage.createPackageContents();
-		theIoTMLPackage.createPackageContents();
 		theAnimatePackage.createPackageContents();
-		theHardwarePackage.createPackageContents();
 		theActuatorPackage.createPackageContents();
 		theSensorPackage.createPackageContents();
 		theNetworkPackage.createPackageContents();
 		theCorePackage.createPackageContents();
-		theS3pmlPackage.createPackageContents();
 		theSoftwarePackage.createPackageContents();
 		theProtocolPackage.createPackageContents();
-		theHardwarePackage_1.createPackageContents();
+		theHardwarePackage.createPackageContents();
 		theStorePackage.createPackageContents();
-		theSoftwarePackage_1.createPackageContents();
-		theCorePackage_1.createPackageContents();
 		theStructurePackage.createPackageContents();
 		theArtefactPackage.createPackageContents();
 		theHybridPackage.createPackageContents();
+		theSensinactPackage.createPackageContents();
 
 		// Initialize created meta-data
 		theResourcePackage.initializePackageContents();
-		theIoTMLPackage.initializePackageContents();
 		theAnimatePackage.initializePackageContents();
-		theHardwarePackage.initializePackageContents();
 		theActuatorPackage.initializePackageContents();
 		theSensorPackage.initializePackageContents();
 		theNetworkPackage.initializePackageContents();
 		theCorePackage.initializePackageContents();
-		theS3pmlPackage.initializePackageContents();
 		theSoftwarePackage.initializePackageContents();
 		theProtocolPackage.initializePackageContents();
-		theHardwarePackage_1.initializePackageContents();
+		theHardwarePackage.initializePackageContents();
 		theStorePackage.initializePackageContents();
-		theSoftwarePackage_1.initializePackageContents();
-		theCorePackage_1.initializePackageContents();
 		theStructurePackage.initializePackageContents();
 		theArtefactPackage.initializePackageContents();
 		theHybridPackage.initializePackageContents();
+		theSensinactPackage.initializePackageContents();
 
 		// Mark meta-data to indicate it can't be changed
 		theResourcePackage.freeze();
 
-  
 		// Update the registry and return the package
 		EPackage.Registry.INSTANCE.put(ResourcePackage.eNS_URI, theResourcePackage);
 		return theResourcePackage;
@@ -388,6 +384,9 @@
 		initEReference(getOnDeviceResource_DeviceBroker(), theSW_BrokeringPackage.getDeviceBroker(), null, "deviceBroker", null, 0, 1, OnDeviceResource.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
 		initEReference(getOnDeviceResource_MemoryBroker(), theSW_BrokeringPackage.getMemoryBroker(), null, "memoryBroker", null, 0, 1, OnDeviceResource.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
 
+		// Create resource
+		createResource(eNS_URI);
+
 		// Create annotations
 		// http://www.eclipse.org/uml2/2.0.0/UML
 		createUMLAnnotations();
@@ -400,12 +399,12 @@
 	 * @generated
 	 */
 	protected void createUMLAnnotations() {
-		String source = "http://www.eclipse.org/uml2/2.0.0/UML";	
+		String source = "http://www.eclipse.org/uml2/2.0.0/UML";
 		addAnnotation
-		  (this, 
-		   source, 
+		  (this,
+		   source,
 		   new String[] {
-			 "originalName", "Resource"
+			   "originalName", "Resource"
 		   });
 	}