diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 3927d881288d90034c0fd9fc0d548cf677d6f260..f26726ef4b8afdd3f7981d3d317830d9446026b7 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -125,67 +125,6 @@ stages:
 
 
 
-intel_15_serial:
-   <<: *build_serial_definition
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/intel:15
-   only:
-      - triggers
-   tags:
-      - docker
-      - intel
-
-intel_15_mpionly:
-   <<: *build_mpionly_definition
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/intel:15
-   only:
-      - triggers
-   tags:
-      - docker
-      - intel
-
-intel_15_hybrid:
-   <<: *build_hybrid_definition
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/intel:15
-   only:
-      - triggers
-   tags:
-      - docker
-      - intel
-
-intel_15_serial_dbg:
-   <<: *build_serial_dbg_definition
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/intel:15
-   only:
-      - triggers
-   tags:
-      - docker
-      - intel
-
-intel_15_mpionly_dbg:
-   <<: *build_mpionly_dbg_definition
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/intel:15
-   only:
-      - triggers
-   tags:
-      - docker
-      - intel
-
-intel_15_hybrid_dbg:
-   <<: *build_hybrid_dbg_definition
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/intel:15
-   tags:
-      - docker
-      - intel
-
-intel_15_hybrid_dbg_sp:
-   <<: *build_hybrid_dbg_sp_definition
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/intel:15
-   only:
-      - triggers
-   tags:
-      - docker
-      - intel
-
 intel_16_serial:
    <<: *build_serial_definition
    image: i10git.cs.fau.de:5005/walberla/buildenvs/intel:16
@@ -239,8 +178,6 @@ intel_16_mpionly_dbg:
 intel_16_hybrid_dbg:
    <<: *build_hybrid_dbg_definition
    image: i10git.cs.fau.de:5005/walberla/buildenvs/intel:16
-   only:
-      - triggers
    tags:
       - cuda
       - docker
@@ -309,172 +246,6 @@ intel_17_hybrid_dbg_sp:
       - docker
       - intel
 
-gcc_4.7_serial:
-   <<: *build_serial_definition
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/gcc:4.7
-   only:
-      - triggers
-   tags:
-      - docker
-
-gcc_4.7_mpionly:
-   <<: *build_mpionly_definition
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/gcc:4.7
-   only:
-      - triggers
-   tags:
-      - docker
-
-gcc_4.7_hybrid:
-   <<: *build_hybrid_definition
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/gcc:4.7
-   only:
-      - triggers
-   tags:
-      - docker
-
-gcc_4.7_serial_dbg:
-   <<: *build_serial_dbg_definition
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/gcc:4.7
-   only:
-      - triggers
-   tags:
-      - docker
-
-gcc_4.7_mpionly_dbg:
-   <<: *build_mpionly_dbg_definition
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/gcc:4.7
-   only:
-      - triggers
-   tags:
-      - docker
-
-gcc_4.7_hybrid_dbg:
-   <<: *build_hybrid_dbg_definition
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/gcc:4.7
-   tags:
-      - docker
-
-gcc_4.7_hybrid_dbg_sp:
-   <<: *build_hybrid_dbg_sp_definition
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/gcc:4.7
-   only:
-      - triggers
-   tags:
-      - docker
-
-gcc_4.8_serial:
-   <<: *build_serial_definition
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/gcc:4.8
-   only:
-      - triggers
-   tags:
-      - docker
-
-gcc_4.8_mpionly:
-   <<: *build_mpionly_definition
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/gcc:4.8
-   only:
-      - triggers
-   tags:
-      - docker
-
-gcc_4.8_hybrid:
-   <<: *build_hybrid_definition
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/gcc:4.8
-   only:
-      - triggers
-   tags:
-      - docker
-
-gcc_4.8_serial_dbg:
-   <<: *build_serial_dbg_definition
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/gcc:4.8
-   only:
-      - triggers
-   tags:
-      - docker
-
-gcc_4.8_mpionly_dbg:
-   <<: *build_mpionly_dbg_definition
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/gcc:4.8
-   only:
-      - triggers
-   tags:
-      - docker
-
-gcc_4.8_hybrid_dbg:
-   <<: *build_hybrid_dbg_definition
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/gcc:4.8
-   only:
-      - triggers
-   tags:
-      - docker
-
-gcc_4.8_hybrid_dbg_sp:
-   <<: *build_hybrid_dbg_sp_definition
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/gcc:4.8
-   only:
-      - triggers
-   tags:
-      - docker
-
-gcc_4.9_serial:
-   <<: *build_serial_definition
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/gcc:4.9
-   only:
-      - triggers
-   tags:
-      - docker
-
-gcc_4.9_mpionly:
-   <<: *build_mpionly_definition
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/gcc:4.9
-   only:
-      - triggers
-   tags:
-      - docker
-
-gcc_4.9_hybrid:
-   <<: *build_hybrid_definition
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/gcc:4.9
-   only:
-      - triggers
-   tags:
-      - docker
-
-gcc_4.9_serial_dbg:
-   <<: *build_serial_dbg_definition
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/gcc:4.9
-   only:
-      - triggers
-   tags:
-      - docker
-
-gcc_4.9_mpionly_dbg:
-   <<: *build_mpionly_dbg_definition
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/gcc:4.9
-   only:
-      - triggers
-   tags:
-      - docker
-
-gcc_4.9_hybrid_dbg:
-   <<: *build_hybrid_dbg_definition
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/gcc:4.9
-   only:
-      - triggers
-   tags:
-      - docker
-
-gcc_4.9_hybrid_dbg_sp:
-   <<: *build_hybrid_dbg_sp_definition
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/gcc:4.9
-   only:
-      - triggers
-   tags:
-      - docker
-
 gcc_5_serial:
    <<: *build_serial_definition
    image: i10git.cs.fau.de:5005/walberla/buildenvs/gcc:5
