diff --git a/examples/helmholtz/checkerboard_bcgs/CMakeLists.txt b/examples/helmholtz/checkerboard_bcgs/CMakeLists.txt
index c368ce59f63aed4e569c1b3e727df6dd0b1d6a45..93e63bab9656fc6f30083e44df4fbb07266fe3aa 100644
--- a/examples/helmholtz/checkerboard_bcgs/CMakeLists.txt
+++ b/examples/helmholtz/checkerboard_bcgs/CMakeLists.txt
@@ -1,8 +1,8 @@
 cmake_minimum_required(VERSION 3.0 FATAL_ERROR)
 
-project(demo CXX)
+project(example CXX)
 
 include(${CMAKE_CURRENT_SOURCE_DIR}/../../example.cmake)
 
-add_executable(demo main.cpp ${EXTRA_INCS})
-target_link_libraries(demo ${EXTRA_LIBS})
+add_executable(example main.cpp ${EXTRA_INCS})
+target_link_libraries(example ${EXTRA_LIBS})
diff --git a/examples/helmholtz/crossPoints/CMakeLists.txt b/examples/helmholtz/crossPoints/CMakeLists.txt
index 2a2ccf9a85fe35e93aef5ac322cedae2ce9436cc..3d827fe511079d654177d16746c17ceb67b9e2dc 100644
--- a/examples/helmholtz/crossPoints/CMakeLists.txt
+++ b/examples/helmholtz/crossPoints/CMakeLists.txt
@@ -1,231 +1,9 @@
 cmake_minimum_required(VERSION 3.0 FATAL_ERROR)
 
-project(demo CXX)
+project(example CXX)
 
-include(CheckCXXCompilerFlag)
-check_cxx_compiler_flag("-std=c++11" HAVE_CXX11)
-if(HAVE_CXX11)
-  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
-else()
-  message(ERROR "The compiler ${CMAKE_CXX_COMPILER} has no C++11 support. Please use a different C++ compiler.")
-endif()
+include(${CMAKE_CURRENT_SOURCE_DIR}/../../example.cmake)
 
