diff --git a/src/sixDoFRigidBodyMotion/pointPatchFields/derived/sixDoFRigidBodyDisplacement/sixDoFRigidBodyDisplacementPointPatchVectorField.C b/src/sixDoFRigidBodyMotion/pointPatchFields/derived/sixDoFRigidBodyDisplacement/sixDoFRigidBodyDisplacementPointPatchVectorField.C
index 3a6db8083995cdf1385fa5556c38d89d79742dc7..dc731f060a39cef715c1c43e1299302974eac315 100644
--- a/src/sixDoFRigidBodyMotion/pointPatchFields/derived/sixDoFRigidBodyDisplacement/sixDoFRigidBodyDisplacementPointPatchVectorField.C
+++ b/src/sixDoFRigidBodyMotion/pointPatchFields/derived/sixDoFRigidBodyDisplacement/sixDoFRigidBodyDisplacementPointPatchVectorField.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -222,7 +222,7 @@ void sixDoFRigidBodyDisplacementPointPatchVectorField::updateCoeffs()
     forcesDict.add("patches", wordList(1, ptPatch.name()));
     forcesDict.add("rhoInf", rhoInf_);
     forcesDict.add("rhoName", rhoName_);
-    forcesDict.add("CofR", motion_.centreOfMass());
+    forcesDict.add("CofR", motion_.centreOfRotation());
 
     forces f("forces", db(), forcesDict);
 
@@ -243,14 +243,14 @@ void sixDoFRigidBodyDisplacementPointPatchVectorField::updateCoeffs()
 
     motion_.updateAcceleration
     (
-        ramp*(f.forceEff() + g_*motion_.mass()),
-        ramp*(f.momentEff()),
+        ramp*(f.forceEff() + motion_.mass()*g_),
+        ramp*(f.momentEff() + motion_.mass()*(motion_.momentArm() ^ g_)),
         t.deltaTValue()
     );
 
     Field<vector>::operator=
     (
-        motion_.currentPosition(initialPoints_) - initialPoints_
+        motion_.transform(initialPoints_) - initialPoints_
     );
 
     fixedValuePointPatchField<vector>::updateCoeffs();
diff --git a/src/sixDoFRigidBodyMotion/pointPatchFields/derived/uncoupledSixDoFRigidBodyDisplacement/uncoupledSixDoFRigidBodyDisplacementPointPatchVectorField.C b/src/sixDoFRigidBodyMotion/pointPatchFields/derived/uncoupledSixDoFRigidBodyDisplacement/uncoupledSixDoFRigidBodyDisplacementPointPatchVectorField.C
index bb66a5fb14b9d06eee60a94faf153370d27b9986..fb832ca6c80aed91d41ecfd95f26b59dba4987f5 100644
--- a/src/sixDoFRigidBodyMotion/pointPatchFields/derived/uncoupledSixDoFRigidBodyDisplacement/uncoupledSixDoFRigidBodyDisplacementPointPatchVectorField.C
+++ b/src/sixDoFRigidBodyMotion/pointPatchFields/derived/uncoupledSixDoFRigidBodyDisplacement/uncoupledSixDoFRigidBodyDisplacementPointPatchVectorField.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -180,7 +180,7 @@ void uncoupledSixDoFRigidBodyDisplacementPointPatchVectorField::updateCoeffs()
 
     Field<vector>::operator=
     (
-        motion_.currentPosition(initialPoints_) - initialPoints_
+        motion_.transform(initialPoints_) - initialPoints_
     );
 
     fixedValuePointPatchField<vector>::updateCoeffs();
diff --git a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/axis/sixDoFRigidBodyMotionAxisConstraint.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/axis/sixDoFRigidBodyMotionAxisConstraint.C
index c577954a364502c4261fa678a9daaf6758c620a7..91fa9908f6dade2fb46a1f752bc560ca42e2ea87 100644
--- a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/axis/sixDoFRigidBodyMotionAxisConstraint.C
+++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/axis/sixDoFRigidBodyMotionAxisConstraint.C
@@ -50,10 +50,11 @@ namespace sixDoFRigidBodyMotionConstraints
 Foam::sixDoFRigidBodyMotionConstraints::axis::axis
 (
     const word& name,
-    const dictionary& sDoFRBMCDict
+    const dictionary& sDoFRBMCDict,
+    const sixDoFRigidBodyMotion& motion
 )
 :
