diff --git a/src/rigidBodyDynamics/Make/files b/src/rigidBodyDynamics/Make/files
index fd778ff9a..addab8e62 100644
--- a/src/rigidBodyDynamics/Make/files
+++ b/src/rigidBodyDynamics/Make/files
@@ -52,5 +52,6 @@ rigidBodySolvers/rigidBodySolver/newRigidBodySolver.C
 rigidBodySolvers/symplectic/symplectic.C
 rigidBodySolvers/Newmark/Newmark.C
 rigidBodySolvers/CrankNicolson/CrankNicolson.C
+rigidBodySolvers/ode/ode.C
 
 LIB = $(FOAM_LIBBIN)/librigidBodyDynamics
diff --git a/src/rigidBodyDynamics/Make/options b/src/rigidBodyDynamics/Make/options
index 79be6f3a7..bd4c3eb7b 100644
--- a/src/rigidBodyDynamics/Make/options
+++ b/src/rigidBodyDynamics/Make/options
@@ -1,3 +1,5 @@
-EXE_INC =
+EXE_INC = \
+    -I$(LIB_SRC)/ODE/lnInclude
 
-LIB_LIBS =
+LIB_LIBS = \
+    -lODE
diff --git a/src/rigidBodyDynamics/rigidBodyMotion/rigidBodyMotion.C b/src/rigidBodyDynamics/rigidBodyMotion/rigidBodyMotion.C
index db086b1c6..c2619a3cf 100644
--- a/src/rigidBodyDynamics/rigidBodyMotion/rigidBodyMotion.C
+++ b/src/rigidBodyDynamics/rigidBodyMotion/rigidBodyMotion.C
@@ -45,6 +45,7 @@ void Foam::RBD::rigidBodyMotion::initialize()
 Foam::RBD::rigidBodyMotion::rigidBodyMotion()
 :
     rigidBodyModel(),
+    ODESystem(),
     motionState_(*this),
     motionState0_(*this),
     aRelax_(1.0),
@@ -304,4 +305,25 @@ Foam::tmp<Foam::pointField> Foam::RBD::rigidBodyMotion::transformPoints
 }
 
 
+void Foam::RBD::rigidBodyMotion::derivatives
+(
+    const scalar time,
+    const scalarField& y,
+    scalarField& dydx
+) const
+{
+
+}
+
+void Foam::RBD::rigidBodyMotion::jacobian
+(
+    const scalar time,
+    const scalarField& y,
+    scalarField& dfdx,
+    scalarSquareMatrix& dfdy
+) const
+{
+
+}
+
 // ************************************************************************* //
diff --git a/src/rigidBodyDynamics/rigidBodyMotion/rigidBodyMotion.H b/src/rigidBodyDynamics/rigidBodyMotion/rigidBodyMotion.H
index 8b2d04efb..2070e99d8 100644
--- a/src/rigidBodyDynamics/rigidBodyMotion/rigidBodyMotion.H
+++ b/src/rigidBodyDynamics/rigidBodyMotion/rigidBodyMotion.H
@@ -50,6 +50,7 @@ SourceFiles
 #include "rigidBodyModelState.H"
 #include "pointField.H"
 #include "Switch.H"
+#include "ODESystem.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
@@ -67,7 +68,8 @@ class rigidBodySolver;
 
 class rigidBodyMotion
 :
-    public rigidBodyModel
+    public rigidBodyModel,
+    public ODESystem
 {
     friend class rigidBodySolver;
 
@@ -146,6 +148,31 @@ public:
             //  given body
             spatialTransform X00(const label bodyId) const;
 
+            //- Return the number of equations in the system
+            virtual label nEqns() const
+            {
+                // nEqns = velocity 3 components and motion 3 components
+                return 6;
+            }
+
+            //- Calculate the derivatives in dydx
+            virtual void derivatives
+            (
+                const scalar time,
+                const scalarField& y,
+                scalarField& dydx
+            ) const;
+
+            //- Calculate the Jacobian of the system
+            //  Need by the stiff-system solvers
+            virtual void jacobian
+            (
+                const scalar time,
+                const scalarField& y,
+                scalarField& dfdx,
+                scalarSquareMatrix& dfdy
+            ) const;
+
 
         // Edit
 