-check_cxx_compiler_flag("-Wall" HAVE_WALL)
-if(HAVE_WALL)
-  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall")
-endif()
-
-macro(find_all_libraries VARNAME LISTNAME PATH SUFFIX)
-  set(${VARNAME})
-  list(LENGTH ${LISTNAME} NUM_LIST)
-  foreach(LIB ${${LISTNAME}})
-    if("${PATH}" STREQUAL "")
-      find_library(FOUND_LIB ${LIB} PATH_SUFFIXES ${SUFFIX})
-    else()
-      find_library(FOUND_LIB ${LIB} PATHS ${PATH} NO_DEFAULT_PATH)
-    endif()
-    if(FOUND_LIB)
-      list(APPEND ${VARNAME} ${FOUND_LIB})
-    endif()
-    unset(FOUND_LIB CACHE)
-  endforeach()
-  list(LENGTH ${VARNAME} NUM_FOUND_LIBRARIES)
-  if(NUM_FOUND_LIBRARIES LESS NUM_LIST)
-    set(${VARNAME})
-  endif()
-endmacro()
-
-
-macro(set_config_option STRING VARNAME)
-  set(${VARNAME} TRUE)
-  list(APPEND CONFIG_OPTIONS ${STRING})
-  message(STATUS "Found " ${STRING})
-endmacro()
-
-macro(opt OPTION HELP VALUE)
-  option(ENABLE_${OPTION} ${HELP} ${VALUE})
-  set(OPT_TEXI "${OPT_TEXI}\n@item ENABLE_${OPTION}\n${HELP} (default: ${VALUE})")
-endmacro()
-
-opt(MPI "Enable MPI" OFF)
-
-####
-#   Mandatory libs
-####
-
-# Gmsh (Mandatory)
-
-find_library(GMSH_LIB gmsh)
-if(NOT GMSH_LIB)
-  message(FATAL_ERROR "Could not find libgmsh")
-endif(NOT GMSH_LIB)
-
-find_path(GMSH_INC gmsh.h)
-if(NOT GMSH_INC)
-  message(FATAL_ERROR "Could not find gmsh.h")
-endif(NOT GMSH_INC)
-
-list(APPEND EXTRA_INCS ${GMSH_INC})
-list(APPEND EXTRA_LIBS ${GMSH_LIB})
-
-# GmshFem
-
-find_library(GMSHFEM_LIB gmshfem)
-if(NOT GMSHFEM_LIB)
-  message(FATAL_ERROR "Could not find libgmshfem")
-endif(NOT GMSHFEM_LIB)
-
-find_path(GMSHFEM_INC gmshfem/GmshFem.h)
-if(NOT GMSHFEM_INC)
-  message(FATAL_ERROR "Could not find 'gmshfem/GmshFem.h'")
-endif(NOT GMSHFEM_INC)
-
-list(APPEND EXTRA_LIBS ${GMSHFEM_LIB})
-list(APPEND EXTRA_INCS ${GMSHFEM_INC}/gmshfem/contrib)
-list(APPEND EXTRA_INCS ${GMSHFEM_INC})
-
-# GmshDdm
-
-find_library(GMSHDDM_LIB gmshddm)
-if(NOT GMSHDDM_LIB)
-  message(FATAL_ERROR "Could not find libgmshddm")
-endif(NOT GMSHDDM_LIB)
-
-find_path(GMSHDDM_INC gmshddm/GmshDdm.h)
-if(NOT GMSHDDM_INC)
-  message(FATAL_ERROR "Could not find 'gmshddm/GmshDdm.h'")
-endif(NOT GMSHDDM_INC)
-
-list(APPEND EXTRA_LIBS ${GMSHDDM_LIB})
-list(APPEND EXTRA_INCS ${GMSHDDM_INC})
-
-# Eigen
-
-find_package(Eigen3 REQUIRED)
-list(APPEND EXTRA_INCS "${EIGEN3_INCLUDE_DIR}")
-
-# OpenMP
-
-find_package(OpenMP)
-if(OPENMP_FOUND)
-  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
-endif(OPENMP_FOUND)
-
-if(APPLE AND EXISTS "/usr/local/opt/libomp")
-  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Xpreprocessor -fopenmp -I/usr/local/opt/libomp/include")
-  list(APPEND EXTRA_LIBS "-L/usr/local/opt/libomp/lib -lomp")
-endif()
-
-# MPI
-
-if(ENABLE_MPI)
-  find_package(MPI)
-  if(MPI_FOUND)
-    list(APPEND EXTRA_INCS ${MPI_CXX_INCLUDE_PATH})
-    list(APPEND EXTRA_LIBS ${MPI_CXX_LIBRARIES})
-    set(CMAKE_C_COMPILER ${MPI_C_COMPILER})
-    set(CMAKE_CXX_COMPILER ${MPI_CXX_COMPILER})
-    set(CMAKE_Fortran_COMPILER ${MPI_Fortran_COMPILER})
-    set_config_option("MPI" HAVE_MPI)
-  endif()
-endif()
-
-# PETSc
-
-if(PETSC_DIR)
-set(ENV_PETSC_DIR ${PETSC_DIR})
-else()
-  set(ENV_PETSC_DIR $ENV{PETSC_DIR})
-endif()
-
-if(PETSC_ARCH)
-  set(ENV_PETSC_ARCH ${PETSC_ARCH})
-else()
-  set(ENV_PETSC_ARCH $ENV{PETSC_ARCH})
-endif()
-
-set(PETSC_POSSIBLE_CONF_FILES
-    ${ENV_PETSC_DIR}/${ENV_PETSC_ARCH}/conf/petscvariables
-    ${ENV_PETSC_DIR}/${ENV_PETSC_ARCH}/lib/petsc-conf/petscvariables
-    ${ENV_PETSC_DIR}/${ENV_PETSC_ARCH}/lib/petsc/conf/petscvariables)
-
-foreach(FILE ${PETSC_POSSIBLE_CONF_FILES})
-  if(EXISTS ${FILE})
-    # old-style PETSc installations (using PETSC_DIR and PETSC_ARCH)
-    message(STATUS "Using PETSc dir: ${ENV_PETSC_DIR}")
-    message(STATUS "Using PETSc arch: ${ENV_PETSC_ARCH}")
-    # find includes by parsing the petscvariables file
-    file(STRINGS ${FILE} PETSC_VARIABLES NEWLINE_CONSUME)
-  endif()
-endforeach()
-
-if(PETSC_VARIABLES)
-  # try to find PETSC_CC_INCLUDES for PETSc >= 3.4
-  string(REGEX MATCH "PETSC_CC_INCLUDES = [^\n\r]*" PETSC_PACKAGES_INCLUDES ${PETSC_VARIABLES})
-  if(PETSC_PACKAGES_INCLUDES)
-    string(REPLACE "PETSC_CC_INCLUDES = " "" PETSC_PACKAGES_INCLUDES ${PETSC_PACKAGES_INCLUDES})
-  else()
-    # try to find PETSC_PACKAGES_INCLUDES in older versions
-    list(APPEND EXTRA_INCS ${ENV_PETSC_DIR}/include)
-    list(APPEND EXTRA_INCS ${ENV_PETSC_DIR}/${ENV_PETSC_ARCH}/include)
-    string(REGEX MATCH "PACKAGES_INCLUDES = [^\n\r]*" PETSC_PACKAGES_INCLUDES ${PETSC_VARIABLES})
-    string(REPLACE "PACKAGES_INCLUDES = " "" PETSC_PACKAGES_INCLUDES ${PETSC_PACKAGES_INCLUDES})
-  endif()
-
-  if(PETSC_PACKAGES_INCLUDES)
-    if(PETSC_PACKAGES_INCLUDES)
-      string(REPLACE "-I" "" PETSC_PACKAGES_INCLUDES ${PETSC_PACKAGES_INCLUDES})
-      string(REPLACE " " ";" PETSC_PACKAGES_INCLUDES ${PETSC_PACKAGES_INCLUDES})
-      foreach(VAR ${PETSC_PACKAGES_INCLUDES})
-        list(APPEND EXTRA_INCS ${VAR})
-      endforeach()
-    endif()
-  endif()
-
-  # find libraries (<= 3.0)
-  set(PETSC_LIBS_REQUIRED petscksp petscdm petscmat petscvec petsc)
-  find_all_libraries(PETSC_LIBS PETSC_LIBS_REQUIRED ${ENV_PETSC_DIR}/${ENV_PETSC_ARCH}/lib "")
-  # petsc 3.1 creates only one library (libpetsc)
-  if(NOT PETSC_LIBS)
-    find_library(PETSC_LIBS petsc PATHS ${ENV_PETSC_DIR}/${ENV_PETSC_ARCH}/lib NO_DEFAULT_PATH)
-  endif()
-
-  list(APPEND EXTRA_LIBS ${PETSC_LIBS})
-
-  string(REGEX MATCH "PACKAGES_LIBS = [^\n\r]*" PLIBS ${PETSC_VARIABLES})
-  if(PLIBS)
-    string(REPLACE "PACKAGES_LIBS = " "" PLIBS ${PLIBS})
-    string(STRIP ${PLIBS} PLIBS)
-    list(APPEND EXTRA_LIBS "${PLIBS}")
-  endif()
-
-  string(REGEX MATCH "PETSC_EXTERNAL_LIB_BASIC = [^\n\r]*" PLIBS_BASIC ${PETSC_VARIABLES})
-  if(PLIBS_BASIC)
-    string(REPLACE "PETSC_EXTERNAL_LIB_BASIC = " "" PLIBS_BASIC ${PLIBS_BASIC})
-    string(STRIP ${PLIBS_BASIC} PLIBS_BASIC)
-    list(APPEND EXTRA_LIBS "${PLIBS_BASIC}")
-  endif()
-
-  string(REGEX MATCH "PCC_LINKER_LIBS = [^\n\r]*" LLIBS ${PETSC_VARIABLES})
-  if(LLIBS)
-    string(REPLACE "PCC_LINKER_LIBS = " "" LLIBS ${LLIBS})
-    string(STRIP ${LLIBS} LLIBS)
-    list(APPEND EXTRA_LIBS "${LLIBS}")
-  endif()
-
-  set_config_option("PETSc" HAVE_PETSC)
-  list(APPEND EXTRA_LIBS ${PETSC_LIBS})
-else()
-  find_library(PETSC_LIBS petsc)
-  find_path(PETSC_INC "petsc.h" PATH_SUFFIXES include/petsc)
-  if(PETSC_LIBS AND PETSC_INC)
-    set_config_option("PETSc" HAVE_PETSC)
-    list(APPEND EXTRA_LIBS ${PETSC_LIBS})
-    list(APPEND EXTRA_INCS ${PETSC_INC})
-  endif()
-endif()
-
-include_directories(${EXTRA_INCS})
-add_executable(demo main.cpp mesh.cpp ddm2D.cpp ddm3D.cpp Subproblem2D.cpp Subproblem3D.cpp SubproblemDomains.cpp SubproblemParameters.cpp monoDomain.cpp ${EXTRA_INCS})
-target_link_libraries(demo ${EXTRA_LIBS})
+add_executable(example main.cpp mesh.cpp ddm2D.cpp ddm3D.cpp Subproblem2D.cpp Subproblem3D.cpp SubproblemDomains.cpp SubproblemParameters.cpp monoDomain.cpp ${EXTRA_INCS})
+target_link_libraries(example ${EXTRA_LIBS})
 
