diff --git a/CMakeLists.txt b/CMakeLists.txt
index 0669950223d1f3ae7129bc95cb74ffccf77b614e..be1e0dd060f4c068ff1c3ca79513c39cc863fbb5 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,30 +1,163 @@
-PROJECT(Simox)
-
-cmake_minimum_required(VERSION 2.8.12)
-if(POLICY CMP0020)
-  cmake_policy(SET CMP0020 NEW) # qtmain add lib dependency (no effect in our case)
-endif()
+cmake_minimum_required(VERSION 3.10)
+
+#######################################################################################
+PROJECT(Simox LANGUAGES CXX VERSION 2.3.73.0)
+MESSAGE (STATUS "** Simox version: ${Simox_VERSION}")
+#######################################################################################
+#global config
+# Set up build type
+
+IF(NOT CMAKE_BUILD_TYPE)
+    SET(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING
+        "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel."
+        FORCE)
+ENDIF()
 
+set(CMAKE_CXX_STANDARD_REQUIRED ON)
+set(CXX_STANDARD 17)
+
+list(APPEND CMAKE_MODULE_PATH ${Simox_SOURCE_DIR}/CMakeModules)
+MESSAGE (STATUS "** Module path: "  ${CMAKE_MODULE_PATH})
+
+# we want a global automoc
+FIND_PACKAGE(Qt5 5.5.0 COMPONENTS OpenGL Core Gui Widgets)
+set(CMAKE_AUTOMOC ON)
+set(CMAKE_AUTOUIC ON)
+set(CMAKE_AUTORCC ON)
+set(CMAKE_INCLUDE_CURRENT_DIR ON)
+
+
+FIND_PACKAGE(Boost COMPONENTS unit_test_framework REQUIRED)
+
+#flags
+add_compile_options(-Wall)
+add_compile_options(-Wextra)
+add_compile_options(-Wpedantic)
+#turn warnings about dangerous stuff into errors
+add_compile_options(-Werror=return-type)
+add_compile_options(-Werror=maybe-uninitialized)
+add_compile_options(-Werror=reorder)
+add_compile_options(-Werror=parentheses)
+#######################################################################################
+#options
+OPTION (Simox_USE_RBDL "Use RBDL" OFF)
+OPTION (Simox_USE_URDF "Use URDF" OFF)
+OPTION (Simox_USE_NLOPT "Use NLOPT" ON)
+OPTION(BUILD_qhull "if on builds qhull external library" OFF)
+OPTION(SimDynamics_USE_BULLET "Use Bullet Physics Engine" ON)
+OPTION(Simox_USE_COIN_VISUALIZATION "Use Coin3D for visualization" ON)
+OPTION(Simox_USE_OPENSCENEGRAPH_VISUALIZATION "Use OpenSceneGraph for visualization" OFF)
+OPTION(Simox_COLLISION_CHECKER_PQP "Build and use the PQP Collision Detection library (located in ExternalDependencies)" ON)
+#######################################################################################
 MESSAGE(STATUS "******************** Configuring Simox ************************")
-set (Simox_BUILD_DIRECTORY ${CMAKE_BINARY_DIR} CACHE STRING "Simox build directory")
-#set (Simox_BUILD_VirtualRobot TRUE CACHE BOOL "Build Simox VirtualRobot")
 set (Simox_BUILD_Saba TRUE CACHE BOOL "Build Motion Planning library")
 set (Simox_BUILD_GraspStudio TRUE CACHE BOOL "Build Grasp Planning library")
 set (Simox_BUILD_SimDynamics TRUE CACHE BOOL "Build Dynamic Simulation")
 