-    sixDoFRigidBodyMotionConstraint(name, sDoFRBMCDict),
+    sixDoFRigidBodyMotionConstraint(name, sDoFRBMCDict, motion),
     axis_()
 {
     read(sDoFRBMCDict);
diff --git a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/axis/sixDoFRigidBodyMotionAxisConstraint.H b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/axis/sixDoFRigidBodyMotionAxisConstraint.H
index 291c3421f86d1b9111db2297cac8bd78b41e96f1..6ddf4f8b9a62fd9c4cca515ee18c3dd9c37c6111 100644
--- a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/axis/sixDoFRigidBodyMotionAxisConstraint.H
+++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/axis/sixDoFRigidBodyMotionAxisConstraint.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -25,8 +25,8 @@ Class
     Foam::sixDoFRigidBodyMotionConstraints::axis
 
 Description
-    sixDoFRigidBodyMotionConstraint.  Body may only rotate around
-    an axis fixed in global space.
+    Orientation constraint:
+        may only rotate around a fixed axis.
 
 SourceFiles
     sixDoFRigidBodyMotionAxisConstraint.C
@@ -73,7 +73,8 @@ public:
         axis
         (
             const word& name,
-            const dictionary& sDoFRBMCDict
+            const dictionary& sDoFRBMCDict,
+            const sixDoFRigidBodyMotion& motion
         );
 
         //- Construct and return a clone
diff --git a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/line/sixDoFRigidBodyMotionLineConstraint.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/line/sixDoFRigidBodyMotionLineConstraint.C
index ff056c259168321f5e19e27d2ecba98ec0d34707..ed527a603644992d521fc6084cc2f19b4d158be5 100644
--- a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/line/sixDoFRigidBodyMotionLineConstraint.C
+++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/line/sixDoFRigidBodyMotionLineConstraint.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -50,11 +50,11 @@ namespace sixDoFRigidBodyMotionConstraints
 Foam::sixDoFRigidBodyMotionConstraints::line::line
 (
     const word& name,
-    const dictionary& sDoFRBMCDict
+    const dictionary& sDoFRBMCDict,
+    const sixDoFRigidBodyMotion& motion
 )
 :
-    sixDoFRigidBodyMotionConstraint(name, sDoFRBMCDict),
-    dir_()
+    sixDoFRigidBodyMotionConstraint(name, sDoFRBMCDict, motion)
 {
     read(sDoFRBMCDict);
 }
@@ -68,12 +68,21 @@ Foam::sixDoFRigidBodyMotionConstraints::line::~line()
 
 // * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * * //
 
+void Foam::sixDoFRigidBodyMotionConstraints::line::setCentreOfRotation
+(
+    point& CofR
+) const
+{
+    CofR = centreOfRotation_;
+}
+
+
 void Foam::sixDoFRigidBodyMotionConstraints::line::constrainTranslation
 (
     pointConstraint& pc
 ) const
 {
-    pc.combine(pointConstraint(Tuple2<label, vector>(2, dir_)));
+    pc.combine(pointConstraint(Tuple2<label, vector>(2, direction_)));
 }
 
 
@@ -91,13 +100,19 @@ bool Foam::sixDoFRigidBodyMotionConstraints::line::read
 {
     sixDoFRigidBodyMotionConstraint::read(sDoFRBMCDict);
 
-    sDoFRBMCCoeffs_.lookup("direction") >> dir_;
+    centreOfRotation_ = sDoFRBMCCoeffs_.lookupOrDefault
+    (
+        "centreOfRotation",
+        motion_.initialCentreOfMass()
+    );
+
+    sDoFRBMCCoeffs_.lookup("direction") >> direction_;
 
-    scalar magDir(mag(dir_));
+    scalar magDir(mag(direction_));
 
     if (magDir > VSMALL)
     {
-        dir_ /= magDir;
+        direction_ /= magDir;
     }
     else
     {
@@ -121,8 +136,10 @@ void Foam::sixDoFRigidBodyMotionConstraints::line::write
     Ostream& os
 ) const
 {
+    os.writeKeyword("centreOfRotation")
+        << centreOfRotation_ << token::END_STATEMENT << nl;
     os.writeKeyword("direction")
-        << dir_ << token::END_STATEMENT << nl;
+        << direction_ << token::END_STATEMENT << nl;
 }
 
 // ************************************************************************* //
diff --git a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/line/sixDoFRigidBodyMotionLineConstraint.H b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/line/sixDoFRigidBodyMotionLineConstraint.H
index 7d4919072024d5803ab23fdbf23ebc5886aaf2ae..1f7e68ec10255b702695ad65dd399bb01544473a 100644
--- a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/line/sixDoFRigidBodyMotionLineConstraint.H
+++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/line/sixDoFRigidBodyMotionLineConstraint.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -25,8 +25,11 @@ Class
     Foam::sixDoFRigidBodyMotionConstraints::line
 
 Description
-    sixDoFRigidBodyMotionConstraint.  Reference point may only move
-    along a line.
+    Translation constraint on the centre of rotation:
+        may only move along a line.
+
+    If 'centreOfRotation' is not provided in the dictionary the centre of mass
+    is used.
 
 SourceFiles
     sixDoFRigidBodyMotionLineConstraint.C
@@ -56,8 +59,11 @@ class line
 {
     // Private data
 
+        //- Centre of rotation on line
+        point centreOfRotation_;
+
         //- Direction of the constraining line
-        vector dir_;
+        vector direction_;
 
 
 public:
@@ -72,7 +78,8 @@ public:
         line
         (
             const word& name,
-            const dictionary& sDoFRBMCDict
+            const dictionary& sDoFRBMCDict,
+            const sixDoFRigidBodyMotion& motion
         );
 
         //- Construct and return a clone
@@ -91,6 +98,10 @@ public:
 
     // Member Functions
 
+        //- Set the centre of rotation to the projection of the
+        //  centre of mass onto the line
+        virtual void setCentreOfRotation(point&) const;
+
         //- Apply and accumulate translational constraints
         virtual void constrainTranslation(pointConstraint&) const;
 
diff --git a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/orientation/sixDoFRigidBodyMotionOrientationConstraint.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/orientation/sixDoFRigidBodyMotionOrientationConstraint.C
index 28bf1c48117067ae84a264c138333569f7206198..6652cf7623f7b2743fef2446b6d0712425d5b22a 100644
--- a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/orientation/sixDoFRigidBodyMotionOrientationConstraint.C
+++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/orientation/sixDoFRigidBodyMotionOrientationConstraint.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -50,10 +50,11 @@ namespace sixDoFRigidBodyMotionConstraints
 Foam::sixDoFRigidBodyMotionConstraints::orientation::orientation
 (
     const word& name,
-    const dictionary& sDoFRBMCDict
+    const dictionary& sDoFRBMCDict,
+    const sixDoFRigidBodyMotion& motion
 )
 :
-    sixDoFRigidBodyMotionConstraint(name, sDoFRBMCDict)
+    sixDoFRigidBodyMotionConstraint(name, sDoFRBMCDict, motion)
 {
     read(sDoFRBMCDict);
 }
diff --git a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/orientation/sixDoFRigidBodyMotionOrientationConstraint.H b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/orientation/sixDoFRigidBodyMotionOrientationConstraint.H
index 5a41498e9528dfdfc3c4c5a2fd98718f9f49ee86..6f010ab4e07376915eb5080d5e13440fa10ec097 100644
--- a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/orientation/sixDoFRigidBodyMotionOrientationConstraint.H
+++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/orientation/sixDoFRigidBodyMotionOrientationConstraint.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -25,7 +25,8 @@ Class
     Foam::sixDoFRigidBodyMotionConstraints::orientation
 
 Description
-    Fix orientation of body in global space.
+    Orientation constraint:
+        fixed in global space.
 
 SourceFiles
     sixDoFRigidBodyMotionOrientationConstraint.C
@@ -66,7 +67,8 @@ public:
         orientation
         (
             const word& name,
-            const dictionary& sDoFRBMCDict
+            const dictionary& sDoFRBMCDict,
+            const sixDoFRigidBodyMotion& motion
         );
 
         //- Construct and return a clone
diff --git a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/plane/sixDoFRigidBodyMotionPlaneConstraint.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/plane/sixDoFRigidBodyMotionPlaneConstraint.C
index 286e279b77da5ecb37f49ef9a838645db6e2c743..7382e5c2d86958cdf196b332aae5c0509fd86384 100644
--- a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/plane/sixDoFRigidBodyMotionPlaneConstraint.C
+++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/plane/sixDoFRigidBodyMotionPlaneConstraint.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -50,11 +50,11 @@ namespace sixDoFRigidBodyMotionConstraints
 Foam::sixDoFRigidBodyMotionConstraints::plane::plane
 (
     const word& name,
-    const dictionary& sDoFRBMCDict
+    const dictionary& sDoFRBMCDict,
+    const sixDoFRigidBodyMotion& motion
 )
 :
-    sixDoFRigidBodyMotionConstraint(name, sDoFRBMCDict),
-    normal_(vector::zero)
+    sixDoFRigidBodyMotionConstraint(name, sDoFRBMCDict, motion)
 {
     read(sDoFRBMCDict);
 }
@@ -68,6 +68,15 @@ Foam::sixDoFRigidBodyMotionConstraints::plane::~plane()
 
 // * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * * //
 
+void Foam::sixDoFRigidBodyMotionConstraints::plane::setCentreOfRotation
+(
+    point& CofR
+) const
+{
+    CofR = centreOfRotation_;
+}
+
+
 void Foam::sixDoFRigidBodyMotionConstraints::plane::constrainTranslation
 (
     pointConstraint& pc
@@ -91,7 +100,13 @@ bool Foam::sixDoFRigidBodyMotionConstraints::plane::read
 {
     sixDoFRigidBodyMotionConstraint::read(sDoFRBMCDict);
 
-    normal_ = sDoFRBMCCoeffs_.lookup("normal");
+    centreOfRotation_ = sDoFRBMCCoeffs_.lookupOrDefault
+    (
+        "centreOfRotation",
+        motion_.initialCentreOfMass()
+    );
+
+    sDoFRBMCCoeffs_.lookup("normal") >> normal_;
 
     return true;
 }
@@ -102,6 +117,8 @@ void Foam::sixDoFRigidBodyMotionConstraints::plane::write
     Ostream& os
 ) const
 {
+    os.writeKeyword("centreOfRotation")
+        << centreOfRotation_ << token::END_STATEMENT << nl;
     os.writeKeyword("normal")
         << normal_ << token::END_STATEMENT << nl;
 }
diff --git a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/plane/sixDoFRigidBodyMotionPlaneConstraint.H b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/plane/sixDoFRigidBodyMotionPlaneConstraint.H
index 1467e54e783597ac70034bba7840a8121a605c1d..621f63bc3f6c0837abc37cb0c5ed0ae1be3ff71c 100644
--- a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/plane/sixDoFRigidBodyMotionPlaneConstraint.H
+++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/plane/sixDoFRigidBodyMotionPlaneConstraint.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -25,8 +25,11 @@ Class
     Foam::sixDoFRigidBodyMotionConstraints::plane
 
 Description
-    sixDoFRigidBodyMotionConstraint.  Reference point may only move
-    along a plane.
+    Translation constraint on the centre of rotation:
+        may only move on a plane.
+
+    If 'centreOfRotation' is not provided in the dictionary the centre of mass
+    is used.
 
 SourceFiles
     sixDoFRigidBodyMotionPlaneConstraint.C
@@ -56,6 +59,9 @@ class plane
 {
     // Private data
 
+        //- Centre of rotation on plane
+        point centreOfRotation_;
+
         //- Normal to plane
         vector normal_;
 
@@ -72,7 +78,8 @@ public:
         plane
         (
             const word& name,
-            const dictionary& sDoFRBMCDict
+            const dictionary& sDoFRBMCDict,
+            const sixDoFRigidBodyMotion& motion
         );
 
         //- Construct and return a clone
@@ -91,6 +98,10 @@ public:
 
     // Member Functions
 
+        //- Set the centre of rotation to the projection of the
+        //  centre of mass onto the plane
+        virtual void setCentreOfRotation(point&) const;
+
         //- Apply and accumulate translational constraints
         virtual void constrainTranslation(pointConstraint&) const;
 
diff --git a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/point/sixDoFRigidBodyMotionPointConstraint.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/point/sixDoFRigidBodyMotionPointConstraint.C
index 1068b01af46773777652e2b11b2764cd675fcc59..ac19a8bcc1259ce948858d03bc410be4d39e1e54 100644
--- a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/point/sixDoFRigidBodyMotionPointConstraint.C
+++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/point/sixDoFRigidBodyMotionPointConstraint.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -50,11 +50,12 @@ namespace sixDoFRigidBodyMotionConstraints
 Foam::sixDoFRigidBodyMotionConstraints::point::point
 (
     const word& name,
-    const dictionary& sDoFRBMCDict
+    const dictionary& sDoFRBMCDict,
+    const sixDoFRigidBodyMotion& motion
 )
 :
-    sixDoFRigidBodyMotionConstraint(name, sDoFRBMCDict),
-    point_()
+    sixDoFRigidBodyMotionConstraint(name, sDoFRBMCDict, motion),
+    centreOfRotation_()
 {
     read(sDoFRBMCDict);
 }
@@ -68,6 +69,15 @@ Foam::sixDoFRigidBodyMotionConstraints::point::~point()
 
 // * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * * //
 
+void Foam::sixDoFRigidBodyMotionConstraints::point::setCentreOfRotation
+(
+    Foam::point& CofR
+) const
+{
+    CofR = centreOfRotation_;
+}
+
+
 void Foam::sixDoFRigidBodyMotionConstraints::point::constrainTranslation
 (
     pointConstraint& pc
@@ -91,7 +101,11 @@ bool Foam::sixDoFRigidBodyMotionConstraints::point::read
 {
     sixDoFRigidBodyMotionConstraint::read(sDoFRBMCDict);
 
-    sDoFRBMCCoeffs_.lookup("point") >> point_;
+    centreOfRotation_ = sDoFRBMCCoeffs_.lookupOrDefault
+    (
+        "centreOfRotation",
+        motion_.initialCentreOfMass()
+    );
 
     return true;
 }
@@ -102,8 +116,8 @@ void Foam::sixDoFRigidBodyMotionConstraints::point::write
     Ostream& os
 ) const
 {
-    os.writeKeyword("point")
-        << point_ << token::END_STATEMENT << nl;
+    os.writeKeyword("centreOfRotation")
+        << centreOfRotation_ << token::END_STATEMENT << nl;
 }
 
 // ************************************************************************* //
diff --git a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/point/sixDoFRigidBodyMotionPointConstraint.H b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/point/sixDoFRigidBodyMotionPointConstraint.H
index 39200c0c5cb9cc3ac2018b5a49199d5ecd4257ea..ec4a05ca3fec9ef682b11734ec6793ce852b8d15 100644
--- a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/point/sixDoFRigidBodyMotionPointConstraint.H
+++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/point/sixDoFRigidBodyMotionPointConstraint.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -25,7 +25,11 @@ Class
     Foam::sixDoFRigidBodyMotionConstraints::point
 
 Description
-    Point fixed in space.
+    Translation constraint on the centre of rotation:
+        fixed in space.
+
+    If 'centreOfRotation' is not provided in the dictionary the centre of mass
+    is used.
 
 SourceFiles
     sixDoFRigidBodyMotionPointConstraint.C
@@ -56,11 +60,8 @@ class point
 {
     // Private data
 
-        //- Point which is rigidly attached to the body and constrains
-        //  it so that this point remains fixed.  This serves as the
-        //  reference point for displacements as well as the target
-        //  position.
-        Foam::point point_;
+        //- Fixed centre of rotation
+        Foam::point centreOfRotation_;
 
 
 public:
@@ -75,7 +76,8 @@ public:
         point
         (
             const word& name,
-            const dictionary& sDoFRBMCDict
+            const dictionary& sDoFRBMCDict,
+            const sixDoFRigidBodyMotion& motion
         );
 
         //- Construct and return a clone
@@ -94,6 +96,9 @@ public:
 
     // Member Functions
 
+        //- Set the centre of rotation to the point
+        virtual void setCentreOfRotation(Foam::point&) const;
+
         //- Apply and accumulate translational constraints
         virtual void constrainTranslation(pointConstraint&) const;
 
diff --git a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint.C
index 10044ac8328eddf04e50a89d5575cd1343d88cec..255f7996fc5c330890e7a91124f78f8105777d3c 100644
--- a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint.C
+++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -39,11 +39,13 @@ namespace Foam
 Foam::sixDoFRigidBodyMotionConstraint::sixDoFRigidBodyMotionConstraint
 (
     const word& name,
-    const dictionary& sDoFRBMCDict
+    const dictionary& sDoFRBMCDict,
+    const sixDoFRigidBodyMotion& motion
 )
 :
     name_(name),
-    sDoFRBMCCoeffs_(sDoFRBMCDict)
+    sDoFRBMCCoeffs_(sDoFRBMCDict),
+    motion_(motion)
 {}
 
 
diff --git a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint.H b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint.H
index b4eed214f9db1ad4eb8c883862f0127cc35c283d..0d6f96cf2b791a54948df62003eba93a313a7276 100644
--- a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint.H
+++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -46,6 +46,7 @@ SourceFiles
 #include "Time.H"
 #include "dictionary.H"
 #include "autoPtr.H"
+#include "point.H"
 #include "pointConstraint.H"
 #include "runTimeSelectionTables.H"
 
@@ -75,6 +76,9 @@ protected:
         //- Constraint model specific coefficient dictionary
         dictionary sDoFRBMCCoeffs_;
 
+        //- Reference to the body motion
+        const sixDoFRigidBodyMotion& motion_;
+
 
 public:
 
@@ -89,8 +93,12 @@ public:
             autoPtr,
             sixDoFRigidBodyMotionConstraint,
             dictionary,
-            (const word& name, const dictionary& sDoFRBMCDict),
-            (name, sDoFRBMCDict)
+            (
+                const word& name,
+                const dictionary& sDoFRBMCDict,
+                const sixDoFRigidBodyMotion& motion
+            ),
+            (name, sDoFRBMCDict, motion)
         );
 
 
@@ -100,7 +108,8 @@ public:
         sixDoFRigidBodyMotionConstraint
         (
             const word& name,
-            const dictionary& sDoFRBMCDict
+            const dictionary& sDoFRBMCDict,
+            const sixDoFRigidBodyMotion& motion
         );
 
         //- Construct and return a clone
@@ -113,7 +122,8 @@ public:
         static autoPtr<sixDoFRigidBodyMotionConstraint> New
         (
             const word& name,
-            const dictionary& sDoFRBMCDict
+            const dictionary& sDoFRBMCDict,
+            const sixDoFRigidBodyMotion& motion
         );
 
 
@@ -129,6 +139,10 @@ public:
             return name_;
         }
 
+        //- Set the centre of rotation if not the centre of mass
+        virtual void setCentreOfRotation(point&) const
+        {}
+
         //- Apply and accumulate translational constraints
         virtual void constrainTranslation(pointConstraint&) const = 0;
 
diff --git a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraintNew.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraintNew.C
index b6f3e8fb1f195cee52efe82a3e65f2e993a6c592..8893d8e8017b0d45d77dfae1082393aaceae2806 100644
--- a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraintNew.C
+++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraintNew.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -31,7 +31,8 @@ Foam::autoPtr<Foam::sixDoFRigidBodyMotionConstraint>
 Foam::sixDoFRigidBodyMotionConstraint::New
 (
     const word& name,
-    const dictionary& sDoFRBMCDict
+    const dictionary& sDoFRBMCDict,
+    const sixDoFRigidBodyMotion& motion
 )
 {
     const word constraintType
@@ -48,7 +49,9 @@ Foam::sixDoFRigidBodyMotionConstraint::New
         (
             "sixDoFRigidBodyMotionConstraint::New"
             "("
+                "const word& name,"
                 "const dictionary& sDoFRBMCDict"
+                "const sixDoFRigidBodyMotion& motion"
             ")"
         )   << "Unknown sixDoFRigidBodyMotionConstraint type "
             << constraintType << nl << nl
@@ -59,7 +62,7 @@ Foam::sixDoFRigidBodyMotionConstraint::New
 
     return autoPtr<sixDoFRigidBodyMotionConstraint>
     (
-        cstrIter()(name, sDoFRBMCDict)
+        cstrIter()(name, sDoFRBMCDict, motion)
     );
 }
 
diff --git a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/restraints/linearAxialAngularSpring/linearAxialAngularSpring.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/restraints/linearAxialAngularSpring/linearAxialAngularSpring.C
index 504944bb29aff0272f399a3b7e1e1f19c1cdd815..44e65ee03ecafbd53d42fa8d35ed7825a96528e7 100644
--- a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/restraints/linearAxialAngularSpring/linearAxialAngularSpring.C
+++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/restraints/linearAxialAngularSpring/linearAxialAngularSpring.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -129,8 +129,8 @@ Foam::sixDoFRigidBodyMotionRestraints::linearAxialAngularSpring::restrain
     restraintForce = vector::zero;
 
     // Not needed to be altered as restraintForce is zero, but set to
-    // centreOfMass to be sure of no spurious moment
-    restraintPosition = motion.centreOfMass();
+    // centreOfRotation to be sure of no spurious moment
+    restraintPosition = motion.centreOfRotation();
 
     if (motion.report())
     {
diff --git a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/restraints/linearSpring/linearSpring.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/restraints/linearSpring/linearSpring.C
index a26660caf87871aad1e3379852820ee62ac0540f..24a38a433789aca2b9522015baca18df511583ec 100644
--- a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/restraints/linearSpring/linearSpring.C
+++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/restraints/linearSpring/linearSpring.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -80,14 +80,14 @@ void Foam::sixDoFRigidBodyMotionRestraints::linearSpring::restrain
     vector& restraintMoment
 ) const
 {
-    restraintPosition = motion.currentPosition(refAttachmentPt_);
+    restraintPosition = motion.transform(refAttachmentPt_);
 
     vector r = restraintPosition - anchor_;
 
     scalar magR = mag(r);
     r /= (magR + VSMALL);
 
-    vector v = motion.currentVelocity(restraintPosition);
+    vector v = motion.velocity(restraintPosition);
 
     restraintForce = -stiffness_*(magR - restLength_)*r - damping_*(r & v)*r;
 
diff --git a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/restraints/sphericalAngularSpring/sphericalAngularSpring.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/restraints/sphericalAngularSpring/sphericalAngularSpring.C
index a0525a19e66c0ad0096afe1037af1adafe9464e3..da8f62bbce94be6c5ec14b826455bf79c7786e85 100644
--- a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/restraints/sphericalAngularSpring/sphericalAngularSpring.C
+++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/restraints/sphericalAngularSpring/sphericalAngularSpring.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -104,8 +104,8 @@ void Foam::sixDoFRigidBodyMotionRestraints::sphericalAngularSpring::restrain
     restraintForce = vector::zero;
 
     // Not needed to be altered as restraintForce is zero, but set to
-    // centreOfMass to be sure of no spurious moment
-    restraintPosition = motion.centreOfMass();
+    // centreOfRotation to be sure of no spurious moment
+    restraintPosition = motion.centreOfRotation();
 
     if (motion.report())
     {
diff --git a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/restraints/tabulatedAxialAngularSpring/tabulatedAxialAngularSpring.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/restraints/tabulatedAxialAngularSpring/tabulatedAxialAngularSpring.C
index 1bf86e3b19c297a7773c25ec9c3c3b0e203c1111..9233e618437b0ff7b8c528d1d04d914f607aa971 100644
--- a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/restraints/tabulatedAxialAngularSpring/tabulatedAxialAngularSpring.C
+++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/restraints/tabulatedAxialAngularSpring/tabulatedAxialAngularSpring.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -130,8 +130,8 @@ Foam::sixDoFRigidBodyMotionRestraints::tabulatedAxialAngularSpring::restrain
     restraintForce = vector::zero;
 
     // Not needed to be altered as restraintForce is zero, but set to
-    // centreOfMass to be sure of no spurious moment
-    restraintPosition = motion.centreOfMass();
+    // centreOfRotation to be sure of no spurious moment
+    restraintPosition = motion.centreOfRotation();
 
     if (motion.report())
     {
diff --git a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion.C
index db88b739620712c0a6211dc9f6b0106aa37473ba..78e4c63a85a14a5c39eaed1030d4e73e3759ffc6 100644
--- a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion.C
+++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -44,22 +44,24 @@ void Foam::sixDoFRigidBodyMotion::applyRestraints()
                 Info<< "Restraint " << restraints_[rI].name() << ": ";
             }
 
-            // restraint position
+            // Restraint position
             point rP = vector::zero;
 
-            // restraint force
+            // Restraint force
             vector rF = vector::zero;
 
-            // restraint moment
+            // Restraint moment
             vector rM = vector::zero;
 
+            // Accumulate the restraints
             restraints_[rI].restrain(*this, rP, rF, rM);
 
+            // Update the acceleration
             a() += rF/mass_;
 
             // Moments are returned in global axes, transforming to
             // body local to add to torque.
-            tau() += Q().T() & (rM + ((rP - centreOfMass()) ^ rF));
+            tau() += Q().T() & (rM + ((rP - centreOfRotation()) ^ rF));
         }
     }
 }
@@ -75,57 +77,16 @@ Foam::sixDoFRigidBodyMotion::sixDoFRigidBodyMotion()
     constraints_(),
     tConstraints_(tensor::I),
     rConstraints_(tensor::I),
-    initialCentreOfMass_(vector::zero),
+    initialCentreOfRotation_(vector::zero),
     initialQ_(I),
-    momentOfInertia_(diagTensor::one*VSMALL),
     mass_(VSMALL),
+    momentOfInertia_(diagTensor::one*VSMALL),
     aRelax_(1.0),
     aDamp_(1.0),
     report_(false)
 {}
 
 
-Foam::sixDoFRigidBodyMotion::sixDoFRigidBodyMotion
-(
-    const point& centreOfMass,
-    const tensor& Q,
-    const vector& v,
-    const vector& a,
-    const vector& pi,
-    const vector& tau,
-    scalar mass,
-    const point& initialCentreOfMass,
-    const tensor& initialQ,
-    const diagTensor& momentOfInertia,
-    scalar aRelax,
-    scalar aDamp,
-    bool report
-)
-:
-    motionState_
-    (
-        centreOfMass,
-        Q,
-        v,
-        a,
-        pi,
-        tau
-    ),
-    motionState0_(motionState_),
-    restraints_(),
-    constraints_(),
-    tConstraints_(tensor::I),
-    rConstraints_(tensor::I),
-    initialCentreOfMass_(initialCentreOfMass),
-    initialQ_(initialQ),
-    momentOfInertia_(momentOfInertia),
-    mass_(mass),
-    aRelax_(aRelax),
-    aDamp_(aDamp),
-    report_(report)
-{}
-
-
 Foam::sixDoFRigidBodyMotion::sixDoFRigidBodyMotion
 (
     const dictionary& dict,
@@ -133,7 +94,7 @@ Foam::sixDoFRigidBodyMotion::sixDoFRigidBodyMotion
 )
 :
     motionState_(stateDict),
-    motionState0_(motionState_),
+    motionState0_(),
     restraints_(),
     constraints_(),
     tConstraints_(tensor::I),
@@ -146,6 +107,7 @@ Foam::sixDoFRigidBodyMotion::sixDoFRigidBodyMotion
             vector(dict.lookup("centreOfMass"))
         )
     ),
