diff --git a/src/OpenFOAM/fields/pointPatchFields/pointPatchField/pointConstraint/pointConstraint.H b/src/OpenFOAM/fields/pointPatchFields/pointPatchField/pointConstraint/pointConstraint.H
index 7f4f667c30feddbe07d831ff7b65ab0bb34f6bfe..5b48463befa18f99aecf5859a2e67b5e4c2ad47d 100644
--- a/src/OpenFOAM/fields/pointPatchFields/pointPatchField/pointConstraint/pointConstraint.H
+++ b/src/OpenFOAM/fields/pointPatchFields/pointPatchField/pointConstraint/pointConstraint.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -41,10 +41,9 @@ SourceFiles
 #define pointConstraint_H
 
 #include "label.H"
-#include "uLabel.H"
 #include "vector.H"
-#include "tensor.H"
 #include "Tuple2.H"
+#include "transform.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
@@ -67,6 +66,9 @@ public:
         //- Construct null
         inline pointConstraint();
 
+        //- Construct from components
+        inline pointConstraint(const Tuple2<label, vector>&);
+
         //- Construct from Istream
         inline pointConstraint(Istream&);
 
@@ -84,6 +86,23 @@ public:
 };
 
 
+//- reduce operator
+class combineConstraintsEqOp
+{
+public:
+    inline void operator()(pointConstraint&, const pointConstraint&) const;
+};
+
+//- transformation function
+inline pointConstraint transform(const tensor& tt, const pointConstraint& v);
+
+//- contiguous
+template<class T> bool contiguous();
+template<>
+inline bool contiguous<pointConstraint>()                {return true;}
+
+
+
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 } // End namespace Foam
diff --git a/src/OpenFOAM/fields/pointPatchFields/pointPatchField/pointConstraint/pointConstraintI.H b/src/OpenFOAM/fields/pointPatchFields/pointPatchField/pointConstraint/pointConstraintI.H
index 698e62a94460ff4b3b24a51ab7e9bcc787d8e3f3..0915a301d4db98a8d20e3a9193c22482e7f2149c 100644
--- a/src/OpenFOAM/fields/pointPatchFields/pointPatchField/pointConstraint/pointConstraintI.H
+++ b/src/OpenFOAM/fields/pointPatchFields/pointPatchField/pointConstraint/pointConstraintI.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -31,6 +31,12 @@ inline Foam::pointConstraint::pointConstraint()
 {}
 
 
+inline Foam::pointConstraint::pointConstraint(const Tuple2<label, vector>& pc)
+:
+    Tuple2<label, vector>(pc)
+{}
+
+
 inline Foam::pointConstraint::pointConstraint(Istream& is)
 :
     Tuple2<label, vector>(is)
@@ -130,4 +136,27 @@ Foam::tensor Foam::pointConstraint::constraintTransformation() const
 }
 
 
+void Foam::combineConstraintsEqOp::operator()
+(
+    pointConstraint& x,
+    const pointConstraint& y
+) const
+{
+    x.combine(y);
+}
+
+
+Foam::pointConstraint Foam::transform
+(
+    const tensor& tt,
+    const pointConstraint& v
+)
+{
+    return pointConstraint
+    (
+        Tuple2<label, vector>(v.first(), transform(tt, v.second()))
+    );
+}
+
+
 // ************************************************************************* //