diff --git a/source/RobotAPI/core/RobotStatechartContext.h b/source/RobotAPI/core/RobotStatechartContext.h
index dfb89b41710459a7aad22955aa5e957f370fcf97..40149fc062d916299fb3661af21d2f34165a7a55 100644
--- a/source/RobotAPI/core/RobotStatechartContext.h
+++ b/source/RobotAPI/core/RobotStatechartContext.h
@@ -28,7 +28,7 @@
 #include <Core/core/Component.h>
 #include <Core/core/system/ImportExportComponent.h>
 #include <Core/statechart/StatechartContext.h>
-#include <RobotAPI/robotstate/remote/RemoteRobot.h>
+#include <RobotAPI/robotstate/remote/ArmarPose.h>
 #include <RobotAPI/interface/units/KinematicUnitInterface.h>
 #include <RobotAPI/interface/units/HandUnitInterface.h>
 
@@ -36,7 +36,7 @@
 #include <RobotAPI/interface/units/HeadIKUnit.h>
 
 #include <RobotAPI/units/KinematicUnitObserver.h>
-//#include <VirtualRobot/VirtualRobot.h>
+
 #include <IceUtil/Time.h>
 
 namespace armarx
diff --git a/source/RobotAPI/motioncontrol/MotionControl.cpp b/source/RobotAPI/motioncontrol/MotionControl.cpp
index 1b2631c9fd049b345840b104fc7c215dc6705992..01e4baf7d564a35653770b1baeeaab4279b674f5 100644
--- a/source/RobotAPI/motioncontrol/MotionControl.cpp
+++ b/source/RobotAPI/motioncontrol/MotionControl.cpp
@@ -13,6 +13,8 @@
 #include <VirtualRobot/Nodes/RobotNode.h>
 #include <VirtualRobot/MathTools.h>
 #include <VirtualRobot/XML/RobotIO.h>
+#include <VirtualRobot/LinkedCoordinate.h>
+
 
 #include <Eigen/src/Geometry/Quaternion.h>
 
diff --git a/source/RobotAPI/robotstate/CMakeLists.txt b/source/RobotAPI/robotstate/CMakeLists.txt
index fa5318d9c58517cda33f3a78a3e51f9c099ebc84..1e588b1dc60c633b85df672b2632ba8e6d8e2bf9 100644
--- a/source/RobotAPI/robotstate/CMakeLists.txt
+++ b/source/RobotAPI/robotstate/CMakeLists.txt
@@ -14,7 +14,7 @@ set(LIB_VERSION    0.1.0)
 set(LIB_SOVERSION  0)
 
 set(LIBS ArmarXInterfaces RobotAPIRemoteRobot 
-    ArmarXCore ${Simox_LIBRARIES})
+    ArmarXCore)
 
 set(LIB_FILES
         RobotStateComponent.cpp
diff --git a/source/RobotAPI/robotstate/remote/ArmarPose.cpp b/source/RobotAPI/robotstate/remote/ArmarPose.cpp
index b348237bd28dbfda1fdcda0b7ab38f6efe5319ef..5aaa2f508a9e78b1c9801ee674a607a636f3c861 100644
--- a/source/RobotAPI/robotstate/remote/ArmarPose.cpp
+++ b/source/RobotAPI/robotstate/remote/ArmarPose.cpp
@@ -4,9 +4,12 @@
 #include <boost/property_tree/ptree.hpp>
 #include <boost/property_tree/xml_parser.hpp>
 
-#include <Eigen/Geometry>
+
 
 #include <VirtualRobot/Robot.h>
+#include <VirtualRobot/LinkedCoordinate.h>
+#include <VirtualRobot/LinkedCoordinate.h>
+#include <VirtualRobot/VirtualRobot.h>
 
 using namespace Eigen;
 using namespace std;
@@ -42,6 +45,13 @@ namespace armarx
         return v;
     }
 
+    string Vector3::output(const Ice::Current &c) const
+    {
+        std::stringstream s;
+        s << toEigen();
+        return s.str();
+    }
+
     int Vector3::readFromXML(const string &xmlData, const Ice::Current &c)
     {
         boost::property_tree::ptree pt = Variant::GetPropertyTree(xmlData);
@@ -145,6 +155,13 @@ namespace armarx
         return result;
     }
 
