diff --git a/AMDiS/src/parallel/BddcMlSolver.cc b/AMDiS/src/parallel/BddcMlSolver.cc
index 841897d5719d0143992d23c04cf6538b15adebb5..5152b116c4d039d360b3fa600ea7b2b604c1962a 100644
--- a/AMDiS/src/parallel/BddcMlSolver.cc
+++ b/AMDiS/src/parallel/BddcMlSolver.cc
@@ -231,7 +231,7 @@ namespace AMDiS {
 
     // matrix type (set here to unsymmetric)
     int matrixtype = 0;
-    Parameters::get("parallel->bddcml->matrix type", matrixtype);
+    Parameters::get(initFileStr + "->bddcml->matrix type", matrixtype);
 
     // Non zero structure of matrix
     vector<int> i_sparse;
@@ -358,14 +358,15 @@ namespace AMDiS {
     int use_adaptive_int = 0;
     int use_user_constraint_int = 0;
 
-    Parameters::get("parallel->bddcml->arithmetic constraints", use_arithmetic_int);
+    Parameters::get(initFileStr + "->bddcml->arithmetic constraints", use_arithmetic_int);
 
-    // MSG("call to \"bddcml_setup_preconditioner\" with the following arguments (each in one line):\n");
-//     MSG("  %d\n", matrixtype);
-//     MSG("  %d\n", use_defaults_int);
-//     MSG("  %d\n", parallel_division_int);
-//     MSG("  %d\n", use_arithmetic_int);
-//     MSG("  %d\n", use_adaptive_int);
+    MSG("call to \"bddcml_setup_preconditioner\" with the following arguments (each in one line):\n");
+    MSG("  matrixtype              = %d\n", matrixtype);
+    MSG("  use_defaults_int        = %d\n", use_defaults_int);
+    MSG("  parallel_division_int   = %d\n", parallel_division_int);
+    MSG("  use_arithmetic_int      = %d\n", use_arithmetic_int);
+    MSG("  use_adaptive_int        = %d\n", use_adaptive_int);
+    MSG("  use_user_constraint_int = %d\n", use_user_constraint_int);
 
     bddcml_setup_preconditioner(&matrixtype, 
 				&use_defaults_int,
diff --git a/AMDiS/src/parallel/PetscSolverFeti.cc b/AMDiS/src/parallel/PetscSolverFeti.cc
index cb2b5f7553ec2ebcd0ef1527fdf851be6e87629a..f3751fbf9fa650531402227bea4a15edbf4ab511 100644
--- a/AMDiS/src/parallel/PetscSolverFeti.cc
+++ b/AMDiS/src/parallel/PetscSolverFeti.cc
@@ -715,6 +715,11 @@ namespace AMDiS {
 
   bool PetscSolverFeti::testWirebasketEdge(BoundaryObject &edge, const FiniteElemSpace *feSpace)
   {
+    FUNCNAME("PetscSolverFeti::testWirebasketEdge()");
+
+    if (meshDistributor->getMesh()->getDim() == 2)
+      return true;
+
     if (meshDistributor->getIntBoundary().getDegreeOwn(edge) != 3)
       return false;
 
@@ -781,6 +786,38 @@ namespace AMDiS {
       if (it->rankObj.subObj == FACE)
 	allFaces[it.getRank()].insert(it->rankObj);
 
+    for (map<int, std::set<BoundaryObject> >::iterator it = allFaces.begin();
+	 it != allFaces.end(); ++it) {
+      MSG("SIZE = %d\n", it->second.size());
+      if (it->second.size() == 2) {
+	vector<AtomicBoundary> &bs = intBound.getOwn()[it->first];
+	for (int i = 0; i < static_cast<int>(bs.size()); i++) {
+	  if (bs[i].rankObj.subObj == EDGE &&
+	      intBound.getDegreeOwn(bs[i].rankObj) == 3) {
+	    MSG("FOUND AN EDGE: %d %d %d\n", 
+		bs[i].rankObj.elIndex, bs[i].rankObj.subObj, bs[i].rankObj.ithObj);
+	  }	      
+	}	  
+      }
+    }
+
+    int nBound = 0;
+    int nInterior = 0;
+    TraverseStack stack;
+    ElInfo *elInfo = stack.traverseFirst(meshDistributor->getMesh(), 0, Mesh::CALL_EL_LEVEL | Mesh::FILL_BOUND);
+    while (elInfo) {      
+      MSG("INSIDE!\n");
+      Element *el = elInfo->getElement();
+      for (int i = 0; i < el->getGeo(EDGE); i++) {
+	BoundaryObject bobj(el, elInfo->getType(), EDGE, i);
+	MSG("CHECK FOR %d/%d/%d (%d)\n", el->getIndex(), EDGE, i, intBound.getDegreeOwn(bobj));	
+	if (intBound.getDegreeOwn(bobj) == 1)
+	  MSG("B = %d (%d)\n", elInfo->getBoundary(EDGE, i), INTERIOR);
+      }
+      elInfo = stack.traverseNext(elInfo);
+    }
+
+
     int nEmptyFaces = 0;
     vector<vector<BoundaryObject> > data;
     for (map<int, std::set<BoundaryObject> >::iterator it = allFaces.begin();