diff --git a/AMDiS/src/io/FileWriter.cc b/AMDiS/src/io/FileWriter.cc
index 77e25e6a049f66bd8811d4dc8b4382540d3a1147..84c588faccb0324239db1ce4e924c7178ac79c77 100644
--- a/AMDiS/src/io/FileWriter.cc
+++ b/AMDiS/src/io/FileWriter.cc
@@ -231,7 +231,7 @@ namespace AMDiS
 						createSubDir > 0);
 	}
 #endif
-	Arh3Writer::writeFile(solutionVecs, fn + ".arh");
+	Arh3Writer::writeFile(solutionVecs, fn + ".arh", false);
       }
     
     
diff --git a/AMDiS/src/io/detail/Arh3Writer.cc b/AMDiS/src/io/detail/Arh3Writer.cc
index e421fe10d99d4490b3cb27abcc1f95bcb7eb5c92..b34217adeffeb0cb406638c08b536d96e2d304b6 100644
--- a/AMDiS/src/io/detail/Arh3Writer.cc
+++ b/AMDiS/src/io/detail/Arh3Writer.cc
@@ -219,7 +219,25 @@ namespace AMDiS { namespace io {
 	
 	TEST_EXIT(nameset.size() == vecs.size())
 	  ("DOFVectors in vecs cannot have idential name. Please check.\n");
-	
+
+#ifdef HAVE_PARALLEL_DOMAIN_AMDIS
+	if (writeParallel) {
+	  using boost::lexical_cast;
+	  
+	  int sPos = filename.find(".arh");
+	  TEST_EXIT(sPos >= 0)("Failed to find file postfix!\n");
+	  string name = filename.substr(0, sPos);
+	  std::vector<int> macroIdx;
+	  
+	  Mesh* mesh_ = mesh ? mesh : vecs[0]->getFeSpace()->getMesh();
+	  
+	  if (MPI::COMM_WORLD.Get_rank() == 0)
+	    writeParallelFile(name + ".parh", mesh_, false);
+	  
+	  filename = name + "-p" + lexical_cast<string>(MPI::COMM_WORLD.Get_rank()) + "-.arh";
+	}
+#endif	  
+	  
 	bool multiMesh = meshset.size() > 1;
 	
 	//if mesh exists, the meshes in vecs should be the same.