+    string Quaternion::output(const Ice::Current &c) const
+    {
+        std::stringstream s;
+        s << toEigen();
+        return s.str();
+    }
+
     int Quaternion::readFromXML(const string &xmlData, const Ice::Current &c)
     {
         boost::property_tree::ptree pt = Variant::GetPropertyTree(xmlData);
@@ -247,6 +264,13 @@ namespace armarx
         return m;
     }
 
+    string Pose::output(const Ice::Current &c) const
+    {
+        std::stringstream s;
+        s << toEigen();
+        return s.str();
+    }
+
     int Pose::readFromXML(const string &xmlData, const Ice::Current &c)
     {
         position->readFromXML(xmlData);
@@ -321,6 +345,13 @@ namespace armarx
         return result;
     }
 
+    string FramedVector3::output(const Ice::Current &c) const
+    {
+        std::stringstream s;
+        s << toEigen() << std::endl << "frame: " << getFrame();
+        return s.str();
+    }
+
     Eigen::Matrix4f FramedVector3::__GetRotationBetweenFrames(const std::string &oldFrame, const std::string &newFrame, VirtualRobot::RobotPtr robotState)
     {
         Eigen::Matrix4f toNewFrame = robotState->getRobotNode(oldFrame)->getTransformationTo(robotState->getRobotNode(newFrame));
@@ -395,6 +426,13 @@ namespace armarx
         return frame;
     }
 
+    string FramedPose::output(const Ice::Current &c) const
+    {
+        std::stringstream s;
+        s << toEigen() << std::endl << "frame: " << getFrame();
+        return s.str();
+    }
+
     int FramedPose::readFromXML(const string &xmlData, const Ice::Current &c){
         boost::property_tree::ptree pt = Variant::GetPropertyTree(xmlData);
 
@@ -463,6 +501,13 @@ namespace armarx
         return this->frame;
     }
 
+    string FramedPosition::output(const Ice::Current &c) const
+    {
+        std::stringstream s;
+        s << toEigen() << std::endl << "frame: " << getFrame();
+        return s.str();
+    }
+
     int FramedPosition::readFromXML(const string &xmlData, const Ice::Current &c){
         using namespace boost::property_tree;
         ptree pt;
@@ -533,6 +578,13 @@ namespace armarx
         return this->frame;
     }
 
