diff --git a/AMDiS/CMakeLists.txt b/AMDiS/CMakeLists.txt
index 5a4c8414fa3ac6622fff1a75040c3dc1ff39f5e3..32b43007cc04b91ce21c39b6a4d740a35bc35c9a 100644
--- a/AMDiS/CMakeLists.txt
+++ b/AMDiS/CMakeLists.txt
@@ -256,7 +256,7 @@ if(ENABLE_PARALLEL_DOMAIN)
 		list(APPEND AMDIS_INCLUDE_DIRS ${PETSC_DIR}/include ${PETSC_DIR}/${PETSC_ARCH}/include)
 		list(APPEND PARALLEL_DOMAIN_AMDIS_SRC 
 			${SOURCE_DIR}/parallel/BddcMlSolver.cc
-			${SOURCE_DIR}/parallel/ParallelCoarseSpaceMatVec.cc
+			${SOURCE_DIR}/parallel/ParallelCoarseSpaceSolver.cc
 			${SOURCE_DIR}/parallel/PetscHelper.cc
 			${SOURCE_DIR}/parallel/PetscSolver.cc
 			${SOURCE_DIR}/parallel/PetscProblemStat.cc
diff --git a/AMDiS/src/parallel/ParallelCoarseSpaceMatVec.cc b/AMDiS/src/parallel/ParallelCoarseSpaceSolver.cc
similarity index 86%
rename from AMDiS/src/parallel/ParallelCoarseSpaceMatVec.cc
rename to AMDiS/src/parallel/ParallelCoarseSpaceSolver.cc
index 6728b3bb73b1bc70403c9b7b3a6894a3954a43f1..a7247f50e6c13329780477a4ae785c5b37a867a5 100644
--- a/AMDiS/src/parallel/ParallelCoarseSpaceMatVec.cc
+++ b/AMDiS/src/parallel/ParallelCoarseSpaceSolver.cc
@@ -10,7 +10,7 @@
 // See also license.opensource.txt in the distribution.
 
 
-#include "parallel/ParallelCoarseSpaceMatVec.h"
+#include "parallel/ParallelCoarseSpaceSolver.h"
 #include "parallel/ParallelDofMapping.h"
 #include "parallel/MatrixNnzStructure.h"
 
@@ -18,7 +18,7 @@ namespace AMDiS {
 
   using namespace std;
 
-  ParallelCoarseSpaceMatVec::ParallelCoarseSpaceMatVec()
+  ParallelCoarseSpaceSolver::ParallelCoarseSpaceSolver()
     : interiorMap(NULL),
       lastMeshNnz(-1),
       alwaysCreateNnzStructure(false),
@@ -32,10 +32,10 @@ namespace AMDiS {
   }
 
 
-  void ParallelCoarseSpaceMatVec::setCoarseSpaceDofMapping(ParallelDofMapping *coarseDofs, 
+  void ParallelCoarseSpaceSolver::setCoarseSpaceDofMapping(ParallelDofMapping *coarseDofs, 
 							   int component)
   {
-    FUNCNAME("ParallelCoarseSpaceMatVec::setCoarseSpaceDofMapping()");
+    FUNCNAME("ParallelCoarseSpaceSolver::setCoarseSpaceDofMapping()");
 
     TEST_EXIT_DBG(coarseDofs)("Should not happen!\n");
 
@@ -59,9 +59,9 @@ namespace AMDiS {
   }
 
 
-  void ParallelCoarseSpaceMatVec::prepare()
+  void ParallelCoarseSpaceSolver::prepare()
   {
-    FUNCNAME("ParallelCoarseSpaceMatVec:prepare()");
+    FUNCNAME("ParallelCoarseSpaceSolver:prepare()");
 
     TEST_EXIT(uniqueCoarseMap.size() <= 2)
       ("Not yet implemented for more than two coarse spaces!\n");
@@ -94,9 +94,9 @@ namespace AMDiS {
   }
 
 
-  void ParallelCoarseSpaceMatVec::createMatVec(Matrix<DOFMatrix*>& seqMat)
+  void ParallelCoarseSpaceSolver::createMatVec(Matrix<DOFMatrix*>& seqMat)
   {
-    FUNCNAME("ParallelCoarseSpaceMatVec::createMatVec()");
+    FUNCNAME("ParallelCoarseSpaceSolver::createMatVec()");
 
     // === Prepare coarse space information and generate the correct number ===
     // === of empty PETSc matrix and vector objects.                        ===
@@ -208,9 +208,9 @@ namespace AMDiS {
   }
 
 
-  void ParallelCoarseSpaceMatVec::matDestroy()
+  void ParallelCoarseSpaceSolver::matDestroy()
   {
-    FUNCNAME("ParallelCoarseSpaceMatVec::matDestroy()");
+    FUNCNAME("ParallelCoarseSpaceSolver::matDestroy()");
 
     int nMatrix = mat.size();
     for (int i = 0; i < nMatrix; i++)
@@ -219,9 +219,9 @@ namespace AMDiS {
   }
 
 
-  void ParallelCoarseSpaceMatVec::vecDestroy()
+  void ParallelCoarseSpaceSolver::vecDestroy()
   {
-    FUNCNAME("ParallelCoarseSpaceMatVec::vecDestroy()");
+    FUNCNAME("ParallelCoarseSpaceSolver::vecDestroy()");
 
     int nVec = vecSol.size();
     for (int i = 0; i < nVec; i++) {
@@ -231,9 +231,9 @@ namespace AMDiS {
   }
 
 
-  void ParallelCoarseSpaceMatVec::matAssembly()
+  void ParallelCoarseSpaceSolver::matAssembly()
   {
-    FUNCNAME("ParallelCoarseSpaceMatVec::matAssembly()");
+    FUNCNAME("ParallelCoarseSpaceSolver::matAssembly()");
 
     int nMatrix = mat.size();
     for (int i = 0; i < nMatrix; i++) {
@@ -245,9 +245,9 @@ namespace AMDiS {
   }
 
 
-  void ParallelCoarseSpaceMatVec::vecRhsAssembly()
+  void ParallelCoarseSpaceSolver::vecRhsAssembly()
   {
-    FUNCNAME("ParallelCoarseSpaceMatVec::vecRhsAssembly()");
+    FUNCNAME("ParallelCoarseSpaceSolver::vecRhsAssembly()");
 
     int nVec = vecRhs.size();
     for (int i = 0; i < nVec; i++) {
@@ -257,9 +257,9 @@ namespace AMDiS {
   }
 
 
-  void ParallelCoarseSpaceMatVec::vecSolAssembly()
+  void ParallelCoarseSpaceSolver::vecSolAssembly()
   {
-    FUNCNAME("ParallelCoarseSpaceMatVec::vecSolAssembly()");
+    FUNCNAME("ParallelCoarseSpaceSolver::vecSolAssembly()");
 
     int nVec = vecRhs.size();
     for (int i = 0; i < nVec; i++) {
@@ -269,9 +269,9 @@ namespace AMDiS {
   }
 
 
-  bool ParallelCoarseSpaceMatVec::checkMeshChange()
+  bool ParallelCoarseSpaceSolver::checkMeshChange()
   {
-    FUNCNAME("ParallelCoarseSpaceMatVec::checkMeshChange()");
+    FUNCNAME("ParallelCoarseSpaceSolver::checkMeshChange()");
 
     int recvAllValues = 0;
     int sendValue = 
@@ -287,9 +287,9 @@ namespace AMDiS {
   }
 
 
-  void ParallelCoarseSpaceMatVec::updateSubdomainData()
+  void ParallelCoarseSpaceSolver::updateSubdomainData()
   {
-    FUNCNAME("ParallelCoarseSpaceMatVec::updateSubdomainData()");
+    FUNCNAME("ParallelCoarseSpaceSolver::updateSubdomainData()");
 
     if (mpiCommLocal.Get_size() == 1) {
       rStartInterior = 0;
diff --git a/AMDiS/src/parallel/ParallelCoarseSpaceMatVec.h b/AMDiS/src/parallel/ParallelCoarseSpaceSolver.h
similarity index 97%
rename from AMDiS/src/parallel/ParallelCoarseSpaceMatVec.h
rename to AMDiS/src/parallel/ParallelCoarseSpaceSolver.h
index e1bcd2ce2ef4ad7f427063ae833d89478f9af9bb..452bb0c0eb6f10d5f8a3741a7d9c26b16e2bea2b 100644
--- a/AMDiS/src/parallel/ParallelCoarseSpaceMatVec.h
+++ b/AMDiS/src/parallel/ParallelCoarseSpaceSolver.h
@@ -18,10 +18,10 @@
 
 
 
-/** \file ParallelCoarseSpaceMatVec.h */
+/** \file ParallelCoarseSpaceSolver.h */
 
-#ifndef AMDIS_PARALLEL_COARSE_SPACE_MAT_VEC_H
-#define AMDIS_PARALLEL_COARSE_SPACE_MAT_VEC_H
+#ifndef AMDIS_PARALLEL_COARSE_SPACE_SOLVER_H
+#define AMDIS_PARALLEL_COARSE_SPACE_SOLVER_H
 
 #include <mpi.h>
 #include <vector>
@@ -48,10 +48,10 @@ namespace AMDiS {
    * - This class also manages the creation of the corresponding non zero 
    *   structure of the matrices.
    */
-  class ParallelCoarseSpaceMatVec {
+  class ParallelCoarseSpaceSolver {
   public:
     /// Constructor
-    ParallelCoarseSpaceMatVec();
+    ParallelCoarseSpaceSolver();
 
     /// Set parallel DOF mapping for the interior DOFs.
     void setDofMapping(ParallelDofMapping *interiorDofs)
@@ -193,7 +193,7 @@ namespace AMDiS {
     /// Get the solution vector of some coarse space.
     inline Vec& getVecSolCoarse(int coarseSpace = 0)
     {
-      FUNCNAME("ParallelCoarseSpaceMatVec::getVecSolCoarse()");
+      FUNCNAME("ParallelCoarseSpaceSolver::getVecSolCoarse()");
 
       TEST_EXIT_DBG(coarseSpace + 1 < vecSol.size())
 	("Wrong component %d, vecSol has only %d!\n", coarseSpace + 1, vecSol.size());
@@ -222,7 +222,7 @@ namespace AMDiS {
     inline bool isCoarseSpace(int component,
 			      DegreeOfFreedom dof)
     {
-      FUNCNAME("ParallelCoarseSpaceMatVec::isCoarseSpace()");
+      FUNCNAME("ParallelCoarseSpaceSolver::isCoarseSpace()");
       
       if (coarseSpaceMap.empty())
 	return false;
diff --git a/AMDiS/src/parallel/PetscSolver.cc b/AMDiS/src/parallel/PetscSolver.cc
index 9cad407caa61258918d80fd3b3205897cdd1fce9..d394a23399f87551a4a5c5809f2e90ea36c0bd81 100644
--- a/AMDiS/src/parallel/PetscSolver.cc
+++ b/AMDiS/src/parallel/PetscSolver.cc
@@ -21,7 +21,7 @@ namespace AMDiS {
   using namespace std;
 
   PetscSolver::PetscSolver(string name)
-    : ParallelCoarseSpaceMatVec(),
+    : ParallelCoarseSpaceSolver(),
       initFileStr(name),
       dofMap(FESPACE_WISE, true),
       dofMapSd(FESPACE_WISE, true),
diff --git a/AMDiS/src/parallel/PetscSolver.h b/AMDiS/src/parallel/PetscSolver.h
index 0e75538bfd665041519259d5ab2c271aeb9923ed..7582662576fb6a89646662421ce394a37d4de44a 100644
--- a/AMDiS/src/parallel/PetscSolver.h
+++ b/AMDiS/src/parallel/PetscSolver.h
@@ -36,7 +36,7 @@
 #include "Initfile.h"
 #include "DOFMatrix.h"
 #include "parallel/MeshDistributor.h"
-#include "parallel/ParallelCoarseSpaceMatVec.h"
+#include "parallel/ParallelCoarseSpaceSolver.h"
 
 namespace AMDiS {
 
@@ -44,10 +44,10 @@ namespace AMDiS {
 
   /**
    * Create an abstract interface to an arbitrary PETSc solver. This class is
-   * based on \ref ParallelCoarseSpaceMatVec to support for solvers which make
+   * based on \ref ParallelCoarseSpaceSolver to support for solvers which make
    * use of a coarse grid problem.
    */
-  class PetscSolver : public ParallelCoarseSpaceMatVec
+  class PetscSolver : public ParallelCoarseSpaceSolver
   {
   public:
     PetscSolver(string name);