diff --git a/AMDiS/src/FileWriter.cc b/AMDiS/src/FileWriter.cc
index a7f24c2e4299c7d31808b0e17348f7fc931e98b4..bdc19c4220a3000cc9419fc4bf9dc0f043b186fd 100644
--- a/AMDiS/src/FileWriter.cc
+++ b/AMDiS/src/FileWriter.cc
@@ -13,13 +13,17 @@
 #include "Mesh.h"
 #include "OpenMP.h"
 
+#if HAVE_PARALLEL_DOMAIN_AMDIS
+#include "mpi.h"
+#endif
+
 namespace AMDiS {
 
-  FileWriter::FileWriter(const std::string &name_, 
-			 Mesh *mesh_,
+  FileWriter::FileWriter(const std::string &str,
+			 Mesh *m,
 			 DOFVector<double> *vec)
-    : name(name_),
-      mesh(mesh_)
+    : name(str),
+      mesh(m)
   {
     FUNCNAME("FileWriter::FileWriter()");
 
@@ -42,10 +46,9 @@ namespace AMDiS {
 
     initialize();
 
-    for (int i = 0; i < static_cast<int>(vecs.size()); i++) {
+    for (int i = 0; i < static_cast<int>(vecs.size()); i++)
       TEST_EXIT(vecs[0]->getFESpace() == vecs[i]->getFESpace())
 	("All FESpace have to be equal!\n");
-    }
 
     feSpace = vecs[0]->getFESpace();
     solutionVecs_ = vecs;
@@ -87,11 +90,9 @@ namespace AMDiS {
   {
     // Do not forget to delete temporal solution vector, if there have been
     // some created in the constructor.
-    if (nTmpSolutions_ > 0) {
-      for (int i = 0; i < nTmpSolutions_; i++) {
+    if (nTmpSolutions_ > 0)
+      for (int i = 0; i < nTmpSolutions_; i++)
         delete solutionVecs_[i]; 
-      }
-    }
   }
   
 
@@ -166,21 +167,25 @@ namespace AMDiS {
     std::vector< DataCollector* > dataCollectors(solutionVecs_.size());
 
     if (writeElem) {
-      for (int i = 0; i < static_cast<int>(dataCollectors.size()); i++) {
+      for (int i = 0; i < static_cast<int>(dataCollectors.size()); i++)
 	dataCollectors[i] = new DataCollector(feSpace, solutionVecs_[i], 
 					      level, flag, writeElem);
-      }
     } else {
-      for (int i = 0; i < static_cast<int>(dataCollectors.size()); i++) {
+      for (int i = 0; i < static_cast<int>(dataCollectors.size()); i++)
 	dataCollectors[i] = new DataCollector(feSpace, solutionVecs_[i], 
 					      traverseLevel, 
 					      flag | traverseFlag, 
 					      writeElement);
-      }
     }
 
     std::string fn = filename;
 
+#if HAVE_PARALLEL_DOMAIN_AMDIS
+    char f[10];
+    sprintf(f, "-p%d-", MPI::COMM_WORLD.Get_rank());
+    fn += f;
+#endif
+
     if (appendIndex) {
       TEST_EXIT(indexLength <= 99)("index lenght > 99\n");
       TEST_EXIT(indexDecimals <= 97)("index decimals > 97\n");
diff --git a/AMDiS/src/ParallelDomainBase.h b/AMDiS/src/ParallelDomainBase.h
index 9a4a32135ba3a583268c98edf05d867445b3b451..2abd7a9cd74fff5dc259ddd539b48b6e3c735d82 100644
--- a/AMDiS/src/ParallelDomainBase.h
+++ b/AMDiS/src/ParallelDomainBase.h
@@ -105,15 +105,35 @@ namespace AMDiS {
 
     void partitionMesh(AdaptInfo *adaptInfo);
 
-    virtual void setTime(AdaptInfo *adaptInfo) {}
+    virtual void setTime(AdaptInfo *adaptInfo) 
+    {
+      if (timeIF) 
+	timeIF->setTime(adaptInfo);      
+    }
 
-    virtual void initTimestep(AdaptInfo *adaptInfo) {}
+    virtual void initTimestep(AdaptInfo *adaptInfo) 
+    {
+      if (timeIF) 
+	timeIF->initTimestep(adaptInfo);
+    }
 
-    virtual void closeTimestep(AdaptInfo *adaptInfo) {}
+    virtual void closeTimestep(AdaptInfo *adaptInfo) 
+    {
+      if (timeIF) 
+	timeIF->closeTimestep(adaptInfo);
+    }
 
-    virtual void solveInitialProblem(AdaptInfo *adaptInfo) {}
+    virtual void solveInitialProblem(AdaptInfo *adaptInfo) 
+    {
+      if (timeIF)
+	timeIF->solveInitialProblem(adaptInfo);
+    }
   
-    virtual void transferInitialSolution(AdaptInfo *adaptInfo) {}
+    virtual void transferInitialSolution(AdaptInfo *adaptInfo) 
+    {
+      if (timeIF) 
+	timeIF->transferInitialSolution(adaptInfo);
+    }
 
     virtual void beginIteration(AdaptInfo *adaptInfo) 
     {