diff --git a/applications/utilities/surface/surfaceInertia/surfaceInertia.C b/applications/utilities/surface/surfaceInertia/surfaceInertia.C
index 380f7fb9316f7d7b2130ed60f5daabc7dedff992..5c39ebd5037d15aeec2460418fbe42fa3b071738 100644
--- a/applications/utilities/surface/surfaceInertia/surfaceInertia.C
+++ b/applications/utilities/surface/surfaceInertia/surfaceInertia.C
@@ -398,7 +398,12 @@ int main(int argc, char *argv[])
     )
     {
         // Make the eigenvectors a right handed orthogonal triplet
-        eVec.z() *= sign((eVec.x() ^ eVec.y()) & eVec.z());
+        eVec = tensor
+        (
+            eVec.x(),
+            eVec.y(),
+            eVec.z() * sign((eVec.x() ^ eVec.y()) & eVec.z())
+        );
 
         // Finding the most natural transformation.  Using Lists
         // rather than tensors to allow indexed permutation.
@@ -557,9 +562,7 @@ int main(int argc, char *argv[])
             eVal = tEVal;
         }
 
-        eVec.x() = principal[0];
-        eVec.y() = principal[1];
-        eVec.z() = principal[2];
+        eVec = tensor(principal[0], principal[1], principal[2]);
 
         // {
         //     tensor R = rotationTensor(vector(1, 0, 0), eVec.x());
diff --git a/src/OpenFOAM/fields/Fields/Field/Field.C b/src/OpenFOAM/fields/Fields/Field/Field.C
index 531ae0443ac93278a987e621e6588205688c6d8d..e5c5a7cced083a4fc9704fcb49e281ea53081e2f 100644
--- a/src/OpenFOAM/fields/Fields/Field/Field.C
+++ b/src/OpenFOAM/fields/Fields/Field/Field.C
@@ -66,7 +66,7 @@ template<class Type>
 Field<Type>::Field
 (
     const UList<Type>& mapF,
-    const labelList& mapAddressing
+    const UList<label>& mapAddressing
 )
 :
     List<Type>(mapAddressing.size())
@@ -78,7 +78,7 @@ template<class Type>
 Field<Type>::Field
 (
     const tmp<Field<Type> >& tmapF,
-    const labelList& mapAddressing
+    const UList<label>& mapAddressing
 )
 :
     List<Type>(mapAddressing.size())
