diff --git a/src/lagrangian/intermediate/submodels/CloudFunctionObjects/CloudFunctionObject/CloudFunctionObject.C b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/CloudFunctionObject/CloudFunctionObject.C
index 4935aa7b3d2718f3219ea82cf9e859a85316c4de..199023cfc5965efe43bf65089c9d3d287987445c 100644
--- a/src/lagrangian/intermediate/submodels/CloudFunctionObjects/CloudFunctionObject/CloudFunctionObject.C
+++ b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/CloudFunctionObject/CloudFunctionObject.C
@@ -39,7 +39,8 @@ void Foam::CloudFunctionObject<CloudType>::write()
 template<class CloudType>
 Foam::CloudFunctionObject<CloudType>::CloudFunctionObject(CloudType& owner)
 :
-    SubModelBase<CloudType>(owner)
+    CloudSubModelBase<CloudType>(owner),
+    outputDir_()
 {}
 
 
@@ -48,11 +49,28 @@ Foam::CloudFunctionObject<CloudType>::CloudFunctionObject
 (
     const dictionary& dict,
     CloudType& owner,
-    const word& type
+    const word& modelName,
+    const word& objectType
 )
 :
-    SubModelBase<CloudType>(owner, dict, typeName, type, "")
-{}
+    CloudSubModelBase<CloudType>(modelName, owner, dict, typeName, objectType),
+    outputDir_(owner.mesh().time().path())
+{
+    const fileName relPath =
+        "postProcessing"/cloud::prefix/owner.name()/this->modelName();
+
+
+    if (Pstream::parRun())
+    {
+        // Put in undecomposed case (Note: gives problems for
+        // distributed data running)
+        outputDir_ = outputDir_/".."/relPath;
+    }
+    else
+    {
+        outputDir_ = outputDir_/relPath;
+    }
+}
 
 
 template<class CloudType>
@@ -61,7 +79,7 @@ Foam::CloudFunctionObject<CloudType>::CloudFunctionObject
     const CloudFunctionObject<CloudType>& ppm
 )
 :
-    SubModelBase<CloudType>(ppm)
+    CloudSubModelBase<CloudType>(ppm)
 {}
 
 
@@ -131,6 +149,13 @@ void Foam::CloudFunctionObject<CloudType>::postFace
 }
 
 
+template<class CloudType>
+const Foam::fileName& Foam::CloudFunctionObject<CloudType>::outputDir() const
+{
+    return outputDir_;
+}
+
+
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 #include "CloudFunctionObjectNew.C"
diff --git a/src/lagrangian/intermediate/submodels/CloudFunctionObjects/CloudFunctionObject/CloudFunctionObject.H b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/CloudFunctionObject/CloudFunctionObject.H
index a9b2be35228aec29c5804f0b551867b8f80f4b13..90996706fbc67932982e96273e63a7c6543d20b0 100644
--- a/src/lagrangian/intermediate/submodels/CloudFunctionObjects/CloudFunctionObject/CloudFunctionObject.H
+++ b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/CloudFunctionObject/CloudFunctionObject.H
@@ -39,7 +39,7 @@ SourceFiles
 #include "IOdictionary.H"
 #include "autoPtr.H"
 #include "runTimeSelectionTables.H"
-#include "SubModelBase.H"
+#include "CloudSubModelBase.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
@@ -56,9 +56,15 @@ class tetIndices;
 template<class CloudType>
 class CloudFunctionObject
 :
-    public SubModelBase<CloudType>
+    public CloudSubModelBase<CloudType>
 {
-    // Protected Member Functions
+    // Private data
+
+        //- Output path
+        fileName outputDir_;
+
+
+    // Private Member Functions
 
         //- Write post-processing info
         virtual void write();
@@ -77,9 +83,10 @@ public:
         dictionary,
         (
             const dictionary& dict,
-            CloudType& owner
+            CloudType& owner,
+            const word& modelName
         ),
-        (dict, owner)
+        (dict, owner, modelName)
     );
 
 
