diff --git a/source/RobotAPI/applications/HeadIKUnit/CMakeLists.txt b/source/RobotAPI/applications/HeadIKUnit/CMakeLists.txt
index 2062804a398cb289e31fad693f617fa87dfdc3cc..7def4d89ffc672e3f1e0fbe313ac790f021ab617 100644
--- a/source/RobotAPI/applications/HeadIKUnit/CMakeLists.txt
+++ b/source/RobotAPI/applications/HeadIKUnit/CMakeLists.txt
@@ -9,6 +9,12 @@ if (Eigen3_FOUND)
         ${Eigen3_INCLUDE_DIR})
 endif()
 
+if (NOT Simox_FOUND)
+    find_package(Simox 2.3.0 QUIET)
+endif()
+armarx_build_if(Simox_FOUND "Simox-VirtualRobot not available")
+include_directories(${Simox_INCLUDE_DIRS})
+
 set(COMPONENT_LIBS RobotAPIUnits)
 
 set(SOURCES main.cpp HeadIKUnitApp.h)
diff --git a/source/RobotAPI/applications/KinematicUnitSimulation/CMakeLists.txt b/source/RobotAPI/applications/KinematicUnitSimulation/CMakeLists.txt
index 11b478b49ed4393c5856eecac2db1fef2d9eef12..4c74a3e44879db07d8b72c1483b2088ed1c16d87 100644
--- a/source/RobotAPI/applications/KinematicUnitSimulation/CMakeLists.txt
+++ b/source/RobotAPI/applications/KinematicUnitSimulation/CMakeLists.txt
@@ -8,6 +8,12 @@ if (Eigen3_FOUND)
     include_directories(${Eigen3_INCLUDE_DIR})
 endif()
 
+if (NOT Simox_FOUND)
+    find_package(Simox 2.3.0 QUIET)
+endif()
+armarx_build_if(Simox_FOUND "Simox-VirtualRobot not available")
+include_directories(${Simox_INCLUDE_DIRS})
+
 set(COMPONENT_LIBS RobotAPIUnits)
 
 set(SOURCES main.cpp KinematicUnitSimulationApp.h)
diff --git a/source/RobotAPI/applications/MovePlatform/CMakeLists.txt b/source/RobotAPI/applications/MovePlatform/CMakeLists.txt
index 62f9f4c1bc98dcd2a97bf4875788e7084687d4e1..9c9c63e79a123fd552bb605490765134342762b3 100644
--- a/source/RobotAPI/applications/MovePlatform/CMakeLists.txt
+++ b/source/RobotAPI/applications/MovePlatform/CMakeLists.txt
@@ -8,6 +8,12 @@ armarx_build_if(Eigen3_FOUND "Eigen3 not available")
 
 include_directories(${Eigen3_INCLUDE_DIR})
 
+if (NOT Simox_FOUND)
+    find_package(Simox 2.3.0 QUIET)
+endif()
+armarx_build_if(Simox_FOUND "Simox-VirtualRobot not available")
+include_directories(${Simox_INCLUDE_DIRS})
+
 set(COMPONENT_LIBS MovePlatform)
 
 set(SOURCES main.cpp
diff --git a/source/RobotAPI/applications/MovePlatformToLandmark/CMakeLists.txt b/source/RobotAPI/applications/MovePlatformToLandmark/CMakeLists.txt
index a8d0c65af7d989b534f48a9db714ee05a942ebce..a368cd102df640f1cd2584e3943bcd7100dfb15f 100644
--- a/source/RobotAPI/applications/MovePlatformToLandmark/CMakeLists.txt
+++ b/source/RobotAPI/applications/MovePlatformToLandmark/CMakeLists.txt
@@ -8,6 +8,12 @@ armarx_build_if(Eigen3_FOUND "Eigen3 not available")
 
 include_directories(${Eigen3_INCLUDE_DIR})
 
+if (NOT Simox_FOUND)
+    find_package(Simox 2.3.0 QUIET)
+endif()
+armarx_build_if(Simox_FOUND "Simox-VirtualRobot not available")
+include_directories(${Simox_INCLUDE_DIRS})
+
 set(COMPONENT_LIBS MovePlatformToLandmark)
 
 set(SOURCES main.cpp
diff --git a/source/RobotAPI/applications/TCPControlUnit/CMakeLists.txt b/source/RobotAPI/applications/TCPControlUnit/CMakeLists.txt
index fe203c509c852506b16ee9fe22781163ae523df2..9f18a5c8169a0a85ec0597bbbfc802bbd4681ede 100644
--- a/source/RobotAPI/applications/TCPControlUnit/CMakeLists.txt
+++ b/source/RobotAPI/applications/TCPControlUnit/CMakeLists.txt
@@ -9,6 +9,12 @@ if (Eigen3_FOUND)
         ${Eigen3_INCLUDE_DIR})
 endif()
 
+if (NOT Simox_FOUND)
+    find_package(Simox 2.3.0 QUIET)
+endif()
+armarx_build_if(Simox_FOUND "Simox-VirtualRobot not available")
+include_directories(${Simox_INCLUDE_DIRS})
+
 set(COMPONENT_LIBS RobotAPIUnits)
 
 set(SOURCES main.cpp TCPControlUnitApp.h)
diff --git a/source/RobotAPI/applications/TCPMoverUnit/CMakeLists.txt b/source/RobotAPI/applications/TCPMoverUnit/CMakeLists.txt
index 00b1e0807ba6fc1137fb9114d63f7149b44aeeb8..5e2d27cc92e63467f134fe15ecbd99e2548681f3 100644
--- a/source/RobotAPI/applications/TCPMoverUnit/CMakeLists.txt
+++ b/source/RobotAPI/applications/TCPMoverUnit/CMakeLists.txt
@@ -9,6 +9,12 @@ if (Eigen3_FOUND)
         ${Eigen3_INCLUDE_DIR})
 endif()
 