@@ -297,7 +297,7 @@ template<class Type>
 void Field<Type>::map
 (
     const UList<Type>& mapF,
-    const labelList& mapAddressing
+    const UList<label>& mapAddressing
 )
 {
     Field<Type>& f = *this;
@@ -326,7 +326,7 @@ template<class Type>
 void Field<Type>::map
 (
     const tmp<Field<Type> >& tmapF,
-    const labelList& mapAddressing
+    const UList<label>& mapAddressing
 )
 {
     map(tmapF(), mapAddressing);
@@ -455,7 +455,7 @@ template<class Type>
 void Field<Type>::rmap
 (
     const UList<Type>& mapF,
-    const labelList& mapAddressing
+    const UList<label>& mapAddressing
 )
 {
     Field<Type>& f = *this;
@@ -475,7 +475,7 @@ template<class Type>
 void Field<Type>::rmap
 (
     const tmp<Field<Type> >& tmapF,
-    const labelList& mapAddressing
+    const UList<label>& mapAddressing
 )
 {
     rmap(tmapF(), mapAddressing);
@@ -487,8 +487,8 @@ template<class Type>
 void Field<Type>::rmap
 (
     const UList<Type>& mapF,
-    const labelList& mapAddressing,
-    const scalarList& mapWeights
+    const UList<label>& mapAddressing,
+    const UList<scalar>& mapWeights
 )
 {
     Field<Type>& f = *this;
@@ -505,8 +505,8 @@ template<class Type>
 void Field<Type>::rmap
 (
     const tmp<Field<Type> >& tmapF,
-    const labelList& mapAddressing,
-    const scalarList& mapWeights
+    const UList<label>& mapAddressing,
+    const UList<scalar>& mapWeights
 )
 {
     rmap(tmapF(), mapAddressing, mapWeights);
diff --git a/src/OpenFOAM/fields/Fields/Field/Field.H b/src/OpenFOAM/fields/Fields/Field/Field.H
index 5708526c265ebf3fb2b39ff7063baf76a4773217..0682366211b480d6d1f29650268480fa9a949bb6 100644
--- a/src/OpenFOAM/fields/Fields/Field/Field.H
+++ b/src/OpenFOAM/fields/Fields/Field/Field.H
@@ -127,14 +127,14 @@ public:
         Field
         (
             const UList<Type>& mapF,
-            const labelList& mapAddressing
+            const UList<label>& mapAddressing
         );
 
         //- Construct by 1 to 1 mapping from the given tmp field
         Field
         (
             const tmp<Field<Type> >& tmapF,
-            const labelList& mapAddressing
+            const UList<label>& mapAddressing
         );
 
         //- Construct by interpolative mapping from the given field
@@ -208,14 +208,14 @@ public:
         void map
         (
             const UList<Type>& mapF,
-            const labelList& mapAddressing
+            const UList<label>& mapAddressing
         );
 
         //- 1 to 1 map from the given tmp field
         void map
         (
             const tmp<Field<Type> >& tmapF,
-            const labelList& mapAddressing
+            const UList<label>& mapAddressing
         );
 
         //- Interpolative map from the given field
@@ -258,30 +258,30 @@ public:
         void rmap
         (
             const UList<Type>& mapF,
-            const labelList& mapAddressing
+            const UList<label>& mapAddressing
         );
 
         //- 1 to 1 reverse-map from the given tmp field
         void rmap
         (
             const tmp<Field<Type> >& tmapF,
-            const labelList& mapAddressing
+            const UList<label>& mapAddressing
         );
 
         //- Interpolative reverse map from the given field
         void rmap
         (
             const UList<Type>& mapF,
-            const labelList& mapAddressing,
-            const scalarList& weights
+            const UList<label>& mapAddressing,
+            const UList<scalar>& weights
         );
 
         //- Interpolative reverse map from the given tmp field
         void rmap
         (
             const tmp<Field<Type> >& tmapF,
-            const labelList& mapAddressing,
-            const scalarList& weights
+            const UList<label>& mapAddressing,
+            const UList<scalar>& weights
         );
 
         //- Negate this field
diff --git a/src/OpenFOAM/primitives/Tensor/Tensor.H b/src/OpenFOAM/primitives/Tensor/Tensor.H
index 520af13cecea01bd5723272013b4be7052631459..c04c62264c13a68ad8aaf56712836b27a4ebcec9 100644
--- a/src/OpenFOAM/primitives/Tensor/Tensor.H
+++ b/src/OpenFOAM/primitives/Tensor/Tensor.H
@@ -100,6 +100,14 @@ public:
         //- Construct given SymmTensor
         inline Tensor(const SymmTensor<Cmpt>&);
 
+        //- Construct given the three vector components
+        inline Tensor
+        (
+            const Vector<Cmpt>& x,
+            const Vector<Cmpt>& y,
+            const Vector<Cmpt>& z
+        );
+
         //- Construct given the nine components
         inline Tensor
         (
@@ -116,14 +124,6 @@ public:
 
         // Access
 
-            inline const Vector<Cmpt>& x() const;
-            inline const Vector<Cmpt>& y() const;
-            inline const Vector<Cmpt>& z() const;
-
-            inline Vector<Cmpt>& x();
-            inline Vector<Cmpt>& y();
-            inline Vector<Cmpt>& z();
-
             inline const Cmpt& xx() const;
             inline const Cmpt& xy() const;
             inline const Cmpt& xz() const;
@@ -144,6 +144,13 @@ public:
             inline Cmpt& zy();
             inline Cmpt& zz();
 
+            // Access vector components.
+            // Note: returning const only to find out lhs usage
+
+            inline const Vector<Cmpt> x() const;
+            inline const Vector<Cmpt> y() const;
+            inline const Vector<Cmpt> z() const;
+
         //- Transpose
         inline Tensor<Cmpt> T() const;
 
diff --git a/src/OpenFOAM/primitives/Tensor/TensorI.H b/src/OpenFOAM/primitives/Tensor/TensorI.H
index 18ce724ca30fc34d7f608e6afca43af32681bc08..8ca4f601693c7cffaf247bce243eac2035979cf6 100644
--- a/src/OpenFOAM/primitives/Tensor/TensorI.H
+++ b/src/OpenFOAM/primitives/Tensor/TensorI.H
@@ -64,6 +64,21 @@ inline Tensor<Cmpt>::Tensor(const SymmTensor<Cmpt>& st)
 }
 
 
+//- Construct given the three vector components
+template <class Cmpt>
+inline Tensor<Cmpt>::Tensor
+(
+    const Vector<Cmpt>& x,
+    const Vector<Cmpt>& y,
+    const Vector<Cmpt>& z
+)
+{
+    this->v_[XX] = x.x(); this->v_[XY] = x.y(); this->v_[XZ] = x.z();
+    this->v_[YX] = y.x(); this->v_[YY] = y.y(); this->v_[YZ] = y.z();
+    this->v_[ZX] = z.x(); this->v_[ZY] = z.y(); this->v_[ZZ] = z.z();
+}
+
+
 //- Construct from components
 template <class Cmpt>
 inline Tensor<Cmpt>::Tensor
@@ -90,40 +105,21 @@ inline Tensor<Cmpt>::Tensor(Istream& is)
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
 template <class Cmpt>
-inline const Vector<Cmpt>&  Tensor<Cmpt>::x() const
-{
-    return reinterpret_cast<const Vector<Cmpt>&>(this->v_[XX]);
-}
-
-template <class Cmpt>
-inline const Vector<Cmpt>&  Tensor<Cmpt>::y() const
-{
-    return reinterpret_cast<const Vector<Cmpt>&>(this->v_[YX]);
-}
-
-template <class Cmpt>
-inline const Vector<Cmpt>&  Tensor<Cmpt>::z() const
-{
-    return reinterpret_cast<const Vector<Cmpt>&>(this->v_[ZX]);
-}
-
-
-template <class Cmpt>
-inline Vector<Cmpt>&  Tensor<Cmpt>::x()
+inline const Vector<Cmpt> Tensor<Cmpt>::x() const
 {
-    return reinterpret_cast<Vector<Cmpt>&>(this->v_[XX]);
+    return Vector<Cmpt>(this->v_[XX], this->v_[XY], this->v_[XZ]);
 }
 
 template <class Cmpt>
-inline Vector<Cmpt>&  Tensor<Cmpt>::y()
+inline const Vector<Cmpt> Tensor<Cmpt>::y() const
 {
-    return reinterpret_cast<Vector<Cmpt>&>(this->v_[YX]);
+    return Vector<Cmpt>(this->v_[YX], this->v_[YY], this->v_[YZ]);
 }
 
 template <class Cmpt>
-inline Vector<Cmpt>&  Tensor<Cmpt>::z()
+inline const Vector<Cmpt>  Tensor<Cmpt>::z() const
 {
-    return reinterpret_cast<Vector<Cmpt>&>(this->v_[ZX]);
+    return Vector<Cmpt>(this->v_[ZX], this->v_[ZY], this->v_[ZZ]);
 }
 
 
diff --git a/src/OpenFOAM/primitives/Tensor/tensor/tensor.C b/src/OpenFOAM/primitives/Tensor/tensor/tensor.C
index 4585a0d462c35d5c7f2cf69bfae52e9a8158176b..60504534b5c95b844b9bdac88862fb7970a123d7 100644
--- a/src/OpenFOAM/primitives/Tensor/tensor/tensor.C
+++ b/src/OpenFOAM/primitives/Tensor/tensor/tensor.C
@@ -269,10 +269,12 @@ tensor eigenVectors(const tensor& t)
 {
     vector evals(eigenValues(t));
 
-    tensor evs;
-    evs.x() = eigenVector(t, evals.x());
-    evs.y() = eigenVector(t, evals.y());
-    evs.z() = eigenVector(t, evals.z());
+    tensor evs
+    (
+        eigenVector(t, evals.x()),
+        eigenVector(t, evals.y()),
+        eigenVector(t, evals.z())
+    );
 
     return evs;
 }
@@ -468,10 +470,12 @@ tensor eigenVectors(const symmTensor& t)
 {
     vector evals(eigenValues(t));
 
-    tensor evs;
-    evs.x() = eigenVector(t, evals.x());
-    evs.y() = eigenVector(t, evals.y());
-    evs.z() = eigenVector(t, evals.z());
+    tensor evs
+    (
+        eigenVector(t, evals.x()),
+        eigenVector(t, evals.y()),
+        eigenVector(t, evals.z())
+    );
 
     return evs;
 }
diff --git a/src/OpenFOAM/primitives/Tensor2D/Tensor2D.H b/src/OpenFOAM/primitives/Tensor2D/Tensor2D.H
index ae7d84b8b2499c961cb809751a20147c0ed6d595..4e322296c5a27a888bc6b322738dfba7905cfce7 100644
--- a/src/OpenFOAM/primitives/Tensor2D/Tensor2D.H
+++ b/src/OpenFOAM/primitives/Tensor2D/Tensor2D.H
@@ -92,7 +92,14 @@ public:
         //- Construct given SphericalTensor2D
         inline Tensor2D(const SphericalTensor2D<Cmpt>&);
 
-        //- Construct given the nine components
+        //- Construct given the two vectors
+        inline Tensor2D
+        (
+            const Vector2D<Cmpt>& x,
+            const Vector2D<Cmpt>& y
+        );
+
+        //- Construct given the four components
         inline Tensor2D
         (
             const Cmpt txx, const Cmpt txy,
@@ -107,12 +114,6 @@ public:
 
         // Access
 
-            inline const Vector2D<Cmpt>& x() const;
-            inline const Vector2D<Cmpt>& y() const;
-
-            inline Vector2D<Cmpt>& x();
-            inline Vector2D<Cmpt>& y();
-
             inline const Cmpt& xx() const;
             inline const Cmpt& xy() const;
             inline const Cmpt& yx() const;
@@ -123,6 +124,11 @@ public:
             inline Cmpt& yx();
             inline Cmpt& yy();
 
+            // Access vector components.
+
+            inline Vector2D<Cmpt> x() const;
+            inline Vector2D<Cmpt> y() const;
+
         //- Transpose
         inline Tensor2D<Cmpt> T() const;
 
diff --git a/src/OpenFOAM/primitives/Tensor2D/Tensor2DI.H b/src/OpenFOAM/primitives/Tensor2D/Tensor2DI.H
index 958517823609451898c0f640ce2f289d90d6ca0f..2920983eb0bfad922b7117f6a9b00b746c4be2ef 100644
--- a/src/OpenFOAM/primitives/Tensor2D/Tensor2DI.H
+++ b/src/OpenFOAM/primitives/Tensor2D/Tensor2DI.H
@@ -50,6 +50,18 @@ inline Tensor2D<Cmpt>::Tensor2D(const SphericalTensor2D<Cmpt>& st)
 }
 
 
+template <class Cmpt>
+inline Tensor2D<Cmpt>::Tensor2D
+(
+    const Vector2D<Cmpt>& x,
+    const Vector2D<Cmpt>& y
+)
+{
+    this->v_[XX] = x.x(); this->v_[XY] = x.y();
+    this->v_[YX] = y.x(); this->v_[YY] = y.y();
+}
+
+
 template <class Cmpt>
 inline Tensor2D<Cmpt>::Tensor2D
 (
@@ -72,51 +84,38 @@ inline Tensor2D<Cmpt>::Tensor2D(Istream& is)
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
 template <class Cmpt>
-inline const Vector2D<Cmpt>&  Tensor2D<Cmpt>::x() const
-{
-    return reinterpret_cast<const Vector2D<Cmpt>&>(this->v_[XX]);
-}
-
-template <class Cmpt>
-inline const Vector2D<Cmpt>&  Tensor2D<Cmpt>::y() const
-{
-    return reinterpret_cast<const Vector2D<Cmpt>&>(this->v_[YX]);
-}
-
-
-template <class Cmpt>
-inline Vector2D<Cmpt>&  Tensor2D<Cmpt>::x()
+inline Vector2D<Cmpt> Tensor2D<Cmpt>::x() const
 {
-    return reinterpret_cast<Vector2D<Cmpt>&>(this->v_[XX]);
+    return Vector2D<Cmpt>(this->v_[XX], this->v_[XY]);
 }
 
 template <class Cmpt>
-inline Vector2D<Cmpt>&  Tensor2D<Cmpt>::y()
+inline Vector2D<Cmpt> Tensor2D<Cmpt>::y() const
 {
-    return reinterpret_cast<Vector2D<Cmpt>&>(this->v_[YX]);
+    return Vector2D<Cmpt>(this->v_[YX], this->v_[YY]);
 }
 
 
 template <class Cmpt>
-inline const Cmpt&  Tensor2D<Cmpt>::xx() const
+inline const Cmpt& Tensor2D<Cmpt>::xx() const
 {
     return this->v_[XX];
 }
 
 template <class Cmpt>
-inline const Cmpt&  Tensor2D<Cmpt>::xy() const
+inline const Cmpt& Tensor2D<Cmpt>::xy() const
 {
     return this->v_[XY];
 }
 
 template <class Cmpt>
-inline const Cmpt&  Tensor2D<Cmpt>::yx() const
+inline const Cmpt& Tensor2D<Cmpt>::yx() const
 {
     return this->v_[YX];
 }
 
 template <class Cmpt>
-inline const Cmpt&  Tensor2D<Cmpt>::yy() const
+inline const Cmpt& Tensor2D<Cmpt>::yy() const
 {
     return this->v_[YY];
 }
diff --git a/src/OpenFOAM/primitives/Tensor2D/tensor2D/tensor2D.C b/src/OpenFOAM/primitives/Tensor2D/tensor2D/tensor2D.C
index 8cf7d3c9ad1f40bc9bb1bdb1d185f0159f5f9d9b..e7fc58d7a1604ff0ba3324a051081932fc53d5f5 100644
--- a/src/OpenFOAM/primitives/Tensor2D/tensor2D/tensor2D.C
+++ b/src/OpenFOAM/primitives/Tensor2D/tensor2D/tensor2D.C
@@ -158,9 +158,11 @@ tensor2D eigenVectors(const tensor2D& t)
 {
     vector2D evals(eigenValues(t));
 
-    tensor2D evs;
-    evs.x() = eigenVector(t, evals.x());
-    evs.y() = eigenVector(t, evals.y());
+    tensor2D evs
+    (
+        eigenVector(t, evals.x()),
+        eigenVector(t, evals.y())
+    );
 
     return evs;
 }
diff --git a/src/finiteVolume/cfdTools/general/porousMedia/porousZone.H b/src/finiteVolume/cfdTools/general/porousMedia/porousZone.H
index 6bd909143c2962a4c69dc16dccfd00b08b6d2e23..ef48645d2ba315ca151b83a6af18098252c00a75 100644
--- a/src/finiteVolume/cfdTools/general/porousMedia/porousZone.H
+++ b/src/finiteVolume/cfdTools/general/porousMedia/porousZone.H
@@ -287,7 +287,7 @@ public:
             }
 
             //- Return axis
-            const vector& axis() const
+            vector axis() const
             {
                 return coordSys_.axis();
             }
diff --git a/src/finiteVolume/fields/fvPatchFields/constraint/wedge/wedgeFvPatchField.C b/src/finiteVolume/fields/fvPatchFields/constraint/wedge/wedgeFvPatchField.C
index 632c985c66a4b8b6eb69c399aa11351b8eaf040c..a8540e302970b69334ac158271e9a09df6b5a1bf 100644
--- a/src/finiteVolume/fields/fvPatchFields/constraint/wedge/wedgeFvPatchField.C
+++ b/src/finiteVolume/fields/fvPatchFields/constraint/wedge/wedgeFvPatchField.C
@@ -168,9 +168,11 @@ void wedgeFvPatchField<Type>::evaluate(const Pstream::commsTypes)
 template<class Type>
 tmp<Field<Type> > wedgeFvPatchField<Type>::snGradTransformDiag() const
 {
-    diagTensor diagT =
+    const diagTensor diagT =
         0.5*diag(I - refCast<const wedgeFvPatch>(this->patch()).cellT());
 
+    const vector diagV(diagT.xx(), diagT.yy(), diagT.zz());
+
     return tmp<Field<Type> >
     (
         new Field<Type>
@@ -180,7 +182,7 @@ tmp<Field<Type> > wedgeFvPatchField<Type>::snGradTransformDiag() const
             (
                 pow
                 (
-                    reinterpret_cast<const vector&>(diagT),
+                    diagV,
                     pTraits<typename powProduct<vector, pTraits<Type>::rank>
                     ::type>::zero
                 )
diff --git a/src/finiteVolume/finiteVolume/gradSchemes/limitedGradSchemes/cellLimitedGrad/cellLimitedGrads.C b/src/finiteVolume/finiteVolume/gradSchemes/limitedGradSchemes/cellLimitedGrad/cellLimitedGrads.C
index 6db9c0faf0e90d7c515a6843b86fe54d960939f2..d679586bae5b56fe2942436018141bb8275acdca 100644
--- a/src/finiteVolume/finiteVolume/gradSchemes/limitedGradSchemes/cellLimitedGrad/cellLimitedGrads.C
+++ b/src/finiteVolume/finiteVolume/gradSchemes/limitedGradSchemes/cellLimitedGrad/cellLimitedGrads.C
@@ -346,9 +346,12 @@ Foam::fv::cellLimitedGrad<Foam::vector>::calcGrad
 
     forAll(gIf, celli)
     {
-        gIf[celli].x() = cmptMultiply(limiter[celli], gIf[celli].x());
-        gIf[celli].y() = cmptMultiply(limiter[celli], gIf[celli].y());
-        gIf[celli].z() = cmptMultiply(limiter[celli], gIf[celli].z());
+        gIf[celli] = tensor
+        (
+            cmptMultiply(limiter[celli], gIf[celli].x()),
+            cmptMultiply(limiter[celli], gIf[celli].y()),
+            cmptMultiply(limiter[celli], gIf[celli].z())
+        );
     }
 
     g.correctBoundaryConditions();
diff --git a/src/meshTools/coordinateSystems/coordinateRotation/coordinateRotation.C b/src/meshTools/coordinateSystems/coordinateRotation/coordinateRotation.C
index b75ccfe47ecd0f00d4f0ce9912721ddbe3e6354f..5e4e90837e2f81758fccc9c1d15a3890b827f100 100644
--- a/src/meshTools/coordinateSystems/coordinateRotation/coordinateRotation.C
+++ b/src/meshTools/coordinateSystems/coordinateRotation/coordinateRotation.C
@@ -66,27 +66,23 @@ void Foam::coordinateRotation::calcTransform
     switch (order)
     {
         case e1e2:
-            Rtr.x() = a;
-            Rtr.y() = b;
-            Rtr.z() = c;
+            Rtr = tensor(a, b, c);
             break;
 
         case e2e3:
-            Rtr.x() = c;
-            Rtr.y() = a;
-            Rtr.z() = b;
+            Rtr = tensor(c, a, b);
             break;
 
         case e3e1:
-            Rtr.x() = b;
-            Rtr.y() = c;
-            Rtr.z() = a;
+            Rtr = tensor(b, c, a);
             break;
 
         default:
             FatalErrorIn("coordinateRotation::calcTransform()")
                 << "programmer error" << endl
                 << abort(FatalError);
+            // To satisfy compiler warnings
+            Rtr = tensor::zero;
             break;
     }
 
diff --git a/src/meshTools/coordinateSystems/coordinateRotation/coordinateRotation.H b/src/meshTools/coordinateSystems/coordinateRotation/coordinateRotation.H
index 0c7a679da140c51edf2600db48b080f7978dffc1..9e5d369cdbaa3f21757af1fc57bf7d8afe6df865 100644
--- a/src/meshTools/coordinateSystems/coordinateRotation/coordinateRotation.H
+++ b/src/meshTools/coordinateSystems/coordinateRotation/coordinateRotation.H
@@ -172,19 +172,19 @@ public:
         }
 
         //- Return local Cartesian x-axis
-        vector& e1() const
+        const vector e1() const
         {
             return tensor::T().x();
         }
 
         //- Return local Cartesian y-axis
-        vector& e2() const
+        const vector e2() const
         {
             return tensor::T().y();
         }
 
         //- Return local Cartesian z-axis
-        vector& e3() const
+        const vector e3() const
         {
             return tensor::T().z();
         }
diff --git a/src/meshTools/coordinateSystems/coordinateSystem.H b/src/meshTools/coordinateSystems/coordinateSystem.H
index 11a48d6eb772b7806c57281174ede70bf1a93f4b..a5a51944e28af0436089004660a04540eac9c002 100644
--- a/src/meshTools/coordinateSystems/coordinateSystem.H
+++ b/src/meshTools/coordinateSystems/coordinateSystem.H
@@ -346,33 +346,33 @@ public:
             }
 
             //- Return local Cartesian x-axis
-            const vector& e1() const
+            const vector e1() const
             {
                 return Rtr_.x();
             }
 
             //- Return local Cartesian y-axis
-            const vector& e2() const
+            const vector e2() const
             {
                 return Rtr_.y();
             }
 
             //- Return local Cartesian z-axis
-            const vector& e3() const
+            const vector e3() const
             {
                 return Rtr_.z();
             }
 
             //- Return axis (e3: local Cartesian z-axis)
             // @deprecated method e3 is preferred (deprecated Apr 2008)
-            const vector& axis() const
+            const vector axis() const
             {
                 return Rtr_.z();
             }
 
             //- Return direction (e1: local Cartesian x-axis)
             // @deprecated method e1 is preferred (deprecated Apr 2008)
-            const vector& direction() const
+            const vector direction() const
             {
                 return Rtr_.x();
             }
diff --git a/src/surfaceFilmModels/surfaceFilmModel/kinematicSingleLayer/kinematicSingleLayer.C b/src/surfaceFilmModels/surfaceFilmModel/kinematicSingleLayer/kinematicSingleLayer.C
index 1846f579714a82f66354b80beeb5c1ef37d5d758..36f28993533305bfddf5f19dbe610216a4f24fbf 100644
--- a/src/surfaceFilmModels/surfaceFilmModel/kinematicSingleLayer/kinematicSingleLayer.C
+++ b/src/surfaceFilmModels/surfaceFilmModel/kinematicSingleLayer/kinematicSingleLayer.C
@@ -1008,7 +1008,7 @@ Foam::surfaceFilmModels::kinematicSingleLayer::T() const
         "const volScalarField& kinematicSingleLayer::T() const"
     )   << "T field not available for " << type() << abort(FatalError);
 
-    return reinterpret_cast<const volScalarField&>(null);
+    return volScalarField::null();
 }
 
 
@@ -1020,7 +1020,7 @@ Foam::surfaceFilmModels::kinematicSingleLayer::cp() const
         "const volScalarField& kinematicSingleLayer::cp() const"
     )   << "cp field not available for " << type() << abort(FatalError);
 
-    return reinterpret_cast<const volScalarField&>(null);
+    return volScalarField::null();
 }
 
 
diff --git a/src/surfaceFilmModels/surfaceFilmModel/noFilm/noFilm.C b/src/surfaceFilmModels/surfaceFilmModel/noFilm/noFilm.C
index 07750f876eedfbabb71be25b4fdc11b061fe7436..d8fd74960f99ad0bdd8d7c3310a4421850a00039 100644
--- a/src/surfaceFilmModels/surfaceFilmModel/noFilm/noFilm.C
+++ b/src/surfaceFilmModels/surfaceFilmModel/noFilm/noFilm.C
@@ -137,7 +137,7 @@ const Foam::volVectorField& Foam::surfaceFilmModels::noFilm::U() const
         "const volScalarField& noFilm::U() const"
     )   << "U field not available for " << type() << abort(FatalError);
 
-    return reinterpret_cast<const volVectorField&>(null);
+    return volVectorField::null();
 }
 
 
@@ -148,7 +148,7 @@ const Foam::volScalarField& Foam::surfaceFilmModels::noFilm::rho() const
         "const volScalarField& noFilm::rho() const"
     )   << "rho field not available for " << type() << abort(FatalError);
 