@@ -93,7 +100,8 @@ public:
         (
             const dictionary& dict,
             CloudType& owner,
-            const word& modelType
+            const word& objectType,
+            const word& modelName
         );
 
         //- Construct copy
@@ -118,7 +126,8 @@ public:
     (
         const dictionary& dict,
         CloudType& owner,
-        const word& modelType
+        const word& objectType,
+        const word& modelName
     );
 
 
@@ -159,6 +168,12 @@ public:
                 const label faceI,
                 bool& keepParticle
             );
+
+
+        // Input/output
+
+            //- Return the output path
+            const fileName& outputDir() const;
 };
 
 
diff --git a/src/lagrangian/intermediate/submodels/CloudFunctionObjects/CloudFunctionObject/CloudFunctionObjectNew.C b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/CloudFunctionObject/CloudFunctionObjectNew.C
index a67faf4d205e0811edec260c4982662fd3fb234f..f105d6b3cb2e5fd0a13a83b5ea7e5d7e2270635e 100644
--- a/src/lagrangian/intermediate/submodels/CloudFunctionObjects/CloudFunctionObject/CloudFunctionObjectNew.C
+++ b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/CloudFunctionObject/CloudFunctionObjectNew.C
@@ -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
@@ -33,13 +33,15 @@ Foam::CloudFunctionObject<CloudType>::New
 (
     const dictionary& dict,
     CloudType& owner,
-    const word& modelType
+    const word& objectType,
+    const word& modelName
 )
 {
-    Info<< "    Selecting cloud function " << modelType << endl;
+    Info<< "    Selecting cloud function " << modelName << " of type "
+        << objectType << endl;
 
     typename dictionaryConstructorTable::iterator cstrIter =
-        dictionaryConstructorTablePtr_->find(modelType);
+        dictionaryConstructorTablePtr_->find(objectType);
 
     if (cstrIter == dictionaryConstructorTablePtr_->end())
     {
@@ -48,16 +50,26 @@ Foam::CloudFunctionObject<CloudType>::New
             "CloudFunctionObject<CloudType>::New"
             "("
                 "const dictionary&, "
-                "CloudType&"
+                "CloudType&, "
+                "const word&, "
+                "const word&"
             ")"
         )   << "Unknown cloud function type "
-            << modelType << nl << nl
+            << objectType << nl << nl
             << "Valid cloud function types are:" << nl
             << dictionaryConstructorTablePtr_->sortedToc()
             << exit(FatalError);
     }
 
-    return autoPtr<CloudFunctionObject<CloudType> >(cstrIter()(dict, owner));
+    return autoPtr<CloudFunctionObject<CloudType> >
+    (
+        cstrIter()
+        (
+            dict,
+            owner,
+            modelName
+        )
+    );
 }
 
 