+if (NOT Simox_FOUND)
+    find_package(Simox 2.3.0 QUIET)
+endif()
+armarx_build_if(Simox_FOUND "Simox-VirtualRobot not available")
+include_directories(${Simox_INCLUDE_DIRS})
+
 set(COMPONENT_LIBS RobotAPIUnits)
 
 set(SOURCES main.cpp TCPMoverUnitApp.h)
diff --git a/source/RobotAPI/core/CMakeLists.txt b/source/RobotAPI/core/CMakeLists.txt
index 434dd7ea2240b466563a9f9aa5e60ececcc9c99e..840451b97dc917368e82e80039fe6cc2bcb98d14 100644
--- a/source/RobotAPI/core/CMakeLists.txt
+++ b/source/RobotAPI/core/CMakeLists.txt
@@ -17,7 +17,7 @@ set(LIB_NAME       RobotAPICore)
 set(LIB_VERSION    0.1.0)
 set(LIB_SOVERSION  0)
 
-set(LIBS RobotAPIInterfaces RobotAPIRobotStateComponent ArmarXCoreObservers ArmarXCoreStatechart ${Simox_LIBRARIES})
+set(LIBS RobotAPIInterfaces RobotAPIRobotStateComponent ArmarXCoreObservers ArmarXCoreStatechart)
 
 set(LIB_FILES
     RobotStatechartContext.cpp
diff --git a/source/RobotAPI/robotstate/RobotStateComponent.cpp b/source/RobotAPI/robotstate/RobotStateComponent.cpp
index 5726bd529dcf9ee102f20978b1406655f5be23e9..cc50f66c194cd211365af7e739068e61c972ad3e 100644
--- a/source/RobotAPI/robotstate/RobotStateComponent.cpp
+++ b/source/RobotAPI/robotstate/RobotStateComponent.cpp
@@ -25,6 +25,7 @@
 #include <boost/foreach.hpp>
 #include <VirtualRobot/XML/RobotIO.h>
 #include <VirtualRobot/Nodes/RobotNode.h>
+#include <VirtualRobot/RobotNodeSet.h>
 #include <boost/format.hpp>
 #include <boost/foreach.hpp>
 #include <Core/core/system/ArmarXDataPath.h>
diff --git a/source/RobotAPI/robotstate/SharedRobotServants.cpp b/source/RobotAPI/robotstate/SharedRobotServants.cpp
index 8cfcadad21623a6ffad34a78e5c721da4b119b49..fe78f4a157d9931b3cf573ceef31ca814c0fb883 100644
--- a/source/RobotAPI/robotstate/SharedRobotServants.cpp
+++ b/source/RobotAPI/robotstate/SharedRobotServants.cpp
@@ -10,6 +10,10 @@
 #include <VirtualRobot/Nodes/RobotNodeRevolute.h>
 #include <VirtualRobot/Nodes/RobotNodePrismatic.h>
 #include <VirtualRobot/RobotConfig.h>
+#include <VirtualRobot/VirtualRobot.h>
+#include <VirtualRobot/Robot.h>
+#include <VirtualRobot/RobotNodeSet.h>
+
 
 using namespace std;
 using namespace VirtualRobot;
diff --git a/source/RobotAPI/robotstate/SharedRobotServants.h b/source/RobotAPI/robotstate/SharedRobotServants.h
index d73756d0ac81542dfcfd681f01ab67424cab21e1..e52797cd986200eb4a4e631162ea1bc0c03d6308 100644
--- a/source/RobotAPI/robotstate/SharedRobotServants.h
+++ b/source/RobotAPI/robotstate/SharedRobotServants.h
@@ -5,14 +5,19 @@
 #include <Core/core/system/ImportExportComponent.h>
 #include <RobotAPI/robotstate/remote/ArmarPose.h>
 
-#include <VirtualRobot/VirtualRobot.h>
-#include <VirtualRobot/Robot.h>
-#include <VirtualRobot/RobotNodeSet.h>
-#include <VirtualRobot/Nodes/RobotNode.h>
+
 #include <RobotAPI/interface/robotstate/RobotState.h>
 
 #include <boost/thread.hpp>
 
+namespace VirtualRobot
+{
+    class Robot;
+    typedef boost::shared_ptr<Robot> RobotPtr;
+    class RobotNode;
+    typedef boost::shared_ptr<RobotNode> RobotNodePtr;
+}
+
 namespace armarx {
     // Zugriff muss mutex geschuetzt werden!
 
diff --git a/source/RobotAPI/robotstate/remote/CMakeLists.txt b/source/RobotAPI/robotstate/remote/CMakeLists.txt
index 5fc457af89b2578bc874cbd5eeb8857dcfdeef1e..06d72d311fe1cefef4e2d9e99ea8fa4d07986e2a 100644
--- a/source/RobotAPI/robotstate/remote/CMakeLists.txt
+++ b/source/RobotAPI/robotstate/remote/CMakeLists.txt
@@ -17,7 +17,8 @@ set(LIB_SOVERSION  0)
 
 set(LIBS ArmarXCore ArmarXCoreObservers RobotAPIInterfaces ${Simox_LIBRARIES} )
 
-set(LIB_FILES ArmarPose.cpp
+set(LIB_FILES
+            ArmarPose.cpp
             LinkedPose.cpp
             RobotStateObserver.cpp
             RemoteRobot.cpp
diff --git a/source/RobotAPI/robotstate/remote/RobotStateObserver.cpp b/source/RobotAPI/robotstate/remote/RobotStateObserver.cpp
index f7de0260562933f47fd3c9853015b0170b84b77d..fb9d0b347cbbb1c856311d82aa7c5187d0dc6f1e 100644
--- a/source/RobotAPI/robotstate/remote/RobotStateObserver.cpp
+++ b/source/RobotAPI/robotstate/remote/RobotStateObserver.cpp
@@ -33,6 +33,7 @@
 #include <VirtualRobot/VirtualRobot.h>
 #include <VirtualRobot/RobotNodeSet.h>
 #include <VirtualRobot/Nodes/RobotNode.h>
+#include <VirtualRobot/VirtualRobot.h>
 
 
 using namespace armarx;
diff --git a/source/RobotAPI/robotstate/remote/RobotStateObserver.h b/source/RobotAPI/robotstate/remote/RobotStateObserver.h
index 16c6698ee09d2501d4db4492b9de1f9f499dffff..6c375013fbdd88422cfa203edbf191b94aa36e41 100644
--- a/source/RobotAPI/robotstate/remote/RobotStateObserver.h
+++ b/source/RobotAPI/robotstate/remote/RobotStateObserver.h
@@ -35,8 +35,13 @@
 
 #include <string>
 
-
-#include <VirtualRobot/VirtualRobot.h>
+namespace VirtualRobot
+{
+    class Robot;
+    typedef boost::shared_ptr<Robot> RobotPtr;
+    class RobotNode;
+    typedef boost::shared_ptr<RobotNode> RobotNodePtr;
+}
 
 namespace armarx
 {
@@ -70,7 +75,7 @@ namespace armarx
 
         virtual PropertyDefinitionsPtr createPropertyDefinitions();
 
-        virtual std::string getDefaultName() const { return "RobotStateObserver"; };
+        virtual std::string getDefaultName() const { return "RobotStateObserver"; }
 
     protected:
 		void updateRobotModel(const NameValueMap& nameValueMap);