-    return reinterpret_cast<const volScalarField&>(null);
+    return volScalarField::null();
 }
 
 
@@ -159,7 +159,7 @@ const Foam::volScalarField& Foam::surfaceFilmModels::noFilm::T() const
         "const Foam::volScalarField& Foam::noFilm::T() const"
     )   << "T field not available for " << type() << abort(FatalError);
 
-    return reinterpret_cast<const volScalarField&>(null);
+    return volScalarField::null();
 }
 
 
@@ -170,7 +170,7 @@ const Foam::volScalarField& Foam::surfaceFilmModels::noFilm::cp() const
         "const volScalarField& noFilm::cp() const"
     )   << "cp field not available for " << type() << abort(FatalError);
 
-    return reinterpret_cast<const volScalarField&>(null);
+    return volScalarField::null();
 }
 
 
@@ -183,7 +183,7 @@ Foam::surfaceFilmModels::noFilm::massForPrimary() const
     )   << "massForPrimary field not available for " << type()
         << abort(FatalError);
 
-    return reinterpret_cast<const volScalarField&>(null);
+    return volScalarField::null();
 }
 
 
@@ -196,7 +196,7 @@ Foam::surfaceFilmModels::noFilm::diametersForPrimary() const
     )   << "diametersForPrimary field not available for " << type()
         << abort(FatalError);
 
