diff --git a/source/RobotAPI/libraries/RobotRTControllers/DataUnits/KinematicDataUnit.h b/source/RobotAPI/libraries/RobotRTControllers/DataUnits/KinematicDataUnit.h
index 43c57f9b254f5f681f037e2bea2e5174e776eb37..fb5c6851f10434f6d54a6c7e4730df5f4b928d76 100644
--- a/source/RobotAPI/libraries/RobotRTControllers/DataUnits/KinematicDataUnit.h
+++ b/source/RobotAPI/libraries/RobotRTControllers/DataUnits/KinematicDataUnit.h
@@ -36,26 +36,43 @@ namespace armarx
     {
     public:
         virtual const std::vector<std::string>& getJointNames() const = 0;
+
         virtual std::vector<const float*> getJointAngles(const std::vector<std::string>& joints) const = 0;
+
         virtual std::vector<const float*> getJointVelocities(const std::vector<std::string>& joints) const = 0;
+
         virtual std::vector<const float*> getJointTorques(const std::vector<std::string>& joints) const = 0;
+
         virtual std::vector<const float*> getJointCurrents(const std::vector<std::string>& joints) const = 0;
+
         virtual std::vector<const float*> getJointMotorTemperatures(const std::vector<std::string>& joints) const = 0;
+
         virtual std::vector<const float*> getJointGearTemperatures(const std::vector<std::string>& joints) const = 0;
 
-        virtual std::vector<const int32_t*> getJointRawPositionValues(const std::vector<std::string>& joints) const = 0;
-        virtual std::vector<const int32_t*> getJointRawVelocityValues(const std::vector<std::string>& joints) const = 0;
+        virtual std::vector<const int32_t*>
+        getJointRawPositionValues(const std::vector<std::string>& joints) const = 0;
+
+        virtual std::vector<const int32_t*>
+        getJointRawVelocityValues(const std::vector<std::string>& joints) const = 0;
+
         virtual std::vector<const int16_t*> getJointRawCurrentValues(const std::vector<std::string>& joints) const = 0;
+
         virtual std::vector<const int32_t*> getJointRawTorqueValues(const std::vector<std::string>& joints) const = 0;
-        virtual std::vector<const int32_t*> getJointRawGearTemperatures(const std::vector<std::string>& joints) const = 0;
-        virtual std::vector<const int32_t*> getJointRawAbsPositionValues(const std::vector<std::string>& joints) const = 0;
-        virtual std::vector<const int16_t*> getJointRawMotorTemperatureValues(const std::vector<std::string>& joints) const = 0;
+
+        virtual std::vector<const int32_t*>
+        getJointRawGearTemperatures(const std::vector<std::string>& joints) const = 0;
+
+        virtual std::vector<const int32_t*>
+        getJointRawAbsPositionValues(const std::vector<std::string>& joints) const = 0;
+
+        virtual std::vector<const int16_t*>
+        getJointRawMotorTemperatureValues(const std::vector<std::string>& joints) const = 0;
     };
 
