diff --git a/CMakeLists.txt b/CMakeLists.txt
index c67d3fc71eb975e0df7bc15d2a7b1480b1d0cef0..69182d370edc2ebfa574f448edc4cfdefc2e95e6 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -27,11 +27,12 @@ endif(COMMAND cmake_policy)
 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 the optional packages
+find_package(DUNE_geometry)
+find_package(DUNE_pdelab)
 find_package(MPI)
 find_package(Boost)
 find_package(Alberta)
@@ -42,6 +43,7 @@ find_package(SuperLU)
 if(SUPERLU_FOUND)
   set(SUPERLU_CPPFLAGS "-I${SUPERLU_INCLUDE_DIRS} -DENABLE_SUPERLU")
   set(SUPERLU_LIBS "-L${SUPERLU_LIBRARIES} -lsuperlu -L${BLAS_LIBRARIES} -lblas")
+  #set(SUPERLU_LIBS "${SUPERLU_LIBRARIES} ${BLAS_LIBRARIES}")
   #define HAVE_MEM_USAGE_T_EXPANSIONS 1
 endif(SUPERLU_FOUND)
 
@@ -214,10 +216,12 @@ CHECK_CXX_SOURCE_COMPILES("
 # -> 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_geometry_LIBRARIES}
+    ${DUNE_grid_LIBRARIES}
     ${DUNE_mux_LIBRARIES}
-    ${Boost_LIBRARIES})
+    ${Boost_LIBRARIES}
+    "-lm")
 
 # -> for LINK_DIRECTORIES
 set(DumuxLinkDirectories ${Boost_LIBRARY_DIRS})
