diff --git a/AMDiS/src/parallel/PetscSolverFeti.cc b/AMDiS/src/parallel/PetscSolverFeti.cc
index fc1de8d89aabb432564e40d3420e04b57d80afcb..1423195786b8bb2ca4dd72bb98ff926ac1649870 100644
--- a/AMDiS/src/parallel/PetscSolverFeti.cc
+++ b/AMDiS/src/parallel/PetscSolverFeti.cc
@@ -762,17 +762,15 @@ namespace AMDiS {
   {
     FUNCNAME("PetscSolverFeti::createFetiKsp()");
 
-    MSG("START A\n");
-
     // === Create FETI-DP solver object. ===
 
-    FetiData &data = (!enableStokesMode ? fetiData : fetiDataInterface);
-    data.mat_lagrange = &mat_lagrange;
-    data.subSolver = subdomain;
-    data.ksp_schur_primal = &ksp_schur_primal;   
-    localDofMap.createVec(data.tmp_vec_b, nGlobalOverallInterior);
-    lagrangeMap.createVec(data.tmp_vec_lagrange);
-    primalDofMap.createVec(data.tmp_vec_primal);
+    fetiData.mat_lagrange = &mat_lagrange;
+    fetiData.subSolver = subdomain;
+    fetiData.ksp_schur_primal = &ksp_schur_primal;
+
+    localDofMap.createVec(fetiData.tmp_vec_b, nGlobalOverallInterior);
+    lagrangeMap.createVec(fetiData.tmp_vec_lagrange);
+    primalDofMap.createVec(fetiData.tmp_vec_primal);
 
     if (enableStokesMode == false) {      
       MatCreateShell(mpiCommGlobal,
@@ -783,34 +781,15 @@ namespace AMDiS {
 		     &fetiData, &mat_feti);
       MatShellSetOperation(mat_feti, MATOP_MULT, 
 			   (void(*)(void))petscMultMatFeti);
-    } else {
-      MSG("TEST A0\n");
-
-      fetiDataInterface.mat_interior_interface = 
-	getMatInteriorCoarseByComponent(2);
-
-      MSG("TEST A1\n");
-
-      fetiDataInterface.mat_interface_interior = 
-	getMatCoarseInteriorByComponent(2);
-
-      MSG("TEST A2\n");
-
-      fetiDataInterface.mat_primal_interface = getMatCoarse(0, 1);
-      fetiDataInterface.mat_interface_primal = getMatCoarse(1, 0);
-
-      MSG("TEST A3\n");
-
+    }  else {
       MatCreateShell(mpiCommGlobal,
 		     interfaceDofMap.getRankDofs() + lagrangeMap.getRankDofs(), 
 		     interfaceDofMap.getRankDofs() + lagrangeMap.getRankDofs(),
 		     interfaceDofMap.getOverallDofs() + lagrangeMap.getOverallDofs(), 
 		     interfaceDofMap.getOverallDofs() + lagrangeMap.getOverallDofs(),
-		     &fetiDataInterface, &mat_feti);
+		     &fetiData, &mat_feti);
       MatShellSetOperation(mat_feti, MATOP_MULT, 
 			   (void(*)(void))petscMultMatFetiInterface);
-
-      MSG("TEST A2\n");
     }
 
     KSPCreate(mpiCommGlobal, &ksp_feti);
@@ -921,8 +900,6 @@ namespace AMDiS {
     default:
       break;
     }
-
-    MSG("END A\n");
   }
   
 
@@ -1476,8 +1453,8 @@ namespace AMDiS {
       MatGetVecs(mat_lagrange, PETSC_NULL, &vecRhsLagrange);
       MatGetVecs(mat_lagrange, PETSC_NULL, &vecSolLagrange);
 
-      vecRhsInterface = getVecRhsCoarseByComponent(2);
-      vecSolInterface = getVecSolCoarseByComponent(2);
+      interfaceDofMap.createVec(vecRhsInterface);
+      interfaceDofMap.createVec(vecSolInterface);
 
       Vec vecRhsArray[2] = {vecRhsInterface, vecRhsLagrange};
       VecCreateNest(mpiCommGlobal, 2, PETSC_NULL, vecRhsArray, &vecRhs);
diff --git a/AMDiS/src/parallel/PetscSolverFeti.h b/AMDiS/src/parallel/PetscSolverFeti.h
index b6c4988c3925047ec1130c4e09b7a17eda19c0e2..a8958f78f58eb63a5aeab0e9ab95b2c3f758b8ef 100644
--- a/AMDiS/src/parallel/PetscSolverFeti.h
+++ b/AMDiS/src/parallel/PetscSolverFeti.h
@@ -262,9 +262,6 @@ namespace AMDiS {
     /// Data for MatMult operation in matrix \ref mat_feti
     FetiData fetiData;
 
-    /// Data for MatMult operation in matrix \ref mat_feti when using Stokes mode
-    FetiDataInterface fetiDataInterface;
-
     /// Defines which preconditioner should be used to solve the reduced
     /// FETI-DP system.
     FetiPreconditioner fetiPreconditioner;
diff --git a/AMDiS/src/parallel/PetscSolverFetiOperators.cc b/AMDiS/src/parallel/PetscSolverFetiOperators.cc
index b629d2bee45195ff76a2601372a80df47206f054..83ec0837198c472953d945576f691e36d8e745b7 100644
--- a/AMDiS/src/parallel/PetscSolverFetiOperators.cc
+++ b/AMDiS/src/parallel/PetscSolverFetiOperators.cc
@@ -87,11 +87,17 @@ namespace AMDiS {
 
     double wtime = MPI::Wtime();
 
+    Vec x_interface, x_lagrange, y_interface, y_lagrange;    
+    VecNestGetSubVec(x, 0, &x_interface);
+    VecNestGetSubVec(x, 1, &x_lagrange);
+    VecNestGetSubVec(y, 0, &y_interface);
+    VecNestGetSubVec(y, 1, &y_lagrange);
+
     void *ctx;
     MatShellGetContext(mat, &ctx);
-    FetiDataInterface* data = static_cast<FetiDataInterface*>(ctx);
+    FetiData* data = static_cast<FetiData*>(ctx);
 
-    MatMultTranspose(*(data->mat_lagrange), x, data->tmp_vec_b);
+    MatMultTranspose(*(data->mat_lagrange), x_lagrange, data->tmp_vec_b);
 
     double wtime01 = MPI::Wtime();
     data->subSolver->solveGlobal(data->tmp_vec_b, data->tmp_vec_b);
@@ -114,9 +120,9 @@ namespace AMDiS {
     data->subSolver->solveGlobal(data->tmp_vec_b, data->tmp_vec_b);
     FetiTimings::fetiSolve01 += (MPI::Wtime() - wtime01);
 
-    MatMult(*(data->mat_lagrange), data->tmp_vec_b, y);
+    MatMult(*(data->mat_lagrange), data->tmp_vec_b, y_lagrange);
 
-    VecAXPBY(y, 1.0, 1.0, data->tmp_vec_lagrange);
+    VecAXPBY(y_lagrange, 1.0, 1.0, data->tmp_vec_lagrange);
 
     FetiTimings::fetiSolve += (MPI::Wtime() - wtime);
 
diff --git a/AMDiS/src/parallel/PetscSolverFetiStructs.h b/AMDiS/src/parallel/PetscSolverFetiStructs.h
index 086b3c795932ae1c5bcab22966c1e3b5191a67d7..340f7c13a0e33d86c3fa9e16c98e9c48611ab803 100644
--- a/AMDiS/src/parallel/PetscSolverFetiStructs.h
+++ b/AMDiS/src/parallel/PetscSolverFetiStructs.h
@@ -72,15 +72,6 @@ namespace AMDiS {
   };
 
 
-  /// Extends the FETI-DP data set with interface variables (thus is used when
-  /// Stokes mode is enabled).
-  struct FetiDataInterface : FetiData {
-    Mat mat_interior_interface, mat_interface_interior;
-
-    Mat mat_primal_interface, mat_interface_primal;
-  };
-
-
   struct FetiDirichletPreconData {
     /// Matrix of scaled Lagrange variables.
     Mat *mat_lagrange_scaled;