@@ -519,8 +290,6 @@ gcc_5_mpionly_dbg:
 gcc_5_hybrid_dbg:
    <<: *build_hybrid_dbg_definition
    image: i10git.cs.fau.de:5005/walberla/buildenvs/gcc:5
-   only:
-      - triggers
    tags:
       - cuda
       - docker
@@ -636,72 +405,6 @@ gcc_7_hybrid_dbg_sp:
    tags:
       - docker
 
-clang_3.4_serial:
-   <<: *build_serial_definition
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/clang:3.4
-   only:
-      - triggers
-   tags:
-      - docker
-
-clang_3.4_mpionly:
-   <<: *build_mpionly_definition
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/clang:3.4
-   only:
-      - triggers
-   tags:
-      - docker
-
-clang_3.4_serial_dbg:
-   <<: *build_serial_dbg_definition
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/clang:3.4
-   only:
-      - triggers
-   tags:
-      - docker
-
-clang_3.4_mpionly_dbg:
-   <<: *build_mpionly_dbg_definition
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/clang:3.4
-   tags:
-      - docker
-
-clang_3.5_serial:
-   <<: *build_serial_definition
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/clang:3.5
-   only:
-      - triggers
-   tags:
-      - cuda
-      - docker
-
-clang_3.5_mpionly:
-   <<: *build_mpionly_definition
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/clang:3.5
-   only:
-      - triggers
-   tags:
-      - cuda
-      - docker
-
-clang_3.5_serial_dbg:
-   <<: *build_serial_dbg_definition
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/clang:3.5
-   only:
-      - triggers
-   tags:
-      - cuda
-      - docker
-
-clang_3.5_mpionly_dbg:
-   <<: *build_mpionly_dbg_definition
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/clang:3.5
-   only:
-      - triggers
-   tags:
-      - cuda
-      - docker
-
 clang_3.6_serial:
    <<: *build_serial_definition
    image: i10git.cs.fau.de:5005/walberla/buildenvs/clang:3.6