diff --git a/src/lagrangian/intermediate/submodels/CloudFunctionObjects/CloudFunctionObjectList/CloudFunctionObjectList.C b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/CloudFunctionObjectList/CloudFunctionObjectList.C
index 3308cf6228cac83b288f8863031498966b040384..ed3d5534d0af196c7ae090a7d394413c9e3fc16b 100644
--- a/src/lagrangian/intermediate/submodels/CloudFunctionObjects/CloudFunctionObjectList/CloudFunctionObjectList.C
+++ b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/CloudFunctionObjectList/CloudFunctionObjectList.C
@@ -66,13 +66,19 @@ Foam::CloudFunctionObjectList<CloudType>::CloudFunctionObjectList
             {
                 const word& modelName = modelNames[i];
 
+                const dictionary& modelDict(dict.subDict(modelName));
+
+                // read the type of the function object
+                const word objectType(modelDict.lookup("type"));
+
                 this->set
                 (
                     i,
                     CloudFunctionObject<CloudType>::New
                     (
-                        dict,
+                        modelDict,
                         owner,
+                        objectType,
                         modelName
                     )
                 );
diff --git a/src/lagrangian/intermediate/submodels/CloudFunctionObjects/FacePostProcessing/FacePostProcessing.C b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/FacePostProcessing/FacePostProcessing.C
index 8c64e1b62fef66bfaed86e6f48f2c0ede8c40dcb..b123e38291a95502732fc804d0b7d493881dc541 100644
--- a/src/lagrangian/intermediate/submodels/CloudFunctionObjects/FacePostProcessing/FacePostProcessing.C
+++ b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/FacePostProcessing/FacePostProcessing.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -50,16 +50,17 @@ void Foam::FacePostProcessing<CloudType>::makeLogFile
 
         if (Pstream::master())
         {
-            const fileName logDir = outputDir_/this->owner().time().timeName();
-
             // Create directory if does not exist
-            mkDir(logDir);
+            mkDir(this->outputDir());
 
             // Open new file at start up
             outputFilePtr_.set
             (
                 zoneI,
-                new OFstream(logDir/(type() + '_' + zoneName + ".dat"))
+                new OFstream
+                (
+                    this->outputDir()/(type() + '_' + zoneName + ".dat")
+                )
             );
 
             outputFilePtr_[zoneI]
@@ -201,7 +202,7 @@ void Foam::FacePostProcessing<CloudType>::write()
 
                 writer->write
                 (
-                    outputDir_/time.timeName(),
+                    this->outputDir()/time.timeName(),
                     fZone.name(),
                     allPoints,
                     allFaces,
@@ -212,7 +213,7 @@ void Foam::FacePostProcessing<CloudType>::write()
 
                 writer->write
                 (
-                    outputDir_/time.timeName(),
+                    this->outputDir()/time.timeName(),
                     fZone.name(),
                     allPoints,
                     allFaces,
@@ -250,10 +251,11 @@ template<class CloudType>
 Foam::FacePostProcessing<CloudType>::FacePostProcessing
 (
     const dictionary& dict,
-    CloudType& owner
+    CloudType& owner,
+    const word& modelName
 )
 :
-    CloudFunctionObject<CloudType>(dict, owner, typeName),
+    CloudFunctionObject<CloudType>(dict, owner, modelName, typeName),
     faceZoneIDs_(),
     surfaceFormat_(this->coeffDict().lookup("surfaceFormat")),
     resetOnWrite_(this->coeffDict().lookup("resetOnWrite")),
@@ -263,7 +265,6 @@ Foam::FacePostProcessing<CloudType>::FacePostProcessing
     massFlowRate_(),
     log_(this->coeffDict().lookup("log")),
     outputFilePtr_(),
-    outputDir_(owner.mesh().time().path()),
     timeOld_(owner.mesh().time().value())
 {
     wordList faceZoneNames(this->coeffDict().lookup("faceZones"));
@@ -273,19 +274,6 @@ Foam::FacePostProcessing<CloudType>::FacePostProcessing
 
     outputFilePtr_.setSize(faceZoneNames.size());
 
-    if (Pstream::parRun())
-    {
-        // Put in undecomposed case (Note: gives problems for
-        // distributed data running)
-        outputDir_ =
-            outputDir_/".."/"postProcessing"/cloud::prefix/owner.name();
-    }
-    else
-    {
-        outputDir_ =
-            outputDir_/"postProcessing"/cloud::prefix/owner.name();
-    }
-
     DynamicList<label> zoneIDs;
     const faceZoneMesh& fzm = owner.mesh().faceZones();
     const surfaceScalarField& magSf = owner.mesh().magSf();
@@ -358,7 +346,6 @@ Foam::FacePostProcessing<CloudType>::FacePostProcessing
     massFlowRate_(pff.massFlowRate_),
     log_(pff.log_),
     outputFilePtr_(),
-    outputDir_(pff.outputDir_),
     timeOld_(0.0)
 {}
 
diff --git a/src/lagrangian/intermediate/submodels/CloudFunctionObjects/FacePostProcessing/FacePostProcessing.H b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/FacePostProcessing/FacePostProcessing.H
index 3195b9fc575df39227da5c6a226edc4727d3007a..4db5ed16b2fc448e8031d794ec956a79902683b9 100644
--- a/src/lagrangian/intermediate/submodels/CloudFunctionObjects/FacePostProcessing/FacePostProcessing.H
+++ b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/FacePostProcessing/FacePostProcessing.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
@@ -91,9 +91,6 @@ class FacePostProcessing
         //- Output file pointer per zone
         PtrList<OFstream> outputFilePtr_;
 
-        //- Output directory
-        fileName outputDir_;
-
         //- Last calculation time
         scalar timeOld_;
 
@@ -127,7 +124,12 @@ public:
     // Constructors
 
         //- Construct from dictionary
-        FacePostProcessing(const dictionary& dict, CloudType& owner);
+        FacePostProcessing
+        (
+            const dictionary& dict,
+            CloudType& owner,
+            const word& modelName
+        );
 
         //- Construct copy
         FacePostProcessing(const FacePostProcessing<CloudType>& ppm);
diff --git a/src/lagrangian/intermediate/submodels/CloudFunctionObjects/ParticleCollector/ParticleCollector.C b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/ParticleCollector/ParticleCollector.C
index a8003d43bec144846e6b7d708caab96fdd51679b..28fc229c2d05573afe22c557f55ddafaf4b974ce 100644
--- a/src/lagrangian/intermediate/submodels/CloudFunctionObjects/ParticleCollector/ParticleCollector.C
+++ b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/ParticleCollector/ParticleCollector.C
@@ -51,15 +51,13 @@ void Foam::ParticleCollector<CloudType>::makeLogFile
 
         if (Pstream::master())
         {
-            const fileName logDir = outputDir_/this->owner().time().timeName();
-
             // Create directory if does not exist
-            mkDir(logDir);
+            mkDir(this->outputDir());
 
             // Open new file at start up
             outputFilePtr_.reset
             (
-                new OFstream(logDir/(type() + ".dat"))
+                new OFstream(this->outputDir()/(type() + ".dat"))
             );
 
             outputFilePtr_()
@@ -463,7 +461,7 @@ void Foam::ParticleCollector<CloudType>::write()
 
             writer->write
             (
-                outputDir_/time.timeName(),
+                this->outputDir()/time.timeName(),
                 "collector",
                 points_,
                 faces_,
@@ -474,7 +472,7 @@ void Foam::ParticleCollector<CloudType>::write()
 
             writer->write
             (
-                outputDir_/time.timeName(),
+                this->outputDir()/time.timeName(),
                 "collector",
                 points_,
                 faces_,
@@ -516,10 +514,11 @@ template<class CloudType>
 Foam::ParticleCollector<CloudType>::ParticleCollector
 (
     const dictionary& dict,
-    CloudType& owner
+    CloudType& owner,
+    const word& modelName
 )
 :
-    CloudFunctionObject<CloudType>(dict, owner, typeName),
+    CloudFunctionObject<CloudType>(dict, owner, modelName, typeName),
     mode_(mtUnknown),
     parcelType_(this->coeffDict().lookupOrDefault("parcelType", -1)),
     removeCollected_(this->coeffDict().lookup("removeCollected")),
@@ -542,22 +541,8 @@ Foam::ParticleCollector<CloudType>::ParticleCollector
     massFlowRate_(),
     log_(this->coeffDict().lookup("log")),
     outputFilePtr_(),
-    outputDir_(owner.mesh().time().path()),
     timeOld_(owner.mesh().time().value())
 {
-    if (Pstream::parRun())
-    {
-        // Put in undecomposed case (Note: gives problems for
-        // distributed data running)
-        outputDir_ =
-            outputDir_/".."/"postProcessing"/cloud::prefix/owner.name();
-    }
-    else
-    {
-        outputDir_ =
-            outputDir_/"postProcessing"/cloud::prefix/owner.name();
-    }
-
     normal_ /= mag(normal_);
 
     word mode(this->coeffDict().lookup("mode"));
@@ -618,7 +603,6 @@ Foam::ParticleCollector<CloudType>::ParticleCollector
     massFlowRate_(pc.massFlowRate_),
     log_(pc.log_),
     outputFilePtr_(),
-    outputDir_(pc.outputDir_),
     timeOld_(0.0)
 {}
 
diff --git a/src/lagrangian/intermediate/submodels/CloudFunctionObjects/ParticleCollector/ParticleCollector.H b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/ParticleCollector/ParticleCollector.H
index 001973fd0fdde1d1946f91029126d3b53d54cca2..6982d3531ca49db90ad6bc2566515778ea40ef29 100644
--- a/src/lagrangian/intermediate/submodels/CloudFunctionObjects/ParticleCollector/ParticleCollector.H
+++ b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/ParticleCollector/ParticleCollector.H
@@ -143,9 +143,6 @@ private:
         //- Output file pointer
         autoPtr<OFstream> outputFilePtr_;
 
-        //- Output directory
-        fileName outputDir_;
-
         //- Last calculation time
         scalar timeOld_;
 
@@ -198,7 +195,12 @@ public:
     // Constructors
 
         //- Construct from dictionary
-        ParticleCollector(const dictionary& dict, CloudType& owner);
+        ParticleCollector
+        (
+            const dictionary& dict,
+            CloudType& owner,
+            const word& modelName
+        );
 
         //- Construct copy
         ParticleCollector(const ParticleCollector<CloudType>& pc);
diff --git a/src/lagrangian/intermediate/submodels/CloudFunctionObjects/ParticleErosion/ParticleErosion.C b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/ParticleErosion/ParticleErosion.C
index c0683d0dbfe0d7e8e82541c2e9bccbf1b13da075..f4fd96bb1711913b844de8e8b7e68a4fb5017f37 100644
--- a/src/lagrangian/intermediate/submodels/CloudFunctionObjects/ParticleErosion/ParticleErosion.C
+++ b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/ParticleErosion/ParticleErosion.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -66,10 +66,11 @@ template<class CloudType>
 Foam::ParticleErosion<CloudType>::ParticleErosion
 (
     const dictionary& dict,
-    CloudType& owner
+    CloudType& owner,
+    const word& modelName
 )
 :
-    CloudFunctionObject<CloudType>(dict, owner, typeName),
+    CloudFunctionObject<CloudType>(dict, owner, modelName, typeName),
     QPtr_(NULL),
     patchIDs_(),
     p_(readScalar(this->coeffDict().lookup("p"))),
diff --git a/src/lagrangian/intermediate/submodels/CloudFunctionObjects/ParticleErosion/ParticleErosion.H b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/ParticleErosion/ParticleErosion.H
index bedc447188af470d5fb6ada346eb9a693fb969b1..5e4e0db1cb47a7ceedae553e769aef0c5495dc7e 100644
--- a/src/lagrangian/intermediate/submodels/CloudFunctionObjects/ParticleErosion/ParticleErosion.H
+++ b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/ParticleErosion/ParticleErosion.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -96,7 +96,12 @@ public:
     // Constructors
 
         //- Construct from dictionary
-        ParticleErosion(const dictionary& dict, CloudType& owner);
+        ParticleErosion
+        (
+            const dictionary& dict,
+            CloudType& owner,
+            const word& modelName
+        );
 
         //- Construct copy
         ParticleErosion(const ParticleErosion<CloudType>& pe);
diff --git a/src/lagrangian/intermediate/submodels/CloudFunctionObjects/ParticleTracks/ParticleTracks.C b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/ParticleTracks/ParticleTracks.C
index 69f48bf5e039f3c0b898493095d9e17ad2a194ec..856ace872acc501b46bb25d277092697d20f1149 100644
--- a/src/lagrangian/intermediate/submodels/CloudFunctionObjects/ParticleTracks/ParticleTracks.C
+++ b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/ParticleTracks/ParticleTracks.C
@@ -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
@@ -59,10 +59,11 @@ template<class CloudType>
 Foam::ParticleTracks<CloudType>::ParticleTracks
 (
     const dictionary& dict,
-    CloudType& owner
+    CloudType& owner,
+    const word& modelName
 )
 :
-    CloudFunctionObject<CloudType>(dict, owner, typeName),
+    CloudFunctionObject<CloudType>(dict, owner, modelName, typeName),
     trackInterval_(readLabel(this->coeffDict().lookup("trackInterval"))),
     maxSamples_(readLabel(this->coeffDict().lookup("maxSamples"))),
     resetOnWrite_(this->coeffDict().lookup("resetOnWrite")),
diff --git a/src/lagrangian/intermediate/submodels/CloudFunctionObjects/ParticleTracks/ParticleTracks.H b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/ParticleTracks/ParticleTracks.H
index 1eeda7bcb82facb7b37483ec488498d03a04da8c..4bf65edd53651e85a1db741bed7f97ca735a6d30 100644
--- a/src/lagrangian/intermediate/submodels/CloudFunctionObjects/ParticleTracks/ParticleTracks.H
+++ b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/ParticleTracks/ParticleTracks.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
@@ -95,7 +95,12 @@ public:
     // Constructors
 
         //- Construct from dictionary
-        ParticleTracks(const dictionary& dict, CloudType& owner);
+        ParticleTracks
+        (
+            const dictionary& dict,
+            CloudType& owner,
+            const word& modelName
+        );
 
         //- Construct copy
         ParticleTracks(const ParticleTracks<CloudType>& ppm);
diff --git a/src/lagrangian/intermediate/submodels/CloudFunctionObjects/ParticleTrap/ParticleTrap.C b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/ParticleTrap/ParticleTrap.C
index 0a5ff091230d3935666e3a8205a3cb645c23e8c4..317a033844fff22f72001fed549ebb7800bb76b1 100644
--- a/src/lagrangian/intermediate/submodels/CloudFunctionObjects/ParticleTrap/ParticleTrap.C
+++ b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/ParticleTrap/ParticleTrap.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2012 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2012-2013 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -32,10 +32,11 @@ template<class CloudType>
 Foam::ParticleTrap<CloudType>::ParticleTrap
 (
     const dictionary& dict,
-    CloudType& owner
+    CloudType& owner,
+    const word& modelName
 )
 :
-    CloudFunctionObject<CloudType>(dict, owner, typeName),
+    CloudFunctionObject<CloudType>(dict, owner, modelName, typeName),
     alphaName_
     (
         this->coeffDict().template lookupOrDefault<word>("alphaName", "alpha")
diff --git a/src/lagrangian/intermediate/submodels/CloudFunctionObjects/ParticleTrap/ParticleTrap.H b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/ParticleTrap/ParticleTrap.H
index 43fac16c583cd40f19de0927f9513774ccf9ac2f..81ccb68e3af2d34a6c826c19fab4c171ad9b7ad5 100644
--- a/src/lagrangian/intermediate/submodels/CloudFunctionObjects/ParticleTrap/ParticleTrap.H
+++ b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/ParticleTrap/ParticleTrap.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2012 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2012-2013 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -29,8 +29,9 @@ Description
 
     Model is activated using:
 
-        particleTrap
+        particleTrap1
         {
+            type        particleTrap;
             alphaName   alpha;      // name volume fraction field
             threshold   0.95;       // alpha value below which model is active
         }
@@ -91,7 +92,12 @@ public:
     // Constructors
 
         //- Construct from dictionary
-        ParticleTrap(const dictionary& dict, CloudType& owner);
+        ParticleTrap
+        (
+            const dictionary& dict,
+            CloudType& owner,
+            const word& modelName
+        );
 
         //- Construct copy
         ParticleTrap(const ParticleTrap<CloudType>& pe);
diff --git a/src/lagrangian/intermediate/submodels/CloudFunctionObjects/PatchPostProcessing/PatchPostProcessing.C b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/PatchPostProcessing/PatchPostProcessing.C
index a267b86266ce4252837b10daffa9f88d561fa4ed..67d65a7175acdc4ddb1c860067f13de2864ee94d 100644
--- a/src/lagrangian/intermediate/submodels/CloudFunctionObjects/PatchPostProcessing/PatchPostProcessing.C
+++ b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/PatchPostProcessing/PatchPostProcessing.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -68,22 +68,7 @@ void Foam::PatchPostProcessing<CloudType>::write()
         {
             const fvMesh& mesh = this->owner().mesh();
 
-            fileName outputDir = mesh.time().path();
-
-            if (Pstream::parRun())
-            {
-                // Put in undecomposed case (Note: gives problems for
-                // distributed data running)
-                outputDir =
-                    outputDir/".."/"postProcessing"/cloud::prefix/
-                    this->owner().name()/mesh.time().timeName();
-            }
-            else
-            {
-                outputDir =
-                    outputDir/"postProcessing"/cloud::prefix/
-                    this->owner().name()/mesh.time().timeName();
-            }
+            fileName outputDir = this->outputDir()/mesh.time().timeName();
 
             // Create directory if it doesn't exist
             mkDir(outputDir);
@@ -141,10 +126,11 @@ template<class CloudType>
 Foam::PatchPostProcessing<CloudType>::PatchPostProcessing
 (
     const dictionary& dict,
-    CloudType& owner
+    CloudType& owner,
+    const word& modelName
 )
 :
-    CloudFunctionObject<CloudType>(dict, owner, typeName),
+    CloudFunctionObject<CloudType>(dict, owner, modelName, typeName),
     maxStoredParcels_(readScalar(this->coeffDict().lookup("maxStoredParcels"))),
     patchIDs_(),
     times_(),
diff --git a/src/lagrangian/intermediate/submodels/CloudFunctionObjects/PatchPostProcessing/PatchPostProcessing.H b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/PatchPostProcessing/PatchPostProcessing.H
index cb4605e666adbe8de4439409e2e1433a960062c7..9b023a87e278cfe5ef8078c86673d22c5102bdb7 100644
--- a/src/lagrangian/intermediate/submodels/CloudFunctionObjects/PatchPostProcessing/PatchPostProcessing.H
+++ b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/PatchPostProcessing/PatchPostProcessing.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -91,7 +91,12 @@ public:
     // Constructors
 
         //- Construct from dictionary
-        PatchPostProcessing(const dictionary& dict, CloudType& owner);
+        PatchPostProcessing
+        (
+            const dictionary& dict,
+            CloudType& owner,
+            const word& modelName
+        );
 
         //- Construct copy
         PatchPostProcessing(const PatchPostProcessing<CloudType>& ppm);
diff --git a/src/lagrangian/intermediate/submodels/CloudFunctionObjects/VoidFraction/VoidFraction.C b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/VoidFraction/VoidFraction.C
index e5b64f65caa9d94eee3c388c62680bda395ac70e..12188730c391db350a9ff1419055e11106524d72 100644
--- a/src/lagrangian/intermediate/submodels/CloudFunctionObjects/VoidFraction/VoidFraction.C
+++ b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/VoidFraction/VoidFraction.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -48,10 +48,11 @@ template<class CloudType>
 Foam::VoidFraction<CloudType>::VoidFraction
 (
     const dictionary& dict,
-    CloudType& owner
+    CloudType& owner,
+    const word& modelName
 )
 :
-    CloudFunctionObject<CloudType>(owner),
+    CloudFunctionObject<CloudType>(dict, owner, modelName, typeName),
     thetaPtr_(NULL)
 {}
 
diff --git a/src/lagrangian/intermediate/submodels/CloudFunctionObjects/VoidFraction/VoidFraction.H b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/VoidFraction/VoidFraction.H
index e8ed507f7dfefecca188deafa084b6940ed070b8..502e4aa3ec55a1b0f1ec0f8b22b540689823d35e 100644
--- a/src/lagrangian/intermediate/submodels/CloudFunctionObjects/VoidFraction/VoidFraction.H
+++ b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/VoidFraction/VoidFraction.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
@@ -81,7 +81,12 @@ public:
     // Constructors
 
         //- Construct from dictionary
-        VoidFraction(const dictionary& dict, CloudType& owner);
+        VoidFraction
+        (
+            const dictionary& dict,
+            CloudType& owner,
+            const word& modelName
+        );
 
         //- Construct copy
         VoidFraction(const VoidFraction<CloudType>& vf);