@@ -227,6 +231,7 @@ set(DumuxIncludeDirectories
     ${CMAKE_CURRENT_BINARY_DIR}
     ${CMAKE_SOURCE_DIR}
     ${DUNE_grid_INCLUDE_DIRS}
+    ${DUNE_geometry_INCLUDE_DIRS}
     ${DUNE_common_INCLUDE_DIRS}
     ${DUNE_istl_INCLUDE_DIRS}
     ${DUNE_localfunctions_INCLUDE_DIRS}
@@ -381,3 +386,9 @@ add_test(test_dec2p2c bin/runTest.sh test/decoupled/2p2c/test_dec2p2c-reference.
 
 add_test(tutorial_coupled tutorial/tutorial_coupled 1 1)
 add_test(tutorial_decoupled tutorial/tutorial_decoupled 1)
+
+if(SUPERLU_FOUND AND DUNE_pdelab_FOUND)
+  add_test(test_stokes test/freeflow/stokes/test_stokes)
+  add_test(test_stokes2c test/freeflow/stokes2c/test_stokes2c)
+  add_test(test_stokes2cni test/freeflow/stokes2cni/test_stokes2cni)
+endif(SUPERLU_FOUND AND DUNE_pdelab_FOUND)
diff --git a/cmake/Modules/FindDUNE_geometry.cmake b/cmake/Modules/FindDUNE_geometry.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..fab1164f9807436b64bae3f29023fcfead4818dc
--- /dev/null
+++ b/cmake/Modules/FindDUNE_geometry.cmake
@@ -0,0 +1,17 @@
+# -*-cmake-*-
+# - Try to find the DUNE geometry library
+# Once done this will define:
+#  DUNE_geometry_FOUND        - system has dune-geometry
+#  DUNE_geometry_INCLUDE_DIR  - incude paths to use dune-geometry
+#  DUNE_geometry_LIBRARIES    - Link these to use dune-geometry
+INCLUDE(DumuxMacros)
+
+DumuxSetup("DUNE_geometry" "dune-geometry" "DUNE")
+
+DumuxFindIncludeDir("dune/geometry/type.hh")
+
+DumuxRequiredLibsFound()
+DumuxIncludeDirsFound()
+DumuxCheckFound()
+
+
diff --git a/cmake/Modules/FindSuperLU.cmake b/cmake/Modules/FindSuperLU.cmake
index ff10a8a73c9b201eabd8c9def28e07d24ceb457d..62a5dbdbb9e838dd7d87f18975a8ea13fd2aa34d 100644
--- a/cmake/Modules/FindSuperLU.cmake
+++ b/cmake/Modules/FindSuperLU.cmake
@@ -29,8 +29,8 @@ mark_as_advanced(SUPERLU_INCLUDE_DIRS SUPERLU_LIBRARIES)
 
 # if both headers and library are found, store results
 if(SUPERLU_FOUND)
-  set(SUPERLU_LIBRARIES    ${SUPERLU_LIBRARY})
   set(SUPERLU_INCLUDE_DIRS ${SUPERLU_INCLUDE_DIR})
+  set(SUPERLU_LIBRARIES    ${SUPERLU_LIBRARY})
   # log result
   file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
     "Determing location of SuperLU succeded:\n"
diff --git a/test/freeflow/CMakeLists.txt b/test/freeflow/CMakeLists.txt
index 951fe6368871cf19e6dba2c650d5932dd07124e0..c6ef2f5823e7c24eb04e64e61a0cb733a4e91800 100644
--- a/test/freeflow/CMakeLists.txt
+++ b/test/freeflow/CMakeLists.txt
@@ -1,3 +1,3 @@
-#add_subdirectory("stokes")
-#add_subdirectory("stokes2c")
-#add_subdirectory("stokes2cni")
+add_subdirectory("stokes")
+add_subdirectory("stokes2c")
+add_subdirectory("stokes2cni")
diff --git a/test/freeflow/stokes/CMakeLists.txt b/test/freeflow/stokes/CMakeLists.txt
index b0c42a4bdb3a25805f1947a1e565de0e8636c961..a4b0c8f033af5f6764fe7d7957a45682b816cdc0 100644
--- a/test/freeflow/stokes/CMakeLists.txt
+++ b/test/freeflow/stokes/CMakeLists.txt
@@ -3,8 +3,8 @@ add_executable("test_stokes" test_stokes.cc)
 target_link_libraries("test_stokes" ${DumuxLinkLibraries})
 set_target_properties("test_stokes"
   PROPERTIES
-  COMPILE_FLAGS ${SUPERLU_CPPFLAGS}
-  LINK_FLAGS ${SUPERLU_LIBS})
+  COMPILE_FLAGS ${SUPERLU_CPPFLAGS})
+target_link_libraries("test_stokes" ${SUPERLU_LIBS})
 
 # add required libraries and includes to the build flags
 link_directories(${DumuxLinkDirectories})
diff --git a/test/freeflow/stokes2c/CMakeLists.txt b/test/freeflow/stokes2c/CMakeLists.txt
index 000d67bc44a7765c8c52ec65ca762c965b70df37..5380199e81df59bb0564b274a92df39bb93df898 100644
--- a/test/freeflow/stokes2c/CMakeLists.txt
+++ b/test/freeflow/stokes2c/CMakeLists.txt
@@ -4,6 +4,7 @@ target_link_libraries("test_stokes2c" ${DumuxLinkLibraries})
 set_target_properties("test_stokes2c"
   PROPERTIES
   COMPILE_FLAGS ${SUPERLU_CPPFLAGS})
+target_link_libraries("test_stokes2c" ${SUPERLU_LIBS})
 
 # add required libraries and includes to the build flags
 link_directories(${DumuxLinkDirectories})
diff --git a/test/freeflow/stokes2cni/CMakeLists.txt b/test/freeflow/stokes2cni/CMakeLists.txt
index b91dac3e990a7a73ff813062769e28ed8bca3fd7..d0933b5cbd44513ae9628fd235fadb171327ff51 100644
--- a/test/freeflow/stokes2cni/CMakeLists.txt
+++ b/test/freeflow/stokes2cni/CMakeLists.txt
@@ -4,6 +4,7 @@ target_link_libraries("test_stokes2cni" ${DumuxLinkLibraries})
 set_target_properties("test_stokes2cni"
   PROPERTIES
   COMPILE_FLAGS ${SUPERLU_CPPFLAGS})
+target_link_libraries("test_stokes2cni" ${SUPERLU_LIBS})
 
 # add required libraries and includes to the build flags
 link_directories(${DumuxLinkDirectories})