diff --git a/examples/helmholtz/scattering/planeWaveDisk/CMakeLists.txt b/examples/helmholtz/scattering/planeWaveDisk/CMakeLists.txt
index 78dcc127355d6e26101a160e271312b86d9565ab..6f8caaab62b9209c4cd7f98d220eaa43d6841dbe 100644
--- a/examples/helmholtz/scattering/planeWaveDisk/CMakeLists.txt
+++ b/examples/helmholtz/scattering/planeWaveDisk/CMakeLists.txt
@@ -1,8 +1,8 @@
 cmake_minimum_required(VERSION 3.0 FATAL_ERROR)
 
-project(demo CXX)
+project(example CXX)
 
 include(${CMAKE_CURRENT_SOURCE_DIR}/../../../example.cmake)
 
-add_executable(demo main.cpp ${EXTRA_INCS})
-target_link_libraries(demo ${EXTRA_LIBS})
+add_executable(example main.cpp ${EXTRA_INCS})
+target_link_libraries(example ${EXTRA_LIBS})
diff --git a/examples/helmholtzflow/freefield/CMakeLists.txt b/examples/helmholtzflow/freefield/CMakeLists.txt
index c368ce59f63aed4e569c1b3e727df6dd0b1d6a45..93e63bab9656fc6f30083e44df4fbb07266fe3aa 100644
--- a/examples/helmholtzflow/freefield/CMakeLists.txt
+++ b/examples/helmholtzflow/freefield/CMakeLists.txt
@@ -1,8 +1,8 @@
 cmake_minimum_required(VERSION 3.0 FATAL_ERROR)
 