-    return reinterpret_cast<const volScalarField&>(null);
+    return volScalarField::null();
 }
 
 
diff --git a/wmake/rules/SiCortex64Gcc/c++ b/wmake/rules/SiCortex64Gcc/c++
index 13e0a3e1fa9abe6aba0f3a045e57c8b86459dfb1..e667252052676a1c3912c09802773c4eba1f01fa 100644
--- a/wmake/rules/SiCortex64Gcc/c++
+++ b/wmake/rules/SiCortex64Gcc/c++
@@ -1,6 +1,6 @@
 .SUFFIXES: .C .cxx .cc .cpp
 
-c++WARN     = -Wall -Wno-strict-aliasing -Wextra -Wno-unused-parameter -Wold-style-cast
+c++WARN     = -Wall -Wextra -Wno-unused-parameter -Wold-style-cast
 
 CC          = g++ -mabi=64
 #CC          = scg++ -mabi=64
diff --git a/wmake/rules/SunOS64Gcc/c++ b/wmake/rules/SunOS64Gcc/c++
index 677b1e5bb47794fbd55e9a78a9fe7cc761bf2a37..9812a7475323d0bf4498027ff08098df3f400504 100644
--- a/wmake/rules/SunOS64Gcc/c++
+++ b/wmake/rules/SunOS64Gcc/c++
@@ -1,6 +1,6 @@
 .SUFFIXES: .C .cxx .cc .cpp
 