-INCLUDE (config.cmake)
+MESSAGE (STATUS "** SIMOX BUILD VirtualRobot: TRUE (can't e turned off)")
+MESSAGE (STATUS "** SIMOX BUILD Saba        : ${Simox_BUILD_Saba}")
+MESSAGE (STATUS "** SIMOX BUILD GraspStudio : ${Simox_BUILD_GraspStudio}")
+MESSAGE (STATUS "** SIMOX BUILD SimDynamics : ${Simox_BUILD_SimDynamics}")
+############################# SETUP PATHS #############################
+if(WIN32 AND NOT CYGWIN)
+    set(INSTALL_CMAKE_DIR CMake             CACHE PATH "Installation directory for CMake files")
+else()
+    set(INSTALL_CMAKE_DIR share/Simox/cmake CACHE PATH "Installation directory for CMake files")
+endif()
+
+SET(Simox_LIB_DIR ${Simox_BINARY_DIR}/lib)
+SET(Simox_BIN_DIR ${Simox_BINARY_DIR}/bin)
+SET(Simox_DATA_DIR ${CurrentSimoxPath}/VirtualRobot/data)
+
+MESSAGE (STATUS "** SIMOX LIB DIR: ${Simox_LIB_DIR}")
+MESSAGE (STATUS "** SIMOX BIN DIR: ${Simox_BIN_DIR}")
+MESSAGE (STATUS "** SIMOX DATA DIR: ${Simox_DATA_DIR}")
+
+SET(Simox_INSTALL_LIB_DIR lib)
+SET(Simox_INSTALL_BIN_DIR bin)
+SET(Simox_INSTALL_DATA_DIR data)
+SET(Simox_INSTALL_HEADER_DIR include)
+MESSAGE (STATUS "** SIMOX INSTALL LIB DIR   : ${Simox_INSTALL_LIB_DIR}")
+MESSAGE (STATUS "** SIMOX INSTALL BIN DIR   : ${Simox_INSTALL_BIN_DIR}")
+MESSAGE (STATUS "** SIMOX INSTALL DATA DIR  : ${Simox_INSTALL_DATA_DIR}")
+MESSAGE (STATUS "** SIMOX INSTALL HEADER DIR: ${Simox_INSTALL_HEADER_DIR}")
+
+MESSAGE(STATUS "** Simox build directory: ${CMAKE_BINARY_DIR}")
+########################### IDE settings ################################
+# use virtual folders for grouping projects in IDEs
+set_property(GLOBAL PROPERTY USE_FOLDERS ON)
+
+############################# Set OS specific options #############################
+set(Simox_OS_compile_options)
+IF(UNIX)
+    # We are on Linux
+    SET(Simox_TEST_DIR ${Simox_BIN_DIR}/tests)
+    IF(CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64")
+        set(Simox_OS_compile_options ${Simox_OS_compile_options} -fPIC)
+    ENDIF()
+
+    IF(${CMAKE_BUILD_TYPE} STREQUAL "Debug")
+        MESSAGE(STATUS "Configuring Debug build")
+        set(Simox_OS_compile_options ${Simox_OS_compile_options} -D_DEBUG)
+    ELSE()
+        MESSAGE(STATUS "Configuring Release build")
+    ENDIF()
+
+    # use, i.e. don't skip the full RPATH for the build tree
+    SET(CMAKE_SKIP_BUILD_RPATH  FALSE)
+
+    # when building, don't use the install RPATH already
+    # (but later on when installing)
+    SET(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE)
+    SET(CMAKE_INSTALL_RPATH "${Simox_INSTALL_LIB_DIR}")
+    # add the automatically determined parts of the RPATH
+    # which point to directories outside the build tree to the install RPATH
+    SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
+
+    # the RPATH to be used when installing, but only if it's not a system directory
+    LIST(FIND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES "${Simox_INSTALL_LIB_DIR}" isSystemDir)
+    IF("${isSystemDir}" STREQUAL "-1")
+        SET(CMAKE_INSTALL_RPATH "${Simox_INSTALL_LIB_DIR}")
+    ENDIF()
 
+ELSE()
+    # We are on Windows
+    SET(Simox_TEST_DIR ${Simox_BIN_DIR})
+    set(Simox_OS_compile_options
+        -D_CRT_SECURE_NO_WARNINGS
+        -DWIN32_LEAN_AND_MEAN # avoid errors with winsock / winsock2 includes
+    )
+
+    # On MSVC we compile with /MP flag (use multiple threads)
+    IF(MSVC)
+        set(Simox_OS_compile_options ${Simox_OS_compile_options} /MP)
+    ENDIF()
+ENDIF()
+#######################################################################
+# Setup for testing
+ENABLE_TESTING()
+INCLUDE(CTest)
+MESSAGE(STATUS "** Test output directory: ${Simox_TEST_DIR}")
+ADD_DEFINITIONS(-DSimox_TEST_DIR=\"${Simox_TEST_DIR}/\")
 
-MESSAGE(STATUS "** Simox build directory: ${Simox_BUILD_DIRECTORY}")
+#######################################################################################
 add_subdirectory(VirtualRobot)
+
+
+#######################################################################################
 set (SIMOX_EXPORT_TARGET_LIST VirtualRobot)
 list (APPEND Simox_LIBRARIES VirtualRobot)
 list(APPEND SIMOX_EXPORT_TARGET_LIST ColCheckerPQP)
+
+
+#######################################################################################
 if (Simox_BUILD_Saba)
     add_subdirectory(MotionPlanning)
     list(APPEND SIMOX_EXPORT_TARGET_LIST Saba)
 list (APPEND Simox_LIBRARIES Saba)
 endif()
+
+#######################################################################################
 if (Simox_BUILD_GraspStudio)
     add_subdirectory(GraspPlanning)
     list(APPEND SIMOX_EXPORT_TARGET_LIST GraspStudio)
@@ -33,6 +166,8 @@ if (Simox_BUILD_GraspStudio)
     endif()
     list (APPEND Simox_LIBRARIES GraspStudio)
 endif()
+
+#######################################################################################
 if (Simox_BUILD_SimDynamics)
     find_package(Bullet QUIET)
     if(BULLET_FOUND)
@@ -43,31 +178,16 @@ if (Simox_BUILD_SimDynamics)
             list(APPEND SIMOX_EXPORT_TARGET_LIST BulletOpenGLSupport)
         endif()
 
-        list (APPEND Simox_EXTERNAL_LIBRARIES ${Simox_SimDynamics_EXTERNAL_LIBRARIES})
-        list (APPEND Simox_EXTERNAL_INCLUDE_DIRS ${Simox_SimDynamics_INCLUDE_DIRS})
-        #MESSAGE ("Simox_EXTERNAL_LIBRARY_FLAGS::: ${Simox_EXTERNAL_LIBRARY_FLAGS} !!!!!!!!!!!!!!!!")
-        #MESSAGE ("Simox_SimDynamics_COMPILE_FLAGS::: ${Simox_SimDynamics_COMPILE_FLAGS} !!!!!!!!!!!!!!!!")
-        #list (APPEND Simox_EXTERNAL_LIBRARY_FLAGS ${Simox_SimDynamics_COMPILE_FLAGS})
-        set (Simox_EXTERNAL_LIBRARY_FLAGS "${Simox_EXTERNAL_LIBRARY_FLAGS} ${Simox_SimDynamics_COMPILE_FLAGS}")
-        #MESSAGE ("Simox_EXTERNAL_LIBRARY_FLAGS::: ${Simox_EXTERNAL_LIBRARY_FLAGS} !!!!!!!!!!!!!!!!")
     else()
         message("NOT building SimDynamics since bullet was not found")
     endif()
 endif()
 
-  MESSAGE(STATUS "** Simox_EXTERNAL_INCLUDE_DIRS:${Simox_EXTERNAL_INCLUDE_DIRS}")
-  MESSAGE(STATUS "** Simox_EXTERNAL_LIBRARY_DIRS:${Simox_EXTERNAL_LIBRARY_DIRS}")
-  MESSAGE(STATUS "** Simox_EXTERNAL_LIBRARIES:${Simox_EXTERNAL_LIBRARIES}")
-  MESSAGE(STATUS "** Simox_EXTERNAL_LIBRARY_FLAGS:${Simox_EXTERNAL_LIBRARY_FLAGS}")
-
 add_subdirectory(doc)
 
 
-#######################################################################
+#######################################################################################
 # Setup for installation
-#######################################################################
-
-############################################
 MESSAGE (STATUS "** Simox: Generating CMake files for build and install setup")
 
 # Add all targets to the build-tree export set
@@ -94,7 +214,7 @@ file(RELATIVE_PATH RELATIVE_INSTALL_DIR
      "${CMAKE_INSTALL_PREFIX}/${INSTALL_CMAKE_DIR}"
      "${CMAKE_INSTALL_PREFIX}")
 
-set(CONF_INCLUDE_DIRS "${INSTALL_INCLUDE_DIR}")
+set(CONF_INCLUDE_DIRS "include")
 set(Simox_DATA_PATH "${Simox_INSTALL_DATA_DIR}")
 set(Simox_MACROS_INCLUDE_DIR "\${Simox_CMAKE_DIR}")
 
@@ -124,7 +244,7 @@ install(EXPORT SimoxTargets DESTINATION
   "${INSTALL_CMAKE_DIR}" COMPONENT dev)
 
 
-#############################################################
+#######################################################################################
 # PACKAGING (DEB)
 
 # git version not used any more!
@@ -185,7 +305,7 @@ set(CPACK_DEBIAN_PACKAGE_DEPENDS "libbullet-dev, libbulletmultithreaded2.82, lib
 SET(CPACK_COMPONENTS_ALL Applications Headers Libraries ApplicationData)
 INCLUDE(CPack)
 
-#############################################################
+#######################################################################################
 # STYLE
 
 FIND_PACKAGE(AStyle QUIET)
diff --git a/CMakeModules/Cxx11Test.cmake b/CMakeModules/Cxx11Test.cmake
deleted file mode 100644
index 1bce98012947f9cd272333a61d802d8e5872620e..0000000000000000000000000000000000000000
--- a/CMakeModules/Cxx11Test.cmake
+++ /dev/null
@@ -1,18 +0,0 @@
-include(TestCXXAcceptsFlag)
-
-IF (NOT WIN32)
-  check_cxx_accepts_flag("-std=c++11" CXX_FLAG_CXX11)
-  check_cxx_accepts_flag("-std=c++0x" CXX_FLAG_CXX0x)
-  IF (CXX_FLAG_CXX11)
-    SET (CXX11_FLAG "-std=c++11" CACHE STRING "Flag for enabling c++11")
-  ELSEIF(CXX_FLAG_CXX0x)
-    SET (CXX11_FLAG "-std=c++0x" CACHE STRING "Flag for enabling c++11")
-  ELSE ()
-    message (WARNING "Your compiler does not seem to support C++11!")
-  ENDIF()
-ELSE ()
-  # MSVC: on by default
-ENDIF()
-
-
-
diff --git a/CMakeModules/SimoxConfig.cmake.in b/CMakeModules/SimoxConfig.cmake.in
index cdf6211bb1ad1a5cd3e463b326864b90a32beffe..546544c5d8c22f42067d152d1d40fe46f5738241 100644
--- a/CMakeModules/SimoxConfig.cmake.in
+++ b/CMakeModules/SimoxConfig.cmake.in
@@ -9,8 +9,6 @@
 #  Simox_VISUALIZATION                      - if visualization is enabled
 #  Simox_USE_COIN_VISUALIZATION             - if Coin3D visualization was selected
 #  Simox_USE_OPENSCENEGRAPH_VISUALIZATION   - if osg visualization was selected
-#  Simox_USE_QT4                            - if qt4 was selected
-#  Simox_USE_QT5                            - if qt5 was selected
 #  Simox_USE_NLOPT                          - if NLopt was selected
 #  SimDynamics_USE_BULLET                   - if SimDynamics is build and BULLET is selected as physics engine
 #  SimDynamics_USE_BULLET_DOUBLE_PRECISION  - if Bullet is build with double precision support
@@ -53,17 +51,13 @@ SET(Simox_USE_COIN_VISUALIZATION "@Simox_USE_COIN_VISUALIZATION@")
 SET(Simox_USE_OPENSCENEGRAPH_VISUALIZATION "@Simox_USE_OPENSCENEGRAPH_VISUALIZATION@")
 SET(Simox_USE_COLLADA "@Simox_USE_COLLADA@")
 SET(Simox_USE_RBDL "@Simox_USE_RBDL@")
-SET(Simox_USE_QT4 "@Simox_USE_QT4@")
-SET(Simox_USE_QT5 "@Simox_USE_QT5@")
+SET(Simox_USE_QT5 "ON") # this variable legacy support (Qt5 is now required)
 SET(Simox_USE_NLOPT "@Simox_USE_NLOPT@")
 SET(SimDynamics_USE_BULLET "@SimDynamics_USE_BULLET@")
 SET(SimDynamics_USE_BULLET_DOUBLE_PRECISION "@SimDynamics_USE_BULLET_DOUBLE_PRECISION@")
 
 
-SET(Simox_EXTERNAL_INCLUDE_DIRS "@Simox_EXTERNAL_INCLUDE_DIRS@")
-SET(Simox_EXTERNAL_LIBRARY_FLAGS "@Simox_EXTERNAL_LIBRARY_FLAGS@")
-SET(Simox_EXTERNAL_LIBRARIES "@Simox_EXTERNAL_LIBRARIES@")
-SET(Simox_EXTERNAL_LIBRARY_DIRS "@Simox_EXTERNAL_LIBRARY_DIRS@")
+FIND_PACKAGE(Qt5 5.5.0 COMPONENTS OpenGL Core Gui Widgets QUIET)
 
 
 
diff --git a/CMakeModules/SimoxMacros.cmake b/CMakeModules/SimoxMacros.cmake
index ed9a74ad832b1c5bd57be3aaced876cce6a3aed2..02c80dd6f8c044b09f877081e7d12896dc728ed8 100644
--- a/CMakeModules/SimoxMacros.cmake
+++ b/CMakeModules/SimoxMacros.cmake
@@ -1,98 +1,35 @@
-
 # Build and helper macros
 
-macro(setupSimoxExternalLibraries)
-  IF (Simox_VISUALIZATION)
-    # we need to check for Qt
-    IF(NOT "$ENV{QT_QMAKE_EXECUTABLE}" STREQUAL "")
-      #  if (NOT (Simox_FIND_QUIETLY OR VirtualRobot_FIND_QUIETLY)) 
-      #    MESSAGE (STATUS "USING QT-PATH from environment variable QT_QMAKE_EXECUTABLE: $ENV{QT_QMAKE_EXECUTABLE}")
-      #endif()
-      file(TO_CMAKE_PATH "$ENV{QT_QMAKE_EXECUTABLE}" QT_QMAKE_EXECUTABLE)
-    ENDIF()
-    
-    if (Simox_USE_QT4)
-        FIND_PACKAGE(Qt4 4.6.0 COMPONENTS QtOpenGL QtCore QtGui)
-        include(${QT_USE_FILE})
-        else()
-        FIND_PACKAGE(Qt5 5.5.0 COMPONENTS OpenGL Core Gui Designer)
-    endif()
-  ENDIF()
-  INCLUDE_DIRECTORIES(${Simox_INCLUDE_DIRS})
-  INCLUDE_DIRECTORIES(SYSTEM ${Simox_EXTERNAL_INCLUDE_DIRS})
-  ADD_DEFINITIONS( ${Simox_EXTERNAL_LIBRARY_FLAGS} )
-  LINK_DIRECTORIES( ${Simox_LIBRARY_DIRS} )
-endmacro()
-
-
 function(VirtualRobotApplication name srcs incs)
-    setupSimoxExternalLibraries()
-    INCLUDE_DIRECTORIES( ${CMAKE_CURRENT_BINARY_DIR} )
     ################################## EXECUTABLE ##############################
     ADD_EXECUTABLE(${name} ${srcs} ${incs})
-    TARGET_LINK_LIBRARIES(${name} PUBLIC VirtualRobot ${Simox_EXTERNAL_LIBRARIES})
+    target_include_directories(${name} PRIVATE ${CMAKE_CURRENT_BINARY_DIR})
+    TARGET_LINK_LIBRARIES(${name} PUBLIC VirtualRobot)
 endfunction()
 
 
 function(VirtualRobotQtApplication name srcs incs mocFiles uiFiles)
-    setupSimoxExternalLibraries()
-
-    if (Simox_USE_QT4)
-        MESSAGE (STATUS "Qt4 Moc'ing: ${mocFiles}")
-        MESSAGE (STATUS "Qt4 ui files: ${uiFiles}")
-        # need this option to work around a qt/boost bug
-        qt4_wrap_cpp(generatedMocFiles ${mocFiles} OPTIONS -DBOOST_TT_HAS_OPERATOR_HPP_INCLUDED -DBOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
-        qt4_wrap_ui(generatedUiFiles ${uiFiles})
-    else()
-        if(NOT "${CMAKE_VERSION}" VERSION_GREATER 3.9)
-            MESSAGE (STATUS "Qt5 Moc'ing: ${mocFiles}")
-            MESSAGE (STATUS "Qt5 ui files: ${uiFiles}")
-            # need this option to work around a qt/boost bug
-            qt5_wrap_cpp(generatedMocFiles ${mocFiles} OPTIONS -DBOOST_TT_HAS_OPERATOR_HPP_INCLUDED -DBOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
-            qt5_wrap_ui(generatedUiFiles ${uiFiles})
-        else()
-            set(CMAKE_AUTOMOC "YES")
-            set(CMAKE_AUTOUIC "YES")
-            set(generatedUiFiles ${uiFiles})
-            set(generatedMocFiles ${mocFiles})
-        endif()
-    endif()
-
-    INCLUDE_DIRECTORIES( ${CMAKE_CURRENT_BINARY_DIR} )
+    set(CMAKE_AUTOMOC "YES")
+    set(CMAKE_AUTOUIC "YES")
+    set(generatedUiFiles ${uiFiles})
+    set(generatedMocFiles ${mocFiles})
     ################################## EXECUTABLE ##############################
     ADD_EXECUTABLE(${name} ${srcs} ${incs} ${generatedUiFiles} ${generatedMocFiles})
-    TARGET_LINK_LIBRARIES(${name} PUBLIC VirtualRobot ${Simox_EXTERNAL_LIBRARIES})
+    target_include_directories(${name} PRIVATE ${CMAKE_CURRENT_BINARY_DIR})
+    TARGET_LINK_LIBRARIES(${name} PUBLIC VirtualRobot)
 endfunction()
 
 
 function(VirtualRobotQtLibrary name srcs incs mocFiles uiFiles)
-    setupSimoxExternalLibraries()
-
-    if (Simox_USE_QT4)
-        MESSAGE (STATUS "Qt4 Moc'ing: ${mocFiles}")
-        MESSAGE (STATUS "Qt4 ui files: ${uiFiles}")
-        # need this option to work around a qt/boost bug
-        qt4_wrap_cpp(generatedMocFiles ${mocFiles} OPTIONS -DBOOST_TT_HAS_OPERATOR_HPP_INCLUDED -DBOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
-        qt4_wrap_ui(generatedUiFiles ${uiFiles})
-    else()
-        if(NOT "${CMAKE_VERSION}" VERSION_GREATER 3.9)
-            MESSAGE (STATUS "Qt5 Moc'ing: ${mocFiles}")
-            MESSAGE (STATUS "Qt5 ui files: ${uiFiles}")
-            # need this option to work around a qt/boost bug
-            qt5_wrap_cpp(generatedMocFiles ${mocFiles} OPTIONS -DBOOST_TT_HAS_OPERATOR_HPP_INCLUDED -DBOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
-            qt5_wrap_ui(generatedUiFiles ${uiFiles})
-        else()
-            set(generatedUiFiles ${uiFiles})
-            set(generatedMocFiles ${mocFiles})
-            set(CMAKE_AUTOMOC "YES")
-            set(CMAKE_AUTOUIC "YES")
-        endif()
-    endif()
+    set(generatedUiFiles ${uiFiles})
+    set(generatedMocFiles ${mocFiles})
+    set(CMAKE_AUTOMOC "YES")
+    set(CMAKE_AUTOUIC "YES")
 
-    INCLUDE_DIRECTORIES( ${CMAKE_CURRENT_BINARY_DIR} )
     ################################## LIBRARY ##############################
     ADD_LIBRARY(${name} SHARED ${srcs} ${incs} ${generatedUiFiles} ${generatedMocFiles})
-    TARGET_LINK_LIBRARIES(${name} PUBLIC VirtualRobot ${Simox_EXTERNAL_LIBRARIES})
+    target_include_directories(${name} PRIVATE ${CMAKE_CURRENT_BINARY_DIR})
+    TARGET_LINK_LIBRARIES(${name} PUBLIC VirtualRobot)
 endfunction()
 
 
diff --git a/GraspPlanning/CMakeLists.txt b/GraspPlanning/CMakeLists.txt
index 24f49b501e2fd8f5e9214da9306c1b226fae1b4a..2392cfba3005155e730e2a821a0b7a0d3bbff502 100644
--- a/GraspPlanning/CMakeLists.txt
+++ b/GraspPlanning/CMakeLists.txt
@@ -1,22 +1,14 @@
 PROJECT ( GraspStudio )
 
-CMAKE_MINIMUM_REQUIRED(VERSION 2.6.2)
-CMAKE_POLICY(VERSION 2.6)
-if(POLICY CMP0020)
-  cmake_policy(SET CMP0020 NEW) # qtmain add lib dependency (no effect in our case)
-endif()
-
 MESSAGE (STATUS "***** CONFIGURING Simox project GraspStudio *****")
 
-INCLUDE (Cxx11Test)
-SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CXX11_FLAG}")
 
 MACRO(ADD_GRASPSTUDIO_TEST TEST_NAME)
-        if (NOT Boost_USE_STATIC_LIBS)
-            ADD_DEFINITIONS(-DBOOST_TEST_DYN_LINK)
-        endif (NOT Boost_USE_STATIC_LIBS)
     	ADD_EXECUTABLE(${TEST_NAME} ${CMAKE_CURRENT_SOURCE_DIR}/${TEST_NAME}.cpp)
-        TARGET_LINK_LIBRARIES(${TEST_NAME} PRIVATE VirtualRobot Saba GraspStudio ${Simox_EXTERNAL_LIBRARIES})
+        if (NOT Boost_USE_STATIC_LIBS)
+            target_compile_definitions(${TEST_NAME} PRIVATE -DBOOST_TEST_DYN_LINK)
+        endif ()
+        TARGET_LINK_LIBRARIES(${TEST_NAME} PRIVATE VirtualRobot Saba GraspStudio boost_unit_test_framework)
     	SET_TARGET_PROPERTIES(${TEST_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${Simox_TEST_DIR})
     	SET_TARGET_PROPERTIES(${TEST_NAME} PROPERTIES FOLDER "GraspStudio Tests")
         ADD_TEST(NAME Saba_${TEST_NAME}
@@ -25,7 +17,6 @@ ENDMACRO(ADD_GRASPSTUDIO_TEST)
 
 
 ########### QHULL #################
-OPTION(BUILD_qhull "if on builds qhull external library" OFF)
 IF(NOT BUILD_qhull)
     find_package(QHULL QUIET)
     IF (NOT QHULL_FOUND)
@@ -38,10 +29,8 @@ ENDIF()
 IF(BUILD_qhull)
     ADD_SUBDIRECTORY(ExternalDependencies/qhull-2003.1)
     set(QHULL_LIBRARIES simox-qhull)
-    include_directories("ExternalDependencies/qhull-2003.1/include/")
 else()
     find_package(QHULL REQUIRED)
-    include_directories(${QHULL_INCLUDE_DIRS})
 endif()
 ########### END QHULL #################
 
@@ -91,14 +80,15 @@ if (Simox_VISUALIZATION AND Simox_USE_COIN_VISUALIZATION)
 	)
 endif ()
 
-
-include_directories(SYSTEM ${Simox_EXTERNAL_INCLUDE_DIRS})
-ADD_DEFINITIONS(${Simox_EXTERNAL_LIBRARY_FLAGS})
-
-
 ADD_LIBRARY (GraspStudio SHARED ${SOURCES} ${INCLUDES})
 
-TARGET_LINK_LIBRARIES (GraspStudio PUBLIC Saba VirtualRobot ${Simox_EXTERNAL_LIBRARIES} ${QHULL_LIBRARIES})
+IF(BUILD_qhull)
+    target_include_directories(GraspStudio PUBLIC "ExternalDependencies/qhull-2003.1/include/")
+else()
+    target_include_directories(GraspStudio PUBLIC ${QHULL_INCLUDE_DIRS})
+endif()
+
+TARGET_LINK_LIBRARIES (GraspStudio PUBLIC Saba VirtualRobot ${QHULL_LIBRARIES})
 
 # .DLL path
 SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${Simox_BIN_DIR})
@@ -124,9 +114,9 @@ endif()
 install(TARGETS ${PROJECT_NAME}
   # IMPORTANT: Add the library to the "export-set"
   EXPORT SimoxTargets
-  RUNTIME DESTINATION "${INSTALL_BIN_DIR}" COMPONENT bin
-  LIBRARY DESTINATION "${INSTALL_LIB_DIR}" COMPONENT shlib
-  ARCHIVE DESTINATION "${INSTALL_LIB_DIR}" COMPONENT library
+  RUNTIME DESTINATION bin COMPONENT bin
+  LIBRARY DESTINATION lib COMPONENT shlib
+  ARCHIVE DESTINATION lib COMPONENT library
   COMPONENT dev)
 
 INSTALL(DIRECTORY ${PROJECT_SOURCE_DIR} DESTINATION ${Simox_INSTALL_HEADER_DIR}
diff --git a/GraspPlanning/ExternalDependencies/qhull-2003.1/CMakeLists.txt b/GraspPlanning/ExternalDependencies/qhull-2003.1/CMakeLists.txt
index d8261631dc3153268530727d76c56ce73ac6e40a..97d07defd103a04613241a24248cf7fa7ecd00d1 100644
--- a/GraspPlanning/ExternalDependencies/qhull-2003.1/CMakeLists.txt
+++ b/GraspPlanning/ExternalDependencies/qhull-2003.1/CMakeLists.txt
@@ -6,9 +6,9 @@ MESSAGE (STATUS " **** Configuring qhull")
 FILE(GLOB SRCS ${PROJECT_SOURCE_DIR}/src/*.c)
 FILE(GLOB INCS ${PROJECT_SOURCE_DIR}/src/*.h)
 
-INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR} ${PROJECT_SOURCE_DIR}/include ${PROJECT_SOURCE_DIR}/src)
 ADD_LIBRARY(${PROJECT_NAME} STATIC ${SRCS} ${INCS})
 
+TARGET_INCLUDE_DIRECTORIES(${PROJECT_NAME} PUBLIC ${PROJECT_SOURCE_DIR} ${PROJECT_SOURCE_DIR}/include ${PROJECT_SOURCE_DIR}/src)
 SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES FOLDER "3rd_Party")
 
 # .DLL path
diff --git a/GraspPlanning/examples/GraspPlanner/CMakeLists.txt b/GraspPlanning/examples/GraspPlanner/CMakeLists.txt
index 3aade73724f39f670c5b95641bb8cc62f991f657..9135c9938c8beb3cb46221a39473d9985ebb1160 100644
--- a/GraspPlanning/examples/GraspPlanner/CMakeLists.txt
+++ b/GraspPlanning/examples/GraspPlanner/CMakeLists.txt
@@ -1,9 +1,7 @@
 PROJECT ( GraspPlanner )
 
-INCLUDE(${Simox_DIR}/CMakeModules/SimoxMacros.cmake)
+INCLUDE(${Simox_SOURCE_DIR}/CMakeModules/SimoxMacros.cmake)
 
-INCLUDE (Cxx11Test)
-SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CXX11_FLAG}")
 
 IF(Simox_VISUALIZATION AND Simox_USE_COIN_VISUALIZATION)
 
@@ -31,9 +29,9 @@ IF(Simox_VISUALIZATION AND Simox_USE_COIN_VISUALIZATION)
   install(TARGETS ${PROJECT_NAME}
     # IMPORTANT: Add the library to the "export-set"
     EXPORT SimoxTargets
-    RUNTIME DESTINATION "${INSTALL_BIN_DIR}" COMPONENT bin
+    RUNTIME DESTINATION bin COMPONENT bin
     COMPONENT dev)
 
   MESSAGE( STATUS " ** Simox application ${PROJECT_NAME} will be placed into " ${Simox_BIN_DIR})
-  MESSAGE( STATUS " ** Simox application ${PROJECT_NAME} will be installed into " ${INSTALL_BIN_DIR})
+  MESSAGE( STATUS " ** Simox application ${PROJECT_NAME} will be installed into " bin)
 ENDIF()
diff --git a/GraspPlanning/examples/GraspQuality/CMakeLists.txt b/GraspPlanning/examples/GraspQuality/CMakeLists.txt
index a64dd5726179945860239997b5641d4d41ff7897..74b7906efe1e2ff748361d2dab4c2c460e93ad64 100644
--- a/GraspPlanning/examples/GraspQuality/CMakeLists.txt
+++ b/GraspPlanning/examples/GraspQuality/CMakeLists.txt
@@ -1,6 +1,6 @@
 PROJECT ( GraspQuality )
 
-INCLUDE(${Simox_DIR}/CMakeModules/SimoxMacros.cmake)
+INCLUDE(${Simox_SOURCE_DIR}/CMakeModules/SimoxMacros.cmake)
 
 IF(Simox_VISUALIZATION AND Simox_USE_COIN_VISUALIZATION)
      
@@ -29,10 +29,10 @@ IF(Simox_VISUALIZATION AND Simox_USE_COIN_VISUALIZATION)
   install(TARGETS ${PROJECT_NAME}
     # IMPORTANT: Add the library to the "export-set"
     EXPORT SimoxTargets
-    RUNTIME DESTINATION "${INSTALL_BIN_DIR}" COMPONENT bin
+    RUNTIME DESTINATION bin COMPONENT bin
     COMPONENT dev)
   
   MESSAGE( STATUS " ** Simox application ${PROJECT_NAME} will be placed into " ${Simox_BIN_DIR})
-  MESSAGE( STATUS " ** Simox application ${PROJECT_NAME} will be installed into " ${INSTALL_BIN_DIR})
+  MESSAGE( STATUS " ** Simox application ${PROJECT_NAME} will be installed into " bin)
 
 ENDIF()
diff --git a/MotionPlanning/CMakeLists.txt b/MotionPlanning/CMakeLists.txt
index 1948434c7f6f0bfee63954fd9af942c79ec809f4..348489c0233c7349e02d9052d974481059e0ee40 100644
--- a/MotionPlanning/CMakeLists.txt
+++ b/MotionPlanning/CMakeLists.txt
@@ -1,29 +1,18 @@
 PROJECT ( Saba )
 
-CMAKE_MINIMUM_REQUIRED(VERSION 2.6.2)
-CMAKE_POLICY(VERSION 2.6)
-if(POLICY CMP0020)
-  cmake_policy(SET CMP0020 NEW) # qtmain add lib dependency (no effect in our case)
-endif()
-
 MESSAGE (STATUS "***** CONFIGURING Simox project Saba *****")
 
-INCLUDE (Cxx11Test)
-SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CXX11_FLAG}")
 
 
 
 ########################### TESTING #####################################
 MACRO(ADD_SABA_TEST TEST_NAME)
-    include_directories(SYSTEM ${Simox_EXTERNAL_INCLUDE_DIRS})
-    INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR})
-    INCLUDE_DIRECTORIES("${PROJECT_SOURCE_DIR}/..")
-    if (NOT Boost_USE_STATIC_LIBS)
-        ADD_DEFINITIONS(-DBOOST_TEST_DYN_LINK)
-    endif (NOT Boost_USE_STATIC_LIBS)
-    ADD_DEFINITIONS(${Simox_EXTERNAL_LIBRARY_FLAGS})
     ADD_EXECUTABLE(${TEST_NAME} ${CMAKE_CURRENT_SOURCE_DIR}/${TEST_NAME}.cpp)
-    TARGET_LINK_LIBRARIES(${TEST_NAME} PRIVATE VirtualRobot Saba ${Simox_EXTERNAL_LIBRARIES} ${Boost_TEST_LIB})
+    target_include_directories(${TEST_NAME} PRIVATE ${PROJECT_SOURCE_DIR} ${PROJECT_SOURCE_DIR}/..)
+    if (NOT Boost_USE_STATIC_LIBS)
+        target_compile_definitions(${TEST_NAME} PRIVATE -DBOOST_TEST_DYN_LINK)
+    endif ()
+    TARGET_LINK_LIBRARIES(${TEST_NAME} PRIVATE VirtualRobot Saba boost_unit_test_framework)
     SET_TARGET_PROPERTIES(${TEST_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${Simox_TEST_DIR})
     SET_TARGET_PROPERTIES(${TEST_NAME} PROPERTIES FOLDER "Saba Tests")
     ADD_TEST(NAME Saba_${TEST_NAME}
@@ -88,14 +77,11 @@ if (Simox_USE_COIN_VISUALIZATION)
 	${INCLUDES}
 	Visualization/CoinVisualization/CoinRrtWorkspaceVisualization.h
 	)
-endif (Simox_USE_COIN_VISUALIZATION)
-
-include_directories(SYSTEM ${Simox_EXTERNAL_INCLUDE_DIRS})
-ADD_DEFINITIONS(${Simox_EXTERNAL_LIBRARY_FLAGS})
+endif ()
 
 ADD_LIBRARY (Saba SHARED ${SOURCES} ${INCLUDES})
 #MESSAGE(STATUS "VirtualRobot_ROBOT_LINK_LIBRARIES:" ${VirtualRobot_EXTERNAL_LIBRARIES})
-TARGET_LINK_LIBRARIES (Saba PUBLIC VirtualRobot ${Simox_EXTERNAL_LIBRARIES})
+TARGET_LINK_LIBRARIES (Saba PUBLIC VirtualRobot)
 
 # .DLL path
 SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${Simox_BIN_DIR})
@@ -121,9 +107,9 @@ endif()
 install(TARGETS ${PROJECT_NAME}
   # IMPORTANT: Add the library to the "export-set"
   EXPORT SimoxTargets
-  RUNTIME DESTINATION "${INSTALL_BIN_DIR}" COMPONENT bin
-  LIBRARY DESTINATION "${INSTALL_LIB_DIR}" COMPONENT shlib
-  ARCHIVE DESTINATION "${INSTALL_LIB_DIR}" COMPONENT library
+  RUNTIME DESTINATION bin COMPONENT bin
+  LIBRARY DESTINATION lib COMPONENT shlib
+  ARCHIVE DESTINATION lib COMPONENT library
   COMPONENT dev)
 
 INSTALL(DIRECTORY ${PROJECT_SOURCE_DIR} DESTINATION ${Simox_INSTALL_HEADER_DIR}
diff --git a/MotionPlanning/Planner/BiRrt.cpp b/MotionPlanning/Planner/BiRrt.cpp
index aa666c2f2ff0e337bab353388caca7e9a892ee20..07f4bde41a9733385519574f2f83acf014ec3b07 100644
--- a/MotionPlanning/Planner/BiRrt.cpp
+++ b/MotionPlanning/Planner/BiRrt.cpp
@@ -100,8 +100,8 @@ namespace Saba
             robot->setUpdateVisualization(false);
         }
 
-        ExtensionResult extResultA;
-        ExtensionResult extResultB;
+        ExtensionResult extResultA = eError;
+        ExtensionResult extResultB = eError;
 
         bool switched = false;
         int* lastIDA = &lastAddedID;
diff --git a/MotionPlanning/examples/GraspRRT/CMakeLists.txt b/MotionPlanning/examples/GraspRRT/CMakeLists.txt
index 3382419a8bdaa2218a9ab50e151c8bd7dc1b5239..e3704cef99569b0a41da7d577b225d24e89585f2 100644
--- a/MotionPlanning/examples/GraspRRT/CMakeLists.txt
+++ b/MotionPlanning/examples/GraspRRT/CMakeLists.txt
@@ -1,6 +1,6 @@
 PROJECT ( GraspRrtDemo )
 
-INCLUDE(${Simox_DIR}/CMakeModules/SimoxMacros.cmake)
+INCLUDE(${Simox_SOURCE_DIR}/CMakeModules/SimoxMacros.cmake)
 
 IF(Simox_VISUALIZATION AND Simox_USE_COIN_VISUALIZATION)
 	    
@@ -30,10 +30,10 @@ IF(Simox_VISUALIZATION AND Simox_USE_COIN_VISUALIZATION)
   install(TARGETS ${PROJECT_NAME}
     # IMPORTANT: Add the library to the "export-set"
     EXPORT SimoxTargets
-    RUNTIME DESTINATION "${INSTALL_BIN_DIR}" COMPONENT bin
+    RUNTIME DESTINATION bin COMPONENT bin
     COMPONENT dev)
 
   MESSAGE( STATUS " ** Simox application ${PROJECT_NAME} will be placed into " ${Simox_BIN_DIR})
-  MESSAGE( STATUS " ** Simox application ${PROJECT_NAME} will be installed into " ${INSTALL_BIN_DIR})
+  MESSAGE( STATUS " ** Simox application ${PROJECT_NAME} will be installed into " bin)
 
 ENDIF()
diff --git a/MotionPlanning/examples/IKRRT/CMakeLists.txt b/MotionPlanning/examples/IKRRT/CMakeLists.txt
index ed209afcd4e8770a143738d051de5ba1279e960b..122cc9a2cd75e2245b46f96c4ec966d481366f37 100644
--- a/MotionPlanning/examples/IKRRT/CMakeLists.txt
+++ b/MotionPlanning/examples/IKRRT/CMakeLists.txt
@@ -1,6 +1,6 @@
 PROJECT ( IKRRT )
 
-INCLUDE(${Simox_DIR}/CMakeModules/SimoxMacros.cmake)
+INCLUDE(${Simox_SOURCE_DIR}/CMakeModules/SimoxMacros.cmake)
 
 IF(Simox_VISUALIZATION AND Simox_USE_COIN_VISUALIZATION)
  
@@ -33,10 +33,10 @@ IF(Simox_VISUALIZATION AND Simox_USE_COIN_VISUALIZATION)
   install(TARGETS ${PROJECT_NAME}
     # IMPORTANT: Add the library to the "export-set"
     EXPORT SimoxTargets
-    RUNTIME DESTINATION "${INSTALL_BIN_DIR}" COMPONENT bin
+    RUNTIME DESTINATION bin COMPONENT bin
     COMPONENT dev)
 
   MESSAGE( STATUS " ** Simox application ${PROJECT_NAME} will be placed into " ${Simox_BIN_DIR})
-  MESSAGE( STATUS " ** Simox application ${PROJECT_NAME} will be installed into " ${INSTALL_BIN_DIR})
+  MESSAGE( STATUS " ** Simox application ${PROJECT_NAME} will be installed into " bin)
 
 ENDIF()
diff --git a/MotionPlanning/examples/MultiThreadedPlanning/CMakeLists.txt b/MotionPlanning/examples/MultiThreadedPlanning/CMakeLists.txt
index 778ad0142ad3a5e7553c60bcda394705fcf98b44..97f1993f8d31199e1ac38c9ba381bf0dd7a43017 100644
--- a/MotionPlanning/examples/MultiThreadedPlanning/CMakeLists.txt
+++ b/MotionPlanning/examples/MultiThreadedPlanning/CMakeLists.txt
@@ -1,6 +1,6 @@
 PROJECT ( MultiThreadedPlanning )
 
-INCLUDE(${Simox_DIR}/CMakeModules/SimoxMacros.cmake)
+INCLUDE(${Simox_SOURCE_DIR}/CMakeModules/SimoxMacros.cmake)
 
 IF(Simox_VISUALIZATION AND Simox_USE_COIN_VISUALIZATION)
 	    
@@ -31,11 +31,11 @@ IF(Simox_VISUALIZATION AND Simox_USE_COIN_VISUALIZATION)
   install(TARGETS ${PROJECT_NAME}
     # IMPORTANT: Add the library to the "export-set"
     EXPORT SimoxTargets
-    RUNTIME DESTINATION "${INSTALL_BIN_DIR}" COMPONENT bin
+    RUNTIME DESTINATION bin COMPONENT bin
     COMPONENT dev)
 
   MESSAGE( STATUS " ** Simox application ${PROJECT_NAME} will be placed into " ${Simox_BIN_DIR})
-  MESSAGE( STATUS " ** Simox application ${PROJECT_NAME} will be installed into " ${INSTALL_BIN_DIR})
+  MESSAGE( STATUS " ** Simox application ${PROJECT_NAME} will be installed into " bin)
 
   
 ENDIF()
diff --git a/MotionPlanning/examples/MultiThreadedPlanning/MTPlanningWindow.cpp b/MotionPlanning/examples/MultiThreadedPlanning/MTPlanningWindow.cpp
index d2c6dfdd999549b9633c2791c04ec30a05f6ae87..d7a4d41cfffde5eede13034dfc0db55a3fe3e07e 100644
--- a/MotionPlanning/examples/MultiThreadedPlanning/MTPlanningWindow.cpp
+++ b/MotionPlanning/examples/MultiThreadedPlanning/MTPlanningWindow.cpp
@@ -1,6 +1,7 @@
 
 #include "MTPlanningWindow.h"
 
+#include "ui_MTPlanning.h"
 
 #include <vector>
 #include <iostream>
diff --git a/MotionPlanning/examples/PlatformDemo/CMakeLists.txt b/MotionPlanning/examples/PlatformDemo/CMakeLists.txt
index 59a271114863b949a98f3efcb7772131f8dcc706..24ff2268f23fa78ba42f8f7d9b7ccf4bec8d315f 100644
--- a/MotionPlanning/examples/PlatformDemo/CMakeLists.txt
+++ b/MotionPlanning/examples/PlatformDemo/CMakeLists.txt
@@ -1,6 +1,6 @@
 PROJECT ( PlatformDemo )
 
-INCLUDE(${Simox_DIR}/CMakeModules/SimoxMacros.cmake)
+INCLUDE(${Simox_SOURCE_DIR}/CMakeModules/SimoxMacros.cmake)
 
 IF(Simox_VISUALIZATION AND Simox_USE_COIN_VISUALIZATION)
 	    
@@ -30,10 +30,10 @@ IF(Simox_VISUALIZATION AND Simox_USE_COIN_VISUALIZATION)
   install(TARGETS ${PROJECT_NAME}
     # IMPORTANT: Add the library to the "export-set"
     EXPORT SimoxTargets
-    RUNTIME DESTINATION "${INSTALL_BIN_DIR}" COMPONENT bin
+    RUNTIME DESTINATION bin COMPONENT bin
     COMPONENT dev)
 
   MESSAGE( STATUS " ** Simox application ${PROJECT_NAME} will be placed into " ${Simox_BIN_DIR})
-  MESSAGE( STATUS " ** Simox application ${PROJECT_NAME} will be installed into " ${INSTALL_BIN_DIR})
+  MESSAGE( STATUS " ** Simox application ${PROJECT_NAME} will be installed into " bin)
 
 ENDIF()
diff --git a/MotionPlanning/examples/RRT/CMakeLists.txt b/MotionPlanning/examples/RRT/CMakeLists.txt
index c6a32aa40e46ad4c2e090258f89677b0dee56df5..467c6d1a8248b59344fcab067df8c3693c61e976 100644
--- a/MotionPlanning/examples/RRT/CMakeLists.txt
+++ b/MotionPlanning/examples/RRT/CMakeLists.txt
@@ -1,6 +1,6 @@
 PROJECT ( RRTdemo )
 
-INCLUDE(${Simox_DIR}/CMakeModules/SimoxMacros.cmake)
+INCLUDE(${Simox_SOURCE_DIR}/CMakeModules/SimoxMacros.cmake)
 
 IF(Simox_VISUALIZATION AND Simox_USE_COIN_VISUALIZATION)
     
@@ -21,11 +21,11 @@ IF(Simox_VISUALIZATION AND Simox_USE_COIN_VISUALIZATION)
   install(TARGETS ${PROJECT_NAME}
     # IMPORTANT: Add the library to the "export-set"
     EXPORT SimoxTargets
-    RUNTIME DESTINATION "${INSTALL_BIN_DIR}" COMPONENT bin
+    RUNTIME DESTINATION bin COMPONENT bin
     COMPONENT dev)
 
   MESSAGE( STATUS " ** Simox application ${PROJECT_NAME} will be placed into " ${Simox_BIN_DIR})
-  MESSAGE( STATUS " ** Simox application ${PROJECT_NAME} will be installed into " ${INSTALL_BIN_DIR})
+  MESSAGE( STATUS " ** Simox application ${PROJECT_NAME} will be installed into " bin)
 
 ELSE()
 	MESSAGE (STATUS "Simox_USE_COIN_VISUALIZATION not defined: Skipping ${PROJECT_NAME}")
diff --git a/MotionPlanning/examples/RrtGui/CMakeLists.txt b/MotionPlanning/examples/RrtGui/CMakeLists.txt
index 8c7cd969792cb3d1c56f0dfb5a34574b169f23d6..b78376977634aae401ee270d607b17b16cb5f43b 100644
--- a/MotionPlanning/examples/RrtGui/CMakeLists.txt
+++ b/MotionPlanning/examples/RrtGui/CMakeLists.txt
@@ -1,6 +1,6 @@
 PROJECT ( RrtGui )
 
-INCLUDE(${Simox_DIR}/CMakeModules/SimoxMacros.cmake)
+INCLUDE(${Simox_SOURCE_DIR}/CMakeModules/SimoxMacros.cmake)
 
 IF(Simox_VISUALIZATION AND Simox_USE_COIN_VISUALIZATION)
      
@@ -29,10 +29,10 @@ IF(Simox_VISUALIZATION AND Simox_USE_COIN_VISUALIZATION)
   install(TARGETS ${PROJECT_NAME}
     # IMPORTANT: Add the library to the "export-set"
     EXPORT SimoxTargets
-    RUNTIME DESTINATION "${INSTALL_BIN_DIR}" COMPONENT bin
+    RUNTIME DESTINATION bin COMPONENT bin
     COMPONENT dev)
   
   MESSAGE( STATUS " ** Simox application ${PROJECT_NAME} will be placed into " ${Simox_BIN_DIR})
-  MESSAGE( STATUS " ** Simox application ${PROJECT_NAME} will be installed into " ${INSTALL_BIN_DIR})
+  MESSAGE( STATUS " ** Simox application ${PROJECT_NAME} will be installed into " bin)
 
 ENDIF()
diff --git a/MotionPlanning/tests/CMakeLists.txt b/MotionPlanning/tests/CMakeLists.txt
index da5087a07816926457b089ec53564f5c90b1345a..745ed89aa1085e591690b8395a0e5d3d15311a4d 100644
--- a/MotionPlanning/tests/CMakeLists.txt
+++ b/MotionPlanning/tests/CMakeLists.txt
@@ -1,5 +1,5 @@
 
-if (VirtualRobot_VISUALIZATION)
+if (Simox_VISUALIZATION)
 	ADD_SABA_TEST( SabaCSpaceTest )
 	ADD_SABA_TEST( SabaShortcutProcessorTest )
 endif()
diff --git a/SimDynamics/CMakeLists.txt b/SimDynamics/CMakeLists.txt
index cbb4b54b4c2a06bd47c20216b76de6699ea968a1..934aeca36e298143caf4bbf707320aab96e880ce 100644
--- a/SimDynamics/CMakeLists.txt
+++ b/SimDynamics/CMakeLists.txt
@@ -1,26 +1,21 @@
 PROJECT ( SimDynamics )
 
-CMAKE_MINIMUM_REQUIRED(VERSION 2.6.2)
-CMAKE_POLICY(VERSION 2.6)
-if(POLICY CMP0020)
-  cmake_policy(SET CMP0020 NEW) # qtmain add lib dependency (no effect in our case)
-endif()
-
 MESSAGE (STATUS "***** CONFIGURING Simox project SimDynamics *****")
 
+add_library(SimDynamics SHARED SimDynamics.h) # sources will be added later
+
+target_include_directories(SimDynamics PUBLIC
+    $<BUILD_INTERFACE:${Simox_SOURCE_DIR}>
+    $<BUILD_INTERFACE:${Simox_BINARY_DIR}>
+    $<INSTALL_INTERFACE:include>
+)
 
 GET_FILENAME_COMPONENT (CurrentSimDynamicsPath ${CMAKE_CURRENT_LIST_FILE} PATH)
 SET(SimDynamics_DIR ${CurrentSimDynamicsPath})
 
 
-
-INCLUDE (Cxx11Test)
-SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CXX11_FLAG}")
-
 ############################# SETUP PHYSICS ENGINE #############################
-OPTION(SimDynamics_USE_BULLET "Use Bullet Physics Engine" ON)
 SET (SimDynamics_DYNAMICSENGINE FALSE)
-SET (SimDynamics_PHYSICS_LIBRARIES "")
 
 if (SimDynamics_USE_BULLET)
 
@@ -32,97 +27,78 @@ if (SimDynamics_USE_BULLET)
   SET (BULLET_ROOT ${BULLET_ROOT} CACHE PATH "Bullet Path")
   Find_Package(Bullet)
   if (BULLET_FOUND)
-      MESSAGE (STATUS " ** Found Bullet at ${BULLET_INCLUDE_DIRS}")
-
-
+    MESSAGE (STATUS " ** Found Bullet at ${BULLET_INCLUDE_DIRS}")
 
-      #MESSAGE (STATUS "BULLET_LIBRARIES: ${BULLET_LIBRARIES}")
-      #MESSAGE (STATUS "BULLET_OPENGL_INCLUDE_DIR: ${BULLET_OPENGL_INCLUDE_DIR}")
-      #MESSAGE (STATUS "BULLET_OpenGLSupport_LIBRARY_debug: ${BULLET_OpenGLSupport_LIBRARY_debug}")
-      SET(SIMDYNAMICS_INCLUDE_DIRS "${BULLET_INCLUDE_DIRS}" "${BULLET_INCLUDE_DIRS}/bullet") # "${BULLET_DEMOS_INCLUDE_DIR}" "${BULLET_OPENGL_INCLUDE_DIR}")# PARENT_SCOPE)
-     	
-     	INCLUDE_DIRECTORIES( 
-          ${BULLET_INCLUDE_DIRS}
-          ${BULLET_INCLUDE_DIRS}/bullet
-		  )
+    target_include_directories(SimDynamics PUBLIC ${BULLET_INCLUDE_DIRS})
+    if(EXISTS "${BULLET_INCLUDE_DIRS}/bullet")
+        target_include_directories(SimDynamics PUBLIC ${BULLET_INCLUDE_DIRS}/bullet)
+    endif()
 
-      IF (WIN32)
-            OPTION(SimDynamics_USE_BULLET_USE_GLUT "Use Glut"	OFF)
-      else()
-            OPTION(SimDynamics_USE_BULLET_USE_GLUT "Use Glut"	ON)
-      endif()
+    IF (WIN32)
+        OPTION(SimDynamics_USE_BULLET_USE_GLUT "Use Glut"	OFF)
+    else()
+        OPTION(SimDynamics_USE_BULLET_USE_GLUT "Use Glut"	ON)
+    endif()
 
     include(BulletCheckPrecision)
     message(STATUS "BULLET_INCLUDE_DIRS ${BULLET_INCLUDE_DIRS}")
     BulletCheckPrecision()
-      IF( NOT BULLET_USE_SINGLE_PRECISION )
-          ADD_DEFINITIONS( -DBT_USE_DOUBLE_PRECISION)
-          LIST(APPEND SIMDYNAMICS_COMPILE_FLAGS "-DBT_USE_DOUBLE_PRECISION")
-      ENDIF()
-      #MESSAGE(STATUS "BULLET_LIBRARIES:${BULLET_LIBRARIES}")
-      SET (SimDynamics_PHYSICS_LIBRARIES "${BULLET_LIBRARIES}")
-      SET (SimDynamics_DYNAMICSENGINE TRUE)
+    target_link_libraries(SimDynamics PUBLIC ${BULLET_LIBRARIES})
+    SET (SimDynamics_DYNAMICSENGINE TRUE)
       
-	  FIND_PACKAGE(OpenGL)
-	  IF (OPENGL_FOUND)
-	  	MESSAGE (STATUS " ** OPENGL FOUND lib:${OPENGL_gl_LIBRARY}")
-		#check if there was a distuingish between optimized and debug libs:
-      	IF (SimDynamics_PHYSICS_LIBRARIES MATCHES "optimized;")
-			LIST(APPEND SimDynamics_PHYSICS_LIBRARIES optimized ${OPENGL_gl_LIBRARY} debug ${OPENGL_gl_LIBRARY})
-		ELSE()
-			LIST(APPEND SimDynamics_PHYSICS_LIBRARIES ${OPENGL_gl_LIBRARY})
-		ENDIF()
-	  ENDIF()
-	  IF (OPENGL_GLU_FOUND)
-		  MESSAGE (STATUS " ** OPENGL_GLU FOUND lib:${OPENGL_glu_LIBRARY}")
-		  #check if there was a distuingish between optimized and debug libs:
-      	  IF (SimDynamics_PHYSICS_LIBRARIES MATCHES "optimized;")
-		    LIST(APPEND SimDynamics_PHYSICS_LIBRARIES optimized ${OPENGL_glu_LIBRARY} debug ${OPENGL_glu_LIBRARY})
-		  ELSE()
-		    LIST(APPEND SimDynamics_PHYSICS_LIBRARIES ${OPENGL_glu_LIBRARY})
-		  ENDIF()
-	  ENDIF()
-
-      IF (SimDynamics_USE_BULLET_USE_GLUT)
+    FIND_PACKAGE(OpenGL)
+    IF (OPENGL_FOUND)
+        MESSAGE (STATUS " ** OPENGL FOUND lib:${OPENGL_gl_LIBRARY}")
+        #check if there was a distuingish between optimized and debug libs:
+        IF (BULLET_LIBRARIES MATCHES "optimized;")
+            target_link_libraries(SimDynamics PUBLIC optimized ${OPENGL_gl_LIBRARY} debug ${OPENGL_gl_LIBRARY})
+        ELSE()
+            target_link_libraries(SimDynamics PUBLIC  ${OPENGL_gl_LIBRARY})
+        ENDIF()
+    ENDIF()
+    IF (OPENGL_GLU_FOUND)
+        MESSAGE (STATUS " ** OPENGL_GLU FOUND lib:${OPENGL_glu_LIBRARY}")
+        #check if there was a distuingish between optimized and debug libs:
+        IF (BULLET_LIBRARIES MATCHES "optimized;")
+            target_link_libraries(SimDynamics PUBLIC optimized ${OPENGL_glu_LIBRARY} debug ${OPENGL_glu_LIBRARY})
+        ELSE()
+            target_link_libraries(SimDynamics PUBLIC ${OPENGL_glu_LIBRARY})
+        ENDIF()
+    ENDIF()
+
+    IF (SimDynamics_USE_BULLET_USE_GLUT)
         FIND_PACKAGE(GLUT)
         IF (GLUT_FOUND)
             MESSAGE(STATUS " ** GLUT FOUND: ${GLUT_glut_LIBRARY}")
-		    #check if there was a distuingish between optimized and debug libs:
-      	    IF (SimDynamics_PHYSICS_LIBRARIES MATCHES "optimized;")
-				LIST(APPEND SimDynamics_PHYSICS_LIBRARIES optimized ${GLUT_glut_LIBRARY} debug ${GLUT_glut_LIBRARY})
-			ELSE()
-				LIST(APPEND SimDynamics_PHYSICS_LIBRARIES ${GLUT_glut_LIBRARY} )
-			ENDIF()
+            #check if there was a distuingish between optimized and debug libs:
+            IF (BULLET_LIBRARIES MATCHES "optimized;")
+                target_link_libraries(SimDynamics PUBLIC optimized ${GLUT_glut_LIBRARY} debug ${GLUT_glut_LIBRARY})
+            ELSE()
+                target_link_libraries(SimDynamics PUBLIC ${GLUT_glut_LIBRARY} )
+            ENDIF()
+
+            IF (WIN32)
+                target_include_directories(SimDynamics PUBLIC ${GLUT_INCLUDE_DIR})
+            ELSE ()
+                # This is the lines for linux.  This should always work if everything is installed and working fine.
+                target_include_directories(SimDynamics PUBLIC /usr/include /usr/local/include ${GLUT_INCLUDE_DIR})
+            ENDIF ()
+        ELSE ()
+            SET( GLUT_glut_LIBRARY "" CACHE PATH "Glut library." )
+        ENDIF ()
+    ENDIF()
+
+    ADD_SUBDIRECTORY(DynamicsEngine/BulletEngine/BulletOpenGL)
 
-      		IF (WIN32)
-      			INCLUDE_DIRECTORIES(${GLUT_INCLUDE_DIR})
-      			SET(SIMDYNAMICS_INCLUDE_DIRS "${SIMDYNAMICS_INCLUDE_DIRS}" "${GLUT_INCLUDE_DIR}")# PARENT_SCOPE)
-      		ELSE (WIN32)
-      			# This is the lines for linux.  This should always work if everything is installed and working fine.
-      			INCLUDE_DIRECTORIES(/usr/include /usr/local/include ${GLUT_INCLUDE_DIR}) 
-      			SET(SIMDYNAMICS_INCLUDE_DIRS "${SIMDYNAMICS_INCLUDE_DIRS}" "/usr/include" "/usr/local/include" "${GLUT_INCLUDE_DIR}")
-      		ENDIF (WIN32)
-		ELSE (GLUT_FOUND)
-          SET( GLUT_glut_LIBRARY "" CACHE PATH "Glut library." )
-        ENDIF (GLUT_FOUND)
-        
-		#SET (SimDynamics_BULLET_OpenGL TRUE)
-      ENDIF(SimDynamics_USE_BULLET_USE_GLUT)
-
-      ADD_SUBDIRECTORY(DynamicsEngine/BulletEngine/BulletOpenGL)
-
-    else()
-        MESSAGE (STATUS " ** Could not find Bullet")
-    endif()
+else()
+    MESSAGE (STATUS " ** Could not find Bullet")
+endif()
     
 else()
         MESSAGE ("No Physics engine selected...")   	    
 endif()
 
 
-MESSAGE (STATUS " ** SIMDYNAMICS_INCLUDE_DIRS: ${SIMDYNAMICS_INCLUDE_DIRS}")
-
-MESSAGE (STATUS " ** SimDynamics_PHYSICS_LIBRARIES: ${SimDynamics_PHYSICS_LIBRARIES}")
 
 
 #######################################################################
@@ -130,11 +106,11 @@ MESSAGE (STATUS " ** SimDynamics_PHYSICS_LIBRARIES: ${SimDynamics_PHYSICS_LIBRAR
 #######################################################################
 
 MACRO(ADD_SIMDYNAMICS_TEST TEST_NAME)
-  if (NOT Boost_USE_STATIC_LIBS)
-    ADD_DEFINITIONS(-DBOOST_TEST_DYN_LINK)
-  endif (NOT Boost_USE_STATIC_LIBS)
   ADD_EXECUTABLE(${TEST_NAME} ${CMAKE_CURRENT_SOURCE_DIR}/${TEST_NAME}.cpp)
-  TARGET_LINK_LIBRARIES(${TEST_NAME} PRIVATE VirtualRobot Saba GraspStudio SimDynamics ${Simox_EXTERNAL_LIBRARIES} ${SimDynamics_PHYSICS_LIBRARIES} ${Boost_TEST_LIB})
+  if (NOT Boost_USE_STATIC_LIBS)
+      target_compile_definitions(${TEST_NAME} PRIVATE -DBOOST_TEST_DYN_LINK)
+  endif ()
+  TARGET_LINK_LIBRARIES(${TEST_NAME} PRIVATE VirtualRobot Saba GraspStudio SimDynamics boost_unit_test_framework)
   SET_TARGET_PROPERTIES(${TEST_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${Simox_TEST_DIR})
   SET_TARGET_PROPERTIES(${TEST_NAME} PROPERTIES FOLDER "SimDynamics Tests")
   ADD_TEST(NAME SimDynamics_${TEST_NAME}
@@ -161,7 +137,6 @@ if (SimDynamics_DYNAMICSENGINE)
     DynamicsEngine/DynamicsRobot.h
     DynamicsEngine/DynamicsUtils.h
   )
- #    ${SimDynamics_SimoxDir}/VirtualRobot/definesVR.h
    
   if (SimDynamics_USE_BULLET)
   	SET(SOURCES
@@ -212,28 +187,23 @@ if (SimDynamics_DYNAMICSENGINE)
         	DynamicsEngine/BulletEngine/BulletCoinQtViewer.h
       	)
       else()
+          MESSAGE (STATUS "SOQT_FOUND                  : ${SOQT_FOUND}")
+          MESSAGE (STATUS "Simox_USE_COIN_VISUALIZATION: ${Simox_USE_COIN_VISUALIZATION}")
           MESSAGE (STATUS " ** Qt/Coin3D disabled: Skipping BulletCoinQtViewer")
       endif()
   endif ()
-    
-  # this var is considered for generating Simox_INCLUDE_DIRS_
-  SET(Simox_SimDynamics_INCLUDE_DIRS "${SIMDYNAMICS_INCLUDE_DIRS}" PARENT_SCOPE)
-  SET(Simox_SimDynamics_EXTERNAL_LIBRARIES "${SimDynamics_PHYSICS_LIBRARIES}" PARENT_SCOPE)
-  SET(Simox_SimDynamics_COMPILE_FLAGS "${SIMDYNAMICS_COMPILE_FLAGS}" PARENT_SCOPE)
-  #INCLUDE_DIRECTORIES(${SimDynamics_SimoxDir})
-  #INCLUDE_DIRECTORIES(${SimDynamics_DIR})
-   
 
-  include_directories(SYSTEM ${Simox_EXTERNAL_INCLUDE_DIRS})
-  ADD_DEFINITIONS(${Simox_EXTERNAL_LIBRARY_FLAGS})
+  set_target_properties(SimDynamics PROPERTIES SOURCES "${SOURCES};${INCLUDES}")
 
-  ADD_LIBRARY (SimDynamics SHARED ${SOURCES} ${INCLUDES})
   if (SimDynamics_BULLET_OpenGL)
     TARGET_LINK_LIBRARIES (SimDynamics PUBLIC BulletOpenGLSupport)
 	SET (SimDynamics_BULLET_OpenGL TRUE PARENT_SCOPE) # inform parent scope about BulletOpenGLSupport
   ENDIF(SimDynamics_BULLET_OpenGL)
-  TARGET_LINK_LIBRARIES (SimDynamics PUBLIC ${Simox_EXTERNAL_LIBRARIES} VirtualRobot ${SimDynamics_PHYSICS_LIBRARIES})
+  TARGET_LINK_LIBRARIES (SimDynamics PUBLIC VirtualRobot)
 
+  if (SimDynamics_USE_BULLET AND NOT BULLET_USE_SINGLE_PRECISION )
+    target_compile_definitions(SimDynamics PUBLIC -DBT_USE_DOUBLE_PRECISION)
+  endif()
   # .DLL path
   SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${Simox_BIN_DIR})
   # .so path
@@ -262,9 +232,9 @@ if (SimDynamics_DYNAMICSENGINE)
   INSTALL(TARGETS ${PROJECT_NAME}
     # IMPORTANT: Add the library to the "export-set"
     EXPORT SimoxTargets
-    RUNTIME DESTINATION "${INSTALL_BIN_DIR}" COMPONENT bin
-    LIBRARY DESTINATION "${INSTALL_LIB_DIR}" COMPONENT shlib
-    ARCHIVE DESTINATION "${INSTALL_LIB_DIR}" COMPONENT library
+    RUNTIME DESTINATION bin COMPONENT bin
+    LIBRARY DESTINATION lib COMPONENT shlib
+    ARCHIVE DESTINATION lib COMPONENT library
     COMPONENT dev)
   
   INSTALL(DIRECTORY ${PROJECT_SOURCE_DIR} DESTINATION ${Simox_INSTALL_HEADER_DIR}
diff --git a/SimDynamics/DynamicsEngine/BulletEngine/BulletCoinQtViewer.cpp b/SimDynamics/DynamicsEngine/BulletEngine/BulletCoinQtViewer.cpp
index 5346d5ffc2d6546b6d489e88b5393c6cfa5cdf7d..b5baffd3da865c395d8c2e3727a9a446664d6489 100644
--- a/SimDynamics/DynamicsEngine/BulletEngine/BulletCoinQtViewer.cpp
+++ b/SimDynamics/DynamicsEngine/BulletEngine/BulletCoinQtViewer.cpp
@@ -19,7 +19,7 @@ namespace SimDynamics
 
 
     BulletCoinQtViewer::BulletCoinQtViewer(DynamicsWorldPtr world)
-        : warned_norealtime(false), simModeFixedTimeStep(false)
+        : simModeFixedTimeStep(false), warned_norealtime(false)
     {
         bulletTimeStepMsec = 16; // 60FPS
         bulletMaxSubSteps = 1;
diff --git a/SimDynamics/DynamicsEngine/BulletEngine/BulletOpenGL/CMakeLists.txt b/SimDynamics/DynamicsEngine/BulletEngine/BulletOpenGL/CMakeLists.txt
index 764f5c4864f40940564f9d929971bb493addcc9c..3f192de7e365ac1c19c4341b154dba22914c7727 100644
--- a/SimDynamics/DynamicsEngine/BulletEngine/BulletOpenGL/CMakeLists.txt
+++ b/SimDynamics/DynamicsEngine/BulletEngine/BulletOpenGL/CMakeLists.txt
@@ -12,9 +12,13 @@ MESSAGE (STATUS " **** Configuring BulletOpenGLSupport")
 FILE(GLOB SRCS ${PROJECT_SOURCE_DIR}/*.cpp)
 FILE(GLOB INCS ${PROJECT_SOURCE_DIR}/*.h)
 
-INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR})
-
 ADD_LIBRARY(${PROJECT_NAME} STATIC ${SRCS} ${INCS})
+TARGET_INCLUDE_DIRECTORIES(${PROJECT_NAME} PRIVATE ${PROJECT_SOURCE_DIR})
+target_include_directories(${PROJECT_NAME} PUBLIC ${BULLET_INCLUDE_DIRS})
+if(EXISTS "${BULLET_INCLUDE_DIRS}/bullet")
+    target_include_directories(${PROJECT_NAME} PUBLIC ${BULLET_INCLUDE_DIRS}/bullet)
+endif()
+
 SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES FOLDER "3rd_Party")
 IF(UNIX)
 	# We are on Linux
@@ -42,12 +46,11 @@ SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES ARCHIVE_OUTPUT_DIRECTORY ${Simo
 install(TARGETS ${PROJECT_NAME}
   # IMPORTANT: Add the library to the "export-set"
   EXPORT SimoxTargets
-  RUNTIME DESTINATION "${INSTALL_BIN_DIR}" COMPONENT bin
-  LIBRARY DESTINATION "${INSTALL_LIB_DIR}" COMPONENT shlib
-  ARCHIVE DESTINATION "${INSTALL_LIB_DIR}" COMPONENT library
+  RUNTIME DESTINATION bin COMPONENT bin
+  LIBRARY DESTINATION lib COMPONENT shlib
+  ARCHIVE DESTINATION lib COMPONENT library
   COMPONENT dev)
-#  PUBLIC_HEADER DESTINATION "${INSTALL_INCLUDE_DIR}/VirtualRobot"
 
 else()
 MESSAGE (STATUS " **** Not compiling BulletOpenGL support")
-endif()
\ No newline at end of file
+endif()
diff --git a/SimDynamics/DynamicsEngine/BulletEngine/BulletOpenGL/GL_ShapeDrawer.cpp b/SimDynamics/DynamicsEngine/BulletEngine/BulletOpenGL/GL_ShapeDrawer.cpp
index c8d55bce48264eea8259b9e900cd3f7895d83cca..09a67847edff7f806d50a143debd1139b48ad81d 100644
--- a/SimDynamics/DynamicsEngine/BulletEngine/BulletOpenGL/GL_ShapeDrawer.cpp
+++ b/SimDynamics/DynamicsEngine/BulletEngine/BulletOpenGL/GL_ShapeDrawer.cpp
@@ -534,7 +534,7 @@ void GL_ShapeDrawer::drawOpenGL(btScalar* m, const btCollisionShape* shape, cons
                 {
                     const int       s = x >> 4;
                     const GLubyte   b = 180;
-                    GLubyte         c = b + ((s + t & 1) & 1) * (255 - b);
+                    GLubyte         c = b + (((s + t) & 1) & 1) * (255 - b);
                     pi[0] = pi[1] = pi[2] = c;
                     pi += 3;
                 }
diff --git a/SimDynamics/DynamicsEngine/BulletEngine/BulletRobot.cpp b/SimDynamics/DynamicsEngine/BulletEngine/BulletRobot.cpp
index 1e65be5bd56b6947861d98f2ff2af39e6d751526..e93f3af10c8139a0febf873370b36da038c4bc4d 100644
--- a/SimDynamics/DynamicsEngine/BulletEngine/BulletRobot.cpp
+++ b/SimDynamics/DynamicsEngine/BulletEngine/BulletRobot.cpp
@@ -441,7 +441,13 @@ namespace SimDynamics
         links.push_back(i);
 #ifndef DEBUG_FIXED_OBJECTS
 
-        if (enableJointMotors && (joint->isRotationalJoint() || (joint->isTranslationalJoint()) && !ignoreTranslationalJoints))
+        if (
+            enableJointMotors &&
+            (
+                joint->isRotationalJoint() ||
+                (joint->isTranslationalJoint() && !ignoreTranslationalJoints)
+            )
+        )
         {
             // start standard actuator
             actuateNode(joint, joint->getJointValue());
@@ -1092,6 +1098,7 @@ namespace SimDynamics
 
             return slider->getTargetLinMotorVelocity() * 1000; // / BulletObject::ScaleFactor; m -> mm
         }
+        return 0;
     }
 
     double BulletRobot::getJointSpeed(VirtualRobot::RobotNodePtr rn)
diff --git a/SimDynamics/DynamicsEngine/BulletEngine/SimoxCollisionDispatcher.cpp b/SimDynamics/DynamicsEngine/BulletEngine/SimoxCollisionDispatcher.cpp
index d18fbf9ef4797b11077f585924f20fe6856c22ec..b40a0e56b07287413aeb2e896cd9bf25e2bd5dce 100644
--- a/SimDynamics/DynamicsEngine/BulletEngine/SimoxCollisionDispatcher.cpp
+++ b/SimDynamics/DynamicsEngine/BulletEngine/SimoxCollisionDispatcher.cpp
@@ -10,7 +10,7 @@ namespace SimDynamics
 
 
     SimoxCollisionDispatcher::SimoxCollisionDispatcher(BulletEngine* engine, btCollisionConfiguration* collisionConfiguration)
-        : engine(engine), btCollisionDispatcher(collisionConfiguration)
+        : btCollisionDispatcher(collisionConfiguration), engine(engine)
     {
     }
 
diff --git a/SimDynamics/examples/BulletDebugViewer/CMakeLists.txt b/SimDynamics/examples/BulletDebugViewer/CMakeLists.txt
index a5cbe5dfab2907e23a1125a8ad4d97d46524116b..87a98e2c85d6cf2a9b191e229710f67e8190683b 100644
--- a/SimDynamics/examples/BulletDebugViewer/CMakeLists.txt
+++ b/SimDynamics/examples/BulletDebugViewer/CMakeLists.txt
@@ -1,19 +1,19 @@
 PROJECT ( BulletDebugViewer )
 
-INCLUDE(${Simox_DIR}/CMakeModules/SimoxMacros.cmake)
+INCLUDE(${Simox_SOURCE_DIR}/CMakeModules/SimoxMacros.cmake)
 
 IF (SimDynamics_USE_BULLET_USE_GLUT)
 	include_directories(${GLUT_INCLUDE_DIR})
 	message("GLUT_INCLUDE_DIR:${GLUT_INCLUDE_DIR}")
 	# create the executable
 	SimoxApplication(${PROJECT_NAME} "BulletDebugViewerGlut.cpp" "")
-        TARGET_LINK_LIBRARIES(${PROJECT_NAME} PRIVATE SimDynamics BulletOpenGLSupport ${Simox_EXTERNAL_LIBRARIES})
+        TARGET_LINK_LIBRARIES(${PROJECT_NAME} PRIVATE SimDynamics BulletOpenGLSupport)
 ELSE(SimDynamics_USE_BULLET_USE_GLUT)
 
 	IF(WIN32)
 		SET (SRC
 			"BulletDebugViewerWin32.cpp"
-			"${Simox_DIR}/SimDynamics/DynamicsEngine/BulletEngine/BulletOpenGL/Win32AppMain.cpp"
+			"${Simox_SOURCE_DIR}/SimDynamics/DynamicsEngine/BulletEngine/BulletOpenGL/Win32AppMain.cpp"
 		)
 		#"Win32BasicDemo.cpp"
 		SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /subsystem:windows")
@@ -34,8 +34,8 @@ SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${Simo
 install(TARGETS ${PROJECT_NAME}
   # IMPORTANT: Add the library to the "export-set"
   EXPORT SimoxTargets
-  RUNTIME DESTINATION "${INSTALL_BIN_DIR}" COMPONENT bin
+  RUNTIME DESTINATION bin COMPONENT bin
   COMPONENT dev)
 
 MESSAGE( STATUS " ** Simox application ${PROJECT_NAME} will be placed into " ${Simox_BIN_DIR})
-MESSAGE( STATUS " ** Simox application ${PROJECT_NAME} will be installed into " ${INSTALL_BIN_DIR})
+MESSAGE( STATUS " ** Simox application ${PROJECT_NAME} will be installed into " bin)
diff --git a/SimDynamics/examples/SimDynamicsViewer/CMakeLists.txt b/SimDynamics/examples/SimDynamicsViewer/CMakeLists.txt
index 55140740f352ac5a038b8581592bcec89ffc2cb0..197942b0551a5769b01ec46fe47e54f506bc4f33 100644
--- a/SimDynamics/examples/SimDynamicsViewer/CMakeLists.txt
+++ b/SimDynamics/examples/SimDynamicsViewer/CMakeLists.txt
@@ -1,6 +1,6 @@
 PROJECT ( SimDynamicsViewer )
 
-INCLUDE(${Simox_DIR}/CMakeModules/SimoxMacros.cmake)
+INCLUDE(${Simox_SOURCE_DIR}/CMakeModules/SimoxMacros.cmake)
 
 IF(Simox_USE_COIN_VISUALIZATION)
    
@@ -16,7 +16,7 @@ IF(Simox_USE_COIN_VISUALIZATION)
     )
 
     SimoxQtApplication("${PROJECT_NAME}" "${demo_SRCS}" "${demo_INCS}" "${GUI_MOC_HDRS}" "${GUI_UIS}")
-    TARGET_LINK_LIBRARIES(${PROJECT_NAME} PRIVATE SimDynamics ${Simox_EXTERNAL_LIBRARIES})
+    TARGET_LINK_LIBRARIES(${PROJECT_NAME} PRIVATE SimDynamics)
     
     SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES FOLDER "Examples")
     SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${Simox_BIN_DIR})
@@ -28,9 +28,9 @@ IF(Simox_USE_COIN_VISUALIZATION)
     install(TARGETS ${PROJECT_NAME}
       # IMPORTANT: Add the library to the "export-set"
       EXPORT SimoxTargets
-      RUNTIME DESTINATION "${INSTALL_BIN_DIR}" COMPONENT bin
+      RUNTIME DESTINATION bin COMPONENT bin
       COMPONENT dev)
     
     MESSAGE( STATUS " ** Simox application ${PROJECT_NAME} will be placed into " ${Simox_BIN_DIR})
-    MESSAGE( STATUS " ** Simox application ${PROJECT_NAME} will be installed into " ${INSTALL_BIN_DIR})
+    MESSAGE( STATUS " ** Simox application ${PROJECT_NAME} will be installed into " bin)
 ENDIF()
diff --git a/VirtualRobot/CMakeLists.txt b/VirtualRobot/CMakeLists.txt
index e3c3b55fca869383dc97b5950e80ae6d5f3bfd34..442082f155235a94b5b24d2f31e5817bb05cb506 100644
--- a/VirtualRobot/CMakeLists.txt
+++ b/VirtualRobot/CMakeLists.txt
@@ -1,19 +1,172 @@
 PROJECT ( VirtualRobot )
 
-MESSAGE (STATUS "\n***** CONFIGURING Simox project VirtualRobot *****")
+add_library(VirtualRobot SHARED VirtualRobot.h) # sources will be added later
+
+target_include_directories(VirtualRobot PUBLIC
+    $<BUILD_INTERFACE:${Simox_SOURCE_DIR}>
+    $<BUILD_INTERFACE:${Simox_BINARY_DIR}>
+    $<INSTALL_INTERFACE:include>
+)
+
+target_compile_options(VirtualRobot PUBLIC ${Simox_OS_compile_options})
+
+#######################################################################
+# Setup dependencies
+#######################################################################
+### RBDL
+if (Simox_USE_RBDL)
+    FIND_PACKAGE (RBDL)
+    if (RBDL_FOUND)
+        MESSAGE(STATUS "RBDL found at: ${RBDL_INCLUDE_DIR}")
+        target_include_directories(VirtualRobot PUBLIC ${RBDL_INCLUDE_DIR})
+        target_link_libraries(VirtualRobot PUBLIC ${RBDL_LIBRARIES})
+    else ()
+        MESSAGE(STATUS "RBDL not found!")
+    endif ()
+endif()
+
+#### NLOPT
+if (Simox_USE_NLOPT)
+    FIND_PACKAGE(NLOPT)
+    if (NLOPT_FOUND)
+        MESSAGE(STATUS "NLOPT found at: ${NLOPT_INCLUDE_DIRS}")
+        target_include_directories(VirtualRobot PUBLIC ${NLOPT_INCLUDE_DIRS})
+        target_link_libraries(VirtualRobot PUBLIC ${NLOPT_LIBRARIES})
+    else ()
+        MESSAGE(STATUS "NLOPT not found")
+    endif ()
+endif ()
+
+#### Eigen
+FIND_PACKAGE (Eigen3 REQUIRED)
+target_include_directories(VirtualRobot SYSTEM PUBLIC ${Eigen3_INCLUDE_DIR})
+
+#### BOOST
+FIND_PACKAGE(Boost COMPONENTS filesystem system program_options thread REQUIRED)
+MESSAGE (STATUS "Boost found at: ${Boost_INCLUDE_DIR}")
+
+target_include_directories(VirtualRobot PUBLIC ${Boost_INCLUDE_DIR})
+target_link_libraries(VirtualRobot PUBLIC ${Boost_LIBRARIES})
+# disable boost auto linking
+if (Boost_USE_STATIC_LIBS)
+    target_compile_definitions(VirtualRobot PUBLIC -DBOOST_ALL_NO_LIB -DBOOST_TEST_MAIN)
+else (Boost_USE_STATIC_LIBS)
+    # enable dynamic linking for specific boost libraries
+    target_compile_definitions(VirtualRobot PUBLIC
+        -DBOOST_ALL_NO_LIB
+        -DBOOST_PROGRAM_OPTIONS_DYN_LINK
+        -DBOOST_FILESYSTEM_DYN_LINK
+        -DBOOST_SYSTEM_DYN_LINK
+        -DBOOST_THREAD_DYN_LINK)
+endif ()
+
+
+##########################################
+#### VISUALIZATION Coin3D+Qt+SoQt / OSG+Qt
+
+
+if (Simox_USE_COIN_VISUALIZATION)
+    MESSAGE(STATUS "Searching Coin3D, Qt and SoQt...")
+
+    ##### Coin3D
+    FIND_PACKAGE(Coin3D REQUIRED)
+    if (COIN3D_FOUND)
+        MESSAGE (STATUS "Found Coin3D: " ${COIN3D_INCLUDE_DIRS})
+        set(Simox_VISUALIZATION  TRUE CACHE BOOL "")
 
-CMAKE_MINIMUM_REQUIRED(VERSION 2.6.2)
-CMAKE_POLICY(VERSION 2.6)
+        target_include_directories(VirtualRobot PUBLIC ${COIN3D_INCLUDE_DIRS})
+        target_link_libraries(VirtualRobot PUBLIC ${COIN3D_LIBRARIES})
+        target_compile_definitions(VirtualRobot PUBLIC -DCOIN_DLL)
+    endif ()
 
-if(NOT ("${CMAKE_VERSION}" VERSION_LESS 2.8.12))
-    cmake_policy(SET CMP0022 OLD) # avoid INTERFACE_LINK_LIBRARIES warnings
-ENDIF()
-if(POLICY CMP0020)
-    cmake_policy(SET CMP0020 NEW) # qtmain add lib dependency (no effect in our case)
+
+    if ( Qt5_FOUND )
+        MESSAGE (STATUS "Found Qt5: " ${Qt5Gui_INCLUDE_DIRS}  ${Qt5OpenGL_INCLUDE_DIRS} )        
+        target_link_libraries(VirtualRobot PUBLIC Qt5::Core Qt5::Gui Qt5::OpenGL Qt5::Widgets)
+    else ( )
+        MESSAGE (STATUS "Did not find Qt. Disabling Qt/SoQt support.")
+    endif ( )
+
+    if (Qt5_FOUND AND COIN3D_FOUND)
+        #### SoQt
+        # This will set SoQt_INCLUDE_DIRS and SoQt_LIBRARIES
+        FIND_PACKAGE(SoQt)
+        set(SOQT_FOUND  ${SOQT_FOUND} CACHE INTERNAL "")
+
+        if (NOT SOQT_FOUND)
+            MESSAGE (STATUS "Did not find SoQt. Disabling SoQt support.")
+        else ()
+            MESSAGE (STATUS "Found SoQt:" ${SoQt_INCLUDE_DIRS})
+            MESSAGE (STATUS "Enabling Coin3D/Qt/SoQt support")
+
+            set(Simox_VISUALIZATION  TRUE CACHE BOOL "")
+            set(Simox_BUILD_EXAMPLES ON CACHE BOOL "Build example applications")
+
+            target_include_directories(VirtualRobot PUBLIC ${SoQt_INCLUDE_DIRS})
+            target_link_libraries(VirtualRobot PUBLIC ${SoQt_LIBRARIES})
+            target_compile_definitions(VirtualRobot PUBLIC -DSOQT_DLL -DSIMOX_USE_SOQT)
+
+            if (NOT UNIX)
+                target_link_libraries(VirtualRobot PUBLIC opengl32)
+          endif()
+        endif()
+    endif()
+elseif (Simox_USE_OPENSCENEGRAPH_VISUALIZATION)
+    MESSAGE(STATUS "Searching OSG and Qt...")
+    FIND_PACKAGE(OpenSceneGraph REQUIRED osgViewer osgUtil osgDB osgGA)
+
+    if (Qt5_FOUND AND OPENSCENEGRAPH_FOUND)
+        MESSAGE (STATUS "Enabling OSG/Qt support")
+        ### a little hack is needed here since osgQt is not supported in the FindOSG script
+        MESSAGE(STATUS "OPENSCENEGRAPH_LIBRARIES: ${OPENSCENEGRAPH_LIBRARIES}")
+        LIST(GET OPENSCENEGRAPH_LIBRARIES 1 firstOsgLib)
+        MESSAGE(STATUS "firstOsgLib: ${firstOsgLib}")
+        GET_FILENAME_COMPONENT(osgLibPath ${firstOsgLib} PATH)
+        MESSAGE(STATUS "osgLibPath: ${osgLibPath}")
+        if (UNIX)
+            list(APPEND OPENSCENEGRAPH_LIBRARIES ${osgLibPath}/libosgQt.so)
+        else()
+            list(APPEND OPENSCENEGRAPH_LIBRARIES optimized)
+            list(APPEND OPENSCENEGRAPH_LIBRARIES ${osgLibPath}/osgQt.lib)
+            list(APPEND OPENSCENEGRAPH_LIBRARIES debug)
+            list(APPEND OPENSCENEGRAPH_LIBRARIES ${osgLibPath}/osgQtd.lib)
+        endif()
+        MESSAGE(STATUS "OPENSCENEGRAPH_LIBRARIES: ${OPENSCENEGRAPH_LIBRARIES}")
+        set(Simox_VISUALIZATION  TRUE CACHE BOOL "")
+
+
+        target_include_directories(VirtualRobot PUBLIC ${OPENSCENEGRAPH_INCLUDE_DIRS})
+        target_link_libraries(VirtualRobot PUBLIC ${OPENSCENEGRAPH_LIBRARIES})
+    endif()
+else()
+    MESSAGE(STATUS "Visualization disabled")
 endif()
 
-INCLUDE (Cxx11Test)
-SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CXX11_FLAG}")
+if (Simox_USE_COLLADA)
+    MESSAGE(STATUS "Searching for Collada...")
+    FIND_PACKAGE(COLLADA_DOM REQUIRED 2.4)
+
+    IF(COLLADA_DOM_FOUND)
+        MESSAGE (STATUS "Found Collada")
+        MESSAGE (STATUS "* Collada COLLADA_DOM_ROOT_DIR : ${COLLADA_DOM_ROOT_DIR}")
+        MESSAGE (STATUS "* Collada Include DIRS: ${COLLADA_DOM_INCLUDE_DIRS}")
+        MESSAGE (STATUS "* Collada Libs: ${COLLADA_DOM_LIBRARIES}")
+        MESSAGE (STATUS "* Collada COLLADA_DOM_LIBRARY_DIRS: ${COLLADA_DOM_LIBRARY_DIRS}")
+
+        FIND_LIBRARY(COLLADA_LIBRARY ${COLLADA_DOM_LIBRARIES} ${COLLADA_DOM_LIBRARY_DIRS})
+        MESSAGE (STATUS "Collada Full Collada lib: ${COLLADA_LIBRARY}")
+
+        target_include_directories(VirtualRobot PUBLIC ${COLLADA_DOM_INCLUDE_DIRS})
+        target_link_libraries(VirtualRobot PUBLIC ${COLLADA_LIBRARY})
+        target_compile_definitions(VirtualRobot PUBLIC -DDOM_DYNAMIC )
+    ENDIF()
+endif()
+
+##########################################################################################################
+##########################################################################################################
+##########################################################################################################
+
+MESSAGE (STATUS "\n***** CONFIGURING Simox project VirtualRobot *****")
 
 if (Simox_USE_RBDL)
     FIND_PACKAGE (RBDL)
@@ -21,22 +174,16 @@ endif()
 
 if (Simox_USE_NLOPT)
     FIND_PACKAGE (NLOPT)
-    if (NLOPT_FOUND)
-        ADD_DEFINITIONS(-DUSE_NLOPT)
-    endif()
 endif()
 
 ########################### TESTING #####################################
 MACRO(ADD_VR_TEST TEST_NAME)
-    INCLUDE_DIRECTORIES(SYSTEM ${Simox_EXTERNAL_INCLUDE_DIRS})
-    INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR})
-    INCLUDE_DIRECTORIES("${PROJECT_SOURCE_DIR}/..")
-    ADD_DEFINITIONS(${Simox_EXTERNAL_LIBRARY_FLAGS})
-    if (NOT Boost_USE_STATIC_LIBS)
-        ADD_DEFINITIONS(-DBOOST_TEST_DYN_LINK)
-    endif (NOT Boost_USE_STATIC_LIBS)
     ADD_EXECUTABLE(${TEST_NAME} ${CMAKE_CURRENT_SOURCE_DIR}/${TEST_NAME}.cpp)
-    TARGET_LINK_LIBRARIES(${TEST_NAME} PRIVATE VirtualRobot ${Simox_EXTERNAL_LIBRARIES} ${Boost_TEST_LIB})
+    TARGET_LINK_LIBRARIES(${TEST_NAME} PRIVATE VirtualRobot boost_unit_test_framework)
+    target_include_directories(${TEST_NAME} PRIVATE ${PROJECT_SOURCE_DIR} ${PROJECT_SOURCE_DIR}/..)
+    if (NOT Boost_USE_STATIC_LIBS)
+        target_compile_definitions(${TEST_NAME} PRIVATE -DBOOST_TEST_DYN_LINK)
+    endif ()
     SET_TARGET_PROPERTIES(${TEST_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${Simox_TEST_DIR})
     SET_TARGET_PROPERTIES(${TEST_NAME} PROPERTIES FOLDER "VirtualRobot Tests")
     ADD_TEST(NAME VirtualRobot_${TEST_NAME}
@@ -393,8 +540,11 @@ if (Simox_USE_NLOPT AND NLOPT_FOUND)
     )
 endif ()
 
-if (Simox_VISUALIZATION AND Simox_USE_COIN_VISUALIZATION)
-
+MESSAGE (STATUS "Simox_VISUALIZATION                   : ${Simox_VISUALIZATION}")
+MESSAGE (STATUS "Simox_USE_COIN_VISUALIZATION          : ${Simox_USE_COIN_VISUALIZATION}")
+MESSAGE (STATUS "Simox_USE_OPENSCENEGRAPH_VISUALIZATION: ${Simox_USE_OPENSCENEGRAPH_VISUALIZATION}")
+if (Simox_VISUALIZATION AND Simox_USE_COIN_VISUALIZATION)    
+    MESSAGE (STATUS "adding Coin3d visualzation")
     SET(SOURCES
     ${SOURCES}
     Visualization/CoinVisualization/CoinVisualizationFactory.cpp
@@ -444,61 +594,19 @@ elseif (Simox_VISUALIZATION AND Simox_USE_OPENSCENEGRAPH_VISUALIZATION)
     Visualization/OSGVisualization/osgQtWidget/osgViewerWidget.h
     )
 
-    set(GUI_MOC_HDRS
-        Visualization/OSGVisualization/osgQtWidget/osgViewerWidget.h
-    )
-    if (Simox_USE_QT4)
-        qt4_wrap_cpp(SOURCES ${GUI_MOC_HDRS})
-        else()
-        qt5_wrap_cpp(SOURCES ${GUI_MOC_HDRS})
-    endif()
-
     if(BUILD_TESTING)
         ADD_SUBDIRECTORY(Visualization/OSGVisualization/tests)
     endif()
 endif ()
 
-#if (Simox_USE_COLLADA)
-#
-#    SET(SOURCES
-#    ${SOURCES}
-#    Import/SimoxCOLLADAFactory.cpp
-#    COLLADA/ColladaIO.cpp
-#    COLLADA/ColladaParser.cpp
-#    )
-#
-#    SET(INCLUDES
-#    ${INCLUDES}
-#    Import/SimoxCOLLADAFactory.h
-#    COLLADA/ColladaIO.h
-#    COLLADA/ColladaIterators.h
-#    COLLADA/ColladaParser.h
-#    )
-#endif ()
-
-
 #check for URDF
 if (Simox_USE_URDF)
     include(SearchForTinyXML)
     FIND_PACKAGE(urdfdom)
-    #FIND_PACKAGE(PkgConfig)
-    #PKG_CHECK_MODULES(URDFDOM REQUIRED urdfdom>=0.2.9)
-    #PKG_CHECK_MODULES(URDFDOM_HEADERS REQUIRED urdfdom_headers>=0.2.3)
 
     if (tinyxml_library AND URDF_FOUND)
         MESSAGE(STATUS " ** Including URDF importer")
 
-        include_directories(SYSTEM ${tinyxml_include_dirs})
-        link_directories(${tinyxml_library_dirs})
-        add_definitions(${tinyxml_cflags})
-        add_definitions(" -DTIXML_USE_STL ")
-
-        INCLUDE_DIRECTORIES (SYSTEM
-            ${URDFDOM_INCLUDE_DIRS}
-            ${URDFDOM_PARSER_INCLUDE_DIRS}
-            ${URDFDOM_HEADERS_INCLUDE_DIRS}
-        )
-
         SET(SOURCES
           ${SOURCES}
             Import/URDF/SimoxURDFFactory.cpp
@@ -508,7 +616,7 @@ if (Simox_USE_URDF)
             Import/URDF/SimoxURDFFactory.h
             )
 
-        SET(Simox_EXTERNAL_LIBRARIES ${Simox_EXTERNAL_LIBRARIES} ${URDFDOM_LIBRARIES})
+        target_link_libraries(VirtualRobot PUBLIC ${URDFDOM_LIBRARIES})
     else()
         MESSAGE(STATUS " *** urdfDom or TinyXML not found: skipping URDF importer...")
     endif()
@@ -532,35 +640,39 @@ endif()
 # Adding the UI files to the library
 if (Simox_USE_COIN_VISUALIZATION AND SOQT_FOUND)
     MESSAGE (STATUS " ** Adding GraspEditor gui")
-    set(UI
-        Grasping/GraspEditor/GraspEditor.ui
-    )
-    
-  if (Simox_USE_QT4)
-        QT4_WRAP_UI(UI_HEADERS ${UI})
-        QT4_WRAP_CPP(MOC_SRC
-            Grasping/GraspEditor/GraspEditorWindow.h
-        )
-    else()
-        QT5_WRAP_UI(UI_HEADERS ${UI})
-        QT5_WRAP_CPP(MOC_SRC
-            Grasping/GraspEditor/GraspEditorWindow.h
-        )
-  endif()
-
     
-    set(INCLUDES ${INCLUDES} ${UI_HEADERS})
 
-    SET(SOURCES ${SOURCES} ${MOC_SRC} "Grasping/GraspEditor/GraspEditorWindow.cpp")
-    SET(INCLUDES ${INCLUDES} "Grasping/GraspEditor/GraspEditorWindow.h")
+    SET(SOURCES ${SOURCES} Grasping/GraspEditor/GraspEditorWindow.cpp)
+    SET(INCLUDES ${INCLUDES}
+        Grasping/GraspEditor/GraspEditorWindow.h
+        Grasping/GraspEditor/GraspEditor.ui
+    )
 endif()
 
 # Finished adding UI files
 #-----------------------------------------------------------------------------------
+set_target_properties(VirtualRobot PROPERTIES SOURCES "${SOURCES};${INCLUDES}")
 
-ADD_LIBRARY (VirtualRobot SHARED ${SOURCES} ${INCLUDES})
-TARGET_LINK_LIBRARIES(VirtualRobot PUBLIC ColCheckerPQP ${Simox_EXTERNAL_LIBRARIES})
-target_include_directories(VirtualRobot SYSTEM PUBLIC ${Simox_EXTERNAL_INCLUDE_DIRS})
+target_compile_definitions(VirtualRobot PUBLIC
+    "-DVirtualRobot_SRC_DATA_PATH=\"${Simox_DATA_DIR}\""
+    "-DSimox_DATA_PATH=\"${Simox_INSTALL_DATA_DIR}\""
+)
+if (Simox_USE_NLOPT AND NLOPT_FOUND)
+    target_compile_definitions(VirtualRobot PUBLIC -DUSE_NLOPT)
+endif()
+
+
+if (Simox_USE_URDF AND tinyxml_library AND URDF_FOUND)
+        target_include_directories(VirtualRobot SYSTEM PUBLIC ${tinyxml_include_dirs})
+        target_compile_options(VirtualRobot PUBLIC ${tinyxml_library_dirs})
+        target_compile_definitions(VirtualRobot PUBLIC ${tinyxml_cflags} -DTIXML_USE_STL)
+
+        target_include_directories(VirtualRobot SYSTEM PUBLIC
+            ${URDFDOM_INCLUDE_DIRS}
+            ${URDFDOM_PARSER_INCLUDE_DIRS}
+            ${URDFDOM_HEADERS_INCLUDE_DIRS}
+        )
+endif()
 
 # against undefined reference to boost::filesystem::detail::copy_file
 # source: https://stackoverflow.com/a/3500721
@@ -581,17 +693,13 @@ SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES ARCHIVE_OUTPUT_DIRECTORY ${Simo
 ############################ Setup for installation ###################################
 #######################################################################################
 
-#set_target_properties(${PROJECT_NAME} PROPERTIES
-#  PUBLIC_HEADER "${INCLUDES}")
-
 install(TARGETS ${PROJECT_NAME}
     # IMPORTANT: Add the library to the "export-set"
     EXPORT SimoxTargets
-    RUNTIME DESTINATION "${INSTALL_BIN_DIR}" COMPONENT bin
-    LIBRARY DESTINATION "${INSTALL_LIB_DIR}" COMPONENT shlib
-    ARCHIVE DESTINATION "${INSTALL_LIB_DIR}" COMPONENT library
+    RUNTIME DESTINATION bin COMPONENT bin
+    LIBRARY DESTINATION lib COMPONENT shlib
+    ARCHIVE DESTINATION lib COMPONENT library
     COMPONENT dev)
-    #  PUBLIC_HEADER DESTINATION "${INSTALL_INCLUDE_DIR}/VirtualRobot"
  
 INSTALL(DIRECTORY ${PROJECT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR} DESTINATION "${Simox_INSTALL_HEADER_DIR}"
     COMPONENT Headers
diff --git a/VirtualRobot/CollisionDetection/CMakeLists.txt b/VirtualRobot/CollisionDetection/CMakeLists.txt
index 8f41cbf5e41bbd462c66d8f7cd0714499da4c3a2..3298b79f43778a59c09a350a5694b2529e47f200 100644
--- a/VirtualRobot/CollisionDetection/CMakeLists.txt
+++ b/VirtualRobot/CollisionDetection/CMakeLists.txt
@@ -3,7 +3,6 @@
 FILE(GLOB SRCS ${PROJECT_SOURCE_DIR}/*.cpp)
 
 # check for requested collision detection wrappers
-OPTION(Simox_COLLISION_CHECKER_PQP "Build and use the PQP Collision Detection library (located in ExternalDependencies)" ON)
 IF (Simox_COLLISION_CHECKER_PQP)
 	MESSAGE (STATUS " ** COLLISION DETECTION: PQP")
 	SET (COL_CHECKER_WRAPPER_DIR ${PROJECT_SOURCE_DIR}/CollisionDetection/PQP)	
@@ -13,13 +12,14 @@ IF (Simox_COLLISION_CHECKER_PQP)
 	SET(COLLISIONDETECTION_INC_DIR ${COLLISIONDETECTION_DIR})
 	SET(COLLISIONDETECTION_LIB_DIR ${Simox_LIB_DIR})
 	
-	# create PQP lib
-	ADD_SUBDIRECTORY(${COLLISIONDETECTION_DIR})
+        # create PQP lib
+        ADD_SUBDIRECTORY(${COLLISIONDETECTION_DIR})
+        target_link_libraries(VirtualRobot PUBLIC ColCheckerPQP)
 ELSE()
 	# DUMMY
 	MESSAGE (STATUS "WARNING: NO LIBRARY DEFINED FOR COLLISION DETECTION: COLLISION DETECTION IS DISABLED!")
 	SET (COL_CHECKER_WRAPPER_DIR ${PROJECT_SOURCE_DIR}/CollisionDetection/Dummy)	
-	SET(COLLISIONDETECTION_DIR ${Simox_DIR}/VirtualRobot/CollisionDetection/Dummy)
+	SET(COLLISIONDETECTION_DIR ${Simox_SOURCE_DIR}/VirtualRobot/CollisionDetection/Dummy)
 	SET(COLLISIONDETECTION_INC_DIR ${COLLISIONDETECTION_DIR})
 	SET(COLLISIONDETECTION_LIB_DIR ${Simox_LIB_DIR})
 ENDIF ()
@@ -31,6 +31,7 @@ FILE (GLOB INCS_COL ${COL_CHECKER_WRAPPER_DIR}/*.h)
 SET (SOURCES ${SOURCES} ${SRCS_COL})
 SET (INCLUDES ${INCLUDES} ${INCS_COL})
 
-LINK_DIRECTORIES(${COLLISIONDETECTION_LIB_DIR})
-INCLUDE_DIRECTORIES(${COL_CHECKER_WRAPPER_DIR} ${COLLISIONDETECTION_INC_DIR})
+target_include_directories(VirtualRobot PRIVATE ${COL_CHECKER_WRAPPER_DIR} ${COLLISIONDETECTION_INC_DIR})
+
+
 
diff --git a/VirtualRobot/CollisionDetection/PQP/PQP++/CMakeLists.txt b/VirtualRobot/CollisionDetection/PQP/PQP++/CMakeLists.txt
index 74c929302202bde930a21ae2624de2ea6750ee51..e912235271d8eecb9a70d4f38c715830f8f0c4c8 100644
--- a/VirtualRobot/CollisionDetection/PQP/PQP++/CMakeLists.txt
+++ b/VirtualRobot/CollisionDetection/PQP/PQP++/CMakeLists.txt
@@ -2,47 +2,36 @@ PROJECT(ColCheckerPQP)
 
 MESSAGE (STATUS " **** Configuring PQP")
 
-ADD_DEFINITIONS(-DUSE_PQP)
-
 # Specify headers and sources
 FILE(GLOB SRCS ${PROJECT_SOURCE_DIR}/*.cpp)
 FILE(GLOB INCS ${PROJECT_SOURCE_DIR}/*.h)
 
-INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR})
-
 ADD_LIBRARY(${PROJECT_NAME} STATIC ${SRCS} ${INCS})
+TARGET_INCLUDE_DIRECTORIES(${PROJECT_NAME} PRIVATE ${PROJECT_SOURCE_DIR})
+
+target_compile_definitions(${PROJECT_NAME} PUBLIC -DUSE_PQP)
 SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES FOLDER "3rd_Party")
 IF(UNIX)
-	# We are on Linux
-	ADD_DEFINITIONS(-fPIC)
-ENDIF(UNIX)
+    # We are on Linux
+    target_compile_options(${PROJECT_NAME} PUBLIC -fPIC)
+ENDIF()
 
 MESSAGE(STATUS " ** ${PROJECT_NAME}  will be placed into " ${Simox_LIB_DIR})
 
-
 # .DLL path
 SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${Simox_BIN_DIR})
 # .so path
 SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${Simox_LIB_DIR})
 # .lib path (this is needed for setting the DLL-import library path on windows)
 SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES ARCHIVE_OUTPUT_DIRECTORY ${Simox_LIB_DIR})
-
-
-  
   
 #######################################################################################
 ############################ Setup for installation ###################################
 #######################################################################################
-
-
-#set_target_properties(${PROJECT_NAME} PROPERTIES
-#  PUBLIC_HEADER "${INCS}")
-
 install(TARGETS ${PROJECT_NAME}
   # IMPORTANT: Add the library to the "export-set"
   EXPORT SimoxTargets
-  RUNTIME DESTINATION "${INSTALL_BIN_DIR}" COMPONENT bin
-  LIBRARY DESTINATION "${INSTALL_LIB_DIR}" COMPONENT shlib
-  ARCHIVE DESTINATION "${INSTALL_LIB_DIR}" COMPONENT library
+  RUNTIME DESTINATION bin COMPONENT bin
+  LIBRARY DESTINATION lib COMPONENT shlib
+  ARCHIVE DESTINATION lib COMPONENT library
   COMPONENT dev)
-#  PUBLIC_HEADER DESTINATION "${INSTALL_INCLUDE_DIR}/VirtualRobot"
diff --git a/VirtualRobot/CollisionDetection/PQP/PQP++/TriDist.cpp b/VirtualRobot/CollisionDetection/PQP/PQP++/TriDist.cpp
index c38e066b7b16f6413ade9fd29e3839aaa442bf4d..40182092082d879ab3a58af1779ecfd770021c65 100644
--- a/VirtualRobot/CollisionDetection/PQP/PQP++/TriDist.cpp
+++ b/VirtualRobot/CollisionDetection/PQP/PQP++/TriDist.cpp
@@ -234,9 +234,11 @@ namespace PQP
         // Even if these tests fail, it may be helpful to know the closest
         // points found, and whether the triangles were shown disjoint
 
-        PQP_REAL V[3];
-        PQP_REAL Z[3];
-        PQP_REAL minP[3], minQ[3], mindd;
+        PQP_REAL V[3] = {0,0,0};
+        PQP_REAL Z[3] = {0,0,0};
+        PQP_REAL minP[3] = {0,0,0};
+        PQP_REAL minQ[3] = {0,0,0};
+        PQP_REAL mindd = 0;
         int shown_disjoint = 0;
 
         mindd = pqp_math.VdistV2(S[0], T[0]) + 1; // Set first minimum safely high
diff --git a/VirtualRobot/Grasping/GraspEditor/GraspEditorWindow.cpp b/VirtualRobot/Grasping/GraspEditor/GraspEditorWindow.cpp
index a3005f9dd79542efca86f045de47cf2b084999fb..43524368baca28c98871a0d39eb242a971cba7bc 100644
--- a/VirtualRobot/Grasping/GraspEditor/GraspEditorWindow.cpp
+++ b/VirtualRobot/Grasping/GraspEditor/GraspEditorWindow.cpp
@@ -27,7 +27,7 @@
 
 #include <sstream>
 
-#include <VirtualRobot/ui_GraspEditor.h>
+#include "ui_GraspEditor.h"
 
 
 using namespace std;
diff --git a/VirtualRobot/Import/COLLADA-light/Example/CMakeLists.txt b/VirtualRobot/Import/COLLADA-light/Example/CMakeLists.txt
index 7b8deeba7e694046b8eb7ac7f075805335e0628d..0fa202aa44b9c174789d666451990af95ea4e067 100644
--- a/VirtualRobot/Import/COLLADA-light/Example/CMakeLists.txt
+++ b/VirtualRobot/Import/COLLADA-light/Example/CMakeLists.txt
@@ -1,10 +1,11 @@
 cmake_minimum_required (VERSION 2.6)
 project (collada)
-include_directories( "../pugixml" "/usr/include/qt4" "/usr/include/qt4/QT" "/usr/include/qt4/QtCore" "/usr/include/eigen3" )
 
 add_executable(collada ../collada.cpp ../inventor.cpp viewer.cpp ../pugixml/pugixml.cpp)
+
+TARGET_INCLUDE_DIRECTORIES(collada PUBLIC "../pugixml" "/usr/include/qt4" "/usr/include/qt4/QT" "/usr/include/qt4/QtCore" "/usr/include/eigen3" )
 target_link_libraries(collada Coin SoQt boost_system boost_timer)
-add_definitions(-DTIMER_DEBUG)
+target_compile_definitions(collada PUBLIC -DTIMER_DEBUG)
 set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -g")
 
 find_package(Doxygen)
diff --git a/VirtualRobot/Import/URDF/CMakeLists.txt b/VirtualRobot/Import/URDF/CMakeLists.txt
index f01dc5cb375b3aa10e093a4a7b5584bea58a5f36..e46f64c1df98ad28a4856c4513988f836d021097 100644
--- a/VirtualRobot/Import/URDF/CMakeLists.txt
+++ b/VirtualRobot/Import/URDF/CMakeLists.txt
@@ -4,44 +4,39 @@ LIST( APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/CMake )
 
 include(SearchForTinyXML)
 FIND_PACKAGE(urdfdom)
-#FIND_PACKAGE(PkgConfig)
-#PKG_CHECK_MODULES(URDFDOM REQUIRED urdfdom>=0.2.9)
-#PKG_CHECK_MODULES(URDFDOM_HEADERS REQUIRED urdfdom_headers>=0.2.3)
 
 if (tinyxml_library AND URDF_FOUND)
+    SET ( URDFIMPORT_SOURCES
+            SimoxURDFFactory.cpp
+            )
+    SET ( URDFIMPORT_HEADERS
+            SimoxURDFFactory.h
+            )
+
+    ADD_LIBRARY ( simox_urdfimport SHARED ${URDFIMPORT_SOURCES}  ${URDFIMPORT_HEADERS}  )
 
-    include_directories(SYSTEM ${tinyxml_include_dirs})
-    link_directories(${tinyxml_library_dirs})
-    add_definitions(${tinyxml_cflags})
-    add_definitions("-DTIXML_USE_STL")
+    target_include_directories(simox_urdfimport SYSTEM PUBLIC ${tinyxml_include_dirs})
+    #arget_link_directories(${tinyxml_library_dirs})
+    target_compile_definitions(simox_urdfimport PUBLIC ${tinyxml_cflags})
+    target_compile_definitions(simox_urdfimport PUBLIC "-DTIXML_USE_STL")
 
     FIND_PACKAGE(simox REQUIRED)
-    INCLUDE_DIRECTORIES (
+
+    target_INCLUDE_DIRECTORIES (simox_urdfimport PUBLIC
 	    ${URDFDOM_INCLUDE_DIRS}
 	    ${URDFDOM_PARSER_INCLUDE_DIRS}
 	    ${URDFDOM_HEADERS_INCLUDE_DIRS}
     )
-    setupSimoxExternalLibraries()
-
 
     SET (CMAKE_SKIP_BUILD_RPATH FALSE)
     SET (CMAKE_BUILD_WITH_INSTALL_RPATH FALSE)
     SET (CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib")
     SET (CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
 
-    SET ( URDFIMPORT_SOURCES
-	    SimoxURDFFactory.cpp
-	    )
-    SET ( URDFIMPORT_HEADERS
-	    SimoxURDFFactory.h
-	    )
 
-    ADD_LIBRARY ( simox_urdfimport SHARED ${URDFIMPORT_SOURCES}  ${URDFIMPORT_HEADERS}  )
-
-    add_definitions("-DDEMO_BASE_PATH=\"${PROJECT_SOURCE_DIR}\"")
     ADD_EXECUTABLE (loadURDFobot loadURDFobot.cpp)
+    target_compile_definitions(loadURDFobot PUBLIC "-DDEMO_BASE_PATH=\"${PROJECT_SOURCE_DIR}\"")
     
     TARGET_LINK_LIBRARIES (simox_urdfimport VirtualRobot ${URDFDOM_LIBRARIES})
     TARGET_LINK_LIBRARIES(loadURDFobot simox_urdfimport VirtualRobot ${URDFDOM_LIBRARIES})
-
 endif()
diff --git a/VirtualRobot/MathTools.h b/VirtualRobot/MathTools.h
index 109cb6d450c667df02dc71ff414c59d7e3bc57bf..4880d89c01b580bc9eec04c2873e6296bc4186c5 100644
--- a/VirtualRobot/MathTools.h
+++ b/VirtualRobot/MathTools.h
@@ -392,9 +392,9 @@ namespace VirtualRobot
         */
         struct ContactPoint
         {
-            Eigen::Vector3f p;  // point
-            Eigen::Vector3f n;  // normal
-            float force;
+            Eigen::Vector3f p = Eigen::Vector3f::Zero();  // point
+            Eigen::Vector3f n = Eigen::Vector3f::Zero();  // normal
+            float force = 0;
         };
 
         struct TriangleFace
diff --git a/VirtualRobot/TimeOptimalTrajectory/Path.cpp b/VirtualRobot/TimeOptimalTrajectory/Path.cpp
index fe51f30425a256a40943b5cca2baa67f646b50f6..cc792aa93757d13f73d7cd9facc31c5d70711867 100644
--- a/VirtualRobot/TimeOptimalTrajectory/Path.cpp
+++ b/VirtualRobot/TimeOptimalTrajectory/Path.cpp
@@ -53,9 +53,9 @@ namespace VirtualRobot
     {
     public:
         LinearPathSegment(const Eigen::VectorXd &start, const Eigen::VectorXd &end) :
+            PathSegment((end-start).norm()),
             start(start),
-            end(end),
-            PathSegment((end-start).norm())
+            end(end)
         {
         }
 
diff --git a/VirtualRobot/TimeOptimalTrajectory/TimeOptimalTrajectory.cpp b/VirtualRobot/TimeOptimalTrajectory/TimeOptimalTrajectory.cpp
index bfbd33daa8691eb7bf731c786faa1d9869047bbe..40226d2d773ecaf69137b03774d2b858da82b025 100644
--- a/VirtualRobot/TimeOptimalTrajectory/TimeOptimalTrajectory.cpp
+++ b/VirtualRobot/TimeOptimalTrajectory/TimeOptimalTrajectory.cpp
@@ -326,7 +326,7 @@ namespace VirtualRobot
         list<TimeOptimalTrajectoryStep>::iterator start1 = start2;
         start1--;
         list<TimeOptimalTrajectoryStep> trajectory;
-        double slope;
+        double slope = 0;
         assert(start1->pathPos <= pathPos);
 
         while(start1 != startTrajectory.begin() || pathPos >= 0.0)
diff --git a/VirtualRobot/Workspace/VoxelTreeND.hpp b/VirtualRobot/Workspace/VoxelTreeND.hpp
index ab7fd8aeb741e8cf91cfee4a25fc0fb20fae3a53..ea58bfa23d7cbaa2c0d44cd242ecf25813e5d981 100644
--- a/VirtualRobot/Workspace/VoxelTreeND.hpp
+++ b/VirtualRobot/Workspace/VoxelTreeND.hpp
@@ -76,7 +76,7 @@ namespace VirtualRobot
             memcpy(this->maxExtend, maxExtend, sizeof(float)*N);
             memcpy(this->discretization, discretization, sizeof(float)*N);
 
-            for (int i = 0; i < N; i++)
+            for (unsigned int i = 0; i < N; i++)
             {
                 size[i] = maxExtend[i] - minExtend[i];
                 THROW_VR_EXCEPTION_IF(size[i] <= 0.0f, "Invalid extend parameters?!");
@@ -85,7 +85,7 @@ namespace VirtualRobot
 
             int maxSteps = 0;
 
-            for (int i = 0; i < N; i++)
+            for (unsigned int i = 0; i < N; i++)
             {
                 int steps = (int)(size[i] / discretization[i] + 0.5f);
 
@@ -105,9 +105,9 @@ namespace VirtualRobot
             float newExtend[N];
             memcpy(newExtend, size, sizeof(float)*N);
 
-            for (int a = 0; a < maxLevels; a++)
+            for (unsigned int a = 0; a < maxLevels; a++)
             {
-                for (int b = 0; b < N; b++)
+                for (unsigned int b = 0; b < N; b++)
                 {
                     elementExtends(a, b) = newExtend[b];
                     newExtend[b] *= 0.5f;
@@ -123,7 +123,7 @@ namespace VirtualRobot
                 VR_INFO << "Extends (min/max/size):" << endl;
                 std::streamsize pr = std::cout.precision(2);
 
-                for (int i = 0; i < N; i++)
+                for (unsigned int i = 0; i < N; i++)
                 {
                     cout << std::fixed << minExtend[i] << "," << maxExtend[i] << " -> " << size[i] << endl;
                     cout << std::fixed << "\tdiscretization:" << discretization[i] << ". Max leafs:" << (int)(size[i] / discretization[i] + 0.5f) << endl;
@@ -300,7 +300,7 @@ namespace VirtualRobot
                 int64_t nrElements = FileIO::read<int64_t>(file);
 
                 // id
-                int64_t expectedID = FileIO::read<int64_t>(file);
+                /*int64_t expectedID = */FileIO::read<int64_t>(file);
 
                 // create dummy elements to be filled afterwards
                 float p[N];
@@ -332,7 +332,7 @@ namespace VirtualRobot
                     size_t dataSize = sizeof(unsigned int);
                     bzip2->read((void*)(&(d.id)), dataSize, n);
 
-                    if (n != dataSize)
+                    if (static_cast<size_t>(n) != dataSize)
                     {
                         VR_ERROR << "Invalid number of bytes?!" << endl;
                         bzip2->close();
@@ -379,7 +379,7 @@ namespace VirtualRobot
                     dataSize = sizeof(bool);
                     bzip2->read((void*)(&(leaf)), dataSize, n);
 
-                    if (n != dataSize)
+                    if (static_cast<size_t>(n) != dataSize)
                     {
                         VR_ERROR << "Invalid number of bytes?!" << endl;
                         bzip2->close();
@@ -396,7 +396,7 @@ namespace VirtualRobot
                         dataSize = sizeof(T);
                         bzip2->read((void*)(&(d.entry)), dataSize, n);
 
-                        if (n != dataSize)
+                        if (static_cast<size_t>(n) != dataSize)
                         {
                             VR_ERROR << "Invalid number of bytes?!" << endl;
                             bzip2->close();
@@ -412,7 +412,7 @@ namespace VirtualRobot
 
                         bzip2->read((void*)(&(childIDs[0])), dataSize, n);
 
-                        if (n != dataSize)
+                        if (static_cast<size_t>(n) != dataSize)
                         {
                             VR_ERROR << "Invalid number of bytes?!" << endl;
                             bzip2->close();
@@ -557,7 +557,7 @@ namespace VirtualRobot
                     {
                         // write children ids
                         dataSize = sizeof(unsigned int) * numChildren;
-                        THROW_VR_EXCEPTION_IF(numChildren != d.children.size(), "Internal error, numChildren wrong...");
+                        THROW_VR_EXCEPTION_IF(static_cast<size_t>(numChildren) != d.children.size(), "Internal error, numChildren wrong...");
 
                         for (int j = 0; j < numChildren; j++)
                         {
@@ -806,7 +806,7 @@ namespace VirtualRobot
         */
         float getExtends(int level, int dim)
         {
-            THROW_VR_EXCEPTION_IF(dim >= N || dim < 0, "Index out of bounds");
+            THROW_VR_EXCEPTION_IF(static_cast<size_t>(dim) >= N || dim < 0, "Index out of bounds");
             return elementExtends(level, dim);
         }
         int getNumChildren()
@@ -850,5 +850,4 @@ namespace VirtualRobot
 
 
 
-} // namespace
-
+}
diff --git a/VirtualRobot/examples/CameraViewer/CMakeLists.txt b/VirtualRobot/examples/CameraViewer/CMakeLists.txt
index cddcb8f3bca1c7cdf0b96f4a18fd99d2f18f8bbe..7f715c375da6fa82f230de3241eb8621580eb360 100644
--- a/VirtualRobot/examples/CameraViewer/CMakeLists.txt
+++ b/VirtualRobot/examples/CameraViewer/CMakeLists.txt
@@ -1,6 +1,6 @@
 PROJECT ( CameraViewer )
 
-INCLUDE(${Simox_DIR}/CMakeModules/SimoxMacros.cmake)
+INCLUDE(${Simox_SOURCE_DIR}/CMakeModules/SimoxMacros.cmake)
 
 IF(Simox_VISUALIZATION AND Simox_USE_COIN_VISUALIZATION)
 
@@ -32,7 +32,7 @@ IF(Simox_VISUALIZATION AND Simox_USE_COIN_VISUALIZATION)
 
     find_package(OpenGL REQUIRED)
     if(OPENGL_FOUND)
-        include_directories(SYSTEM ${OPENGL_INCLUDE_DIR})
+        target_include_directories(${PROJECT_NAME} SYSTEM PRIVATE ${OPENGL_INCLUDE_DIR})
         TARGET_LINK_LIBRARIES(${PROJECT_NAME} PRIVATE ${OPENGL_LIBRARIES})
     endif(OPENGL_FOUND)
 
@@ -46,10 +46,10 @@ IF(Simox_VISUALIZATION AND Simox_USE_COIN_VISUALIZATION)
   install(TARGETS ${PROJECT_NAME}
     # IMPORTANT: Add the library to the "export-set"
     EXPORT SimoxTargets
-    RUNTIME DESTINATION "${INSTALL_BIN_DIR}" COMPONENT bin
+    RUNTIME DESTINATION bin COMPONENT bin
     COMPONENT dev)
 
   MESSAGE( STATUS " ** Simox application ${PROJECT_NAME} will be placed into " ${Simox_BIN_DIR})
-  MESSAGE( STATUS " ** Simox application ${PROJECT_NAME} will be installed into " ${INSTALL_BIN_DIR})
+  MESSAGE( STATUS " ** Simox application ${PROJECT_NAME} will be installed into " bin)
 
 ENDIF()
diff --git a/VirtualRobot/examples/ConstrainedIK/CMakeLists.txt b/VirtualRobot/examples/ConstrainedIK/CMakeLists.txt
index ec7b407c074944d4c23c697a66fd54204c25eb46..772a3c328af36f6c075f86585d7cdcd30002e8f1 100644
--- a/VirtualRobot/examples/ConstrainedIK/CMakeLists.txt
+++ b/VirtualRobot/examples/ConstrainedIK/CMakeLists.txt
@@ -1,6 +1,6 @@
 PROJECT ( ConstrainedIKDemo )
 
-INCLUDE(${Simox_DIR}/CMakeModules/SimoxMacros.cmake)
+INCLUDE(${Simox_SOURCE_DIR}/CMakeModules/SimoxMacros.cmake)
 
 IF(Simox_VISUALIZATION AND Simox_USE_COIN_VISUALIZATION AND NLOPT_FOUND)
 
@@ -23,10 +23,10 @@ IF(Simox_VISUALIZATION AND Simox_USE_COIN_VISUALIZATION AND NLOPT_FOUND)
     install(TARGETS ${PROJECT_NAME}
         # IMPORTANT: Add the library to the "export-set"
         EXPORT SimoxTargets
-        RUNTIME DESTINATION "${INSTALL_BIN_DIR}" COMPONENT bin
+        RUNTIME DESTINATION bin COMPONENT bin
         COMPONENT dev
     )
 
   MESSAGE( STATUS " ** Simox application ${PROJECT_NAME} will be placed into " ${Simox_BIN_DIR})
-  MESSAGE( STATUS " ** Simox application ${PROJECT_NAME} will be installed into " ${INSTALL_BIN_DIR})
+  MESSAGE( STATUS " ** Simox application ${PROJECT_NAME} will be installed into " bin)
 ENDIF()
diff --git a/VirtualRobot/examples/GenericIK/CMakeLists.txt b/VirtualRobot/examples/GenericIK/CMakeLists.txt
index 23ce6bb98a205ff6dd160430d86260dbcb652a2f..ced985e7b93a32e782d174781dfd53b26c849331 100644
--- a/VirtualRobot/examples/GenericIK/CMakeLists.txt
+++ b/VirtualRobot/examples/GenericIK/CMakeLists.txt
@@ -1,6 +1,6 @@
 PROJECT ( GenericIKDemo )
 
-INCLUDE(${Simox_DIR}/CMakeModules/SimoxMacros.cmake)
+INCLUDE(${Simox_SOURCE_DIR}/CMakeModules/SimoxMacros.cmake)
 
 IF(Simox_VISUALIZATION AND Simox_USE_COIN_VISUALIZATION)
 
@@ -29,9 +29,9 @@ IF(Simox_VISUALIZATION AND Simox_USE_COIN_VISUALIZATION)
   install(TARGETS ${PROJECT_NAME}
     # IMPORTANT: Add the library to the "export-set"
     EXPORT SimoxTargets
-    RUNTIME DESTINATION "${INSTALL_BIN_DIR}" COMPONENT bin
+    RUNTIME DESTINATION bin COMPONENT bin
     COMPONENT dev)
 
   MESSAGE( STATUS " ** Simox application ${PROJECT_NAME} will be placed into " ${Simox_BIN_DIR})
-  MESSAGE( STATUS " ** Simox application ${PROJECT_NAME} will be installed into " ${INSTALL_BIN_DIR})
+  MESSAGE( STATUS " ** Simox application ${PROJECT_NAME} will be installed into " bin)
 ENDIF()
diff --git a/VirtualRobot/examples/GraspEditor/CMakeLists.txt b/VirtualRobot/examples/GraspEditor/CMakeLists.txt
index a2ba102aa21c4f5edbfa142d50bb4b3de502b855..f645bdb9e8626dae2cc5afc5b2b921aca37e9b7f 100644
--- a/VirtualRobot/examples/GraspEditor/CMakeLists.txt
+++ b/VirtualRobot/examples/GraspEditor/CMakeLists.txt
@@ -1,6 +1,6 @@
 PROJECT ( GraspEditor )
 
-INCLUDE(${Simox_DIR}/CMakeModules/SimoxMacros.cmake)
+INCLUDE(${Simox_SOURCE_DIR}/CMakeModules/SimoxMacros.cmake)
 
 IF(Simox_VISUALIZATION AND Simox_USE_COIN_VISUALIZATION)
 
@@ -20,11 +20,11 @@ IF(Simox_VISUALIZATION AND Simox_USE_COIN_VISUALIZATION)
 	install(TARGETS ${PROJECT_NAME}
 		# IMPORTANT: Add the library to the "export-set"
 		EXPORT SimoxTargets
-		RUNTIME DESTINATION "${INSTALL_BIN_DIR}" COMPONENT bin
+		RUNTIME DESTINATION bin COMPONENT bin
 		COMPONENT dev)
 
 	MESSAGE( STATUS " ** Simox application ${PROJECT_NAME} will be placed into " ${Simox_BIN_DIR})
-	MESSAGE( STATUS " ** Simox application ${PROJECT_NAME} will be installed into " ${INSTALL_BIN_DIR})
+	MESSAGE( STATUS " ** Simox application ${PROJECT_NAME} will be installed into " bin)
 
 
 ENDIF()
diff --git a/VirtualRobot/examples/Jacobi/CMakeLists.txt b/VirtualRobot/examples/Jacobi/CMakeLists.txt
index cf168c3d59288583ccd4eec0998a9f6bc1e5bedf..ac35755d4e1e185bb7d85c4364c57c1635a4be05 100644
--- a/VirtualRobot/examples/Jacobi/CMakeLists.txt
+++ b/VirtualRobot/examples/Jacobi/CMakeLists.txt
@@ -1,6 +1,6 @@
 PROJECT ( JacobiDemo )
 
-INCLUDE(${Simox_DIR}/CMakeModules/SimoxMacros.cmake)
+INCLUDE(${Simox_SOURCE_DIR}/CMakeModules/SimoxMacros.cmake)
 
 IF(Simox_VISUALIZATION AND Simox_USE_COIN_VISUALIZATION)   
 	    
@@ -30,9 +30,9 @@ IF(Simox_VISUALIZATION AND Simox_USE_COIN_VISUALIZATION)
   install(TARGETS ${PROJECT_NAME}
     # IMPORTANT: Add the library to the "export-set"
     EXPORT SimoxTargets
-    RUNTIME DESTINATION "${INSTALL_BIN_DIR}" COMPONENT bin
+    RUNTIME DESTINATION bin COMPONENT bin
     COMPONENT dev)
 
   MESSAGE( STATUS " ** Simox application ${PROJECT_NAME} will be placed into " ${Simox_BIN_DIR})
-  MESSAGE( STATUS " ** Simox application ${PROJECT_NAME} will be installed into " ${INSTALL_BIN_DIR})
+  MESSAGE( STATUS " ** Simox application ${PROJECT_NAME} will be installed into " bin)
 ENDIF()
diff --git a/VirtualRobot/examples/Legacy/ColladaViewer/CMakeLists.txt b/VirtualRobot/examples/Legacy/ColladaViewer/CMakeLists.txt
index f1f9f1a669298675dae50b2b186bfdc1cff50b43..df6a46c25077ba3502cf76634803634abd03b5b9 100644
--- a/VirtualRobot/examples/Legacy/ColladaViewer/CMakeLists.txt
+++ b/VirtualRobot/examples/Legacy/ColladaViewer/CMakeLists.txt
@@ -6,7 +6,6 @@ IF(Simox_USE_COIN_VISUALIZATION AND Simox_USE_COLLADA)
     GET_FILENAME_COMPONENT (CurrentPath ${CMAKE_CURRENT_LIST_FILE} PATH)
 
     SET(DEMO_BASE_DIR ${PROJECT_SOURCE_DIR})
-    ADD_DEFINITIONS(-DDEMO_BASE_DIR="${DEMO_BASE_DIR}")
 
 	FILE(GLOB demo_SRCS ${PROJECT_SOURCE_DIR}/RobotViewer.cpp
 	                    ${PROJECT_SOURCE_DIR}/showRobotWindow.cpp
@@ -29,17 +28,16 @@ IF(Simox_USE_COIN_VISUALIZATION AND Simox_USE_COLLADA)
         ${PROJECT_SOURCE_DIR}/RobotViewer.ui
     )
 
-
-
-
-    add_definitions( -DDEMO_PATH=\"${PROJECT_SOURCE_DIR}\" )
-    add_definitions( " -DDOM_DYNAMIC " )
-
 	# create the executable
   VirtualRobotQtApplication(${PROJECT_NAME} "${demo_SRCS}" "${demo_INCS}" "${mocFiles}" "${uiFiles}")
   SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${Simox_BIN_DIR})
   SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES FOLDER "Examples")
-   
+
+  TARGET_COMPILE_DEFINITIONS(${PROJECT_NAME} PUBLIC
+      -DDEMO_BASE_DIR="${DEMO_BASE_DIR}"
+      -DDEMO_PATH="${PROJECT_SOURCE_DIR}"
+      -DDOM_DYNAMIC
+    )
   #######################################################################################
   ############################ Setup for installation ###################################
   #######################################################################################
diff --git a/VirtualRobot/examples/ReachabilityMap/CMakeLists.txt b/VirtualRobot/examples/ReachabilityMap/CMakeLists.txt
index 2a88854e0fa5782ba83e627aed8699583226add6..628a3f00a148e6f885b45caddc7ddf71ecd78bbf 100644
--- a/VirtualRobot/examples/ReachabilityMap/CMakeLists.txt
+++ b/VirtualRobot/examples/ReachabilityMap/CMakeLists.txt
@@ -1,6 +1,6 @@
 PROJECT ( ReachabilityMapDemo )
 
-INCLUDE(${Simox_DIR}/CMakeModules/SimoxMacros.cmake)
+INCLUDE(${Simox_SOURCE_DIR}/CMakeModules/SimoxMacros.cmake)
 
 IF(Simox_VISUALIZATION AND Simox_USE_COIN_VISUALIZATION)
      
@@ -27,11 +27,11 @@ IF(Simox_VISUALIZATION AND Simox_USE_COIN_VISUALIZATION)
   install(TARGETS ${PROJECT_NAME}
     # IMPORTANT: Add the library to the "export-set"
     EXPORT SimoxTargets
-    RUNTIME DESTINATION "${INSTALL_BIN_DIR}" COMPONENT bin
+    RUNTIME DESTINATION bin COMPONENT bin
     COMPONENT dev)
           
   MESSAGE( STATUS " ** Simox application ${PROJECT_NAME} will be placed into " ${Simox_BIN_DIR})
-  MESSAGE( STATUS " ** Simox application ${PROJECT_NAME} will be installed into " ${INSTALL_BIN_DIR})
+  MESSAGE( STATUS " ** Simox application ${PROJECT_NAME} will be installed into " bin)
 
 ENDIF()
 
diff --git a/VirtualRobot/examples/RobotViewer/CMakeLists.txt b/VirtualRobot/examples/RobotViewer/CMakeLists.txt
index c1526259d0e8b7d9d4d0cd96efcaf01654b3c3ce..a5d3a4ad1447abdfbb907e2e99c9f3537d5ff02d 100644
--- a/VirtualRobot/examples/RobotViewer/CMakeLists.txt
+++ b/VirtualRobot/examples/RobotViewer/CMakeLists.txt
@@ -1,6 +1,6 @@
 PROJECT ( RobotViewer )
 
-INCLUDE(${Simox_DIR}/CMakeModules/SimoxMacros.cmake)
+INCLUDE(${Simox_SOURCE_DIR}/CMakeModules/SimoxMacros.cmake)
 
 IF(Simox_VISUALIZATION AND Simox_USE_COIN_VISUALIZATION)
  	    
@@ -30,10 +30,10 @@ IF(Simox_VISUALIZATION AND Simox_USE_COIN_VISUALIZATION)
   install(TARGETS ${PROJECT_NAME}
     # IMPORTANT: Add the library to the "export-set"
     EXPORT SimoxTargets
-    RUNTIME DESTINATION "${INSTALL_BIN_DIR}" COMPONENT bin
+    RUNTIME DESTINATION bin COMPONENT bin
     COMPONENT dev)
 
   MESSAGE( STATUS " ** Simox application ${PROJECT_NAME} will be placed into " ${Simox_BIN_DIR})
-  MESSAGE( STATUS " ** Simox application ${PROJECT_NAME} will be installed into " ${INSTALL_BIN_DIR})
+  MESSAGE( STATUS " ** Simox application ${PROJECT_NAME} will be installed into " bin)
 
 ENDIF()
diff --git a/VirtualRobot/examples/RobotViewerOSG/CMakeLists.txt b/VirtualRobot/examples/RobotViewerOSG/CMakeLists.txt
index a93207e64687725311e0682da5df412838c3a953..2a3968865f1efd24f3a0d62ebed5bfd47061b95b 100644
--- a/VirtualRobot/examples/RobotViewerOSG/CMakeLists.txt
+++ b/VirtualRobot/examples/RobotViewerOSG/CMakeLists.txt
@@ -1,6 +1,6 @@
 PROJECT ( RobotViewerOSG )
 
-INCLUDE(${Simox_DIR}/CMakeModules/SimoxMacros.cmake)
+INCLUDE(${Simox_SOURCE_DIR}/CMakeModules/SimoxMacros.cmake)
 
 IF(Simox_VISUALIZATION AND Simox_USE_OPENSCENEGRAPH_VISUALIZATION)
 
@@ -33,35 +33,9 @@ IF(Simox_VISUALIZATION AND Simox_USE_OPENSCENEGRAPH_VISUALIZATION)
   install(TARGETS ${PROJECT_NAME}
     # IMPORTANT: Add the library to the "export-set"
     EXPORT SimoxTargets
-    RUNTIME DESTINATION "${INSTALL_BIN_DIR}" COMPONENT bin
+    RUNTIME DESTINATION bin COMPONENT bin
     COMPONENT dev)
 
   MESSAGE( STATUS " ** Simox application ${PROJECT_NAME} will be placed into " ${Simox_BIN_DIR})
-  MESSAGE( STATUS " ** Simox application ${PROJECT_NAME} will be installed into " ${INSTALL_BIN_DIR})
-
-  #qt4_wrap_cpp(demo_SRCS ${GUI_MOC_HDRS})
-  #qt4_wrap_ui(UI_HEADER ${GUI_UIS})
-  #get_filename_component(UI_HEADER_DIR ${UI_HEADER} PATH)
-  #list(APPEND demo_INCS ${UI_HEADER})
-
-  #include_directories(${UI_HEADER_DIR})
-
- 
-  #ADD_EXECUTABLE(${PROJECT_NAME} ${demo_SRCS} ${demo_INCS})
-  #SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES FOLDER "Examples")
-  #SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${Simox_BIN_DIR})
-
-  #TARGET_LINK_LIBRARIES(${PROJECT_NAME} VirtualRobot ${VirtualRobot_VISUALIZATION_LIBS})
-  #INCLUDE_DIRECTORIES(${VirtualRobot_VISUALIZATION_INCLUDE_PATHS})
-  #INCLUDE_DIRECTORIES(${COLLADA_DOM_INCLUDE_DIRS})
-  #INCLUDE(${QT_USE_FILE})
-  #ADD_DEFINITIONS(${VirtualRobot_VISUALIZATION_COMPILE_FLAGS})
-
-  #INSTALL(TARGETS ${PROJECT_NAME}
-  #  DESTINATION ${VirtualRobot_INSTALL_BIN_DIR}
-  #  COMPONENT Applications
-  #)
-
-  #  MESSAGE( STATUS ${PROJECT_NAME} " will be placed into " ${VirtualRobot_BIN_DIR})
-  #  MESSAGE( STATUS ${PROJECT_NAME} " will be installed into " ${VirtualRobot_INSTALL_BIN_DIR})
+  MESSAGE( STATUS " ** Simox application ${PROJECT_NAME} will be installed into " bin)
 ENDIF()
diff --git a/VirtualRobot/examples/SceneViewer/CMakeLists.txt b/VirtualRobot/examples/SceneViewer/CMakeLists.txt
index b79a97a76382879705142953a5c795c4aebbd67b..c1130e63c9672005554491525362ecf957bc1e98 100644
--- a/VirtualRobot/examples/SceneViewer/CMakeLists.txt
+++ b/VirtualRobot/examples/SceneViewer/CMakeLists.txt
@@ -1,6 +1,6 @@
 PROJECT ( SimoxSceneViewer )
 
-INCLUDE(${Simox_DIR}/CMakeModules/SimoxMacros.cmake)
+INCLUDE(${Simox_SOURCE_DIR}/CMakeModules/SimoxMacros.cmake)
 
 IF(Simox_VISUALIZATION AND Simox_USE_COIN_VISUALIZATION)
 	    
@@ -29,10 +29,10 @@ IF(Simox_VISUALIZATION AND Simox_USE_COIN_VISUALIZATION)
   install(TARGETS ${PROJECT_NAME}
     # IMPORTANT: Add the library to the "export-set"
     EXPORT SimoxTargets
-    RUNTIME DESTINATION "${INSTALL_BIN_DIR}" COMPONENT bin
+    RUNTIME DESTINATION bin COMPONENT bin
     COMPONENT dev)
 
   MESSAGE( STATUS " ** Simox application ${PROJECT_NAME} will be placed into " ${Simox_BIN_DIR})
-  MESSAGE( STATUS " ** Simox application ${PROJECT_NAME} will be installed into " ${INSTALL_BIN_DIR})
+  MESSAGE( STATUS " ** Simox application ${PROJECT_NAME} will be installed into " bin)
 
 ENDIF()
diff --git a/VirtualRobot/examples/Simox2Mjcf/CMakeLists.txt b/VirtualRobot/examples/Simox2Mjcf/CMakeLists.txt
index c5eced7f21ef61d66ff355252275073d3bec3e1a..744f005d58fac70907d5dd13273df90634181427 100644
--- a/VirtualRobot/examples/Simox2Mjcf/CMakeLists.txt
+++ b/VirtualRobot/examples/Simox2Mjcf/CMakeLists.txt
@@ -41,10 +41,10 @@ if (Boost_FOUND)
     install(TARGETS ${PROJECT_NAME}
         # IMPORTANT: Add the library to the "export-set"
         EXPORT SimoxTargets
-        RUNTIME DESTINATION "${INSTALL_BIN_DIR}" COMPONENT bin
+        RUNTIME DESTINATION bin COMPONENT bin
         COMPONENT dev)
     
     message( STATUS " ** Simox application ${PROJECT_NAME} will be placed into " ${Simox_BIN_DIR})
-    message( STATUS " ** Simox application ${PROJECT_NAME} will be installed into " ${INSTALL_BIN_DIR})
+    message( STATUS " ** Simox application ${PROJECT_NAME} will be installed into " bin)
 
 endif()
diff --git a/VirtualRobot/examples/loadRobot/CMakeLists.txt b/VirtualRobot/examples/loadRobot/CMakeLists.txt
index c09c20c43137994325cb51c8537973527bd42c29..714188e4f7f4e3104c8ddf3c1a5667d5dd705924 100644
--- a/VirtualRobot/examples/loadRobot/CMakeLists.txt
+++ b/VirtualRobot/examples/loadRobot/CMakeLists.txt
@@ -14,8 +14,8 @@ TARGET_LINK_LIBRARIES(${PROJECT_NAME} PRIVATE VirtualRobot)
 install(TARGETS ${PROJECT_NAME}
   # IMPORTANT: Add the library to the "export-set"
   EXPORT SimoxTargets
-  RUNTIME DESTINATION "${INSTALL_BIN_DIR}" COMPONENT bin
+  RUNTIME DESTINATION bin COMPONENT bin
   COMPONENT dev)
         
 MESSAGE( STATUS " ** Simox application ${PROJECT_NAME} will be placed into " ${Simox_BIN_DIR})
-MESSAGE( STATUS " ** Simox application ${PROJECT_NAME} will be installed into " ${INSTALL_BIN_DIR})
+MESSAGE( STATUS " ** Simox application ${PROJECT_NAME} will be installed into " bin)
diff --git a/VirtualRobot/examples/loadURDFRobot/CMakeLists.txt b/VirtualRobot/examples/loadURDFRobot/CMakeLists.txt
index d900a34aed9e32f78a65d5356d593e145079ae3b..c6ad82d1811e4fc06dcd0376e548dc78ff1d4f44 100644
--- a/VirtualRobot/examples/loadURDFRobot/CMakeLists.txt
+++ b/VirtualRobot/examples/loadURDFRobot/CMakeLists.txt
@@ -1,24 +1,12 @@
 PROJECT ( loadURDFRobot )
 
 if (tinyxml_library AND URDF_FOUND)
-
-  include_directories(SYSTEM ${tinyxml_include_dirs})
-  link_directories(${tinyxml_library_dirs})
-  add_definitions(${tinyxml_cflags})
-  add_definitions(" -DTIXML_USE_STL ")
-  
-  INCLUDE_DIRECTORIES (SYSTEM
-    ${URDFDOM_INCLUDE_DIRS}
-    ${URDFDOM_PARSER_INCLUDE_DIRS}
-    ${URDFDOM_HEADERS_INCLUDE_DIRS}
-  )
-  add_definitions("-DDEMO_BASE_PATH=\"${PROJECT_SOURCE_DIR}\"")
   ADD_EXECUTABLE(${PROJECT_NAME} loadURDFobot.cpp)
   SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${Simox_BIN_DIR})
   SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES FOLDER "Examples")
 
   TARGET_LINK_LIBRARIES(${PROJECT_NAME} PRIVATE VirtualRobot ${URDFDOM_LIBRARIES})
-  
+  target_compile_definitions(${PROJECT_NAME} PRIVATE "-DDEMO_BASE_PATH=\"${PROJECT_SOURCE_DIR}\"")
   
   #######################################################################################
   ############################ Setup for installation ###################################
@@ -27,11 +15,11 @@ if (tinyxml_library AND URDF_FOUND)
   install(TARGETS ${PROJECT_NAME}
     # IMPORTANT: Add the library to the "export-set"
     EXPORT SimoxTargets
-    RUNTIME DESTINATION "${INSTALL_BIN_DIR}" COMPONENT bin
+    RUNTIME DESTINATION bin COMPONENT bin
     COMPONENT dev)
           
   MESSAGE( STATUS " ** Simox application ${PROJECT_NAME} will be placed into " ${Simox_BIN_DIR})
-  MESSAGE( STATUS " ** Simox application ${PROJECT_NAME} will be installed into " ${INSTALL_BIN_DIR})
+  MESSAGE( STATUS " ** Simox application ${PROJECT_NAME} will be installed into " bin)
 
 endif()
 
diff --git a/VirtualRobot/examples/reachability/CMakeLists.txt b/VirtualRobot/examples/reachability/CMakeLists.txt
index 3331f40d6d42b5fc9fc426eb61003c3be171cb52..e8a71b5d809b26b080d9a66fb06f072fe6a5ddf2 100644
--- a/VirtualRobot/examples/reachability/CMakeLists.txt
+++ b/VirtualRobot/examples/reachability/CMakeLists.txt
@@ -1,6 +1,6 @@
 PROJECT ( ReachabilityDemo )
 
-INCLUDE(${Simox_DIR}/CMakeModules/SimoxMacros.cmake)
+INCLUDE(${Simox_SOURCE_DIR}/CMakeModules/SimoxMacros.cmake)
 
 IF(Simox_VISUALIZATION AND Simox_USE_COIN_VISUALIZATION)
 	    
@@ -30,10 +30,10 @@ IF(Simox_VISUALIZATION AND Simox_USE_COIN_VISUALIZATION)
   install(TARGETS ${PROJECT_NAME}
     # IMPORTANT: Add the library to the "export-set"
     EXPORT SimoxTargets
-    RUNTIME DESTINATION "${INSTALL_BIN_DIR}" COMPONENT bin
+    RUNTIME DESTINATION bin COMPONENT bin
     COMPONENT dev)
 
   MESSAGE( STATUS " ** Simox application ${PROJECT_NAME} will be placed into " ${Simox_BIN_DIR})
-  MESSAGE( STATUS " ** Simox application ${PROJECT_NAME} will be installed into " ${INSTALL_BIN_DIR})
+  MESSAGE( STATUS " ** Simox application ${PROJECT_NAME} will be installed into " bin)
   
 ENDIF()
diff --git a/VirtualRobot/examples/stability/CMakeLists.txt b/VirtualRobot/examples/stability/CMakeLists.txt
index 9ea56cff1be08de497d9dad8f1d291d4e99eb74d..6949f7fcfc5b0d457fd52993d760dd3fc824445a 100644
--- a/VirtualRobot/examples/stability/CMakeLists.txt
+++ b/VirtualRobot/examples/stability/CMakeLists.txt
@@ -1,6 +1,6 @@
 PROJECT ( StabilityDemo )
 
-INCLUDE(${Simox_DIR}/CMakeModules/SimoxMacros.cmake)
+INCLUDE(${Simox_SOURCE_DIR}/CMakeModules/SimoxMacros.cmake)
 
 IF(Simox_VISUALIZATION AND Simox_USE_COIN_VISUALIZATION)
 	    
@@ -30,10 +30,10 @@ IF(Simox_VISUALIZATION AND Simox_USE_COIN_VISUALIZATION)
   install(TARGETS ${PROJECT_NAME}
     # IMPORTANT: Add the library to the "export-set"
     EXPORT SimoxTargets
-    RUNTIME DESTINATION "${INSTALL_BIN_DIR}" COMPONENT bin
+    RUNTIME DESTINATION bin COMPONENT bin
     COMPONENT dev)
 
   MESSAGE( STATUS " ** Simox application ${PROJECT_NAME} will be placed into " ${Simox_BIN_DIR})
-  MESSAGE( STATUS " ** Simox application ${PROJECT_NAME} will be installed into " ${INSTALL_BIN_DIR})
+  MESSAGE( STATUS " ** Simox application ${PROJECT_NAME} will be installed into " bin)
 
 ENDIF()
diff --git a/VirtualRobot/tests/CMakeLists.txt b/VirtualRobot/tests/CMakeLists.txt
index 36cea17a9ec85b44d1cf7044ec1c479b9c544f20..112052c6fb14f0f5ec8e3b8b5339d37f2507e058 100644
--- a/VirtualRobot/tests/CMakeLists.txt
+++ b/VirtualRobot/tests/CMakeLists.txt
@@ -5,7 +5,7 @@ ADD_VR_TEST( VirtualRobotRobotTest )
 
 ADD_VR_TEST( VirtualRobotTransformationTest )
 
-if (VirtualRobot_VISUALIZATION)
+if (Simox_VISUALIZATION)
 	ADD_VR_TEST( VirtualRobotCollisionTest )
 endif()
 
diff --git a/config.cmake b/config.cmake
deleted file mode 100644
index 49608f6fe8fc0cc88cd000c192170355eecb1c3d..0000000000000000000000000000000000000000
--- a/config.cmake
+++ /dev/null
@@ -1,406 +0,0 @@
-
-IF (NOT Simox_CONFIGURED)
-
-    # defines Simox_CONFIGURED variable which indicates that this config file has already been included
-    SET(Simox_CONFIGURED TRUE)
-
-    # Set up build type
-    IF(NOT CMAKE_BUILD_TYPE)
-    SET(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING
-        "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel."
-        FORCE)
-    ENDIF()
-
-    GET_FILENAME_COMPONENT (CurrentSimoxPath ${CMAKE_CURRENT_LIST_FILE} PATH)
-    MESSAGE (STATUS "** Simox_DIR: ${CurrentSimoxPath}")
-    SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CurrentSimoxPath}/CMakeModules)
-    SET(Simox_BUILD_DIRECTORY ${CMAKE_BINARY_DIR})
-    SET(Simox_DIR ${CurrentSimoxPath})
-    
-    # Offer the user the choice of overriding the installation directories
-    set(INSTALL_LIB_DIR lib CACHE PATH "Installation directory for libraries")
-    set(INSTALL_BIN_DIR bin CACHE PATH "Installation directory for executables")
-    set(INSTALL_INCLUDE_DIR include CACHE PATH
-    "Installation directory for header files")
-    if(WIN32 AND NOT CYGWIN)
-        set(DEF_INSTALL_CMAKE_DIR CMake)
-    else()
-        set(DEF_INSTALL_CMAKE_DIR share/Simox/cmake)
-    endif()
-    set(INSTALL_CMAKE_DIR ${DEF_INSTALL_CMAKE_DIR} CACHE PATH
-        "Installation directory for CMake files")
-
-    # Almost all examples require soqt. It will be set to ON if soqt is found.
-    set(Simox_BUILD_EXAMPLES OFF CACHE BOOL "Build example applications")
- 
-    # Make relative paths absolute (needed later on) 
-    # -> disabled this since it produced lots of problems with generation of SimoxCOnfig.cmake
-    #foreach(p LIB BIN INCLUDE CMAKE)
-    #  set(var INSTALL_${p}_DIR)
-    #  if(NOT IS_ABSOLUTE "${${var}}")
-    #    set(${var} "${CMAKE_INSTALL_PREFIX}/${${var}}")
-    #  endif()
-    #endforeach()
- 
-    # set up include-directories
-    include_directories(
-        "${PROJECT_SOURCE_DIR}"   # to find headers
-        "${PROJECT_BINARY_DIR}")  # to find config headers
-    
-    ############################# VERSION #################################
-    set(Simox_MAJOR_VERSION 2)
-    set(Simox_MINOR_VERSION 3)
-    set(Simox_PATCH_VERSION 73)
-    set(Simox_VERSION
-    ${Simox_MAJOR_VERSION}.${Simox_MINOR_VERSION}.${Simox_PATCH_VERSION})
-
-    MESSAGE (STATUS "** Simox version: ${Simox_VERSION}")
-
-    ############################# SETUP PATHS #############################
-    SET(Simox_BUILD_DIRECTORY ${CMAKE_BINARY_DIR})
-    SET(BIN_DIR bin)
-    SET(LIB_DIR lib)
-    SET(DATA_DIR data)
-
-    SET(Simox_LIB_DIR ${Simox_BUILD_DIRECTORY}/${LIB_DIR})
-    SET(Simox_BIN_DIR ${Simox_BUILD_DIRECTORY}/${BIN_DIR})
-    SET(Simox_DATA_DIR ${CurrentSimoxPath}/VirtualRobot/data)
-
-    MESSAGE (STATUS "** SIMOX LIB DIR: ${Simox_LIB_DIR}")
-    MESSAGE (STATUS "** SIMOX BIN DIR: ${Simox_BIN_DIR}")
-    MESSAGE (STATUS "** SIMOX DATA DIR: ${Simox_DATA_DIR}")
-
-    SET(Simox_INSTALL_LIB_DIR ${LIB_DIR})
-    SET(Simox_INSTALL_BIN_DIR ${BIN_DIR})
-    SET(Simox_INSTALL_DATA_DIR ${DATA_DIR})
-    SET(Simox_INSTALL_HEADER_DIR include)
-    MESSAGE (STATUS "** SIMOX INSTALL LIB DIR: ${Simox_INSTALL_LIB_DIR}")
-    MESSAGE (STATUS "** SIMOX INSTALL BIN DIR: ${Simox_INSTALL_BIN_DIR}")
-    MESSAGE (STATUS "** SIMOX INSTALL DATA DIR: ${Simox_INSTALL_DATA_DIR}")
-    MESSAGE (STATUS "** SIMOX INSTALL HEADER DIR: ${Simox_INSTALL_HEADER_DIR}")
-
-    ADD_DEFINITIONS("-DVirtualRobot_SRC_DATA_PATH=\"${Simox_DATA_DIR}\"")
-    ADD_DEFINITIONS("-DSimox_DATA_PATH=\"${Simox_INSTALL_DATA_DIR}\"")
-
-    ########################### IDE settings ################################
-    # use virtual folders for grouping projects in IDEs 
-    set_property(GLOBAL PROPERTY USE_FOLDERS ON)
-
-    ############################# Set OS specific options #############################
-    IF(UNIX)
-        # We are on Linux
-        SET(Simox_TEST_DIR ${Simox_BIN_DIR}/tests)
-        IF(CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64")
-            ADD_DEFINITIONS(-fPIC)
-        ENDIF(CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64")
-  
-        IF(${CMAKE_BUILD_TYPE} STREQUAL "Debug")
-            MESSAGE(STATUS "Configuring Debug build")
-            ADD_DEFINITIONS(-D_DEBUG) # -Wall -W -Werror -pedantic)
-        ELSE()
-            MESSAGE(STATUS "Configuring Release build")
-        ENDIF()
-  
-        # use, i.e. don't skip the full RPATH for the build tree
-        SET(CMAKE_SKIP_BUILD_RPATH  FALSE)
-  
-        # when building, don't use the install RPATH already
-        # (but later on when installing)
-        SET(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE) 
-        SET(CMAKE_INSTALL_RPATH "${Simox_INSTALL_LIB_DIR}")
-        # add the automatically determined parts of the RPATH
-        # which point to directories outside the build tree to the install RPATH
-        SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
-  
-        # the RPATH to be used when installing, but only if it's not a system directory
-        LIST(FIND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES "${Simox_INSTALL_LIB_DIR}" isSystemDir)
-        IF("${isSystemDir}" STREQUAL "-1")
-            SET(CMAKE_INSTALL_RPATH "${Simox_INSTALL_LIB_DIR}")
-        ENDIF("${isSystemDir}" STREQUAL "-1")
-  
-    ELSE(UNIX)
-        # We are on Windows
-        SET(Simox_TEST_DIR ${Simox_BIN_DIR})
-        ADD_DEFINITIONS(" -D_CRT_SECURE_NO_WARNINGS ")
-        ADD_DEFINITIONS(" -DWIN32_LEAN_AND_MEAN ") # avoid errors with winsock / winsock2 includes
-  
-        # On MSVC we compile with /MP flag (use multiple threads)
-        IF(MSVC)
-            ADD_DEFINITIONS(/MP)
-        ENDIF(MSVC)
-    ENDIF(UNIX)
-
-    #######################################################################
-    # Setup for testing
-    #######################################################################
-    ENABLE_TESTING()
-    INCLUDE(CTest)
-    MESSAGE(STATUS "** Test output directory: ${Simox_TEST_DIR}")
-    ADD_DEFINITIONS(-DSimox_TEST_DIR=\"${Simox_TEST_DIR}/\")
-
-    #######################################################################
-    # Setup dependencies
-    #######################################################################
-    SET (Simox_EXTERNAL_INCLUDE_DIRS "")
-    SET (Simox_EXTERNAL_LIBRARIES "")
-    SET (Simox_EXTERNAL_LIBRARY_DIRS "")
-    SET (Simox_EXTERNAL_LIBRARY_FLAGS "")
-    SET (Simox_EXTERNAL_LIBRARY_CMAKE_INCLUDE "")
-    
-    ############################# SETUP MODULES #############################
-    MESSAGE (STATUS "** Module path: "  ${CMAKE_MODULE_PATH})
-
-    ### RBDL
-    OPTION (Simox_USE_RBDL "Use RBDL" OFF)
-    if (Simox_USE_RBDL)
-        FIND_PACKAGE (RBDL)
-        if (RBDL_FOUND)
-            MESSAGE(STATUS "RBDL found at: ${RBDL_INCLUDE_DIR}")
-            SET (Simox_EXTERNAL_INCLUDE_DIRS ${Simox_EXTERNAL_INCLUDE_DIRS} ${RBDL_INCLUDE_DIR})
-            SET (Simox_EXTERNAL_LIBRARIES ${Simox_EXTERNAL_LIBRARIES} ${RBDL_LIBRARIES})
-        else ()
-            MESSAGE(STATUS "RBDL not found!")
-        endif ()
-    endif()
-    
-    #urdf
-    OPTION (Simox_USE_URDF "Use URDF" OFF)
-
-    #### NLOPT
-    OPTION (Simox_USE_NLOPT "Use NLOPT" ON)
-    if (Simox_USE_NLOPT)
-        FIND_PACKAGE(NLOPT)
-        if (NLOPT_FOUND)
-            MESSAGE(STATUS "NLOPT found at: ${NLOPT_INCLUDE_DIRS}")
-            SET (Simox_EXTERNAL_INCLUDE_DIRS ${Simox_EXTERNAL_INCLUDE_DIRS} ${NLOPT_INCLUDE_DIRS})
-            SET (Simox_EXTERNAL_LIBRARIES ${Simox_EXTERNAL_LIBRARIES} ${NLOPT_LIBRARIES})
-        else ()
-            MESSAGE(STATUS "NLOPT not found")
-        endif ()
-    endif ()
-
-    #### Eigen
-    FIND_PACKAGE (Eigen3 REQUIRED)
-    if (Eigen3_FOUND)
-        SET (Simox_EXTERNAL_INCLUDE_DIRS ${Simox_EXTERNAL_INCLUDE_DIRS} ${Eigen3_INCLUDE_DIR})
-    endif (Eigen3_FOUND)
-    
-    #### BOOST
-    FIND_PACKAGE(Boost 1.46.0 COMPONENTS filesystem system program_options thread REQUIRED)
-    if (Boost_FOUND)
-        MESSAGE (STATUS "Boost found at: ${Boost_INCLUDE_DIR}")
-        SET (Simox_EXTERNAL_INCLUDE_DIRS ${Simox_EXTERNAL_INCLUDE_DIRS} ${Boost_INCLUDE_DIR})
-        SET (Simox_EXTERNAL_LIBRARY_DIRS ${Simox_EXTERNAL_LIBRARY_DIRS} ${Boost_LIBRARY_DIRS})
-        SET (Simox_EXTERNAL_LIBRARIES ${Simox_EXTERNAL_LIBRARIES} ${Boost_LIBRARIES})
-        FIND_PACKAGE(Boost 1.46.0 COMPONENTS unit_test_framework REQUIRED)
-        SET (Boost_TEST_LIB "${Boost_LIBRARIES}")
-        # disable boost auto linking 
-        if (Boost_USE_STATIC_LIBS)
-            SET (Simox_EXTERNAL_LIBRARY_FLAGS "${Simox_EXTERNAL_LIBRARY_FLAGS} -DBOOST_ALL_NO_LIB -DBOOST_TEST_MAIN")
-        else (Boost_USE_STATIC_LIBS)
-            # enable dynamic linking for specific boost libraries
-            SET (Simox_EXTERNAL_LIBRARY_FLAGS "${Simox_EXTERNAL_LIBRARY_FLAGS} -DBOOST_ALL_NO_LIB -DBOOST_PROGRAM_OPTIONS_DYN_LINK -DBOOST_FILESYSTEM_DYN_LINK -DBOOST_SYSTEM_DYN_LINK -DBOOST_THREAD_DYN_LINK")
-        endif (Boost_USE_STATIC_LIBS)
-    else (Boost_FOUND)
-        MESSAGE ("!! Could not find Boost !!")
-    endif (Boost_FOUND)
-    
-    #### QT 
-    # QT_QMAKE_EXECUTABLE is the only relieable way of setting the qt4 path!
-    # convert env var to cmake define	
-    IF(NOT "$ENV{QT_QMAKE_EXECUTABLE}" STREQUAL "")
-        MESSAGE (STATUS "USING QT-PATH from environment variable QT_QMAKE_EXECUTABLE: $ENV{QT_QMAKE_EXECUTABLE}")
-        file(TO_CMAKE_PATH "$ENV{QT_QMAKE_EXECUTABLE}" QT_QMAKE_EXECUTABLE)
-    ENDIF()
-    OPTION (Simox_USE_QT4 "Force Qt4 usage" OFF)
-    OPTION (Simox_USE_QT5 "Force Qt5 usage" OFF)
-    if ( (NOT Simox_USE_QT4) AND (NOT Simox_USE_QT5) )
-        # first check for qt5
-        FIND_PACKAGE(Qt5 5.5.0 QUIET COMPONENTS OpenGL Core Gui)
-        if (Qt5_FOUND )
-            SET(Simox_USE_QT5 ON)
-        else()
-            FIND_PACKAGE(Qt4 4.6.0 COMPONENTS QtOpenGL QtCore QtGui)
-            include(${QT_USE_FILE})
-            IF (QT_FOUND)
-                SET(Simox_USE_QT4 ON)
-            endif()
-      endif()
-    elseif (Simox_USE_QT5)
-        FIND_PACKAGE(Qt5 5.5.0 COMPONENTS OpenGL Core Gui)
-    else()
-        FIND_PACKAGE(Qt4 4.6.0 COMPONENTS QtOpenGL QtCore QtGui)
-        include(${QT_USE_FILE})
-    endif()
-
-    #### VISUALIZATION Coin3D+Qt+SoQt / OSG+Qt
-    ##########################################
-    SET (Simox_VISUALIZATION FALSE)
-    SET (Simox_VISUALIZATION_LIBS "")
-    SET (Simox_VISUALIZATION_INCLUDE_PATHS "")
-    SET (Simox_VISUALIZATION_COMPILE_FLAGS "")
-    
-    OPTION(Simox_USE_COIN_VISUALIZATION "Use Coin3D for visualization" ON)
-    OPTION(Simox_USE_OPENSCENEGRAPH_VISUALIZATION "Use OpenSceneGraph for visualization" OFF)
-    #OPTION(Simox_USE_COLLADA "Enable the loading of robots from collada files" OFF)
-    
-    if (Simox_USE_COIN_VISUALIZATION)
-        MESSAGE(STATUS "Searching Coin3D, Qt and SoQt...")
-        
-        ##### Coin3D
-        FIND_PACKAGE(Coin3D REQUIRED)
-        if (COIN3D_FOUND)
-            MESSAGE (STATUS "Found Coin3D: " ${COIN3D_INCLUDE_DIRS})
-            SET (Simox_VISUALIZATION TRUE)
-            SET (Simox_VISUALIZATION_LIBS ${COIN3D_LIBRARIES})
-            SET (Simox_VISUALIZATION_INCLUDE_PATHS ${COIN3D_INCLUDE_DIRS} )
-            SET (Simox_VISUALIZATION_COMPILE_FLAGS "-DCOIN_DLL")
-        endif (COIN3D_FOUND)
-        
-        
-        if ( QT_FOUND )
-            MESSAGE (STATUS "Found Qt4: " ${QT_INCLUDE_DIR})
-            MESSAGE (STATUS "QT_USE_FILE: " ${QT_USE_FILE})
-            include(${QT_USE_FILE})
-            SET (Simox_EXTERNAL_LIBRARY_CMAKE_INCLUDE ${Simox_EXTERNAL_LIBRARY_CMAKE_INCLUDE} ${QT_USE_FILE})
-            SET (Simox_EXTERNAL_LIBRARY_DIRS ${Simox_EXTERNAL_LIBRARY_DIRS} ${QT_LIBRARY_DIR})
-            SET (Simox_EXTERNAL_LIBRARIES ${Simox_EXTERNAL_LIBRARIES} ${QT_LIBRARIES})
-        elseif ( Qt5_FOUND )
-            MESSAGE (STATUS "Found Qt5: " ${Qt5Gui_INCLUDE_DIRS}  ${Qt5OpenGL_INCLUDE_DIRS} )
-            MESSAGE (STATUS "Qt5 compiler flags: " ${Qt5Gui_EXECUTABLE_COMPILE_FLAGS} " " ${Qt5OpenGL_EXECUTABLE_COMPILE_FLAGS})
-            LIST (APPEND Simox_EXTERNAL_LIBRARY_CMAKE_INCLUDE ${Qt5Gui_INCLUDE_DIRS}  ${Qt5OpenGL_INCLUDE_DIRS})
-            LIST (APPEND Simox_EXTERNAL_LIBRARIES ${Qt5Gui_LIBRARIES} ${Qt5OpenGL_LIBRARIES})
-        else ( )
-            MESSAGE (STATUS "Did not find Qt. Disabling Qt/SoQt support.")
-        endif ( )
-    
-        if (QT_FOUND OR Qt5_FOUND)
-            #### SoQt
-            # This will set SoQt_INCLUDE_DIRS and SoQt_LIBRARIES
-            FIND_PACKAGE(SoQt)
-            if (SOQT_FOUND)
-                MESSAGE (STATUS "Found SoQt:" ${SoQt_INCLUDE_DIRS})
-            else (SOQT_FOUND)
-                MESSAGE (STATUS "Did not find SoQt. Disabling SoQt support.")
-            endif (SOQT_FOUND)
-        
-            if (SOQT_FOUND AND COIN3D_FOUND)
-                MESSAGE (STATUS "Enabling Coin3D/Qt/SoQt support")
-                SET (Simox_VISUALIZATION TRUE)
-                SET (Simox_VISUALIZATION_LIBS ${Simox_VISUALIZATION_LIBS} ${SoQt_LIBRARIES} )
-                SET (Simox_VISUALIZATION_INCLUDE_PATHS  ${Simox_VISUALIZATION_INCLUDE_PATHS} ${SoQt_INCLUDE_DIRS})
-                SET (Simox_VISUALIZATION_COMPILE_FLAGS "${Simox_VISUALIZATION_COMPILE_FLAGS} -DSOQT_DLL -DSIMOX_USE_SOQT")
-                set(Simox_BUILD_EXAMPLES ON)
-
-                if (QT_FOUND)
-                    # QT4
-                    LIST (APPEND Simox_VISUALIZATION_LIBS ${QT_LIBRARIES})
-                    LIST (APPEND Simox_VISUALIZATION_INCLUDE_PATHS ${QT_INCLUDE_DIR})
-                else()
-                    #QT5
-                        LIST (APPEND Simox_VISUALIZATION_LIBS ${Qt5Gui_LIBRARIES} ${Qt5OpenGL_LIBRARIES})
-                    LIST (APPEND Simox_VISUALIZATION_INCLUDE_PATHS ${Qt5Gui_INCLUDE_DIRS}  ${Qt5OpenGL_INCLUDE_DIRS} )
-                    LIST (APPEND Simox_VISUALIZATION_COMPILE_FLAGS " ${Qt5Gui_EXECUTABLE_COMPILE_FLAGS} ${Qt5OpenGL_EXECUTABLE_COMPILE_FLAGS} ")
-                endif()
-                    if (NOT UNIX)
-                        LIST(APPEND Simox_VISUALIZATION_LIBS opengl32)
-                  endif()
-            endif()
-        endif(QT_FOUND OR Qt5_FOUND)
-    elseif (Simox_USE_OPENSCENEGRAPH_VISUALIZATION)
-        MESSAGE(STATUS "Searching OSG and Qt...")
-        FIND_PACKAGE(OpenSceneGraph REQUIRED osgViewer osgUtil osgDB osgGA)
-        if (OPENSCENEGRAPH_FOUND)
-            MESSAGE (STATUS "Found OpenSceneGraph:" ${OPENSCENEGRAPH_INCLUDE_DIRS})
-            ##INCLUDE_DIRECTORIES(${OPENSCENEGRAPH_INCLUDE_DIRS})
-        endif (OPENSCENEGRAPH_FOUND)
-        if ( QT_FOUND )
-            MESSAGE (STATUS "Found Qt4: " ${QT_INCLUDE_DIR})
-            include(${QT_USE_FILE})
-            #MESSAGE(STATUS "QT_LIBRARIES: " ${QT_LIBRARIES})
-        elseif ( Qt5_FOUND )
-            MESSAGE (STATUS "Found Qt5: " ${Qt5Gui_INCLUDE_DIRS}  ${Qt5OpenGL_INCLUDE_DIRS} )
-            MESSAGE (STATUS "Qt5 compiler flags: " ${Qt5Gui_EXECUTABLE_COMPILE_FLAGS} " " ${Qt5OpenGL_EXECUTABLE_COMPILE_FLAGS})
-            LIST (APPEND Simox_EXTERNAL_LIBRARY_CMAKE_INCLUDE ${Qt5Gui_INCLUDE_DIRS}  ${Qt5OpenGL_INCLUDE_DIRS})
-            LIST (APPEND Simox_EXTERNAL_LIBRARIES ${Qt5Gui_LIBRARIES} ${Qt5OpenGL_LIBRARIES})
-        else ()
-            MESSAGE (STATUS "Did not find Qt. Disabling Qt/OSG support.")
-        endif ()
-        
-        if ( (QT_FOUND OR Qt5_FOUND) AND OPENSCENEGRAPH_FOUND)
-            MESSAGE (STATUS "Enabling OSG/Qt support")
-            ### a little hack is needed here since osgQt is not supported in the FindOSG script
-            MESSAGE(STATUS "OPENSCENEGRAPH_LIBRARIES: ${OPENSCENEGRAPH_LIBRARIES}")
-            LIST(GET OPENSCENEGRAPH_LIBRARIES 1 firstOsgLib)
-            MESSAGE(STATUS "firstOsgLib: ${firstOsgLib}")
-            GET_FILENAME_COMPONENT(osgLibPath ${firstOsgLib} PATH)
-            MESSAGE(STATUS "osgLibPath: ${osgLibPath}")
-            if (UNIX)
-                list(APPEND OPENSCENEGRAPH_LIBRARIES ${osgLibPath}/libosgQt.so)
-            else()
-                list(APPEND OPENSCENEGRAPH_LIBRARIES optimized)
-                list(APPEND OPENSCENEGRAPH_LIBRARIES ${osgLibPath}/osgQt.lib)
-                list(APPEND OPENSCENEGRAPH_LIBRARIES debug)
-                list(APPEND OPENSCENEGRAPH_LIBRARIES ${osgLibPath}/osgQtd.lib)
-            endif()
-            MESSAGE(STATUS "OPENSCENEGRAPH_LIBRARIES: ${OPENSCENEGRAPH_LIBRARIES}")
-            SET (Simox_VISUALIZATION TRUE)
-          
-            SET (Simox_VISUALIZATION_LIBS ${OPENSCENEGRAPH_LIBRARIES} )
-            SET (Simox_VISUALIZATION_INCLUDE_PATHS ${OPENSCENEGRAPH_INCLUDE_DIRS} )
-            SET (Simox_VISUALIZATION_COMPILE_FLAGS "")
-        
-            if (QT_FOUND)
-                # QT4
-                LIST (APPEND Simox_VISUALIZATION_LIBS ${QT_LIBRARIES})
-                LIST (APPEND Simox_VISUALIZATION_INCLUDE_PATHS ${QT_INCLUDE_DIR})
-            else()
-                #QT5
-                LIST (APPEND Simox_VISUALIZATION_LIBS ${Qt5Gui_LIBRARIES} ${Qt5OpenGL_LIBRARIES})
-                LIST (APPEND Simox_VISUALIZATION_INCLUDE_PATHS ${Qt5Gui_INCLUDE_DIRS}  ${Qt5OpenGL_INCLUDE_DIRS} )
-                LIST (APPEND Simox_VISUALIZATION_COMPILE_FLAGS " ${Qt5Gui_EXECUTABLE_COMPILE_FLAGS} ${Qt5OpenGL_EXECUTABLE_COMPILE_FLAGS} ")
-            endif()
-        endif()
-    else()
-        MESSAGE(STATUS "Visualization disabled")
-    endif()
-    
-    if (Simox_USE_COLLADA)
-        MESSAGE(STATUS "Searching for Collada...")
-        FIND_PACKAGE(COLLADA_DOM REQUIRED 2.4)
-
-        IF(COLLADA_DOM_FOUND)
-            MESSAGE (STATUS "Found Collada")
-            MESSAGE (STATUS "* Collada COLLADA_DOM_ROOT_DIR : ${COLLADA_DOM_ROOT_DIR}")
-            MESSAGE (STATUS "* Collada Include DIRS: ${COLLADA_DOM_INCLUDE_DIRS}")
-            MESSAGE (STATUS "* Collada Libs: ${COLLADA_DOM_LIBRARIES}")
-            MESSAGE (STATUS "* Collada COLLADA_DOM_LIBRARY_DIRS: ${COLLADA_DOM_LIBRARY_DIRS}")
-
-            FIND_LIBRARY(COLLADA_LIBRARY ${COLLADA_DOM_LIBRARIES} ${COLLADA_DOM_LIBRARY_DIRS})
-            MESSAGE (STATUS "Collada Full Collada lib: ${COLLADA_LIBRARY}")
-
-            #include_directories(${COLLADA_DOM_INCLUDE_DIRS})
-
-            SET (Simox_EXTERNAL_INCLUDE_DIRS ${Simox_EXTERNAL_INCLUDE_DIRS} ${COLLADA_DOM_INCLUDE_DIRS})
-            SET (Simox_EXTERNAL_LIBRARIES ${Simox_EXTERNAL_LIBRARIES} ${COLLADA_LIBRARY})
-
-            SET (Simox_EXTERNAL_LIBRARY_FLAGS "${Simox_EXTERNAL_LIBRARY_FLAGS} -DDOM_DYNAMIC ")
-        ENDIF()
-    endif()
-    
-    SET (Simox_EXTERNAL_INCLUDE_DIRS ${Simox_EXTERNAL_INCLUDE_DIRS} ${Simox_VISUALIZATION_INCLUDE_PATHS})
-    SET (Simox_EXTERNAL_LIBRARIES ${Simox_EXTERNAL_LIBRARIES} ${Simox_VISUALIZATION_LIBS})
-    SET (Simox_EXTERNAL_LIBRARY_FLAGS "${Simox_EXTERNAL_LIBRARY_FLAGS} ${Simox_VISUALIZATION_COMPILE_FLAGS}")
-
-
-    ## for historical reasons: set VirtualRobot flags to Simox flags
-    SET (VirtualRobot_VISUALIZATION ${Simox_VISUALIZATION})
-    SET (VirtualRobot_VISUALIZATION_LIBS ${Simox_VISUALIZATION_LIBS})
-    SET (VirtualRobot_VISUALIZATION_INCLUDE_PATHS ${Simox_VISUALIZATION_INCLUDE_PATHS})
-    SET (VirtualRobot_VISUALIZATION_COMPILE_FLAGS ${Simox_VISUALIZATION_COMPILE_FLAGS})
-
-  
-    INCLUDE_DIRECTORIES(${Simox_EXTERNAL_INCLUDE_DIRS})
-    ADD_DEFINITIONS( ${Simox_EXTERNAL_LIBRARY_FLAGS} )
-
-ENDIF(NOT Simox_CONFIGURED)