+    initialCentreOfRotation_(initialCentreOfMass_),
     initialQ_
     (
         dict.lookupOrDefault
@@ -154,14 +116,35 @@ Foam::sixDoFRigidBodyMotion::sixDoFRigidBodyMotion
             dict.lookupOrDefault("orientation", tensor::I)
         )
     ),
-    momentOfInertia_(dict.lookup("momentOfInertia")),
     mass_(readScalar(dict.lookup("mass"))),
+    momentOfInertia_(dict.lookup("momentOfInertia")),
     aRelax_(dict.lookupOrDefault<scalar>("accelerationRelaxation", 1.0)),
     aDamp_(dict.lookupOrDefault<scalar>("accelerationDamping", 1.0)),
     report_(dict.lookupOrDefault<Switch>("report", false))
 {
     addRestraints(dict);
+
+    // Set constraints and initial centre of rotation
+    // if different to the centre of mass
     addConstraints(dict);
+
+    // If the centres of mass and rotation are different ...
+    vector R(initialCentreOfMass_ - initialCentreOfRotation_);
+    if (magSqr(R) > VSMALL)
+    {
+        // ... correct the moment of inertia tensor using parallel axes theorem
+        momentOfInertia_ += mass_*diag(I*magSqr(R) - sqr(R));
+
+        // ... and if the centre of rotation is not specified for motion state
+        // update it
+        if (!stateDict.found("centreOfRotation"))
+        {
+            motionState_.centreOfRotation() = initialCentreOfRotation_;
+        }
+    }
+
+    // Save the old-time motion state
+    motionState0_ = motionState_;
 }
 
 
@@ -174,22 +157,16 @@ Foam::sixDoFRigidBodyMotion::sixDoFRigidBodyMotion
     motionState0_(sDoFRBM.motionState0_),
     restraints_(sDoFRBM.restraints_),
     constraints_(sDoFRBM.constraints_),
-    initialCentreOfMass_(sDoFRBM.initialCentreOfMass_),
+    initialCentreOfRotation_(sDoFRBM.initialCentreOfRotation_),
     initialQ_(sDoFRBM.initialQ_),
-    momentOfInertia_(sDoFRBM.momentOfInertia_),
     mass_(sDoFRBM.mass_),
+    momentOfInertia_(sDoFRBM.momentOfInertia_),
     aRelax_(sDoFRBM.aRelax_),
     aDamp_(sDoFRBM.aDamp_),
     report_(sDoFRBM.report_)
 {}
 
 
-// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
-
-Foam::sixDoFRigidBodyMotion::~sixDoFRigidBodyMotion()
-{}
-
-
 // * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * * //
 
 void Foam::sixDoFRigidBodyMotion::addRestraints
@@ -252,10 +229,12 @@ void Foam::sixDoFRigidBodyMotion::addConstraints
                     sixDoFRigidBodyMotionConstraint::New
                     (
                         iter().keyword(),
-                        iter().dict()
+                        iter().dict(),
+                        *this
                     )
                 );
 
+                constraints_[i].setCentreOfRotation(initialCentreOfRotation_);
                 constraints_[i].constrainTranslation(pct);
                 constraints_[i].constrainRotation(pcr);
 
@@ -289,7 +268,7 @@ void Foam::sixDoFRigidBodyMotion::updatePosition
         pi() = rConstraints_ & aDamp_*(pi0() + 0.5*deltaT0*tau());
 
         // Leapfrog move part
-        centreOfMass() = centreOfMass0() + deltaT*v();
+        centreOfRotation() = centreOfRotation0() + deltaT*v();
 
         // Leapfrog orientation adjustment
         Tuple2<tensor, vector> Qpi = rotate(Q0(), pi(), deltaT);
@@ -346,112 +325,30 @@ void Foam::sixDoFRigidBodyMotion::updateAcceleration
 }
 
 