-c++WARN     = -Wall -Wno-strict-aliasing -Wextra -Wno-unused-parameter -Wold-style-cast
+c++WARN     = -Wall -Wextra -Wno-unused-parameter -Wold-style-cast
 
 CC          = g++ -m64
 
diff --git a/wmake/rules/linux64Gcc/c++ b/wmake/rules/linux64Gcc/c++
index c96c754aaa3a950cd69451d2f3f36ed8ff3d10cd..46cb28746ce1ef789205837ceab035b56be0dba1 100644
--- a/wmake/rules/linux64Gcc/c++
+++ b/wmake/rules/linux64Gcc/c++
@@ -1,6 +1,6 @@
 .SUFFIXES: .C .cxx .cc .cpp
 
-c++WARN     = -Wall -Wno-strict-aliasing -Wextra -Wno-unused-parameter -Wold-style-cast -Wnon-virtual-dtor
+c++WARN     = -Wall -Wextra -Wno-unused-parameter -Wold-style-cast -Wnon-virtual-dtor
 
 CC          = g++ -m64
 
diff --git a/wmake/rules/linux64Gcc43/c++ b/wmake/rules/linux64Gcc43/c++
index 677b1e5bb47794fbd55e9a78a9fe7cc761bf2a37..9812a7475323d0bf4498027ff08098df3f400504 100644
--- a/wmake/rules/linux64Gcc43/c++
+++ b/wmake/rules/linux64Gcc43/c++
@@ -1,6 +1,6 @@
 .SUFFIXES: .C .cxx .cc .cpp
 
