diff --git a/CMakeLists.txt b/CMakeLists.txt
index 75b2269f91251bf68673b37ba86962ee03878e1a..0910fe579821a1fc1ab7e2df324c754212584123 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -356,6 +356,7 @@ SET(SRCS_LANDMARK
   src/landmark/landmark_base.cpp
   )
 SET(SRCS_PROCESSOR
+  src/processor/is_motion.cpp
   src/processor/motion_buffer.cpp
   src/processor/processor_base.cpp
   src/processor/processor_diff_drive.cpp
diff --git a/include/core/problem/problem.h b/include/core/problem/problem.h
index 42dc859ad9753c44b184c3a8b1e77548fcc135c0..36e5e338bde88d49062931e383929baa005bc9df 100644
--- a/include/core/problem/problem.h
+++ b/include/core/problem/problem.h
@@ -50,6 +50,7 @@ class Problem : public std::enable_shared_from_this<Problem>
     friend SolverManager; // Enable SolverManager to acces protected functions (consumeXXXNotificationMap())
     friend ProcessorBase;
     friend ProcessorMotion;
+    friend IsMotion;
 
     protected:
         TreeManagerBasePtr tree_manager_;
diff --git a/include/core/processor/is_motion.h b/include/core/processor/is_motion.h
index 8c99fe72e37698a2210e35a3af0c14bf9168f65e..3ba3f97ad15249f425e357b7901a1494a5e56073 100644
--- a/include/core/processor/is_motion.h
+++ b/include/core/processor/is_motion.h
@@ -45,7 +45,8 @@ class IsMotion
 
         std::string getStateStructure(){return state_structure_;};
         void setStateStructure(std::string _state_structure){state_structure_ = _state_structure;};
-    
+        void addToProblem(ProblemPtr _prb_ptr, IsMotionPtr _motion_ptr);
+   
     protected:
         std::string state_structure_; ///< The structure of the state vector (to retrieve state blocks from frames)
 
@@ -83,8 +84,6 @@ inline Eigen::VectorXd IsMotion::getState(const TimeStamp& _ts) const
     return x;
 }
 
-
-
 } /* namespace wolf */
 
 #endif /* PROCESSOR_IS_MOTION_H_ */
diff --git a/src/processor/is_motion.cpp b/src/processor/is_motion.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..1bfd06a5e9669f76ef48c49a559cade0dc7845f0
--- /dev/null
+++ b/src/processor/is_motion.cpp
@@ -0,0 +1,9 @@
+#include "core/processor/is_motion.h"
+#include "core/problem/problem.h"
+
+using namespace wolf;
+
+void IsMotion::addToProblem(ProblemPtr _prb_ptr, IsMotionPtr _motion_ptr)
+{
+    _prb_ptr->addProcessorIsMotion(_motion_ptr);
+}