diff --git a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion.C
index 1e2ef3d31..adf803591 100644
--- a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion.C
+++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion.C
@@ -27,6 +27,13 @@ License
 #include "sixDoFSolver.H"
 #include "septernion.H"
 
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+    defineTypeNameAndDebug(sixDoFRigidBodyMotion, 0);
+}
+
 // * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
 
 void Foam::sixDoFRigidBodyMotion::applyRestraints()
diff --git a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion.H b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion.H
index a70883ad8..10f9a8f3a 100644
--- a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion.H
+++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion.H
@@ -204,6 +204,8 @@ class sixDoFRigidBodyMotion
 
 
 public:
+    //- Runtime type information
+    TypeName("sixDoFRigidBodyMotion");
 
     // Constructors
 
@@ -222,7 +224,7 @@ public:
 
 
     //- Destructor
-    ~sixDoFRigidBodyMotion();
+    virtual ~sixDoFRigidBodyMotion();
 
 
     // Member Functions
diff --git a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionSolver/sixDoFRigidBodyMotionSolver.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionSolver/sixDoFRigidBodyMotionSolver.C
index d75207e2d..19f87a94a 100644
--- a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionSolver/sixDoFRigidBodyMotionSolver.C
+++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionSolver/sixDoFRigidBodyMotionSolver.C
@@ -56,7 +56,7 @@ Foam::sixDoFRigidBodyMotionSolver::sixDoFRigidBodyMotionSolver
 )
 :
     displacementMotionSolver(mesh, dict, typeName),
-    motion_
+    sixDoFRigidBodyMotion
     (
         coeffDict(),
         IOobject
@@ -158,13 +158,6 @@ Foam::sixDoFRigidBodyMotionSolver::~sixDoFRigidBodyMotionSolver()
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
-const Foam::sixDoFRigidBodyMotion&
-Foam::sixDoFRigidBodyMotionSolver::motion() const
-{
-    return motion_;
-}
-
-
 Foam::tmp<Foam::pointField>
 Foam::sixDoFRigidBodyMotionSolver::curPoints() const
 {
@@ -189,7 +182,7 @@ void Foam::sixDoFRigidBodyMotionSolver::solve()
     bool firstIter = false;
     if (curTimeIndex_ != t.timeIndex())
     {
-        motion_.newTime();
+        newTime();
         curTimeIndex_ = t.timeIndex();
         firstIter = true;
     }
@@ -210,11 +203,11 @@ void Foam::sixDoFRigidBodyMotionSolver::solve()
 
     if (test_)
     {
-        motion_.update
+        update
         (
             firstIter,
-            ramp*(motion_.mass()*g.value()),
-            ramp*(motion_.mass()*(motion_.momentArm() ^ g.value())),
+            ramp*(mass()*g.value()),
+            ramp*(mass()*(momentArm() ^ g.value())),
             t.deltaTValue(),
             t.deltaT0Value()
         );
@@ -227,20 +220,20 @@ void Foam::sixDoFRigidBodyMotionSolver::solve()
         forcesDict.add("patches", patches_);
         forcesDict.add("rhoInf", rhoInf_);
         forcesDict.add("rho", rhoName_);
-        forcesDict.add("CofR", motion_.centreOfRotation());
+        forcesDict.add("CofR", centreOfRotation());
 
         functionObjects::forces f("forces", t, forcesDict);
 
         f.calcForcesMoment();
 
-        motion_.update
+        update
         (
             firstIter,
-            ramp*(f.forceEff() + motion_.mass()*g.value()),
+            ramp*(f.forceEff() + mass()*g.value()),
             ramp
            *(
                f.momentEff()
-             + motion_.mass()*(motion_.momentArm() ^ g.value())
+             + mass()*(momentArm() ^ g.value())
             ),
             t.deltaTValue(),
             t.deltaT0Value()
@@ -249,7 +242,7 @@ void Foam::sixDoFRigidBodyMotionSolver::solve()
 
     // Update the displacements
     pointDisplacement_.primitiveFieldRef() =
-        motion_.transform(points0(), scale_) - points0();
+        transform(points0(), scale_) - points0();
 
     // Displacement has changed. Update boundary conditions
     pointConstraints::New
@@ -275,7 +268,7 @@ bool Foam::sixDoFRigidBodyMotionSolver::write() const
         )
     );
 
-    motion_.state().write(dict);
+    state().write(dict);
 
     return
         dict.regIOobject::writeObject
diff --git a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionSolver/sixDoFRigidBodyMotionSolver.H b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionSolver/sixDoFRigidBodyMotionSolver.H
index 6317510e8..957121179 100644
--- a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionSolver/sixDoFRigidBodyMotionSolver.H
+++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionSolver/sixDoFRigidBodyMotionSolver.H
@@ -52,12 +52,13 @@ namespace Foam
 
 class sixDoFRigidBodyMotionSolver
 :
-    public displacementMotionSolver
+    public displacementMotionSolver,
+    public sixDoFRigidBodyMotion
 {
     // Private Data
 
         //- Six DoF motion object
-        sixDoFRigidBodyMotion motion_;
+        //sixDoFRigidBodyMotion motion_;
 
         wordReList patches_;
 
diff --git a/src/sixDoFRigidBodyState/sixDoFRigidBodyState/sixDoFRigidBodyState.C b/src/sixDoFRigidBodyState/sixDoFRigidBodyState/sixDoFRigidBodyState.C
index 07dcb167a..21b65e731 100644
--- a/src/sixDoFRigidBodyState/sixDoFRigidBodyState/sixDoFRigidBodyState.C
+++ b/src/sixDoFRigidBodyState/sixDoFRigidBodyState/sixDoFRigidBodyState.C
@@ -110,10 +110,7 @@ Foam::functionObjects::sixDoFRigidBodyState::motion() const
     const dynamicMotionSolverFvMesh& mesh =
         refCast<const dynamicMotionSolverFvMesh>(obr_);
 
-    const sixDoFRigidBodyMotionSolver& motionSolver_ =
-        refCast<const sixDoFRigidBodyMotionSolver>(mesh.motion());
-
-    return motionSolver_.motion();
+    return  (refCast<const sixDoFRigidBodyMotion>(mesh.motion()));
 }
 
 