-    class KinematicDataUnitPtrProvider: virtual public KinematicDataUnitInterface
+    class KinematicDataUnitPtrProvider : virtual public KinematicDataUnitInterface
     {
     public:
-        KinematicDataUnitPtrProvider(const std::vector<std::string>& jointNames):
+        KinematicDataUnitPtrProvider(const std::vector<std::string>& jointNames) :
             jointAngles(jointNames.size(), nullptr),
             jointVelocites(jointNames.size(), nullptr),
             jointTorques(jointNames.size(), nullptr),
@@ -71,79 +88,109 @@ namespace armarx
             jointRawAbsPositionValues(jointNames.size(), nullptr),
             jointRawMotorTemperatureValues(jointNames.size(), nullptr),
             jointNames {jointNames},
-                   jointIndices {toIndexMap(jointNames)}
-        {}
+        jointIndices {toIndexMap(jointNames)} {}
+
         KinematicDataUnitPtrProvider() = default;
+
         KinematicDataUnitPtrProvider(const KinematicDataUnitPtrProvider&) = default;
 
+        void setJointNames(std::vector<std::string>& names)
+        {
+            jointNames = names;
+            jointIndices = toIndexMap(names);
+
+            jointAngles = std::vector<float*>(names.size(), nullptr);
+            jointVelocites = std::vector<float*>(jointNames.size(), nullptr);
+            jointTorques = std::vector<float*>(jointNames.size(), nullptr);
+            jointCurrents = std::vector<float*>(jointNames.size(), nullptr);
+            jointMotorTemperatures = std::vector<float*>(jointNames.size(), nullptr);
+            jointGearTemperatures = std::vector<float*>(jointNames.size(), nullptr);
+            jointAbsPositions = std::vector<float*>(jointNames.size(), nullptr);
+        }
+
         const std::vector<std::string>& getJointNames() const
         {
             return jointNames;
         }
+
         std::size_t getJointIndex(const std::string& joint) const
         {
             return jointIndices.at(joint);
         }
 
-        virtual std::vector<const float*> getJointAngles(const std::vector<std::string>& joints)const
+        virtual std::vector<const float*> getJointAngles(const std::vector<std::string>& joints) const
         {
             return getPointers(joints, jointAngles);
         }
-        virtual std::vector<const float*> getJointVelocities(const std::vector<std::string>& joints)const
+
+        virtual std::vector<const float*> getJointVelocities(const std::vector<std::string>& joints) const
         {
             return getPointers(joints, jointVelocites);
         }
-        virtual std::vector<const float*> getJointTorques(const std::vector<std::string>& joints)const
+
+        virtual std::vector<const float*> getJointTorques(const std::vector<std::string>& joints) const
         {
             return getPointers(joints, jointTorques);
         }
-        virtual std::vector<const float*> getJointCurrents(const std::vector<std::string>& joints)const
+
+        virtual std::vector<const float*> getJointCurrents(const std::vector<std::string>& joints) const
         {
             return getPointers(joints, jointCurrents);
         }
-        virtual std::vector<const float*> getJointMotorTemperatures(const std::vector<std::string>& joints)const
+
+        virtual std::vector<const float*> getJointMotorTemperatures(const std::vector<std::string>& joints) const
         {
             return getPointers(joints, jointMotorTemperatures);
         }
-        virtual std::vector<const float*> getJointGearTemperatures(const std::vector<std::string>& joints)const
+
+        virtual std::vector<const float*> getJointGearTemperatures(const std::vector<std::string>& joints) const
         {
             return getPointers(joints, jointGearTemperatures);
         }
-        virtual std::vector<const float*> getJointAbsPositions(const std::vector<std::string>& joints)const
+
+        virtual std::vector<const float*> getJointAbsPositions(const std::vector<std::string>& joints) const
         {
             return getPointers(joints, jointAbsPositions);
         }
+
         virtual std::vector<const int32_t*> getJointRawPositionValues(const std::vector<std::string>& joints) const
         {
             return getPointers(joints, jointRawPositionValues);
         }
+
         virtual std::vector<const int32_t*> getJointRawVelocityValues(const std::vector<std::string>& joints) const
         {
             return getPointers(joints, jointRawVelocityValues);
         }
+
         virtual std::vector<const int16_t*> getJointRawCurrentValues(const std::vector<std::string>& joints) const
         {
             return getPointers(joints, jointRawCurrentValues);
         }
+
         virtual std::vector<const int32_t*> getJointRawTorqueValues(const std::vector<std::string>& joints) const
         {
             return getPointers(joints, jointRawTorqueValues);
         }
+
         virtual std::vector<const int32_t*> getJointRawGearTemperatures(const std::vector<std::string>& joints) const
         {
             return getPointers(joints, jointRawGearTemperatures);
         }
-        virtual std::vector<const int32_t*> getJointRawAbsPositionValues(const std::vector<std::string>& joints) const
+
+        virtual std::vector<const int32_t*>
+        getJointRawAbsPositionValues(const std::vector<std::string>& joints) const
         {
             return getPointers(joints, jointRawAbsPositionValues);
         }
-        virtual std::vector<const int16_t*> getJointRawMotorTemperatureValues(const std::vector<std::string>& joints) const
+
+        virtual std::vector<const int16_t*>
+        getJointRawMotorTemperatureValues(const std::vector<std::string>& joints) const
         {
             return getPointers(joints, jointRawMotorTemperatureValues);
         }
 
 
-
     protected:
         std::vector<float*> jointAngles;
         std::vector<float*> jointVelocites;
@@ -162,7 +209,8 @@ namespace armarx
         std::vector<int16_t*> jointRawMotorTemperatureValues;
     private:
         template<class T>
-        std::vector<const T*> getPointers(const std::vector<std::string>& joints, const std::vector<T*>& targets) const
+        std::vector<const T*>
+        getPointers(const std::vector<std::string>& joints, const std::vector<T*>& targets) const
         {
             std::vector<const T*> result;
             result.reserve(joints.size());
@@ -175,8 +223,9 @@ namespace armarx
             );
             return result;
         }
-        const std::vector<std::string> jointNames;
-        const std::unordered_map<std::string, std::size_t> jointIndices;
+
+        std::vector<std::string> jointNames;
+        std::unordered_map<std::string, std::size_t> jointIndices;
     };
 }