diff --git a/.idea/gradle.xml b/.idea/gradle.xml
index 69921a0a18865ba1eea466360f5f9166f305c1a8..6b114cd6ae38e803f355f82020298c2b100b03f8 100644
--- a/.idea/gradle.xml
+++ b/.idea/gradle.xml
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project version="4">
+  <component name="GradleMigrationSettings" migrationVersion="1" />
   <component name="GradleSettings">
     <option name="linkedExternalProjectsSettings">
       <GradleProjectSettings>
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
index 35eb1ddfbbc029bcab630581847471d7f238ec53..f1d775cdb517d908b39634ec6cb72e77ced48fd8 100644
--- a/.idea/vcs.xml
+++ b/.idea/vcs.xml
@@ -2,5 +2,6 @@
 <project version="4">
   <component name="VcsDirectoryMappings">
     <mapping directory="" vcs="Git" />
+    <mapping directory="$PROJECT_DIR$/models" vcs="Git" />
   </component>
 </project>
\ No newline at end of file
diff --git a/build.gradle b/build.gradle
index e8895f486a4db838f5de1cfb494ad31724d116e0..ee7827f28edd783bd60535e3663fe5b4c5e25851 100644
--- a/build.gradle
+++ b/build.gradle
@@ -43,6 +43,8 @@ bootRun{
 }
 
 dependencies {
+	implementation 'com.github.weeb-kun:list-utils:1.0.0'
+	implementation 'org.webjars.npm:list-item:1.1.1'
 	developmentOnly 'org.springframework.boot:spring-boot-devtools'
 	implementation 'org.eclipse.emf:org.eclipse.emf.ecore:2.+'
 	implementation 'org.eclipse.emf:org.eclipse.emf.common:2.+'
diff --git a/models b/models
index dd1da1b391da2cd0e9a801d6bb2fb0b1985d4db9..51af7a83e036eac7bf619ebe59e7fbbe105318fd 160000
--- a/models
+++ b/models
@@ -1 +1 @@
-Subproject commit dd1da1b391da2cd0e9a801d6bb2fb0b1985d4db9
+Subproject commit 51af7a83e036eac7bf619ebe59e7fbbe105318fd
diff --git a/src/main/java/ipos/project/Functionality/SRSConversion/SRSConversion.java b/src/main/java/ipos/project/Functionality/SRSConversion/SRSConversion.java
index 7962b92e3473a32e6286b0bce2acdb8b9022accd..f5c3dc606d6def8554c01eff14067bfaa57c3d29 100644
--- a/src/main/java/ipos/project/Functionality/SRSConversion/SRSConversion.java
+++ b/src/main/java/ipos/project/Functionality/SRSConversion/SRSConversion.java
@@ -16,38 +16,59 @@ public class SRSConversion {
     quat_1 is the rotation of the original coordinate system (against ROOT)
     quat_2 is the rotation of the desired coordinate system (against ROOT)
     */
-    public static void positionInOtherSystem(Position pos, ReferenceSystem ref){
+    public static void switchSRS(Placing pla, ReferenceSystem ref){
         IPos_DatamodelFactory datamodelFactory = IPos_DatamodelFactory.eINSTANCE;
-
+        Position pos = pla.getPosition();
         Point3D P = (Point3D) pos.getPoint();
-        Point3D R1 = (Point3D) pos.getReferenceSystem().getOrigin().getPosition().getPoint();
-        Point3D R2 = (Point3D) ref.getOrigin().getPosition().getPoint();
-        Quaternion Q1 = (Quaternion) pos.getReferenceSystem().getOrigin().getOrientation();
+
+        Point3D R = (Point3D) ref.getOrigin().getPosition().getPoint();
+        Quaternion Q1 = (Quaternion) pla.getOrientation();
         Quaternion Q2 = (Quaternion) ref.getOrigin().getOrientation();
+        String ref_id = ref.getId();
+        String pla_ref_id = pla.getPosition().getReferenceSystem().getId();
 
         Vector_math p1 = new Vector_math(P.getX(), P.getY(), P.getZ());
-        Vector_math ref_1 = new Vector_math(R1.getX(), R1.getY(), R1.getZ());
-        Vector_math ref_2 = new Vector_math(R2.getX(), R2.getY(), R2.getZ());
+        Vector_math ref_org = new Vector_math(R.getX(), R.getY(), R.getZ());
         Quaternion_math quat_1 = new Quaternion_math(Q1.getX(), Q1.getY(), Q1.getZ(), Q1.getW());
         Quaternion_math quat_2 = new Quaternion_math(Q2.getX(), Q2.getY(), Q2.getZ(), Q2.getW());
         //System.out.println("Quaterion_1: " + quat_1.getX() + ", "+ quat_1.getY() + ", "+ quat_1.getZ() + ", " + quat_1.getW());
         //System.out.println("Quaterion_2: " + quat_2.getX() + ", "+ quat_2.getY() + ", "+ quat_2.getZ() + ", " + quat_2.getW());
 
-        //System.out.println("inversed Quaterion_1: " + quat_1.inverse().getX() + ", "+ quat_1.inverse().getY() + ", "+ quat_1.inverse().getZ() + ", " + quat_1.inverse().getW());
-        p1.transform(quat_1.inverse());
 
-        //System.out.println("phase 1 transfrom: " + p1.getX() + ", "+ p1.getY() + ", "+ p1.getZ());
-        p1.transform(quat_2);
-        p1.add(ref_1);
-        p1.substract(ref_2);
+        if (ref_id == pla_ref_id) {
+            //System.out.println("inversed Quaterion_1: " + quat_1.inverse().getX() + ", "+ quat_1.inverse().getY() + ", "+ quat_1.inverse().getZ() + ", " + quat_1.inverse().getW());
+            quat_1.mulLeft(quat_2);
 
+            //System.out.println("phase 1 transfrom: " + p1.getX() + ", "+ p1.getY() + ", "+ p1.getZ());
+            p1.transform(quat_2);
+            p1.add(ref_org);
+            pos.setReferenceSystem(ref.getOrigin().getPosition().getReferenceSystem());
+
+        }
+        else if(ref_id == ref.getOrigin().getPosition().getReferenceSystem().getId()) {
+            //System.out.println("inversed Quaterion_1: " + quat_1.inverse().getX() + ", "+ quat_1.inverse().getY() + ", "+ quat_1.inverse().getZ() + ", " + quat_1.inverse().getW());
+            quat_1.mulLeft(quat_2.inverse());
+
+            //System.out.println("phase 1 transfrom: " + p1.getX() + ", "+ p1.getY() + ", "+ p1.getZ());
+            p1.transform(quat_2.inverse());
+            p1.substract(ref_org);
+            pos.setReferenceSystem(ref);
+        }
+        else {
+            //error message
+        }
+        Q1.setX(quat_1.getX());
+        Q1.setY(quat_1.getY());
+        Q1.setZ(quat_1.getZ());
+        Q1.setW(quat_1.getW());
         P.setX(p1.getX());
         P.setY(p1.getY());
         P.setZ(p1.getZ());
+        pla.setOrientation(Q1);
         pos.setPoint(P);
-        pos.setReferenceSystem(ref);
+        pla.setPosition(pos);
     }
-    public static void zoneInOtherSystem(Zone zone, ReferenceSystem ref){
+    /*public static void switchSRSZone(Zone zone, ReferenceSystem ref){
         IPos_DatamodelFactory datamodelFactory = IPos_DatamodelFactory.eINSTANCE;
         EList spaceList = zone.getSpace();
         for (int i = 0; i < spaceList.size(); i++) {
@@ -85,5 +106,5 @@ public class SRSConversion {
         new_cod[1] = cod_vec.getY();
         new_cod[2] = cod_vec.getZ();
         return new_cod;
-    }
+    }*/
 }
diff --git a/src/main/java/ipos/project/Functionality/SRSConversion/TestSRSConverter.java b/src/main/java/ipos/project/Functionality/SRSConversion/TestSRSConverter.java
index 0407054e48d22e72f996894a1c2ec7674a2b6493..81debca8c746886b5805737b5c59b3e98922f2a1 100644
--- a/src/main/java/ipos/project/Functionality/SRSConversion/TestSRSConverter.java
+++ b/src/main/java/ipos/project/Functionality/SRSConversion/TestSRSConverter.java
@@ -13,6 +13,7 @@ public class TestSRSConverter {
         Vector_math axis = new Vector_math(1, 0,0);
         Point3D testPoint3D = datamodelFactory.createPoint3D();
         Position testPosition = datamodelFactory.createPosition();
+        Placing testPlacing = datamodelFactory.createPlacing();
 
         testPoint3D.setX((float) 0);
         testPoint3D.setY((float) 1);
@@ -38,6 +39,7 @@ public class TestSRSConverter {
         testRef_1.setOrigin(refPlacing_1);
         testPosition.setPoint(testPoint3D);
         testPosition.setReferenceSystem(testRef_1);
+        testPlacing.setPosition(testPosition);
 
 
         ReferenceSystem testRef_2 = datamodelFactory.createReferenceSystem();
@@ -63,7 +65,7 @@ public class TestSRSConverter {
         System.out.println("Position: refID " + ": " + testPosition.getReferenceSystem().getId());
         System.out.println("Position: coord " + ": " + testPosition.getPoint());
 
-        SRSConversion.positionInOtherSystem(testPosition, testRef_2);
+        SRSConversion.switchSRS(testPlacing, testRef_2);
         System.out.println("Position: refID " + ": " + testPosition.getReferenceSystem().getId());
         System.out.println("Position: coord " + ": " + testPosition.getPoint());