-c++WARN     = -Wall -Wno-strict-aliasing -Wextra -Wno-unused-parameter -Wold-style-cast
+c++WARN     = -Wall -Wextra -Wno-unused-parameter -Wold-style-cast
 
 CC          = g++ -m64
 
diff --git a/wmake/rules/linux64Gcc44/c++ b/wmake/rules/linux64Gcc44/c++
index 677b1e5bb47794fbd55e9a78a9fe7cc761bf2a37..9812a7475323d0bf4498027ff08098df3f400504 100644
--- a/wmake/rules/linux64Gcc44/c++
+++ b/wmake/rules/linux64Gcc44/c++
@@ -1,6 +1,6 @@
 .SUFFIXES: .C .cxx .cc .cpp
 
-c++WARN     = -Wall -Wno-strict-aliasing -Wextra -Wno-unused-parameter -Wold-style-cast
+c++WARN     = -Wall -Wextra -Wno-unused-parameter -Wold-style-cast
 
 CC          = g++ -m64
 
diff --git a/wmake/rules/linux64Gcc45/c++ b/wmake/rules/linux64Gcc45/c++
index 677b1e5bb47794fbd55e9a78a9fe7cc761bf2a37..9812a7475323d0bf4498027ff08098df3f400504 100644
--- a/wmake/rules/linux64Gcc45/c++
+++ b/wmake/rules/linux64Gcc45/c++
@@ -1,6 +1,6 @@
 .SUFFIXES: .C .cxx .cc .cpp
 