@@ -732,8 +435,6 @@ clang_3.6_serial_dbg:
 clang_3.6_mpionly_dbg:
    <<: *build_mpionly_dbg_definition
    image: i10git.cs.fau.de:5005/walberla/buildenvs/clang:3.6
-   only:
-      - triggers
    tags:
       - cuda
       - docker
@@ -1097,88 +798,6 @@ coverage:
       - ctest -LE $CTEST_EXCLUDE_LABELS -C $BUILD_CONFIGURATION --output-on-failure -j 4
       
       
-msvc-12_Hybrid_Dbg:
-   <<: *win_build_definition
-   variables:
-      CMAKE_GENERATOR: "Visual Studio 12 2013 Win64"
-      BUILD_CONFIGURATION: "DebugOptimized"
-      CTEST_EXCLUDE_LABELS: "longrun"
-      WALBERLA_BUILD_WITH_MPI: "ON"
-      WALBERLA_BUILD_WITH_OPENMP: "ON"
-      WALBERLA_DOUBLE_ACCURACY: "ON"
-      
-msvc-12_Hybrid_SP_Dbg:
-   <<: *win_build_definition
-   variables:
-      CMAKE_GENERATOR: "Visual Studio 12 2013 Win64"
-      BUILD_CONFIGURATION: "DebugOptimized"
-      CTEST_EXCLUDE_LABELS: "longrun"
-      WALBERLA_BUILD_WITH_MPI: "ON"
-      WALBERLA_BUILD_WITH_OPENMP: "ON"
-      WALBERLA_DOUBLE_ACCURACY: "OFF"
-   only:
-      - triggers
-      
-msvc-12_Hybrid:
-   <<: *win_build_definition
-   variables:
-      CMAKE_GENERATOR: "Visual Studio 12 2013 Win64"
-      BUILD_CONFIGURATION: "Release"
-      CTEST_EXCLUDE_LABELS: "longrun"
-      WALBERLA_BUILD_WITH_MPI: "ON"
-      WALBERLA_BUILD_WITH_OPENMP: "ON"
-      WALBERLA_DOUBLE_ACCURACY: "ON"
-   only:
-      - triggers   
-      
-msvc-12_Serial_Dbg:
-   <<: *win_build_definition
-   variables:
-      CMAKE_GENERATOR: "Visual Studio 12 2013 Win64"
-      BUILD_CONFIGURATION: "DebugOptimized"
-      CTEST_EXCLUDE_LABELS: "longrun"
-      WALBERLA_BUILD_WITH_MPI: "OFF"
-      WALBERLA_BUILD_WITH_OPENMP: "OFF"
-      WALBERLA_DOUBLE_ACCURACY: "ON"
-   only:
-      - triggers
-      
-msvc-12_Serial:
-   <<: *win_build_definition
-   variables:
-      CMAKE_GENERATOR: "Visual Studio 12 2013 Win64"
-      BUILD_CONFIGURATION: "Release"
-      CTEST_EXCLUDE_LABELS: "longrun"
-      WALBERLA_BUILD_WITH_MPI: "OFF"
-      WALBERLA_BUILD_WITH_OPENMP: "OFF"
-      WALBERLA_DOUBLE_ACCURACY: "ON"
-   only:
-      - triggers
-      
-msvc-12_MpiOnly_Dbg:
-   <<: *win_build_definition
-   variables:
-      CMAKE_GENERATOR: "Visual Studio 12 2013 Win64"
-      BUILD_CONFIGURATION: "DebugOptimized"
-      CTEST_EXCLUDE_LABELS: "longrun"
-      WALBERLA_BUILD_WITH_MPI: "ON"
-      WALBERLA_BUILD_WITH_OPENMP: "OFF"
-      WALBERLA_DOUBLE_ACCURACY: "ON"
-   only:
-      - triggers
-      
-msvc-12_MpiOnly:
-   <<: *win_build_definition
-   variables:
-      CMAKE_GENERATOR: "Visual Studio 12 2013 Win64"
-      BUILD_CONFIGURATION: "Release"
-      CTEST_EXCLUDE_LABELS: "longrun"
-      WALBERLA_BUILD_WITH_MPI: "ON"
-      WALBERLA_BUILD_WITH_OPENMP: "OFF"
-      WALBERLA_DOUBLE_ACCURACY: "ON"
-   only:
-      - triggers
-      
 msvc-14_Hybrid_Dbg:
    <<: *win_build_definition
    variables:
@@ -1188,8 +807,6 @@ msvc-14_Hybrid_Dbg:
       WALBERLA_BUILD_WITH_MPI: "ON"
       WALBERLA_BUILD_WITH_OPENMP: "ON"
       WALBERLA_DOUBLE_ACCURACY: "ON"
-   only:
-      - triggers
       
 msvc-14_Hybrid_SP_Dbg:
    <<: *win_build_definition
@@ -1348,14 +965,10 @@ msvc-14.1_MpiOnly:
 .conda-deploy: &conda_deploy_definition
    stage: deploy
    before_script:
-      - conda update -y conda
-      - conda update -y python
       - conda install -y conda-build anaconda-client
       - anaconda login --username $CONDA_DEPLOY_USER --password $CONDA_DEPLOY_PASSWORD --hostname $CI_JOB_ID
       - conda config --set anaconda_upload yes
       - conda config --add channels lssfau
-      - conda -V
-      - conda build -V
    after_script:
       - anaconda logout
    dependencies: []
@@ -1364,41 +977,21 @@ msvc-14.1_MpiOnly:
       - master@walberla/walberla   
       - tags@walberla/walberla
 
-conda-py36-win-withoutLbm:
+conda-py36-win:
    <<: *conda_deploy_definition
    tags:
       - win
    script:
-      - conda build --python=3.6 --user=lssfau utilities\\conda\\withoutLbm
+      - conda build --python=3.6 --user=lssfau utilities\\conda\\walberla
       
-conda-py35-win-withoutLbm:
+conda-py35-win:
    <<: *conda_deploy_definition
    tags:
       - win
    script:
-      - conda build --python=3.5 --user=lssfau utilities\\conda\\withoutLbm
+      - conda build --python=3.5 --user=lssfau utilities\\conda\\walberla
 
-conda-py36-linux-withoutLbm:
-   <<: *conda_deploy_definition
-   tags:
-      - docker
-   image: continuumio/miniconda3
-   script:
-      - apt-get update
-      - apt-get install -y build-essential
-      - conda build --python=3.6 --user=lssfau utilities/conda/withoutLbm
-      
-conda-py35-linux-withoutLbm:
-   <<: *conda_deploy_definition
-   tags:
-      - docker
-   image: continuumio/miniconda3
-   script:
-      - apt-get update
-      - apt-get install -y build-essential
-      - conda build --python=3.5 --user=lssfau utilities/conda/withoutLbm
-      
-conda-py36-linux-withLbm:
+conda-py36-linux:
    <<: *conda_deploy_definition
    tags:
       - docker
@@ -1406,9 +999,9 @@ conda-py36-linux-withLbm:
    script:
       - apt-get update
       - apt-get install -y build-essential
-      - conda build --python=3.6 --user=lssfau utilities/conda/withLbm
+      - conda build --python=3.6 --user=lssfau utilities/conda/walberla
       
-conda-py35-linux-withLbm:
+conda-py35-linux:
    <<: *conda_deploy_definition
    tags:
       - docker
@@ -1416,4 +1009,4 @@ conda-py35-linux-withLbm:
    script:
       - apt-get update
       - apt-get install -y build-essential
-      - conda build --python=3.5 --user=lssfau utilities/conda/withLbm
+      - conda build --python=3.5 --user=lssfau utilities/conda/walberla
diff --git a/CMakeLists.txt b/CMakeLists.txt
index acfc2e964a4b4f88a2eab85c5488c8d4ef5e32ad..dba76a843fcf2c42cdf168bec254c89b5757d9d9 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -25,7 +25,7 @@
 ##
 ############################################################################################################################
 