-void Foam::sixDoFRigidBodyMotion::updateVelocity(scalar deltaT)
-{
-    // Second leapfrog velocity adjust part, required after motion and
-    // acceleration calculation
-
-    if (Pstream::master())
-    {
-        v() += tConstraints_ & aDamp_*0.5*deltaT*a();
-        pi() += rConstraints_ & aDamp_*0.5*deltaT*tau();
-
-        if (report_)
-        {
-            status();
-        }
-    }
-
-    Pstream::scatter(motionState_);
-}
-
-
-void Foam::sixDoFRigidBodyMotion::updateAcceleration
-(
-    const pointField& positions,
-    const vectorField& forces,
-    scalar deltaT
-)
-{
-    vector fGlobal = vector::zero;
-
-    vector tauGlobal = vector::zero;
-
-    if (Pstream::master())
-    {
-        fGlobal = sum(forces);
-
-        forAll(positions, i)
-        {
-            tauGlobal += (positions[i] - centreOfMass()) ^ forces[i];
-        }
-    }
-
-    updateAcceleration(fGlobal, tauGlobal, deltaT);
-}
-
-
-Foam::point Foam::sixDoFRigidBodyMotion::predictedPosition
-(
-    const point& pInitial,
-    const vector& deltaForce,
-    const vector& deltaMoment,
-    scalar deltaT
-) const
-{
-    vector vTemp = v() + deltaT*(a() + deltaForce/mass_);
-    vector piTemp = pi() + deltaT*(tau() + (Q().T() & deltaMoment));
-    point centreOfMassTemp = centreOfMass0() + deltaT*vTemp;
-    Tuple2<tensor, vector> QpiTemp = rotate(Q0(), piTemp, deltaT);
-
-    return
-    (
-        centreOfMassTemp
-      + (QpiTemp.first() & initialQ_.T() & (pInitial - initialCentreOfMass_))
-    );
-}
-
-
-Foam::vector Foam::sixDoFRigidBodyMotion::predictedOrientation
-(
-    const vector& vInitial,
-    const vector& deltaMoment,
-    scalar deltaT
-) const
-{
-    vector piTemp = pi() + deltaT*(tau() + (Q().T() & deltaMoment));
-    Tuple2<tensor, vector> QpiTemp = rotate(Q0(), piTemp, deltaT);
-
-    vector o(QpiTemp.first() & initialQ_.T() & vInitial);
-    o /= mag(o);
-
-    return o;
-}
-
-
 void Foam::sixDoFRigidBodyMotion::status() const
 {
-    Info<< "Centre of mass: " << centreOfMass() << nl
+    Info<< "Centre of rotation: " << centreOfRotation() << nl
+        << "Centre of mass: " << centreOfMass() << nl
         << "Linear velocity: " << v() << nl
         << "Angular velocity: " << omega()
         << endl;
 }
 
 
-Foam::tmp<Foam::pointField> Foam::sixDoFRigidBodyMotion::currentPosition
+Foam::tmp<Foam::pointField> Foam::sixDoFRigidBodyMotion::transform
 (
     const pointField& initialPoints
 ) const
 {
     return
     (
-        centreOfMass()
-      + (Q() & initialQ_.T() & (initialPoints - initialCentreOfMass_))
+        centreOfRotation()
+      + (Q() & initialQ_.T() & (initialPoints - initialCentreOfRotation_))
     );
 }
 
 
-Foam::tmp<Foam::pointField> Foam::sixDoFRigidBodyMotion::scaledPosition
+Foam::tmp<Foam::pointField> Foam::sixDoFRigidBodyMotion::transform
 (
     const pointField& initialPoints,
     const scalarField& scale
@@ -460,7 +357,7 @@ Foam::tmp<Foam::pointField> Foam::sixDoFRigidBodyMotion::scaledPosition
     // Calculate the transformation septerion from the initial state
     septernion s
     (
-        centreOfMass() - initialCentreOfMass(),
+        centreOfRotation() - initialCentreOfRotation(),
         quaternion(Q() & initialQ().T())
     );
 
@@ -475,7 +372,7 @@ Foam::tmp<Foam::pointField> Foam::sixDoFRigidBodyMotion::scaledPosition
             // Use solid-body motion where scale = 1
             if (scale[pointi] > 1 - SMALL)
             {
-                points[pointi] = currentPosition(initialPoints[pointi]);
+                points[pointi] = transform(initialPoints[pointi]);
             }
             // Slerp septernion interpolation
             else
@@ -483,8 +380,12 @@ Foam::tmp<Foam::pointField> Foam::sixDoFRigidBodyMotion::scaledPosition
                 septernion ss(slerp(septernion::I, s, scale[pointi]));
 
                 points[pointi] =
-                    initialCentreOfMass()
-                  + ss.transform(initialPoints[pointi] - initialCentreOfMass());
+                    initialCentreOfRotation()
+                  + ss.transform
+                    (
+                        initialPoints[pointi]
+                      - initialCentreOfRotation()
+                    );
             }
         }
     }
@@ -493,22 +394,4 @@ Foam::tmp<Foam::pointField> Foam::sixDoFRigidBodyMotion::scaledPosition
 }
 
 
-bool Foam::sixDoFRigidBodyMotion::read(const dictionary& dict)
-{
-    dict.lookup("momentOfInertia") >> momentOfInertia_;
-    dict.lookup("mass") >> mass_;
-    aRelax_ = dict.lookupOrDefault<scalar>("accelerationRelaxation", 1.0);
-    aDamp_ = dict.lookupOrDefault<scalar>("accelerationDamping", 1.0);
-    report_ = dict.lookupOrDefault<Switch>("report", false);
-
-    restraints_.clear();
-    addRestraints(dict);
-
-    constraints_.clear();
-    addConstraints(dict);
-
-    return true;
-}
-
-
 // ************************************************************************* //