+    string FramedOrientation::output(const Ice::Current &c) const
+    {
+        std::stringstream s;
+        s << toEigen() << std::endl << "frame: " << getFrame();
+        return s.str();
+    }
+
     int FramedOrientation::readFromXML(const string &xmlData, const Ice::Current &c)
     {
         using namespace boost::property_tree;
diff --git a/source/RobotAPI/robotstate/remote/ArmarPose.h b/source/RobotAPI/robotstate/remote/ArmarPose.h
index 4b5e2378fa02812dbc158a306ded1a35141057f0..2bec17a53d0521fcc8a97908b94838f6af22852b 100644
--- a/source/RobotAPI/robotstate/remote/ArmarPose.h
+++ b/source/RobotAPI/robotstate/remote/ArmarPose.h
@@ -27,14 +27,20 @@
 
 #include <Eigen/Core>
 #include <Eigen/Geometry>
+
 #include <RobotAPI/interface/robotstate/RobotState.h>
 #include <Core/observers/variant/Variant.h>
 #include <Core/observers/AbstractObjectSerializer.h>
-#include <VirtualRobot/LinkedCoordinate.h>
-#include <VirtualRobot/LinkedCoordinate.h>
-#include <VirtualRobot/VirtualRobot.h>
+
 #include <Core/core/exceptions/local/ExpressionException.h>
 
+namespace VirtualRobot
+{
+    class Robot;
+    typedef boost::shared_ptr<Robot> RobotPtr;
+    class LinkedCoordinate;
+}
+
 namespace armarx
 {
     namespace VariantType
@@ -74,12 +80,7 @@ namespace armarx
         {
             return new Vector3(*this);
         }
-        std::string output(const Ice::Current& c = ::Ice::Current()) const
-        {
-            std::stringstream s;
-            s << toEigen();
-            return s.str();
-        }
+        std::string output(const Ice::Current& c = ::Ice::Current()) const;
         VariantTypeId getType(const Ice::Current& c = ::Ice::Current()) const
         {
             return VariantType::Vector3;
@@ -146,12 +147,7 @@ namespace armarx
         {
             return new Quaternion(*this);
         }
-        std::string output(const Ice::Current& c = ::Ice::Current()) const
-        {
-            std::stringstream s;
-            s << toEigen();
-            return s.str();
-        }
+        std::string output(const Ice::Current& c = ::Ice::Current()) const;
         VariantTypeId getType(const Ice::Current& c = ::Ice::Current()) const
         {
             return VariantType::Quaternion;
@@ -229,12 +225,7 @@ namespace armarx
         {
             return new Pose(*this);
         }
-        std::string output(const Ice::Current& c = ::Ice::Current()) const
-        {
-            std::stringstream s;
-            s << toEigen();
-            return s.str();
-        }
+        std::string output(const Ice::Current& c = ::Ice::Current()) const;
         VariantTypeId getType(const Ice::Current& c = ::Ice::Current()) const
         {
             return VariantType::Pose;
@@ -312,12 +303,7 @@ namespace armarx
             return new FramedPose(*this);
         }
 
-        std::string output(const Ice::Current& c = ::Ice::Current()) const
-        {
-            std::stringstream s;
-            s << toEigen() << std::endl << "frame: " << getFrame();
-            return s.str();
-        }
+        std::string output(const Ice::Current& c = ::Ice::Current()) const;
 
         VariantTypeId getType(const Ice::Current& c = ::Ice::Current()) const
         {
@@ -396,12 +382,7 @@ namespace armarx
         {
             return new FramedVector3(*this);
         }
-        std::string output(const Ice::Current& c = ::Ice::Current()) const
-        {
-            std::stringstream s;
-            s << toEigen() << std::endl << "frame: " << getFrame();
-            return s.str();
-        }
+        std::string output(const Ice::Current& c = ::Ice::Current()) const;
         VariantTypeId getType(const Ice::Current& c = ::Ice::Current()) const
         {
             return VariantType::FramedVector3;
@@ -468,12 +449,7 @@ namespace armarx
         {
             return new FramedPosition(*this);
         }
-        std::string output(const Ice::Current& c = ::Ice::Current()) const
-        {
-            std::stringstream s;
-            s << toEigen() << std::endl << "frame: " << getFrame();
-            return s.str();
-        }
+        std::string output(const Ice::Current& c = ::Ice::Current()) const;
         VariantTypeId getType(const Ice::Current& c = ::Ice::Current()) const
         {
             return VariantType::FramedPosition;
@@ -539,12 +515,7 @@ namespace armarx
         {
             return new FramedOrientation(*this);
         }
-        std::string output(const Ice::Current& c = ::Ice::Current()) const
-        {
-            std::stringstream s;
-            s << toEigen() << std::endl << "frame: " << getFrame();
-            return s.str();
-        }
+        std::string output(const Ice::Current& c = ::Ice::Current()) const;
         VariantTypeId getType(const Ice::Current& c = ::Ice::Current()) const
         {
             return VariantType::FramedOrientation;
diff --git a/source/RobotAPI/robotstate/remote/LinkedPose.cpp b/source/RobotAPI/robotstate/remote/LinkedPose.cpp
index fb57250f64aebf59cbd0db39c64a071b60ef4cc4..408664cb037408eb99a5c51fececa14efa1acbec 100644
--- a/source/RobotAPI/robotstate/remote/LinkedPose.cpp
+++ b/source/RobotAPI/robotstate/remote/LinkedPose.cpp
@@ -9,6 +9,10 @@
 #include <boost/property_tree/xml_parser.hpp>
 
 #include <Eigen/Geometry>
+#include <Eigen/Core>
+
+#include <VirtualRobot/LinkedCoordinate.h>
+#include <VirtualRobot/VirtualRobot.h>
 
 
 namespace armarx {
diff --git a/source/RobotAPI/robotstate/remote/LinkedPose.h b/source/RobotAPI/robotstate/remote/LinkedPose.h
index 107617e9e22f766ad6ad081daec7ae2bb664cfd5..c93139944bfcb7cf63b7bf0c192fc18aff9b35c8 100644
--- a/source/RobotAPI/robotstate/remote/LinkedPose.h
+++ b/source/RobotAPI/robotstate/remote/LinkedPose.h
@@ -35,8 +35,7 @@
 #include <Eigen/Core>
 #include <Eigen/Geometry>
 
-#include <VirtualRobot/LinkedCoordinate.h>
-#include <VirtualRobot/VirtualRobot.h>
+
 
 #include <sstream>
 
diff --git a/source/RobotAPI/statecharts/GraspingWithTorques/GraspingWithTorques.cpp b/source/RobotAPI/statecharts/GraspingWithTorques/GraspingWithTorques.cpp
index c6c8c29bd3ba6d99cb46e28c738c88ba89c74842..207ef01cf16e3e703ac24ad8aaaa63b4d69256f1 100644
--- a/source/RobotAPI/statecharts/GraspingWithTorques/GraspingWithTorques.cpp
+++ b/source/RobotAPI/statecharts/GraspingWithTorques/GraspingWithTorques.cpp
@@ -30,6 +30,7 @@
 #include <Core/observers/variant/SingleTypeVariantList.h>
 #include <RobotAPI/robotstate/remote/ArmarPose.h>
 #include <VirtualRobot/IK/DifferentialIK.h>
+#include <VirtualRobot/Robot.h>
 
 #include <RobotAPI/interface/units/KinematicUnitInterface.h>
 #include <RobotAPI/interface/units/HandUnitInterface.h>
diff --git a/source/RobotAPI/statecharts/OpenHand/OpenHand.cpp b/source/RobotAPI/statecharts/OpenHand/OpenHand.cpp
index 0d98395ae75b6ad530fce1dc953cb6716a0bd04b..b448a387479668bfba263108f96e3a15991e3118 100644
--- a/source/RobotAPI/statecharts/OpenHand/OpenHand.cpp
+++ b/source/RobotAPI/statecharts/OpenHand/OpenHand.cpp
@@ -30,6 +30,7 @@
 #include <Core/observers/variant/SingleTypeVariantList.h>
 #include <RobotAPI/robotstate/remote/ArmarPose.h>
 #include <VirtualRobot/IK/DifferentialIK.h>
+#include <VirtualRobot/Robot.h>
 
 #include <RobotAPI/interface/units/KinematicUnitInterface.h>
 
diff --git a/source/RobotAPI/statecharts/PlaceObject/PlaceObject.cpp b/source/RobotAPI/statecharts/PlaceObject/PlaceObject.cpp
index 76b8018ca9fe8c3edaae43e7fbc4b597bd2094ac..1c6913acb134a5d1c65a1e7df8d7d23653a4f5e5 100644
--- a/source/RobotAPI/statecharts/PlaceObject/PlaceObject.cpp
+++ b/source/RobotAPI/statecharts/PlaceObject/PlaceObject.cpp
@@ -28,7 +28,9 @@
 #include <Core/observers/variant/ChannelRef.h>
 #include <Core/observers/variant/SingleTypeVariantList.h>
 #include <RobotAPI/robotstate/remote/ArmarPose.h>
+#include <RobotAPI/robotstate/remote/RemoteRobot.h>
 #include <VirtualRobot/IK/DifferentialIK.h>
+#include <VirtualRobot/Robot.h>
 
 #include <RobotAPI/interface/units/KinematicUnitInterface.h>
 
diff --git a/source/RobotAPI/units/HeadIKUnit.cpp b/source/RobotAPI/units/HeadIKUnit.cpp
index 89f8975aef8836043847e05f67e5305e23cb2ec6..7372bde96b2ab4d9ef81ae331a7451bd0a3ddf02 100644
--- a/source/RobotAPI/units/HeadIKUnit.cpp
+++ b/source/RobotAPI/units/HeadIKUnit.cpp
@@ -5,6 +5,7 @@
 
 #include <VirtualRobot/XML/RobotIO.h>
 #include <VirtualRobot/IK/GazeIK.h>
+#include <VirtualRobot/LinkedCoordinate.h>
 
 
 namespace armarx