-CMAKE_MINIMUM_REQUIRED (VERSION 2.8)
+CMAKE_MINIMUM_REQUIRED (VERSION 3.1)
 
 
 PROJECT ( walberla )
@@ -36,11 +36,7 @@ include ( waLBerlaFunctions )
 
 set_version( 4 0 )
 
-if( CMAKE_VERSION VERSION_LESS 2.8.3 )
-   include( CMakeParseArgumentsCompat )
-else()
-   include( CMakeParseArguments )
-endif()
+include( CMakeParseArguments )
 
 # Enable CTest
 enable_testing()
@@ -166,6 +162,9 @@ if( CMAKE_CXX_COMPILER MATCHES "icpc" OR CMAKE_CXX_COMPILER_ARG1 MATCHES "icpc"
        SET(CMAKE_LINKER "${XILD}")
     ENDIF(XILD)
     MARK_AS_ADVANCED(XILD)
+    if( CMAKE_VERSION VERSION_LESS 3.6.0 )
+      add_flag ( CMAKE_CXX_FLAGS "-std=c++14" )
+    endif()
 else()
     option ( WALBERLA_CXX_COMPILER_IS_INTEL "Use Intel compiler" OFF  )
 endif()
@@ -204,7 +203,7 @@ endif()
 mark_as_advanced ( WALBERLA_CXX_COMPILER_IS_NEC )
 
 # Check for Clang compiler
-if( CMAKE_CXX_COMPILER MATCHES "clang" OR CMAKE_CXX_COMPILER_ARG1 MATCHES "clang" OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang" )
+if( CMAKE_CXX_COMPILER MATCHES "clang" OR CMAKE_CXX_COMPILER_ARG1 MATCHES "clang" OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang" OR CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang" )
     option ( WALBERLA_CXX_COMPILER_IS_CLANG "Use clang compiler" ON  )
 else()
     option ( WALBERLA_CXX_COMPILER_IS_CLANG "Use clang compiler" OFF  )
@@ -270,30 +269,18 @@ if ( WALBERLA_PROFILE_USE )
     endif()
 endif()
 
+set( CMAKE_CXX_STANDARD 14 )
+set( CMAKE_CXX_STANDARD_REQUIRED ON )
+set( CMAKE_CXX_EXTENSIONS OFF )
+
 # common flags for intel and g++
 if( WALBERLA_CXX_COMPILER_IS_GNU OR WALBERLA_CXX_COMPILER_IS_INTEL )
-   if( CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.7 )
-      add_flag ( CMAKE_CXX_FLAGS "-std=c++0x" )
-   else()
-      add_flag ( CMAKE_CXX_FLAGS "-std=c++11" )
-   endif()
-   #add_flag ( CMAKE_C_FLAGS   "-std=c99" )
    add_flag ( CMAKE_CXX_FLAGS "-Wall -Wconversion -Wshadow" )
 endif()
 
-# C++11 language features for IBM compiler
-if( WALBERLA_CXX_COMPILER_IS_IBM )
-   add_flag ( CMAKE_CXX_FLAGS "-qlanglvl=autotypededuction -qlanglvl=decltype -qlanglvl=static_assert -qlanglvl=rightanglebracket -qlanglvl=c99longlong" )
-endif()
-
-# C++11 language features for Cray compiler
-if( WALBERLA_CXX_COMPILER_IS_CRAY )
-   add_flag ( CMAKE_CXX_FLAGS "-hstd=c++11" )
-endif()
-
 # C++11 language features for NEC compiler
 if( WALBERLA_CXX_COMPILER_IS_NEC )
-   add_flag ( CMAKE_CXX_FLAGS "-Kcpp11 -Krtti -Kexceptions -size_t64 -Kgcc" )
+   add_flag ( CMAKE_CXX_FLAGS "-Kcpp14 -Krtti -Kexceptions -size_t64 -Kgcc" )
    add_flag ( CMAKE_CXX_FLAGS "-D__BIG_ENDIAN -D__BYTE_ORDER=__BIG_ENDIAN" )
    add_flag ( CMAKE_CXX_FLAGS "-Tnoauto,used" )
    add_flag ( CMAKE_EXE_LINKER_FLAGS "-Wl,-h,muldefs" )
@@ -384,7 +371,7 @@ endif ( )
 
 
 if ( WALBERLA_CXX_COMPILER_IS_CLANG )
-    add_flag ( CMAKE_CXX_FLAGS "-Wall -Wconversion -Wshadow -Wno-c++11-extensions -std=c++11 -Qunused-arguments" )
+    add_flag ( CMAKE_CXX_FLAGS "-Wall -Wconversion -Wshadow -Wno-c++11-extensions -Qunused-arguments" )
     add_flag ( CMAKE_CXX_FLAGS "-D'_LIBCPP_EXTERN_TEMPLATE(...)='")
 endif ( )
 
diff --git a/cmake/CMakeParseArgumentsCompat.cmake b/cmake/CMakeParseArgumentsCompat.cmake
deleted file mode 100644
index 2f54a2336b81558ce7803a4ec6e6d78a94f6dc1c..0000000000000000000000000000000000000000
--- a/cmake/CMakeParseArgumentsCompat.cmake
+++ /dev/null
@@ -1,138 +0,0 @@
-# CMAKE_PARSE_ARGUMENTS(<prefix> <options> <one_value_keywords> <multi_value_keywords> args...)
-#
-# CMAKE_PARSE_ARGUMENTS() is intended to be used in macros or functions for
-# parsing the arguments given to that macro or function.
-# It processes the arguments and defines a set of variables which hold the
-# values of the respective options.
-#
-# The <options> argument contains all options for the respective macro,
-# i.e. keywords which can be used when calling the macro without any value
-# following, like e.g. the OPTIONAL keyword of the install() command.
-#
-# The <one_value_keywords> argument contains all keywords for this macro
-# which are followed by one value, like e.g. DESTINATION keyword of the
-# install() command.
-#
-# The <multi_value_keywords> argument contains all keywords for this macro
-# which can be followed by more than one value, like e.g. the TARGETS or
-# FILES keywords of the install() command.
-#
-# When done, CMAKE_PARSE_ARGUMENTS() will have defined for each of the
-# keywords listed in <options>, <one_value_keywords> and
-# <multi_value_keywords> a variable composed of the given <prefix>
-# followed by "_" and the name of the respective keyword.
-# These variables will then hold the respective value from the argument list.
-# For the <options> keywords this will be TRUE or FALSE.
-#
-# All remaining arguments are collected in a variable
-# <prefix>_UNPARSED_ARGUMENTS, this can be checked afterwards to see whether
-# your macro was called with unrecognized parameters.
-#
-# As an example here a my_install() macro, which takes similar arguments as the
-# real install() command:
-#
-#   function(MY_INSTALL)
-#     set(options OPTIONAL FAST)
-#     set(oneValueArgs DESTINATION RENAME)
-#     set(multiValueArgs TARGETS CONFIGURATIONS)
-#     cmake_parse_arguments(MY_INSTALL "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN} )
-#     ...
-#
-# Assume my_install() has been called like this:
-#   my_install(TARGETS foo bar DESTINATION bin OPTIONAL blub)
-#
-# After the cmake_parse_arguments() call the macro will have set the following
-# variables:
-#   MY_INSTALL_OPTIONAL = TRUE
-#   MY_INSTALL_FAST = FALSE (this option was not used when calling my_install()
-#   MY_INSTALL_DESTINATION = "bin"
-#   MY_INSTALL_RENAME = "" (was not used)
-#   MY_INSTALL_TARGETS = "foo;bar"
-#   MY_INSTALL_CONFIGURATIONS = "" (was not used)
-#   MY_INSTALL_UNPARSED_ARGUMENTS = "blub" (no value expected after "OPTIONAL"
-#
-# You can the continue and process these variables.
-#
-# Keywords terminate lists of values, e.g. if directly after a one_value_keyword
-# another recognized keyword follows, this is interpreted as the beginning of
-# the new option.
-# E.g. my_install(TARGETS foo DESTINATION OPTIONAL) would result in
-# MY_INSTALL_DESTINATION set to "OPTIONAL", but MY_INSTALL_DESTINATION would
-# be empty and MY_INSTALL_OPTIONAL would be set to TRUE therefor.
-
-#=============================================================================
-# Copyright 2010 Alexander Neundorf <neundorf@kde.org>
-#
-# Distributed under the OSI-approved BSD License (the "License");
-# see accompanying file Copyright.txt for details.
-#
-# This software is distributed WITHOUT ANY WARRANTY; without even the
-# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-# See the License for more information.
-#=============================================================================
-# (To distribute this file outside of CMake, substitute the full
-#  License text for the above reference.)
-
-
-if(__CMAKE_PARSE_ARGUMENTS_INCLUDED)
-  return()
-endif()
-set(__CMAKE_PARSE_ARGUMENTS_INCLUDED TRUE)
-
-
-function(CMAKE_PARSE_ARGUMENTS prefix _optionNames _singleArgNames _multiArgNames)
-  # first set all result variables to empty/FALSE
-  foreach(arg_name ${_singleArgNames} ${_multiArgNames})
-    set(${prefix}_${arg_name})
-  endforeach(arg_name)
-
-  foreach(option ${_optionNames})
-    set(${prefix}_${option} FALSE)
-  endforeach(option)
-
-  set(${prefix}_UNPARSED_ARGUMENTS)
-
-  set(insideValues FALSE)
-  set(currentArgName)
-
-  # now iterate over all arguments and fill the result variables
-  foreach(currentArg ${ARGN})
-    list(FIND _optionNames "${currentArg}" optionIndex)  # ... then this marks the end of the arguments belonging to this keyword
-    list(FIND _singleArgNames "${currentArg}" singleArgIndex)  # ... then this marks the end of the arguments belonging to this keyword
-    list(FIND _multiArgNames "${currentArg}" multiArgIndex)  # ... then this marks the end of the arguments belonging to this keyword
-
-    if(${optionIndex} EQUAL -1  AND  ${singleArgIndex} EQUAL -1  AND  ${multiArgIndex} EQUAL -1)
-      if(insideValues)
-        if(insideValues STREQUAL "SINGLE")
-          set(${prefix}_${currentArgName} ${currentArg})
-          set(insideValues FALSE)
-        elseif(insideValues STREQUAL "MULTI")
-          list(APPEND ${prefix}_${currentArgName} ${currentArg})
-        endif()
-      else(insideValues)
-        list(APPEND ${prefix}_UNPARSED_ARGUMENTS ${currentArg})
-      endif(insideValues)
-    else()
-      if(NOT ${optionIndex} EQUAL -1)
-        set(${prefix}_${currentArg} TRUE)
-        set(insideValues FALSE)
-      elseif(NOT ${singleArgIndex} EQUAL -1)
-        set(currentArgName ${currentArg})
-        set(${prefix}_${currentArgName})
-        set(insideValues "SINGLE")
-      elseif(NOT ${multiArgIndex} EQUAL -1)
-        set(currentArgName ${currentArg})
-        set(${prefix}_${currentArgName})
-        set(insideValues "MULTI")
-      endif()
-    endif()
-
-  endforeach(currentArg)
-
-  # propagate the result variables to the caller:
-  foreach(arg_name ${_singleArgNames} ${_multiArgNames} ${_optionNames})
-    set(${prefix}_${arg_name}  ${${prefix}_${arg_name}} PARENT_SCOPE)
-  endforeach(arg_name)
-  set(${prefix}_UNPARSED_ARGUMENTS ${${prefix}_UNPARSED_ARGUMENTS} PARENT_SCOPE)
-
-endfunction(CMAKE_PARSE_ARGUMENTS _options _singleArgs _multiArgs)