-project(demo CXX)
+project(example CXX)
 
 include(${CMAKE_CURRENT_SOURCE_DIR}/../../example.cmake)
 
-add_executable(demo main.cpp ${EXTRA_INCS})
-target_link_libraries(demo ${EXTRA_LIBS})
+add_executable(example main.cpp ${EXTRA_INCS})
+target_link_libraries(example ${EXTRA_LIBS})
diff --git a/examples/helmholtzflow/waveguide/CMakeLists.txt b/examples/helmholtzflow/waveguide/CMakeLists.txt
index c368ce59f63aed4e569c1b3e727df6dd0b1d6a45..93e63bab9656fc6f30083e44df4fbb07266fe3aa 100644
--- a/examples/helmholtzflow/waveguide/CMakeLists.txt
+++ b/examples/helmholtzflow/waveguide/CMakeLists.txt
@@ -1,8 +1,8 @@
 cmake_minimum_required(VERSION 3.0 FATAL_ERROR)
 
-project(demo CXX)
+project(example CXX)
 
 include(${CMAKE_CURRENT_SOURCE_DIR}/../../example.cmake)
 
-add_executable(demo main.cpp ${EXTRA_INCS})
-target_link_libraries(demo ${EXTRA_LIBS})
+add_executable(example main.cpp ${EXTRA_INCS})
+target_link_libraries(example ${EXTRA_LIBS})
diff --git a/examples/maxwell/CMakeLists.txt b/examples/maxwell/CMakeLists.txt
index 14a0aa41dcb8ea385d1342e3e16ff57ca12f1ea2..acb5bc916f9d3d959e70fae1dbfe4bd8f7c54270 100644
--- a/examples/maxwell/CMakeLists.txt
+++ b/examples/maxwell/CMakeLists.txt
@@ -1,8 +1,8 @@
 cmake_minimum_required(VERSION 3.0 FATAL_ERROR)
 
-project(demo CXX)
+project(example CXX)
 
 include(${CMAKE_CURRENT_SOURCE_DIR}/../example.cmake)
 
-add_executable(demo main.cpp ${EXTRA_INCS})
-target_link_libraries(demo ${EXTRA_LIBS})
+add_executable(example main.cpp ${EXTRA_INCS})
+target_link_libraries(example ${EXTRA_LIBS})
diff --git a/examples/navier/scattering/CMakeLists.txt b/examples/navier/scattering/CMakeLists.txt
index c368ce59f63aed4e569c1b3e727df6dd0b1d6a45..93e63bab9656fc6f30083e44df4fbb07266fe3aa 100755
--- a/examples/navier/scattering/CMakeLists.txt
+++ b/examples/navier/scattering/CMakeLists.txt
@@ -1,8 +1,8 @@
 cmake_minimum_required(VERSION 3.0 FATAL_ERROR)
 
-project(demo CXX)
+project(example CXX)
 
 include(${CMAKE_CURRENT_SOURCE_DIR}/../../example.cmake)
 
-add_executable(demo main.cpp ${EXTRA_INCS})
-target_link_libraries(demo ${EXTRA_LIBS})
+add_executable(example main.cpp ${EXTRA_INCS})
+target_link_libraries(example ${EXTRA_LIBS})