diff --git a/source/RobotAPI/components/units/HeadIKUnit.cpp b/source/RobotAPI/components/units/HeadIKUnit.cpp
index 1882ee6185d08d15f7824296eb44eb758d890d7e..766d076c5d4c4f7ebbed4f8c466325fa855ee099 100644
--- a/source/RobotAPI/components/units/HeadIKUnit.cpp
+++ b/source/RobotAPI/components/units/HeadIKUnit.cpp
@@ -202,23 +202,28 @@ namespace armarx
             ikSolver.enableJointLimitAvoidance(true);
 
             auto globalPos = targetPosition->toGlobal(localRobot);
-            ARMARX_VERBOSE  << deactivateSpam(1) << "Calculating IK for target position " << globalPos->output();
+            ARMARX_VERBOSE << "Calculating IK for target position " << globalPos->output();
             if (!ikSolver.solve(globalPos->toEigen()))
             {
                 ARMARX_WARNING << "IKSolver found no solution!";
             }
             else
             {
+                ARMARX_DEBUG << "Solution found";
                 NameValueMap targetJointAngles;
+                NameControlModeMap controlModes;
                 for (int i = 0; i < (signed int)kinematicChain->getSize(); i++)
                 {
                     if (kinematicChain->getNode(i)->getName().compare("VirtualCentralGaze") != 0)
                     {
                         targetJointAngles[kinematicChain->getNode(i)->getName()] = kinematicChain->getNode(i)->getJointValue();
+                        controlModes[kinematicChain->getNode(i)->getName()] = ePositionControl;
                     }
+                    ARMARX_DEBUG << kinematicChain->getNode(i)->getName() << ": " << kinematicChain->getNode(i)->getJointValue();
                 }
                 try
                 {
+                    kinematicUnitPrx->switchControlMode(controlModes);
                     kinematicUnitPrx->setJointAngles(targetJointAngles);
                 } catch (...)
                 {