diff --git a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion.H b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion.H
index c7b4bd7c30a8aeb512e4a13ca82b53ba1d304498..b08c7d011ff70dfb1d19546ee835fc3d976cbd60 100644
--- a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion.H
+++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -42,8 +42,8 @@ Description
     url = {http://link.aip.org/link/?JCP/107/5840/1},
     doi = {10.1063/1.474310}
 
-    Can add restraints (i.e. a spring) and constraints (i.e. motion
-    may only be on a plane).
+    Can add restraints (e.g. a spring)
+    and constraints (e.g. motion may only be on a plane).
 
 SourceFiles
     sixDoFRigidBodyMotionI.H
@@ -66,16 +66,6 @@ SourceFiles
 namespace Foam
 {
 
-// Forward declaration of classes
-class Istream;
-class Ostream;
-
-// Forward declaration of friend functions and operators
-class sixDoFRigidBodyMotion;
-Istream& operator>>(Istream&, sixDoFRigidBodyMotion&);
-Ostream& operator<<(Ostream&, const sixDoFRigidBodyMotion&);
-
-
 /*---------------------------------------------------------------------------*\
                       Class sixDoFRigidBodyMotion Declaration
 \*---------------------------------------------------------------------------*/
@@ -105,16 +95,19 @@ class sixDoFRigidBodyMotion
         //- Centre of mass of initial state
         point initialCentreOfMass_;
 
+        //- Centre of rotation of initial state
+        point initialCentreOfRotation_;
+
         //- Orientation of initial state
         tensor initialQ_;
 
+        //- Mass of the body
+        scalar mass_;
+
         //- Moment of inertia of the body in reference configuration
         //  (Q = I)
         diagTensor momentOfInertia_;
 
-        //- Mass of the body
-        scalar mass_;
-
         //- Acceleration relaxation coefficient
         scalar aRelax_;
 
@@ -157,54 +150,54 @@ class sixDoFRigidBodyMotion
 
         // Access
 
-            //- Return access to the restraints
+            //- Return the restraints
             inline const PtrList<sixDoFRigidBodyMotionRestraint>&
                 restraints() const;
 
-            //- Return access to the constraints
+            //- Return the constraints
             inline const PtrList<sixDoFRigidBodyMotionConstraint>&
                 constraints() const;
 
-            //- Return access to the initial centre of mass
-            inline const point& initialCentreOfMass() const;
+            //- Return the initial centre of rotation
+            inline const point& initialCentreOfRotation() const;
 
-            //- Return access to the initial orientation
+            //- Return the initial orientation
             inline const tensor& initialQ() const;
 
-            //- Return access to the orientation
+            //- Return the orientation
             inline const tensor& Q() const;
 
-            //- Return access to acceleration
+            //- Return the current acceleration
             inline const vector& a() const;
 
-            //- Return access to angular momentum
+            //- Return the current angular momentum
             inline const vector& pi() const;
 
-            //- Return access to torque
+            //- Return the current torque
             inline const vector& tau() const;
 
-            //- Return access to the orientation at previous time-step
+            //- Return the orientation at previous time-step
             inline const tensor& Q0() const;
 
-            //- Return access to velocity at previous time-step
+            //- Return the velocity at previous time-step
             inline const vector& v0() const;
 
-            //- Return access to acceleration at previous time-step
+            //- Return the acceleration at previous time-step
             inline const vector& a0() const;
 
-            //- Return access to angular momentum at previous time-step
+            //- Return the angular momentum at previous time-step
             inline const vector& pi0() const;
 
-            //- Return access to torque at previous time-step
+            //- Return the torque at previous time-step
             inline const vector& tau0() const;
 
 
         // Edit
 
-            //- Return access to the centre of mass
-            inline point& initialCentreOfMass();
+            //- Return the centre of rotation
+            inline point& initialCentreOfRotation();
 
-            //- Return access to the centre of mass
+            //- Return initial orientation
             inline tensor& initialQ();
 
             //- Return non-const access to the orientation
@@ -230,24 +223,6 @@ public:
         //- Construct null
         sixDoFRigidBodyMotion();
 
-        //- Construct from components
-        sixDoFRigidBodyMotion
-        (
-            const point& centreOfMass,
-            const tensor& Q,
-            const vector& v,
-            const vector& a,
-            const vector& pi,
-            const vector& tau,
-            scalar mass,
-            const point& initialCentreOfMass,
-            const tensor& initialQ,
-            const diagTensor& momentOfInertia,
-            scalar aRelax = 1.0,
-            scalar aDamp = 1.0,
-            bool report = false
-        );
-
         //- Construct from constant and state dictionaries
         sixDoFRigidBodyMotion
         (
@@ -259,159 +234,116 @@ public:
         sixDoFRigidBodyMotion(const sixDoFRigidBodyMotion&);
 
 
-    //- Destructor
-    ~sixDoFRigidBodyMotion();
-
-
     // Member Functions
 
-        //- Add restraints to the motion, public to allow external
-        //  addition of restraints after construction
-        void addRestraints(const dictionary& dict);
+        // Access
 
-        //- Add restraints to the motion, public to allow external
-        //  addition of restraints after construction
-        void addConstraints(const dictionary& dict);
+            //- Return the mass
+            inline scalar mass() const;
 
-        //- First leapfrog velocity adjust and motion part, required
-        //  before force calculation.  Takes old timestep for variable
-        //  timestep cases.
-        void updatePosition
-        (
-            scalar deltaT,
-            scalar deltaT0
-        );
+            //- Return the inertia tensor
+            inline const diagTensor& momentOfInertia() const;
 
-        //- Second leapfrog velocity adjust part
-        //  required after motion and force calculation
-        void updateAcceleration
-        (
-            const vector& fGlobal,
-            const vector& tauGlobal,
-            scalar deltaT
-        );
+            //- Return the motion state
+            inline const sixDoFRigidBodyMotionState& state() const;
 
-        //- Second leapfrog velocity adjust part
-        //  required after motion and force calculation
-        void updateVelocity(scalar deltaT);
+            //- Return the current centre of rotation
+            inline const point& centreOfRotation() const;
 
-        //- Global forces supplied at locations, calculating net force
-        //  and moment
-        void updateAcceleration
-        (
-            const pointField& positions,
-            const vectorField& forces,
-            scalar deltaT
-        );
+            //- Return the centre of rotation at previous time-step
+            inline const point& centreOfRotation0() const;
 
-        //- Transform the given initial state pointField by the current
-        //  motion state
-        tmp<pointField> currentPosition(const pointField& initialPoints) const;
+            //- Return the initial centre of mass
+            inline const point& initialCentreOfMass() const;
 
-        //- Transform the given initial state pointField by the current
-        //  motion state
-        tmp<pointField> scaledPosition
-        (
-            const pointField& initialPoints,
-            const scalarField& scale
-        ) const;
+            //- Return the current centre of mass
+            inline point centreOfMass() const;
 
-        //- Transform the given initial state point by the current motion
-        //  state
-        inline point currentPosition(const point& initialPoints) const;
+            //- Return the orientation tensor, Q.
+            //  globalVector = Q & bodyLocalVector
+            //  bodyLocalVector = Q.T() & globalVector
+            inline const tensor& orientation() const;
 
-        //- Transform the given initial state direction by the current
-        //  motion state
-        inline vector currentOrientation(const vector& vInitial) const;
+            //- Return the angular velocity in the global frame
+            inline vector omega() const;
 
-        //- Access the orientation tensor, Q.
-        //  globalVector = Q & bodyLocalVector
-        //  bodyLocalVector = Q.T() & globalVector
-        inline const tensor& orientation() const;
+            //- Return the current velocity
+            inline const vector& v() const;
 
-        //- Predict the position of the supplied initial state point
-        //  after deltaT given the current motion state and the
-        //  additional supplied force and moment
-        point predictedPosition
-        (
-            const point& initialPoints,
-            const vector& deltaForce,
-            const vector& deltaMoment,
-            scalar deltaT
-        ) const;
+            inline vector momentArm() const;
 
-        //- Predict the orientation of the supplied initial state
-        //  vector after deltaT given the current motion state and the
-        //  additional supplied moment
-        vector predictedOrientation
-        (
-            const vector& vInitial,
-            const vector& deltaMoment,
-            scalar deltaT
-        ) const;
+            //- Return the report Switch
+            inline bool report() const;
 
-        //- Return the angular velocity in the global frame
-        inline vector omega() const;
 
-        //- Return the velocity of a position
-        inline point currentVelocity(const point& pt) const;
+        // Edit
 
-        //- Report the status of the motion
-        void status() const;
+            //- Store the motion state at the beginning of the time-step
+            inline void newTime();
 
+            //- Return non-const access to the centre of rotation
+            inline point& centreOfRotation();
 
-        // Access
 
-            //- Return access to the motion state
-            inline const sixDoFRigidBodyMotionState& state() const;
+        // Constraints and Restraints
 
-            //- Return const access to the centre of mass
-            inline const point& centreOfMass() const;
+            //- Add restraints to the motion, public to allow external
+            //  addition of restraints after construction
+            void addRestraints(const dictionary& dict);
 
-            //- Return const access to the centre of mass at previous time-step
-            inline const point& centreOfMass0() const;
+            //- Add restraints to the motion, public to allow external
+            //  addition of restraints after construction
+            void addConstraints(const dictionary& dict);
 
-            //- Return access to the inertia tensor
-            inline const diagTensor& momentOfInertia() const;
 
-            //- Return const access to the mass
-            inline scalar mass() const;
+        // Update state
 
-            //- Return the report Switch
-            inline bool report() const;
+            //- First leapfrog velocity adjust and motion part, required
+            //  before force calculation.  Takes old timestep for variable
+            //  timestep cases.
+            void updatePosition(scalar deltaT, scalar deltaT0);
 
-            //- Return access to velocity
-            inline const vector& v() const;
+            //- Second leapfrog velocity adjust part
+            //  required after motion and force calculation
+            void updateAcceleration
+            (
+                const vector& fGlobal,
+                const vector& tauGlobal,
+                scalar deltaT
+            );
 
+            //- Report the status of the motion
+            void status() const;
 
-        // Edit
 
-            //- Store the motion state at the beginning of the time-step
-            inline void newTime();
+        // Transformations
 
-            //- Return non-const access to the centre of mass
-            inline point& centreOfMass();
+            //- Return the velocity of a position
+            inline point velocity(const point& pt) const;
 
-            //- Return non-const access to the inertia tensor
-            inline diagTensor& momentOfInertia();
+            //- Transform the given initial state point by the current motion
+            //  state
+            inline point transform(const point& initialPoints) const;
 
-            //- Return non-const access to the mass
-            inline scalar& mass();
+            //- Transform the given initial state pointField by the current
+            //  motion state
+            tmp<pointField> transform(const pointField& initialPoints) const;
+
+            //- Transform the given initial state pointField by the current
+            //  motion state scaled by the given scale
+            tmp<pointField> transform
+            (
+                const pointField& initialPoints,
+                const scalarField& scale
+            ) const;
 
 
         //- Write
         void write(Ostream&) const;
 
-
         //- Read coefficients dictionary and update system parameters,
         //  constraints and restraints but not the current state
         bool read(const dictionary& dict);
-
-
-    // IOstream Operators
-
-        friend Istream& operator>>(Istream&, sixDoFRigidBodyMotion&);
-        friend Ostream& operator<<(Ostream&, const sixDoFRigidBodyMotion&);
 };
 
 
diff --git a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionI.H b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionI.H
index 3186ca2fa1251f190104e49dcbfbb368e59df12d..d09e579e8cca4a3f5e51ed724bf8cd819ff8681c 100644
--- a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionI.H
+++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionI.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -25,8 +25,10 @@ License
 
 // * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
 
-inline Foam::tensor
-Foam::sixDoFRigidBodyMotion::rotationTensorX(scalar phi) const
+inline Foam::tensor Foam::sixDoFRigidBodyMotion::rotationTensorX
+(
+    scalar phi
+) const
 {
     return tensor
     (
@@ -37,8 +39,10 @@ Foam::sixDoFRigidBodyMotion::rotationTensorX(scalar phi) const
 }
 
 
-inline Foam::tensor
-Foam::sixDoFRigidBodyMotion::rotationTensorY(scalar phi) const
+inline Foam::tensor Foam::sixDoFRigidBodyMotion::rotationTensorY
+(
+    scalar phi
+) const
 {
     return tensor
     (
@@ -49,8 +53,10 @@ Foam::sixDoFRigidBodyMotion::rotationTensorY(scalar phi) const
 }
 
 
-inline Foam::tensor
-Foam::sixDoFRigidBodyMotion::rotationTensorZ(scalar phi) const
+inline Foam::tensor Foam::sixDoFRigidBodyMotion::rotationTensorZ
+(
+    scalar phi
+) const
 {
     return tensor
     (
@@ -97,13 +103,6 @@ Foam::sixDoFRigidBodyMotion::rotate
 }
 
 
-inline const Foam::sixDoFRigidBodyMotionState&
-Foam::sixDoFRigidBodyMotion::state() const
-{
-    return motionState_;
-}
-
-
 inline const Foam::PtrList<Foam::sixDoFRigidBodyMotionRestraint>&
 Foam::sixDoFRigidBodyMotion::restraints() const
 {
@@ -119,9 +118,9 @@ Foam::sixDoFRigidBodyMotion::constraints() const
 
 
 inline const Foam::point&
-Foam::sixDoFRigidBodyMotion::initialCentreOfMass() const
+Foam::sixDoFRigidBodyMotion::initialCentreOfRotation() const
 {
-    return initialCentreOfMass_;
+    return initialCentreOfRotation_;
 }
 
 
@@ -192,9 +191,9 @@ inline const Foam::vector& Foam::sixDoFRigidBodyMotion::tau0() const
 }
 
 
-inline Foam::point& Foam::sixDoFRigidBodyMotion::initialCentreOfMass()
+inline Foam::point& Foam::sixDoFRigidBodyMotion::initialCentreOfRotation()
 {
-    return initialCentreOfMass_;
+    return initialCentreOfRotation_;
 }
 
 
@@ -236,72 +235,67 @@ inline Foam::vector& Foam::sixDoFRigidBodyMotion::tau()
 
 // * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * * //
 
-inline Foam::point Foam::sixDoFRigidBodyMotion::currentPosition
-(
-    const point& initialPoints
-) const
+inline Foam::scalar Foam::sixDoFRigidBodyMotion::mass() const
 {
-    return
-    (
-        centreOfMass()
-      + (Q() & initialQ_.T() & (initialPoints - initialCentreOfMass_))
-    );
+    return mass_;
 }
 
 
-inline Foam::vector Foam::sixDoFRigidBodyMotion::currentOrientation
-(
-    const vector& vInitial
-) const
+inline const Foam::diagTensor&
+Foam::sixDoFRigidBodyMotion::momentOfInertia() const
 {
-    return (Q() & initialQ_.T() & vInitial);
+    return momentOfInertia_;
 }
 
 
-inline const Foam::tensor&
-Foam::sixDoFRigidBodyMotion::orientation() const
+inline const Foam::sixDoFRigidBodyMotionState&
+Foam::sixDoFRigidBodyMotion::state() const
 {
-    return Q();
+    return motionState_;
 }
 
 
-inline Foam::vector Foam::sixDoFRigidBodyMotion::omega() const
+inline const Foam::point& Foam::sixDoFRigidBodyMotion::centreOfRotation() const
 {
-    return  Q() & (inv(momentOfInertia_) & pi());
+    return motionState_.centreOfRotation();
 }
 
 
-inline Foam::point Foam::sixDoFRigidBodyMotion::currentVelocity
-(
-    const point& pt
-) const
+inline const Foam::point& Foam::sixDoFRigidBodyMotion::centreOfRotation0() const
 {
-    return (omega() ^ (pt - centreOfMass())) + v();
+    return motionState0_.centreOfRotation();
 }
 
 
-inline const Foam::point& Foam::sixDoFRigidBodyMotion::centreOfMass() const
+inline const Foam::point&
+Foam::sixDoFRigidBodyMotion::initialCentreOfMass() const
 {
-    return motionState_.centreOfMass();
+    return initialCentreOfMass_;
 }
 
 
-inline const Foam::point& Foam::sixDoFRigidBodyMotion::centreOfMass0() const
+inline Foam::point Foam::sixDoFRigidBodyMotion::centreOfMass() const
 {
-    return motionState0_.centreOfMass();
+    return transform(initialCentreOfMass_);
 }
 
 
-inline const Foam::diagTensor&
-Foam::sixDoFRigidBodyMotion::momentOfInertia() const
+inline Foam::vector Foam::sixDoFRigidBodyMotion::momentArm() const
 {
-    return momentOfInertia_;
+    return centreOfMass() - motionState_.centreOfRotation();
 }
 
 
-inline Foam::scalar Foam::sixDoFRigidBodyMotion::mass() const
+inline const Foam::tensor&
+Foam::sixDoFRigidBodyMotion::orientation() const
 {
-    return mass_;
+    return Q();
+}
+
+
+inline Foam::vector Foam::sixDoFRigidBodyMotion::omega() const
+{
+    return  Q() & (inv(momentOfInertia_) & pi());
 }
 
 
@@ -317,21 +311,31 @@ inline void Foam::sixDoFRigidBodyMotion::newTime()
 }
 
 
-inline Foam::point& Foam::sixDoFRigidBodyMotion::centreOfMass()
+inline Foam::point& Foam::sixDoFRigidBodyMotion::centreOfRotation()
 {
-    return motionState_.centreOfMass();
+    return motionState_.centreOfRotation();
 }
 
 
-inline Foam::diagTensor& Foam::sixDoFRigidBodyMotion::momentOfInertia()
+inline Foam::point Foam::sixDoFRigidBodyMotion::velocity
+(
+    const point& pt
+) const
 {
-    return momentOfInertia_;
+    return (omega() ^ (pt - centreOfRotation())) + v();
 }
 
 
-inline Foam::scalar& Foam::sixDoFRigidBodyMotion::mass()
+inline Foam::point Foam::sixDoFRigidBodyMotion::transform
+(
+    const point& initialPoint
+) const
 {
-    return mass_;
+    return
+    (
+        centreOfRotation()
+      + (Q() & initialQ_.T() & (initialPoint - initialCentreOfRotation_))
+    );
 }
 
 // ************************************************************************* //
diff --git a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionIO.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionIO.C
index f4c0b5b7ed634a588b20e713f0485f54ab60b133..23e2c35ac6a46869eb47e6599655f5f5252de6e7 100644
--- a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionIO.C
+++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionIO.C
@@ -28,12 +28,30 @@ License
 
 // * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * * //
 
+bool Foam::sixDoFRigidBodyMotion::read(const dictionary& dict)
+{
+    dict.lookup("momentOfInertia") >> momentOfInertia_;
+    dict.lookup("mass") >> mass_;
+    aRelax_ = dict.lookupOrDefault<scalar>("accelerationRelaxation", 1.0);
+    aDamp_ = dict.lookupOrDefault<scalar>("accelerationDamping", 1.0);
+    report_ = dict.lookupOrDefault<Switch>("report", false);
+
+    restraints_.clear();
+    addRestraints(dict);
+
+    constraints_.clear();
+    addConstraints(dict);
+
+    return true;
+}
+
+
 void Foam::sixDoFRigidBodyMotion::write(Ostream& os) const
 {
     motionState_.write(os);
 
-    os.writeKeyword("initialCentreOfMass")
-        << initialCentreOfMass_ << token::END_STATEMENT << nl;
+    os.writeKeyword("initialCentreOfRotation")
+        << initialCentreOfRotation_ << token::END_STATEMENT << nl;
     os.writeKeyword("initialOrientation")
         << initialQ_ << token::END_STATEMENT << nl;
     os.writeKeyword("momentOfInertia")
@@ -95,48 +113,4 @@ void Foam::sixDoFRigidBodyMotion::write(Ostream& os) const
 }
 
 
-// * * * * * * * * * * * * * * * IOstream Operators  * * * * * * * * * * * * //
-
-Foam::Istream& Foam::operator>>(Istream& is, sixDoFRigidBodyMotion& sDoFRBM)
-{
-    is  >> sDoFRBM.motionState_
-        >> sDoFRBM.initialCentreOfMass_
-        >> sDoFRBM.initialQ_
-        >> sDoFRBM.momentOfInertia_
-        >> sDoFRBM.mass_;
-
-    // Check state of Istream
-    is.check
-    (
-        "Foam::Istream& Foam::operator>>"
-        "(Foam::Istream&, Foam::sixDoFRigidBodyMotion&)"
-    );
-
-    return is;
-}
-
-
-Foam::Ostream& Foam::operator<<
-(
-    Ostream& os,
-    const sixDoFRigidBodyMotion& sDoFRBM
-)
-{
-    os  << sDoFRBM.state()
-        << token::SPACE << sDoFRBM.initialCentreOfMass()
-        << token::SPACE << sDoFRBM.initialQ()
-        << token::SPACE << sDoFRBM.momentOfInertia()
-        << token::SPACE << sDoFRBM.mass();
-
-    // Check state of Ostream
-    os.check
-    (
-        "Foam::Ostream& Foam::operator<<(Foam::Ostream&, "
-        "const Foam::sixDoFRigidBodyMotion&)"
-    );
-
-    return os;
-}
-
-
 // ************************************************************************* //
diff --git a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionState.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionState.C
index 0e9aada9d015dc2e64b743974e1f8ea566837440..24eeda45d8aef1f3ff776dcb6be3758b1dc05856 100644
--- a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionState.C
+++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionState.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -29,7 +29,7 @@ License
 
 Foam::sixDoFRigidBodyMotionState::sixDoFRigidBodyMotionState()
 :
-    centreOfMass_(vector::zero),
+    centreOfRotation_(vector::zero),
     Q_(I),
     v_(vector::zero),
     a_(vector::zero),
@@ -38,31 +38,19 @@ Foam::sixDoFRigidBodyMotionState::sixDoFRigidBodyMotionState()
 {}
 
 
-Foam::sixDoFRigidBodyMotionState::sixDoFRigidBodyMotionState
-(
-    const point& centreOfMass,
-    const tensor& Q,
-    const vector& v,
-    const vector& a,
-    const vector& pi,
-    const vector& tau
-)
-:
-    centreOfMass_(centreOfMass),
-    Q_(Q),
-    v_(v),
-    a_(a),
-    pi_(pi),
-    tau_(tau)
-{}
-
-
 Foam::sixDoFRigidBodyMotionState::sixDoFRigidBodyMotionState
 (
     const dictionary& dict
 )
 :
-    centreOfMass_(dict.lookup("centreOfMass")),
+    centreOfRotation_
+    (
+        dict.lookupOrDefault
+        (
+            "centreOfRotation",
+            dict.lookupOrDefault("centreOfMass", vector::zero)
+        )
+    ),
     Q_(dict.lookupOrDefault("orientation", tensor::I)),
     v_(dict.lookupOrDefault("velocity", vector::zero)),
     a_(dict.lookupOrDefault("acceleration", vector::zero)),
@@ -76,7 +64,7 @@ Foam::sixDoFRigidBodyMotionState::sixDoFRigidBodyMotionState
     const sixDoFRigidBodyMotionState& sDoFRBMS
 )
 :
-    centreOfMass_(sDoFRBMS.centreOfMass()),
+    centreOfRotation_(sDoFRBMS.centreOfRotation()),
     Q_(sDoFRBMS.Q()),
     v_(sDoFRBMS.v()),
     a_(sDoFRBMS.a()),
diff --git a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionState.H b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionState.H
index be698ef86972c82ce301be4911d5576533b07f34..e7e7eda097928004a877aa949120affac4edf29d 100644
--- a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionState.H
+++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionState.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -69,7 +69,7 @@ class sixDoFRigidBodyMotionState
     // Private data
 
         //- Current position of the centre of mass of the body
-        point centreOfMass_;
+        point centreOfRotation_;
 
         //- Orientation, stored as the rotation tensor to transform
         //  from the body to the global reference frame, i.e.:
@@ -97,17 +97,6 @@ public:
         //- Construct null
         sixDoFRigidBodyMotionState();
 
-        //- Construct from components
-        sixDoFRigidBodyMotionState
-        (
-            const point& centreOfMass,
-            const tensor& Q,
-            const vector& v,
-            const vector& a,
-            const vector& pi,
-            const vector& tau
-        );
-
         //- Construct from dictionary
         sixDoFRigidBodyMotionState(const dictionary& dict);
 
@@ -124,7 +113,7 @@ public:
         // Access
 
             //- Return access to the centre of mass
-            inline const point& centreOfMass() const;
+            inline const point& centreOfRotation() const;
 
             //- Return access to the orientation
             inline const tensor& Q() const;
@@ -145,7 +134,7 @@ public:
         // Edit
 
             //- Return non-const access to the centre of mass
-            inline point& centreOfMass();
+            inline point& centreOfRotation();
 
             //- Return non-const access to the orientation
             inline tensor& Q();
diff --git a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionStateI.H b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionStateI.H
index 8df8161efe6fcfdcce95eb0f07ad21f997ae8795..e8658a5c6d5491fb8f05ece856503b5098733ba1 100644
--- a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionStateI.H
+++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionStateI.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -25,9 +25,10 @@ License
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
-inline const Foam::point& Foam::sixDoFRigidBodyMotionState::centreOfMass() const
+inline const Foam::point&
+Foam::sixDoFRigidBodyMotionState::centreOfRotation() const
 {
-    return centreOfMass_;
+    return centreOfRotation_;
 }
 
 
@@ -61,9 +62,9 @@ inline const Foam::vector& Foam::sixDoFRigidBodyMotionState::tau() const
 }
 
 
-inline Foam::point& Foam::sixDoFRigidBodyMotionState::centreOfMass()
+inline Foam::point& Foam::sixDoFRigidBodyMotionState::centreOfRotation()
 {
-    return centreOfMass_;
+    return centreOfRotation_;
 }
 
 
diff --git a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionStateIO.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionStateIO.C
index 503df53fc49af64cfcaeb4f3d975ba39f7d9b9e5..24984eec5b32110ed936305d52f0dcbb0e427b49 100644
--- a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionStateIO.C
+++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionStateIO.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -30,7 +30,7 @@ License
 
 void Foam::sixDoFRigidBodyMotionState::write(dictionary& dict) const
 {
-    dict.add("centreOfMass", centreOfMass_);
+    dict.add("centreOfRotation", centreOfRotation_);
     dict.add("orientation", Q_);
     dict.add("velocity", v_);
     dict.add("acceleration", a_);
@@ -41,8 +41,8 @@ void Foam::sixDoFRigidBodyMotionState::write(dictionary& dict) const
 
 void Foam::sixDoFRigidBodyMotionState::write(Ostream& os) const
 {
-    os.writeKeyword("centreOfMass")
-        << centreOfMass_ << token::END_STATEMENT << nl;
+    os.writeKeyword("centreOfRotation")
+        << centreOfRotation_ << token::END_STATEMENT << nl;
     os.writeKeyword("orientation")
         << Q_ << token::END_STATEMENT << nl;
     os.writeKeyword("velocity")
@@ -63,7 +63,7 @@ Foam::Istream& Foam::operator>>
     Istream& is, sixDoFRigidBodyMotionState& sDoFRBMS
 )
 {
-    is  >> sDoFRBMS.centreOfMass_
+    is  >> sDoFRBMS.centreOfRotation_
         >> sDoFRBMS.Q_
         >> sDoFRBMS.v_
         >> sDoFRBMS.a_
@@ -87,7 +87,7 @@ Foam::Ostream& Foam::operator<<
     const sixDoFRigidBodyMotionState& sDoFRBMS
 )
 {
-    os  << token::SPACE << sDoFRBMS.centreOfMass()
+    os  << token::SPACE << sDoFRBMS.centreOfRotation()
         << token::SPACE << sDoFRBMS.Q()
         << token::SPACE << sDoFRBMS.v()
         << token::SPACE << sDoFRBMS.a()
diff --git a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionSolver/sixDoFRigidBodyMotionSolver.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionSolver/sixDoFRigidBodyMotionSolver.C
index bc3afcd13f0c05ca43cd81aecae9a728368eb3a1..15bcc0df9316f9c586f235700317d4a2c0f71e9f 100644
--- a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionSolver/sixDoFRigidBodyMotionSolver.C
+++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionSolver/sixDoFRigidBodyMotionSolver.C
@@ -198,7 +198,7 @@ void Foam::sixDoFRigidBodyMotionSolver::solve()
     forcesDict.add("patches", patches_);
     forcesDict.add("rhoInf", rhoInf_);
     forcesDict.add("rhoName", rhoName_);
-    forcesDict.add("CofR", motion_.centreOfMass());
+    forcesDict.add("CofR", motion_.centreOfRotation());
 
     forces f("forces", db(), forcesDict);
 
@@ -220,14 +220,14 @@ void Foam::sixDoFRigidBodyMotionSolver::solve()
 
     motion_.updateAcceleration
     (
-        ramp*(f.forceEff() + g.value()*motion_.mass()),
-        ramp*(f.momentEff()),
+        ramp*(f.forceEff() + motion_.mass()*g.value()),
+        ramp*(f.momentEff() + motion_.mass()*(motion_.momentArm() ^ g.value())),
         t.deltaTValue()
     );
 
     // Update the displacements
     pointDisplacement_.internalField() =
-        motion_.scaledPosition(points0(), scale_) - points0();
+        motion_.transform(points0(), scale_) - points0();
 
     // Displacement has changed. Update boundary conditions
     pointConstraints::New
diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/U b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/U
index 8015d9b0e0db9844a835676a4f1dd096882cd646..38b6af93664e34447b6eaa432e9bc7dc5e40adba 100644
--- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/U
+++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/U
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/include/fixedInlet b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/include/fixedInlet
index 424f38bdb1562c2b5a5174133f08700fba9ccc47..21f972203a1caf9d148b95240973abb02f40fee9 100644
--- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/include/fixedInlet
+++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/include/fixedInlet
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/include/frontBackTopBottomPatches b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/include/frontBackTopBottomPatches
index e48cca8284a043738cfa6578219924794df3f97a..fc8ec955695ba3daa277add0d1357cb5ee609a30 100644
--- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/include/frontBackTopBottomPatches
+++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/include/frontBackTopBottomPatches
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/include/initialConditions b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/include/initialConditions
index 101d2d5b289e7b0acc573a527701f1c5ad2ef98e..bccc59497ee96711b8a77d3d6d75b4898b5d4a54 100644
--- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/include/initialConditions
+++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/include/initialConditions
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/k b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/k
index d5de7827bea30c97d37a8923e72de7c434bb4742..c6604cfcd1bac5702e048d703fd002e4e6933b09 100644
--- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/k
+++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/k
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/nut b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/nut
index d29f67c5c438f1457762d2a62dd8db39c5e9b1a3..ad8a0fb9e65ab27f507e7537f4fa0c5501bf0f9f 100644
--- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/nut
+++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/nut
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/omega b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/omega
index 5b2ceee733ad27fca3a5c8834d26e6e895178a0a..6e6863b6829458801307c812879295e6d2581ce3 100644
--- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/omega
+++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/omega
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/p b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/p
index dc7632711dbc7df0fe2263bdbfc8282aad86ca60..61b354d210717fd56ce16364b3699c78b86ff894 100644
--- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/p
+++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/p
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/pointDisplacement b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/pointDisplacement
index 7c9f66360d28db1677081956b4f1ccffe48a691a..c71b386dda6a8dcc245a0318f9788dac581f638c 100644
--- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/pointDisplacement
+++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/pointDisplacement
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/constant/RASProperties b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/constant/RASProperties
index 67cc1be5422dca6ae208800e76f01708d7cab244..a9bf04940b7a64fa4442701677ac25b5015792d4 100644
--- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/constant/RASProperties
+++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/constant/RASProperties
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/constant/dynamicMeshDict b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/constant/dynamicMeshDict
index 4683689cbf40031970b086a42ef3a1684585bf21..6b07b97a48a64e0784a61c6b5c81b832ea2f447b 100644
--- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/constant/dynamicMeshDict
+++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/constant/dynamicMeshDict
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
@@ -46,13 +46,14 @@ sixDoFRigidBodyMotionCoeffs
         yLine
         {
             sixDoFRigidBodyMotionConstraint line;
-            direction       (0 1 0);
+            centreOfRotation    (0.25 0.007 0.125);
+            direction           (0 1 0);
         }
 
         zAxis
         {
             sixDoFRigidBodyMotionConstraint axis;
-            axis            (0 0 1);
+            axis                (0 0 1);
         }
     }
 
diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/constant/polyMesh/boundary b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/constant/polyMesh/boundary
index 84afed0690a4e59036e2db94c67ad218ebf5b5b3..16f360a5254de902dd19ca2dcc9d6726192ff434 100644
--- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/constant/polyMesh/boundary
+++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/constant/polyMesh/boundary
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/constant/transportProperties b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/constant/transportProperties
index 098c4f7e5e1d9f912c260391e123ec6691d57f07..dd7419bdc50f104e545e86c354ee7b68b64f2a3a 100644
--- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/constant/transportProperties
+++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/constant/transportProperties
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/constant/turbulenceProperties b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/constant/turbulenceProperties
index 17a36ec34383baadaffa3811109c8df52169378b..fa68b2620eea228ceb82f59a72a94e09b87bbc6a 100644
--- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/constant/turbulenceProperties
+++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/constant/turbulenceProperties
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/system/controlDict b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/system/controlDict
index 65890fc2c1894efbb34c1062775e758ba3863403..d6a374f4662a19a31c5051839ffcad00dbe5647d 100644
--- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/system/controlDict
+++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/system/controlDict
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
@@ -23,13 +23,13 @@ startTime       0;
 
 stopAt          endTime;
 
-endTime         0.6;
+endTime         5;
 
 deltaT          1e-5;
 
 writeControl    adjustableRunTime;
 
-writeInterval   5e-3;
+writeInterval   1e-2;
 
 purgeWrite      0;
 
diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/system/decomposeParDict b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/system/decomposeParDict
index f3cad5eaea99102230873cdd214d64f3db2d7ff1..fb312209aa53f56205517395b61b97e1c4b7f988 100644
--- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/system/decomposeParDict
+++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/system/decomposeParDict
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/system/fvSchemes b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/system/fvSchemes
index 136346dfaba7ddf78c8456e90d3dd497a0c50922..60d587ec44b18a8f3a6c9ec53bb66d720c0a2011 100644
--- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/system/fvSchemes
+++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/system/fvSchemes
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/system/fvSolution b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/system/fvSolution
index a72df2c072ff6c2052edd32767420874beb56db3..e2f0e0f622c2527de402d93d92415c28388ff027 100644
--- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/system/fvSolution
+++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/system/fvSolution
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/0.org/U b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/0.org/U
index 7615c5dc17cb7349c6122af3bd342a797a745f7a..6ffa76e90aff73e30a5a21153441699045934381 100644
--- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/0.org/U
+++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/0.org/U
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/0.org/include/fixedInlet b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/0.org/include/fixedInlet
index 424f38bdb1562c2b5a5174133f08700fba9ccc47..21f972203a1caf9d148b95240973abb02f40fee9 100644
--- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/0.org/include/fixedInlet
+++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/0.org/include/fixedInlet
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/0.org/include/frontBackTopBottomPatches b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/0.org/include/frontBackTopBottomPatches
index e48cca8284a043738cfa6578219924794df3f97a..fc8ec955695ba3daa277add0d1357cb5ee609a30 100644
--- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/0.org/include/frontBackTopBottomPatches
+++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/0.org/include/frontBackTopBottomPatches
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/0.org/include/initialConditions b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/0.org/include/initialConditions
index 101d2d5b289e7b0acc573a527701f1c5ad2ef98e..bccc59497ee96711b8a77d3d6d75b4898b5d4a54 100644
--- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/0.org/include/initialConditions
+++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/0.org/include/initialConditions
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/0.org/k b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/0.org/k
index d5de7827bea30c97d37a8923e72de7c434bb4742..c6604cfcd1bac5702e048d703fd002e4e6933b09 100644
--- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/0.org/k
+++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/0.org/k
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/0.org/nut b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/0.org/nut
index d29f67c5c438f1457762d2a62dd8db39c5e9b1a3..ad8a0fb9e65ab27f507e7537f4fa0c5501bf0f9f 100644
--- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/0.org/nut
+++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/0.org/nut
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/0.org/omega b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/0.org/omega
index 5b2ceee733ad27fca3a5c8834d26e6e895178a0a..6e6863b6829458801307c812879295e6d2581ce3 100644
--- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/0.org/omega
+++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/0.org/omega
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/0.org/p b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/0.org/p
index dc7632711dbc7df0fe2263bdbfc8282aad86ca60..61b354d210717fd56ce16364b3699c78b86ff894 100644
--- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/0.org/p
+++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/0.org/p
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/constant/RASProperties b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/constant/RASProperties
index 67cc1be5422dca6ae208800e76f01708d7cab244..a9bf04940b7a64fa4442701677ac25b5015792d4 100644
--- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/constant/RASProperties
+++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/constant/RASProperties
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/constant/polyMesh/boundary b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/constant/polyMesh/boundary
index 84afed0690a4e59036e2db94c67ad218ebf5b5b3..16f360a5254de902dd19ca2dcc9d6726192ff434 100644
--- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/constant/polyMesh/boundary
+++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/constant/polyMesh/boundary
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/constant/transportProperties b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/constant/transportProperties
index 098c4f7e5e1d9f912c260391e123ec6691d57f07..dd7419bdc50f104e545e86c354ee7b68b64f2a3a 100644
--- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/constant/transportProperties
+++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/constant/transportProperties
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/system/controlDict b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/system/controlDict
index 8cef5fbc7fe2a1937929e44cb230505175e3bd87..67c906e16922f66537f375c9d4d51deba321cf4d 100644
--- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/system/controlDict
+++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/system/controlDict
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/system/createPatchDict b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/system/createPatchDict
index 689ac5c73586410b250e0c6980dbbe9f992f7413..3835d038bc16325d5779e7e056861350c9d65bc2 100644
--- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/system/createPatchDict
+++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/system/createPatchDict
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/system/extrudeMeshDict b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/system/extrudeMeshDict
index 4fb4d3a22699ee0de346c9932ab6a850452f3506..227ff551d3e8aff652dba53ac55edaf3354e5b28 100644
--- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/system/extrudeMeshDict
+++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/system/extrudeMeshDict
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/system/fvSchemes b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/system/fvSchemes
index 398c2ac1da974d5b569a513454e443f7e1f188d3..44336e161e1cbdf092e0e1b2c8565c51bc2688d1 100644
--- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/system/fvSchemes
+++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/system/fvSchemes
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/system/fvSolution b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/system/fvSolution
index e10a126abc0ccc0e7d752e73029a3dac669020b7..945edb9d953e2d683edd9ab798faef043fbe82f9 100644
--- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/system/fvSolution
+++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/system/fvSolution
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion_snappyHexMesh/constant/polyMesh/blockMeshDict b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion_snappyHexMesh/constant/polyMesh/blockMeshDict
index dd2b959fc0b5105bd82f3f19a75dcc4966c720b5..6193ac2cfbe6462964d25bb1bb6985c27030b5cb 100644
--- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion_snappyHexMesh/constant/polyMesh/blockMeshDict
+++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion_snappyHexMesh/constant/polyMesh/blockMeshDict
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion_snappyHexMesh/system/controlDict b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion_snappyHexMesh/system/controlDict
index 6d9c62c7f6ba0d6677b2bc44bbec6d7ed891e195..4a68bee9d3c9633ebb51dfd7f19fb33ba9cf8a29 100644
--- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion_snappyHexMesh/system/controlDict
+++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion_snappyHexMesh/system/controlDict
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion_snappyHexMesh/system/decomposeParDict b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion_snappyHexMesh/system/decomposeParDict
index d6cd01fd8fde8f892d336ddd1bccc89177037595..ec11c98681b24cefde4737cab2622383580e7fef 100644
--- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion_snappyHexMesh/system/decomposeParDict
+++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion_snappyHexMesh/system/decomposeParDict
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion_snappyHexMesh/system/fvSchemes b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion_snappyHexMesh/system/fvSchemes
index 34b1ddc8aa27ebebe497fb6e58c5f15298409e86..6779d76aa3f1d88f1cc30e9b9783ac83d03982bb 100644
--- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion_snappyHexMesh/system/fvSchemes
+++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion_snappyHexMesh/system/fvSchemes
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion_snappyHexMesh/system/fvSolution b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion_snappyHexMesh/system/fvSolution
index e7e1dc6058cf4f9f768466a8a9bc8cae73e02a2a..058730230b89f0ca96fa44b7f7fd00d496ff7fe5 100644
--- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion_snappyHexMesh/system/fvSolution
+++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion_snappyHexMesh/system/fvSolution
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion_snappyHexMesh/system/snappyHexMeshDict b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion_snappyHexMesh/system/snappyHexMeshDict
index 79558988a40d460bac085266d0c84fb91a3914c0..ef4841231cd0c66678b0dd622debd7df52bd3ced 100644
--- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion_snappyHexMesh/system/snappyHexMeshDict
+++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion_snappyHexMesh/system/snappyHexMeshDict
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObject/0.org/U b/tutorials/multiphase/interDyMFoam/ras/floatingObject/0.org/U
index b9a012f9641b17311eae2e228614d9bff78595e6..7cfe74ca6bc23f857938bd61ba3c5567d57eabe1 100644
--- a/tutorials/multiphase/interDyMFoam/ras/floatingObject/0.org/U
+++ b/tutorials/multiphase/interDyMFoam/ras/floatingObject/0.org/U
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObject/0.org/alpha.water b/tutorials/multiphase/interDyMFoam/ras/floatingObject/0.org/alpha.water
index ccd0b82c0cd832dd84b3d1bf26749f9fed229312..29be4b81bfa9e86633ddb44b997a8c3976ef6030 100644
--- a/tutorials/multiphase/interDyMFoam/ras/floatingObject/0.org/alpha.water
+++ b/tutorials/multiphase/interDyMFoam/ras/floatingObject/0.org/alpha.water
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObject/0.org/epsilon b/tutorials/multiphase/interDyMFoam/ras/floatingObject/0.org/epsilon
index 6a49823afc84380c0f5b6e33b8b8cb0646e98918..52fc06c197a912117cdb506d4380fd5fea17a797 100644
--- a/tutorials/multiphase/interDyMFoam/ras/floatingObject/0.org/epsilon
+++ b/tutorials/multiphase/interDyMFoam/ras/floatingObject/0.org/epsilon
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObject/0.org/k b/tutorials/multiphase/interDyMFoam/ras/floatingObject/0.org/k
index b1ea45bf7ceca59931cfb88a2d38efc00f799bcc..079d6ccdd426eba45568bc9028b7ae645f3b2f3b 100644
--- a/tutorials/multiphase/interDyMFoam/ras/floatingObject/0.org/k
+++ b/tutorials/multiphase/interDyMFoam/ras/floatingObject/0.org/k
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObject/0.org/nut b/tutorials/multiphase/interDyMFoam/ras/floatingObject/0.org/nut
index 3d8dd146fca4c2d3a7fe32790c6878ff765ccc18..124954685a0b54bf3f21a564b1ef4443899ab8e3 100644
--- a/tutorials/multiphase/interDyMFoam/ras/floatingObject/0.org/nut
+++ b/tutorials/multiphase/interDyMFoam/ras/floatingObject/0.org/nut
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObject/0.org/p_rgh b/tutorials/multiphase/interDyMFoam/ras/floatingObject/0.org/p_rgh
index 10c9809c57c222f388f52dbc11971c0de2897df8..e52c282b160a2f49ed658911df8ecba9db1c91c4 100644
--- a/tutorials/multiphase/interDyMFoam/ras/floatingObject/0.org/p_rgh
+++ b/tutorials/multiphase/interDyMFoam/ras/floatingObject/0.org/p_rgh
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObject/0.org/pointDisplacement b/tutorials/multiphase/interDyMFoam/ras/floatingObject/0.org/pointDisplacement
index 8d147349251839871c7238ec8e8eac3b6ad75281..e82a3fca8d8f561be7af56b5aff69ebbab233651 100644
--- a/tutorials/multiphase/interDyMFoam/ras/floatingObject/0.org/pointDisplacement
+++ b/tutorials/multiphase/interDyMFoam/ras/floatingObject/0.org/pointDisplacement
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObject/constant/RASProperties b/tutorials/multiphase/interDyMFoam/ras/floatingObject/constant/RASProperties
index 63c4b0ac4713e9c6b056e1fdca2b395c48c544d3..d964d3c86279abddc56f08cb6dd09ff387094fa7 100644
--- a/tutorials/multiphase/interDyMFoam/ras/floatingObject/constant/RASProperties
+++ b/tutorials/multiphase/interDyMFoam/ras/floatingObject/constant/RASProperties
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObject/constant/dynamicMeshDict b/tutorials/multiphase/interDyMFoam/ras/floatingObject/constant/dynamicMeshDict
index 35b0cbaa139918fb21c276d07c06d81347c3ca8c..e32ae2273ddcda66383571b6ccbd5a027e209f6a 100644
--- a/tutorials/multiphase/interDyMFoam/ras/floatingObject/constant/dynamicMeshDict
+++ b/tutorials/multiphase/interDyMFoam/ras/floatingObject/constant/dynamicMeshDict
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
@@ -26,11 +26,62 @@ sixDoFRigidBodyMotionCoeffs
     innerDistance   0.05;
     outerDistance   0.35;
 
-    centreOfMass    (0.5 0.5 0.5);
-    momentOfInertia (0.08622222 0.08622222 0.144);
-    mass            9.6;
+    centreOfMass    (0.5 0.45 0.35);
+
+    // Cuboid dimensions
+    Lx              0.3;
+    Ly              0.2;
+    Lz              0.5;
+
+    // Density of the solid
+    rho             500;
+
+    // Cuboid mass
+    mass            #calc "$rho*$Lx*$Ly*$Lz";
+
+    // Cuboid moment of inertia about the centre of mass
+    momentOfInertia #codeStream
+    {
+        codeInclude
+        #{
+            #include "diagTensor.H"
+        #};
+
+        code
+        #{
+            scalar sqrLx = sqr($Lx);
+            scalar sqrLy = sqr($Ly);
+            scalar sqrLz = sqr($Lz);
+            os  <<
+                $mass
+               *diagTensor(sqrLy + sqrLz, sqrLx + sqrLz, sqrLx + sqrLy)/12.0;
+        #};
+    };
+
     report          on;
-    accelerationRelaxation 0.7;
+    accelerationRelaxation 0.5;
+
+    constraints
+    {
+        // fixedPoint
+        // {
+        //     sixDoFRigidBodyMotionConstraint point;
+        //     centreOfRotation (0.5 0.45 0.1);
+        // }
+
+        fixedLine
+        {
+            sixDoFRigidBodyMotionConstraint line;
+            centreOfRotation (0.5 0.45 0.1);
+            direction (0 1 0);
+        }
+
+        fixedAxis
+        {
+            sixDoFRigidBodyMotionConstraint axis;
+            axis (0 1 0);
+        }
+    }
 }
 
 
diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObject/constant/g b/tutorials/multiphase/interDyMFoam/ras/floatingObject/constant/g
index 259d6a5768bb0a3cfe85ebc0c2269459fa25ba2d..c97a941a2a7e5e183c1983b7abcb119ab58f5886 100644
--- a/tutorials/multiphase/interDyMFoam/ras/floatingObject/constant/g
+++ b/tutorials/multiphase/interDyMFoam/ras/floatingObject/constant/g
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObject/constant/polyMesh/blockMeshDict b/tutorials/multiphase/interDyMFoam/ras/floatingObject/constant/polyMesh/blockMeshDict
index ba292d0655baa1c980341d17f94bfe5acae59241..3fedffc1889314578213279fe24ef2c7875eb2d9 100644
--- a/tutorials/multiphase/interDyMFoam/ras/floatingObject/constant/polyMesh/blockMeshDict
+++ b/tutorials/multiphase/interDyMFoam/ras/floatingObject/constant/polyMesh/blockMeshDict
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
@@ -30,7 +30,7 @@ vertices
 
 blocks
 (
-    hex (0 1 2 3 4 5 6 7) (40 40 60) simpleGrading (1 1 1)
+    hex (0 1 2 3 4 5 6 7) (20 20 30) simpleGrading (1 1 1)
 );
 
 edges
diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObject/constant/polyMesh/boundary b/tutorials/multiphase/interDyMFoam/ras/floatingObject/constant/polyMesh/boundary
index 1f9cc388f08a3606048c587467eea807c0a2a759..898b4642226e950d8903bdf2e27da40310faf5ed 100644
--- a/tutorials/multiphase/interDyMFoam/ras/floatingObject/constant/polyMesh/boundary
+++ b/tutorials/multiphase/interDyMFoam/ras/floatingObject/constant/polyMesh/boundary
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
@@ -21,21 +21,21 @@ FoamFile
     {
         type            wall;
         inGroups        1(wall);
-        nFaces          11200;
-        startFace       277808;
+        nFaces          2800;
+        startFace       33146;
     }
     atmosphere
     {
         type            patch;
-        nFaces          1600;
-        startFace       289008;
+        nFaces          400;
+        startFace       35946;
     }
     floatingObject
     {
         type            wall;
         inGroups        1(wall);
-        nFaces          672;
-        startFace       290608;
+        nFaces          348;
+        startFace       36346;
     }
 )
 
diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObject/constant/transportProperties b/tutorials/multiphase/interDyMFoam/ras/floatingObject/constant/transportProperties
index 241e841ad0e39f0dca924baf849119512393da36..4cead4f61bed9c8c59a6adeea70981b15f86cf58 100644
--- a/tutorials/multiphase/interDyMFoam/ras/floatingObject/constant/transportProperties
+++ b/tutorials/multiphase/interDyMFoam/ras/floatingObject/constant/transportProperties
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObject/constant/turbulenceProperties b/tutorials/multiphase/interDyMFoam/ras/floatingObject/constant/turbulenceProperties
index f9adc322f9a4189d05182039770b8defa18f3143..e9fdea0cb2379d8a886ca5a03c8d367627bffb83 100644
--- a/tutorials/multiphase/interDyMFoam/ras/floatingObject/constant/turbulenceProperties
+++ b/tutorials/multiphase/interDyMFoam/ras/floatingObject/constant/turbulenceProperties
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObject/system/controlDict b/tutorials/multiphase/interDyMFoam/ras/floatingObject/system/controlDict
index aee9827f444274d010bd320a94c6084a0b19c257..b1ca1d5d875cc2ebef7de3a059475e566c3176bb 100644
--- a/tutorials/multiphase/interDyMFoam/ras/floatingObject/system/controlDict
+++ b/tutorials/multiphase/interDyMFoam/ras/floatingObject/system/controlDict
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObject/system/decomposeParDict b/tutorials/multiphase/interDyMFoam/ras/floatingObject/system/decomposeParDict
index ab0a2c7c7d3c03b3e79e12c56a00aa60614cca58..575ab2cc24db9b561da4275ab4621ec4d4b7b826 100644
--- a/tutorials/multiphase/interDyMFoam/ras/floatingObject/system/decomposeParDict
+++ b/tutorials/multiphase/interDyMFoam/ras/floatingObject/system/decomposeParDict
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObject/system/fvSchemes b/tutorials/multiphase/interDyMFoam/ras/floatingObject/system/fvSchemes
index 282fe42c44b9690079c9f74aadd0edebdf9a3678..c0a13530ea23a25ce82398b0a193b8df5744fbc8 100644
--- a/tutorials/multiphase/interDyMFoam/ras/floatingObject/system/fvSchemes
+++ b/tutorials/multiphase/interDyMFoam/ras/floatingObject/system/fvSchemes
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObject/system/fvSolution b/tutorials/multiphase/interDyMFoam/ras/floatingObject/system/fvSolution
index 39ce379d62452884244685a2def76b3e95621175..2d0db4096946887974c1cd2ba55945cf81597e40 100644
--- a/tutorials/multiphase/interDyMFoam/ras/floatingObject/system/fvSolution
+++ b/tutorials/multiphase/interDyMFoam/ras/floatingObject/system/fvSolution
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObject/system/setFieldsDict b/tutorials/multiphase/interDyMFoam/ras/floatingObject/system/setFieldsDict
index fbfb344708bcfa5ed57999a00f0fdfb6280e7eb5..acab99a766ca8a518821afc310efa625fa3d1d0e 100644
--- a/tutorials/multiphase/interDyMFoam/ras/floatingObject/system/setFieldsDict
+++ b/tutorials/multiphase/interDyMFoam/ras/floatingObject/system/setFieldsDict
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObject/system/topoSetDict b/tutorials/multiphase/interDyMFoam/ras/floatingObject/system/topoSetDict
index 81fbe3250662ec72dcbe6b416e3220deed74aa2b..686a7035ade495d6db2442fa3b1ce79a44969957 100644
--- a/tutorials/multiphase/interDyMFoam/ras/floatingObject/system/topoSetDict
+++ b/tutorials/multiphase/interDyMFoam/ras/floatingObject/system/topoSetDict
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
@@ -24,7 +24,7 @@ actions
         source  boxToCell;
         sourceInfo
         {
-            box (0.35 0.35 0.44) (0.65 0.65 0.56);
+            box (0.35 0.35 0.1) (0.65 0.55 0.6);
         }
     }