-c++WARN     = -Wall -Wno-strict-aliasing -Wextra -Wno-unused-parameter -Wold-style-cast
+c++WARN     = -Wall -Wextra -Wno-unused-parameter -Wold-style-cast
 
 CC          = g++ -m64
 
diff --git a/wmake/rules/linuxGcc/c++ b/wmake/rules/linuxGcc/c++
index 7a7a46d9a0e6c0fba905a42eec0f954cb84cc85f..fdcce8f136e87a2d0e504cc2465dd3893c096f86 100644
--- a/wmake/rules/linuxGcc/c++
+++ b/wmake/rules/linuxGcc/c++
@@ -1,6 +1,6 @@
 .SUFFIXES: .C .cxx .cc .cpp
 
-c++WARN     = -Wall -Wno-strict-aliasing -Wextra -Wno-unused-parameter -Wold-style-cast
+c++WARN     = -Wall -Wextra -Wno-unused-parameter -Wold-style-cast
 
 CC          = g++ -m32
 
diff --git a/wmake/rules/linuxGcc43/c++ b/wmake/rules/linuxGcc43/c++
index 7a7a46d9a0e6c0fba905a42eec0f954cb84cc85f..fdcce8f136e87a2d0e504cc2465dd3893c096f86 100644
--- a/wmake/rules/linuxGcc43/c++
+++ b/wmake/rules/linuxGcc43/c++
@@ -1,6 +1,6 @@
 .SUFFIXES: .C .cxx .cc .cpp
 
