diff --git a/source/RobotAPI/interface/CMakeLists.txt b/source/RobotAPI/interface/CMakeLists.txt
index bc9e81e3ed47da9b47fdf570caf549ee1fce7e65..2c7d5ff0de9c729009d7b540c31bb5842e610cc0 100644
--- a/source/RobotAPI/interface/CMakeLists.txt
+++ b/source/RobotAPI/interface/CMakeLists.txt
@@ -81,6 +81,10 @@ set(SLICE_FILES
     units/RobotUnit/NJointTaskSpaceDMPController.ice
     units/RobotUnit/NJointBimanualForceMPController.ice
 
+    units/RobotUnit/NjointZeroTorqueController.ice
+    units/RobotUnit/NJointCurrentController.ice
+    units/RobotUnit/NJointActiveImpedanceController.ice
+
     units/RobotUnit/DSControllerBase.ice
 
     units/RobotUnit/TaskSpaceActiveImpedanceControl.ice
diff --git a/source/RobotAPI/interface/units/RobotUnit/NJointActiveImpedanceController.ice b/source/RobotAPI/interface/units/RobotUnit/NJointActiveImpedanceController.ice
new file mode 100644
index 0000000000000000000000000000000000000000..da687c5d0dd5770d34be1ed680d81f2711543606
--- /dev/null
+++ b/source/RobotAPI/interface/units/RobotUnit/NJointActiveImpedanceController.ice
@@ -0,0 +1,49 @@
+/*
+ * This file is part of ArmarX.
+ *
+ * ArmarX is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ * ArmarX is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * @package    RobotAPI::NJointControllerInterface
+ * @author     Mirko Waechter ( mirko dot waechter at kit dot edu )
+ * @date       2017
+ * @copyright  http://www.gnu.org/licenses/gpl-2.0.txt
+ *             GNU General Public License
+ */
+
+#pragma once
+
+#include <RobotAPI/interface/units/RobotUnit/NJointController.ice>
+#include <RobotAPI/interface/core/Trajectory.ice>
+
+module armarx
+{
+
+    module RobotUnitControllerNames
+    {
+        const string NJointActiveImpedanceController = "NJointActiveImpedanceController";
+    };
+
+    class NJointActiveImpedanceControllerConfig extends NJointControllerConfig
+    {
+        float position = 0;
+        float kp = 0;
+        float kd = 0;
+        string deviceName;
+    };
+
+
+    interface NJointActiveImpedanceControllerInterface extends NJointControllerInterface
+    {
+        void setControllerTarget(float position, float kp, float kd);
+    };
+};
diff --git a/source/RobotAPI/interface/units/RobotUnit/NJointCurrentController.ice b/source/RobotAPI/interface/units/RobotUnit/NJointCurrentController.ice
new file mode 100644
index 0000000000000000000000000000000000000000..06e648137cca85c6cd913cc5377e247188d196a5
--- /dev/null
+++ b/source/RobotAPI/interface/units/RobotUnit/NJointCurrentController.ice
@@ -0,0 +1,47 @@
+/*
+ * This file is part of ArmarX.
+ *
+ * ArmarX is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ * ArmarX is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * @package    RobotAPI::NJointControllerInterface
+ * @author     Mirko Waechter ( mirko dot waechter at kit dot edu )
+ * @date       2017
+ * @copyright  http://www.gnu.org/licenses/gpl-2.0.txt
+ *             GNU General Public License
+ */
+
+#pragma once
+
+#include <RobotAPI/interface/units/RobotUnit/NJointController.ice>
+#include <RobotAPI/interface/core/Trajectory.ice>
+
+module armarx
+{
+
+    module RobotUnitControllerNames
+    {
+        const string NJointCurrentController = "NJointCurrentController";
+    };
+
+    class NJointCurrentControllerConfig extends NJointControllerConfig
+    {
+        float current = 0;
+        string deviceName;
+    };
+
+
+    interface NJointCurrentControllerInterface extends NJointControllerInterface
+    {
+        void setControllerTarget(float current);
+    };
+};
diff --git a/source/RobotAPI/interface/units/RobotUnit/NjointZeroTorqueController.ice b/source/RobotAPI/interface/units/RobotUnit/NjointZeroTorqueController.ice
new file mode 100644
index 0000000000000000000000000000000000000000..ed1c98692abf97bfc03e73ac9e75fc02639b4c8a
--- /dev/null
+++ b/source/RobotAPI/interface/units/RobotUnit/NjointZeroTorqueController.ice
@@ -0,0 +1,46 @@
+/*
+ * This file is part of ArmarX.
+ *
+ * ArmarX is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ * ArmarX is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * @package    RobotAPI::NJointControllerInterface
+ * @author     Mirko Waechter ( mirko dot waechter at kit dot edu )
+ * @date       2017
+ * @copyright  http://www.gnu.org/licenses/gpl-2.0.txt
+ *             GNU General Public License
+ */
+
+#pragma once
+
+#include <RobotAPI/interface/units/RobotUnit/NJointController.ice>
+
+module armarx
+{
+
+    module RobotUnitControllerNames
+    {
+        const string NJointZeroTorqueController = "NJointZeroTorqueController";
+    };
+
+    class NJointZeroTorqueControllerConfig extends NJointControllerConfig
+    {
+        Ice::StringSeq jointNames;
+        float maxTorque = 10.0f;
+    };
+
+
+    interface NJointZeroTorqueControllerInterface extends NJointControllerInterface
+    {
+        void setControllerTarget(Ice::FloatSeq targetTorques);
+    };
+};