diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..73db5f224332a593b49df066e80325e9d84deb73
--- /dev/null
+++ b/CMakeLists.txt
@@ -0,0 +1,200 @@
+##############
+# general stuff
+cmake_minimum_required(VERSION 2.6)
+set(ProjectName            "DuMuX")
+set(ProjectVersion         "1.1svn")
+set(ProjectMaintainer      "Bernd Flemisch")
+set(ProjectMaintainerEmail "Bernd.Flemisch_at_iws dot uni-stuttgart dot de")
+project(${ProjectName} CXX)
+##############
+
+##############
+# make sure our own modules will be found
+set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/CMake/Modules")
+##############
+
+##############
+# Set the policy how CMake resolves library paths to the
+# policy introduced by CMake 2.6 (this does not apply for
+# CMake 2.4 and below, of course). For details, see
+# http://www.cmake.org/cmake/help/cmake-2.6.html#policy:CMP0003
+if(COMMAND cmake_policy)
+  cmake_policy(SET CMP0003 NEW)
+endif(COMMAND cmake_policy)
+##############
+
+
+##############
+# Find the required packages
+FIND_PACKAGE(DUNE_grid REQUIRED)
+FIND_PACKAGE(DUNE_istl REQUIRED)
+FIND_PACKAGE(DUNE_localfunctions REQUIRED)
+FIND_PACKAGE(DUNE_pdelab REQUIRED)
+FIND_PACKAGE(DUNE_common REQUIRED)
+FIND_PACKAGE(Boost REQUIRED)
+##############
+
+##############
+# Find the optional packages
+FIND_PACKAGE(MPI)
+FIND_PACKAGE(UG)
+FIND_PACKAGE(ALUGrid)
+#FIND_PACKAGE(METIS REQUIRED)
+#FIND_PACKAGE(Alberta)
+##############
+
+##############
+# Find the required include files
+INCLUDE (CheckIncludeFileCXX)
+CHECK_INCLUDE_FILE_CXX("malloc.h" HAVE_MALLOC_H)
+CHECK_INCLUDE_FILE_CXX("valgrind/memcheck.h" HAVE_VALGRIND)
+CHECK_INCLUDE_FILE_CXX("tr1/array" HAVE_TR1_ARRAY)
+##############
+
+
+##############
+# use this macros in the CMakelists of the subdirectories. 
+
+# -> for TARGET_LINK_LIBRARIES
+set(DumuxLinkLibraries 
+#    "dumux" # the DUMUX library. CMake replaces this by the proper file location
+    ${DUNE_grid_LIBRARIES}
+    ${DUNE_common_LIBRARIES}
+    ${DUNE_mux_LIBRARIES}
+    ${Boost_LIBRARIES})
+
+# -> for LINK_DIRECTORIES
+set(DumuxLinkDirectories ${Boost_LIBRARY_DIRS})
+
+# -> for INCLUDE_DIRECTORIES
+set(DumuxIncludeDirectories 
+    ${CMAKE_CURRENT_BINARY_DIR}
+    ${CMAKE_SOURCE_DIR}
+    ${DUNE_grid_INCLUDE_DIRS}
+    ${DUNE_common_INCLUDE_DIRS}
+    ${DUNE_istl_INCLUDE_DIRS}
+    ${DUNE_localfunctions_INCLUDE_DIRS}
+    ${DUNE_pdelab_INCLUDE_DIRS}
+    ${Boost_INCLUDE_DIR})
+##############
+
+
+##############
+# set appropriate compiler flags for debug/release compilation modes
+add_definitions("-std=c++0x -Wall -Wno-sign-compare")
+
+if(CMAKE_BUILD_TYPE STREQUAL "debug")
+  # debug mode
+  add_definitions("-g")
+  add_definitions(-DDEBUG -DDUNE_DEVEL_MODE=1 -DDUNE_ISTL_WITH_CHECKING)
+else(CMAKE_BUILD_TYPE STREQUAL "debug")
+  # Release mode
+  add_definitions("-O3 -march=native")
+  add_definitions(-DNDEBUG)
+endif(CMAKE_BUILD_TYPE STREQUAL "debug")
+##############
+
+
+##############
+# deal with the config.h include file...
+macro(SetConfigHVar ConfigHName CMakeName)
+  if(${CMakeName})
+    set(${ConfigHName} ${${CMakeName}})
+  else(${CMakeName})
+    set(${ConfigHName} 0)
+  endif(${CMakeName})
+endmacro(SetConfigHVar)
+
+SetConfigHVar(HAVE_BOOST               Boost_FOUND)
+SetConfigHVar(HAVE_DUNE                DUNE_common_FOUND)
+SetConfigHVar(HAVE_DUNE_GRID           DUNE_grid_FOUND)
+SetConfigHVar(HAVE_DUNE_ISTL           DUNE_istl_FOUND)
+SetConfigHVar(HAVE_DUNE_LOCALFUNCTIONS DUNE_localfunctions_FOUND)
+SetConfigHVar(HAVE_DUNE_PDELAB         DUNE_pdelab_FOUND)
+SetConfigHVar(HAVE_MPI                 MPI_FOUND)
+SetConfigHVar(PROJECT_NAME             ProjectName)
+SetConfigHVar(PROJECT_VERSION          ProjectVersion)
+SetConfigHVar(PROJECT_MAINTAINER       ProjectMaintainer)
+SetConfigHVar(PROJECT_MAINTAINER_EMAIL ProjectMaintainerEmail)
+##############
+
+##############
+# adapt build system to detected packages
+
+# deal with UG
+if (UG_FOUND)
+  set(DumuxLinkLibraries ${DumuxLinkLibraries} 
+      ${UG_LIBRARIES})
+  set(DumuxIncludeDirectories ${DumuxIncludeDirectories} 
+      ${UG_INCLUDE_DIRS})
+endif(UG_FOUND)
+SetConfigHVar(HAVE_UG UG_FOUND)
+
+# deal with ALUGrid
+if (ALUGrid_FOUND)
+  set(DumuxLinkLibraries ${DumuxLinkLibraries} 
+      ${ALUGrid_LIBRARIES})
+  set(DumuxIncludeDirectories ${DumuxIncludeDirectories} 
+      ${ALUGrid_INCLUDE_DIRS})
+endif(ALUGrid_FOUND)
+SetConfigHVar(HAVE_ALUGRID ALUGrid_FOUND)
+
+# deal with METIS
+if (METIS_FOUND)
+  set(DumuxLinkLibraries ${DumuxLinkLibraries} 
+      ${METIS_LIBRARIES})
+  set(DumuxIncludeDirectories ${DumuxIncludeDirectories} 
+      ${METIS_INCLUDE_DIRS})
+endif(METIS_FOUND)
+SetConfigHVar(HAVE_METIS METIS_FOUND)
+
+# deal with Alberta
+if (Alberta_FOUND)
+  set(DumuxLinkLibraries ${DumuxLinkLibraries} 
+      ${Alberta_LIBRARIES})
+  set(DumuxIncludeDirectories ${DumuxIncludeDirectories} 
+      ${Alberta_INCLUDE_DIRS})
+endif(Alberta_FOUND)
+SetConfigHVar(HAVE_ALBERTA Alberta_FOUND)
+##############
+
+if (MPI_FOUND)
+   set(TMP ${MPI_COMPILE_FLAGS})
+   separate_arguments(TMP)
+   add_definitions(${TMP})
+   add_definitions(-DENABLE_MPI=1)
+   add_definitions(-DModelP) # tell UG that the model is parallelized
+
+   set(DumuxLinkLibraries ${DumuxLinkLibraries} ${MPI_LIBRARIES})
+   set(DumuxIncludeDirectories ${DumuxIncludeDirectories} ${MPI_INCLUDE_PATH})
+
+endif (MPI_FOUND)
+
+# actually write the config.h file to disk 
+configure_file(config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config.h )
+add_definitions(-DHAVE_CONFIG_H -DDUNE_ENABLE_OLD_NUMBERING)
+
+##############
+# tell cmake that we've got a few subdirectories. (that's the
+# directories where the actual programs are)
+add_subdirectory("test")
+add_subdirectory("tutorial")
+##############
+
+# set up CTest 
+ENABLE_TESTING()
+INCLUDE(CTest)
+ADD_TEST(test_1p test/boxmodels/1p/test_1p test/boxmodels/1p/grids/test_1p_3d.dgf 1 1)
+add_test(test_1p2c test/boxmodels/1p2c/test_1p2c test/boxmodels/1p2c/grids/test_1p2c.dgf 1 1)
+add_test(test_2p test/boxmodels/2p/test_2p 1 1)
+add_test(test_2pni test/boxmodels/2pni/test_2pni test/boxmodels/2pni/grids/test_2pni.dgf 1 1)
+add_test(test_2p2c test/boxmodels/2p2c/test_2p2c test/boxmodels/2p2c/grids/test_2p2c.dgf 1 1)
+add_test(test_2p2cni test/boxmodels/2p2cni/test_2p2cni test/boxmodels/2p2cni/grids/test_2p2cni.dgf 1 1)
+add_test(test_richards test/boxmodels/richards/test_richards test/boxmodels/richards/grids/richardslens.dgf 1e-2 1e-2)
+add_test(test_propertysystem test/common/propertysystem/test_propertysystem)
+add_test(test_spline test/common/spline/test_spline)
+add_test(test_diffusion test/decoupled/1p/test_diffusion 1)
+add_test(test_decoupled2p test/decoupled/2p/test_decoupled2p 1)
+add_test(tutorial_coupled tutorial/tutorial_coupled 1 1)
+add_test(tutorial_decoupled tutorial/tutorial_decoupled 1)
+
diff --git a/test/boxmodels/1p/1ptestproblem.hh b/test/boxmodels/1p/1ptestproblem.hh
index 8716db2b962d4d91b17f73bd5419801d59dc175d..9066bd2bc3b057da7e970c6808cac0f866b2f328 100644
--- a/test/boxmodels/1p/1ptestproblem.hh
+++ b/test/boxmodels/1p/1ptestproblem.hh
@@ -201,7 +201,7 @@ public:
         const GlobalPosition &globalPos
             = fvElemGeom.boundaryFace[boundaryFaceIdx].ipGlobal;
 
-        if (globalPos[dim-1] < eps || globalPos[dim-1] > 1.0 - eps)
+        if (globalPos[dim-1] < eps || globalPos[dim-1] > this->bboxMax()[dim-1] - eps)
             values.setAllDirichlet();
         else
             values.setAllNeumann();
@@ -226,7 +226,7 @@ public:
         if (globalPos[dim-1] < eps) {
             values[pressureIdx] = 2.0e+5;
         }
-        else if (globalPos[dim-1] > 1.0 -eps) {
+        else if (globalPos[dim-1] > this->bboxMax()[dim-1] - eps) {
             values[pressureIdx] = 1.0e+5;
         }
     }
@@ -287,7 +287,7 @@ public:
                  int scvIdx) const
     {
         const GlobalPosition &globalPos = element.geometry().corner(scvIdx);
-        values[pressureIdx] = 1.0e+5 + 9.81*1.23*(20-globalPos[dim-1]);
+        values[pressureIdx] = 1.0e+5;// + 9.81*1.23*(20-globalPos[dim-1]);
     }
 
     // \}