-c++WARN     = -Wall -Wno-strict-aliasing -Wextra -Wno-unused-parameter -Wold-style-cast
+c++WARN     = -Wall -Wextra -Wno-unused-parameter -Wold-style-cast
 
 CC          = g++ -m32
 
diff --git a/wmake/rules/linuxGcc44/c++ b/wmake/rules/linuxGcc44/c++
index 7a7a46d9a0e6c0fba905a42eec0f954cb84cc85f..fdcce8f136e87a2d0e504cc2465dd3893c096f86 100644
--- a/wmake/rules/linuxGcc44/c++
+++ b/wmake/rules/linuxGcc44/c++
@@ -1,6 +1,6 @@
 .SUFFIXES: .C .cxx .cc .cpp
 
-c++WARN     = -Wall -Wno-strict-aliasing -Wextra -Wno-unused-parameter -Wold-style-cast
+c++WARN     = -Wall -Wextra -Wno-unused-parameter -Wold-style-cast
 
 CC          = g++ -m32
 
diff --git a/wmake/rules/linuxGcc45/c++ b/wmake/rules/linuxGcc45/c++
index 7a7a46d9a0e6c0fba905a42eec0f954cb84cc85f..fdcce8f136e87a2d0e504cc2465dd3893c096f86 100644
--- a/wmake/rules/linuxGcc45/c++
+++ b/wmake/rules/linuxGcc45/c++
@@ -1,6 +1,6 @@
 .SUFFIXES: .C .cxx .cc .cpp
 
-c++WARN     = -Wall -Wno-strict-aliasing -Wextra -Wno-unused-parameter -Wold-style-cast
+c++WARN     = -Wall -Wextra -Wno-unused-parameter -Wold-style-cast
 
 CC          = g++ -m32
 
diff --git a/wmake/rules/linuxIA64Gcc/c++ b/wmake/rules/linuxIA64Gcc/c++
index a7a2b63cdeb0a2d7fb55c59cd34ac35ff9fdb0be..a3202548997b9bd4664bcbeb2f532e6f8713378d 100644
--- a/wmake/rules/linuxIA64Gcc/c++
+++ b/wmake/rules/linuxIA64Gcc/c++
@@ -1,6 +1,6 @@
 .SUFFIXES: .C .cxx .cc .cpp
 
-c++WARN     = -Wall -Wno-strict-aliasing -Wextra -Wno-unused-parameter -Wold-style-cast
+c++WARN     = -Wall -Wextra -Wno-unused-parameter -Wold-style-cast
 
 CC          = g++
 
diff --git a/wmake/rules/linuxPPC64Gcc/c++ b/wmake/rules/linuxPPC64Gcc/c++
index 534a3e0d7c778e696746ba09cf940681c0542513..aab8a92cbbdf564d68e80ce50682eea59ae8d204 100644
--- a/wmake/rules/linuxPPC64Gcc/c++
+++ b/wmake/rules/linuxPPC64Gcc/c++
@@ -1,6 +1,6 @@
 .SUFFIXES: .C .cxx .cc .cpp
 
-c++WARN     = -Wall -Wno-strict-aliasing -Wextra -Wno-unused-parameter -Wold-style-cast
+c++WARN     = -Wall -Wextra -Wno-unused-parameter -Wold-style-cast
 
 CC          = g++ -m64 -mcpu=power5+
 
diff --git a/wmake/rules/linuxmingw32/c++ b/wmake/rules/linuxmingw32/c++
index 54a941adcd7095bda6b7fc0082af21d4950f84ed..a0812a1cbaf3df9b0d59942231b570459bd418e5 100644
--- a/wmake/rules/linuxmingw32/c++
+++ b/wmake/rules/linuxmingw32/c++
@@ -1,6 +1,6 @@
 .SUFFIXES: .C .cxx .cc .cpp
 
-c++WARN     = -Wall -Wno-strict-aliasing -Wextra -Wno-unused-parameter
+c++WARN     = -Wall -Wextra -Wno-unused-parameter
 
 CC          = mingw32-g++
 
diff --git a/wmake/rules/solarisGcc/c++ b/wmake/rules/solarisGcc/c++
index 74aab0616aeea1636af2856d6cd64073ef0eac8c..387d99fd897d966b1cbf6f20b77ff30b126c9518 100644
--- a/wmake/rules/solarisGcc/c++
+++ b/wmake/rules/solarisGcc/c++
@@ -1,6 +1,6 @@
 .SUFFIXES: .C .cxx .cc .cpp
 
-c++WARN     = -Wall -Wno-strict-aliasing -Wextra -Wno-unused-parameter
+c++WARN     = -Wall -Wextra -Wno-unused-parameter
 
 CC          = g++