diff --git a/AMDiS/cmake/enable_cxx11.cmake b/AMDiS/cmake/enable_cxx11.cmake
index f408ab60702505770fb77743424d98c30494351a..465d9f2660296b82e2ed8534d5ee5eaeac51e653 100644
--- a/AMDiS/cmake/enable_cxx11.cmake
+++ b/AMDiS/cmake/enable_cxx11.cmake
@@ -3,35 +3,23 @@ include(CheckCXXSourceCompiles)
 include(CheckIncludeFileCXX)
 
 if (ENABLE_CXX11)
-  check_cxx_compiler_flag("-std=c++11" COMPILER_SUPPORTS_CXX11)
+  check_cxx_compiler_flag("-std=c++11" COMPILER_SUPPORTS_CXX11_FLAG)
 
-  if (NOT COMPILER_SUPPORTS_CXX11)
+  set(CXX11_CODE "#include <tuple>\\n#include <array>\\ntemplate<class... T> using std::tuple<T...>;int main(){decltype(1) vec[]={1,2,3}; for(auto&& x:vec);}")
+
+  if (COMPILER_SUPPORTS_CXX11_FLAG)
     set(CMAKE_REQUIRED_FLAGS "-std=c++11")
-    check_cxx_source_compiles("int main(){decltype(1) vec[]={1,2,3}; for(auto&& x:vec);}" CXX_COMPILES_WITH_CXX11)
+    check_cxx_source_compiles("${CXX11_CODE}" CXX11_COMPILES_WITH_CXX11_FLAG)
     set(CMAKE_REQUIRED_FLAGS "")
   endif ()
 
-  if (COMPILER_SUPPORTS_CXX11 OR CXX_COMPILES_WITH_CXX11)
+  if (COMPILER_SUPPORTS_CXX11_FLAG AND CXX11_COMPILES_WITH_CXX11_FLAG)
     add_definitions("-std=c++11")
   else ()
-    check_cxx_compiler_flag("-std=c++0x" COMPILER_SUPPORTS_CXX0X)
-    if (NOT COMPILER_SUPPORTS_CXX0X)
-      set(CMAKE_REQUIRED_FLAGS "-std=c++0x")
-      check_cxx_source_compiles("int main(){decltype(1) vec[]={1,2,3}; for(auto&& x:vec);}" CXX_COMPILES_WITH_CXX0X)
-      set(CMAKE_REQUIRED_FLAGS "")
-    endif ()
-
-    if (COMPILER_SUPPORTS_CXX0X OR CXX_COMPILES_WITH_CXX0X)
-      add_definitions("-std=c++0x")
-    else ()
-      check_cxx_source_compiles("int main(){decltype(1) vec[]={1,2,3}; for(auto&& x:vec);}" CXX11_COMPILES)
-      check_include_file_cxx("array" CXX11_INCLUDES)
+    check_cxx_source_compiles("${CXX11_CODE}" CXX11_COMPILES)
 
-      if (CXX11_COMPILES AND CXX11_INCLUDES)
-        set(${RESULT_VAR} true CACHE BOOL "Enable C++11 compiler features")
-      else ()
-        message (FATAL_ERROR "Compiler does not support C++11.")
-      endif ()
+    if (NOT CXX11_COMPILES)
+      message (FATAL_ERROR "Compiler does not support C++11.")
     endif ()
   endif ()
 
diff --git a/AMDiS/cmake3/AMDISConfig.cmake.in b/AMDiS/cmake3/AMDISConfig.cmake.in
index 373183764e0a686288c8155b6a28f6437c0c5279..8636d5d1099877970e01a3f42ff7f72104a26ac8 100644
--- a/AMDiS/cmake3/AMDISConfig.cmake.in
+++ b/AMDiS/cmake3/AMDISConfig.cmake.in
@@ -14,8 +14,8 @@
 #   target_link_libraries(yourTarget AMDiS)
 #
 
-if (${CMAKE_VERSION} VERSION_LESS "3.0")
-    message(FATAL_ERROR "The Configuration file was created for CMake version >= 3.0")
+if (${CMAKE_VERSION} VERSION_LESS "3.2")
+    message(FATAL_ERROR "The Configuration file was created for CMake version >= 3.2")
 endif ()
 
 list(APPEND CMAKE_MODULE_PATH ${AMDIS_DIR})
@@ -39,13 +39,11 @@ set(CMAKE_BUILD_TYPE @CMAKE_BUILD_TYPE@)
 add_library(amdis_base INTERFACE)
 add_library(AMDiS ALIAS amdis_base)
 
-target_compile_definitions(amdis_base INTERFACE
-      $<$<CONFIG:Release>:DEBUG=0>
-      $<$<NOT:$<CONFIG:Release>>:DEBUG=1>)
+target_compile_definitions(amdis_base INTERFACE)
 
 if (AMDIS_NEED_CXX11)
-    set(CMAKE_CXX_STANDARD 11)
-    set(CMAKE_CXX_STANDARD_REQUIRED ON)
+    include(test_compile_features)
+    target_enable_cxx11(AMDIS_NEED_CXX11 amdis_base INTERFACE)
     target_compile_definitions(amdis_base INTERFACE HAS_CXX11=1)
 else ()
     target_compile_definitions(amdis_base INTERFACE HAS_CXX11=0)
@@ -220,8 +218,11 @@ endif ()
 get_target_property(AMDIS_INCLUDE_DIRS AMDiS INTERFACE_INCLUDE_DIRECTORIES)
 get_target_property(AMDIS_LIBRARIES AMDiS INTERFACE_LINK_LIBRARIES)
 get_target_property(AMDIS_COMPILEFLAGS AMDiS INTERFACE_COMPILE_OPTIONS)
+if (NOT AMDIS_COMPILEFLAGS)
+  set(AMDIS_COMPILEFLAGS "")
+endif()
 
 get_target_property(_DEFINITIONS AMDiS INTERFACE_COMPILE_DEFINITIONS)
 foreach(defn ${_DEFINITIONS})
   list(APPEND AMDIS_COMPILEFLAGS "-D${defn}")
-endforeach(s)
+endforeach(defn)
diff --git a/AMDiS/cmake3/CMakeLists.txt b/AMDiS/cmake3/CMakeLists.txt
index 3d7f27764457148d7c1c29e7e1ad91fd730e93d2..5fb863e5d0ad1dfcd0a5f06f23197ce2db169ab2 100644
--- a/AMDiS/cmake3/CMakeLists.txt
+++ b/AMDiS/cmake3/CMakeLists.txt
@@ -42,9 +42,7 @@ add_library(amdis_base INTERFACE)
 add_library(AMDiS::base ALIAS amdis_base)
 
 target_include_directories(amdis_base INTERFACE ${SOURCE_DIR})
-target_compile_definitions(amdis_base INTERFACE
-      $<$<CONFIG:Release>:DEBUG=0>
-      $<$<NOT:$<CONFIG:Release>>:DEBUG=1>)
+target_compile_definitions(amdis_base INTERFACE)
 
 include(test_compile_features)
 target_enable_cxx11(ENABLE_CXX11 amdis_base INTERFACE)
diff --git a/AMDiS/cmake3/test_compile_features.cmake b/AMDiS/cmake3/test_compile_features.cmake
index 3b1d7dd8bef144a5057de2d52210b5ce35a1e6ed..11cd24112a0270fdb187167f1ca00a07f913b33b 100644
--- a/AMDiS/cmake3/test_compile_features.cmake
+++ b/AMDiS/cmake3/test_compile_features.cmake
@@ -1,39 +1,27 @@
 include(CheckCXXCompilerFlag)
 include(CheckCXXSourceCompiles)
-include(CheckIncludeFileCXX)
 
 macro(target_enable_cxx11 RESULT_VAR _TARGET_ _SCOPE_)
-  check_cxx_compiler_flag("-std=c++11" COMPILER_SUPPORTS_CXX11)
+  check_cxx_compiler_flag("-std=c++11" COMPILER_SUPPORTS_CXX11_FLAG)
 
-  if (NOT COMPILER_SUPPORTS_CXX11)
+  set(CXX11_CODE "#include <tuple>\\n#include <array>\\ntemplate<class... T> using std::tuple<T...>;int main(){decltype(1) vec[]={1,2,3}; for(auto&& x:vec);}")
+
+  if (COMPILER_SUPPORTS_CXX11_FLAG)
     set(CMAKE_REQUIRED_FLAGS "-std=c++11")
-    check_cxx_source_compiles("int main(){decltype(1) vec[]={1,2,3}; for(auto&& x:vec);}" CXX_COMPILES_WITH_CXX11)
+    check_cxx_source_compiles("${CXX11_CODE}" CXX11_COMPILES_WITH_CXX11_FLAG)
     set(CMAKE_REQUIRED_FLAGS "")
   endif ()
 
-  if (COMPILER_SUPPORTS_CXX11 OR CXX_COMPILES_WITH_CXX11)
+  if (COMPILER_SUPPORTS_CXX11_FLAG AND CXX11_COMPILES_WITH_CXX11_FLAG)
     target_compile_options(${_TARGET_} ${_SCOPE_} "-std=c++11")
-    set(${RESULT_VAR} true CACHE BOOL "Enable C++11 compiler features")
+    set(${RESULT_VAR} true CACHE BOOL "Enable C++11 compiler features" FORCE)
   else ()
-    check_cxx_compiler_flag("-std=c++0x" COMPILER_SUPPORTS_CXX0X)
-    if (NOT COMPILER_SUPPORTS_CXX0X)
-      set(CMAKE_REQUIRED_FLAGS "-std=c++0x")
-      check_cxx_source_compiles("int main(){decltype(1) vec[]={1,2,3}; for(auto&& x:vec);}" CXX_COMPILES_WITH_CXX0X)
-      set(CMAKE_REQUIRED_FLAGS "")
-    endif ()
+    check_cxx_source_compiles("${CXX11_CODE}" CXX11_COMPILES)
 
-    if (COMPILER_SUPPORTS_CXX0X OR CXX_COMPILES_WITH_CXX0X)
-      target_compile_options(${_TARGET_} ${_SCOPE_} "-std=c++0x")
-      set(${RESULT_VAR} true CACHE BOOL "Enable C++11 compiler features")
+    if (CXX11_COMPILES)
+      set(${RESULT_VAR} true CACHE BOOL "Enable C++11 compiler features" FORCE)
     else ()
-      check_cxx_source_compiles("int main(){decltype(1) vec[]={1,2,3}; for(auto&& x:vec);}" CXX11_COMPILES)
-      check_include_file_cxx("array" CXX11_INCLUDES)
-
-      if (CXX11_COMPILES AND CXX11_INCLUDES)
-        set(${RESULT_VAR} true CACHE BOOL "Enable C++11 compiler features")
-      else ()
-        set(${RESULT_VAR} false CACHE BOOL "Enable C++11 compiler features")
-      endif ()
+      set(${RESULT_VAR} false CACHE BOOL "Enable C++11 compiler features" FORCE)
     endif ()
   endif ()
 endmacro(target_enable_cxx11)
diff --git a/AMDiS/src/config/Config_clang.h b/AMDiS/src/config/Config_clang.h
index 092948de2588ccce2a567ee512e7404f3e28880a..9007feb2b92b47f1369ac0dd13d8622530e1afa0 100644
--- a/AMDiS/src/config/Config_clang.h
+++ b/AMDiS/src/config/Config_clang.h
@@ -47,7 +47,7 @@ typedef size_t aligned_size_t   __attribute__ ((aligned(CACHE_LINE)));
 
 // C++11 features
 // --------------
-#ifdef HAS_CXX11
+#if HAS_CXX11
 
 // __has_feature(cxx_rvalue_references)
 #if CLANG_VERSION >= 20900 && !defined(HAS_VARIADIC_TEMPLATES)
diff --git a/AMDiS/src/config/Config_gcc.h b/AMDiS/src/config/Config_gcc.h
index be5589a3683ab813b0639ac155af81d74c1e72b2..c281e3f71282afc415d3d7632abdebe2ed5ac6e4 100644
--- a/AMDiS/src/config/Config_gcc.h
+++ b/AMDiS/src/config/Config_gcc.h
@@ -47,7 +47,7 @@ typedef size_t aligned_size_t   __attribute__ ((aligned(CACHE_LINE)));
 
 // C++11 features
 // --------------
-#ifdef HAS_CXX11
+#if HAS_CXX11
 
 #if GCC_VERSION >= 40300 && !defined(HAS_VARIADIC_TEMPLATES)
   #define HAS_VARIADIC_TEMPLATES 1
diff --git a/AMDiS/src/config/Config_intel.h b/AMDiS/src/config/Config_intel.h
index 0ad423673d7d88bd7fa237d0683a26946c126024..0ee7ab5b89fd25de1401cde84ce05b47750f778e 100644
--- a/AMDiS/src/config/Config_intel.h
+++ b/AMDiS/src/config/Config_intel.h
@@ -51,7 +51,7 @@ typedef __declspec(align(CACHE_LINE)) size_t aligned_size_t;
 
 // C++11 features
 // --------------
-#ifdef HAS_CXX11
+#if HAS_CXX11
 
 #if INTEL_VERSION >= 1201 && !defined(HAS_VARIADIC_TEMPLATES)
   #define HAS_VARIADIC_TEMPLATES 1
diff --git a/AMDiS/src/traits/basic.hpp b/AMDiS/src/traits/basic.hpp
index f6e54f51bb537af3a4a4c8a6d5b0914ae201a275..1f0303936b6fd6d8474120deff915e4098c5d03e 100644
--- a/AMDiS/src/traits/basic.hpp
+++ b/AMDiS/src/traits/basic.hpp
@@ -35,7 +35,7 @@
 #include <boost/utility/enable_if.hpp>
 #endif
 
-#ifdef HAS_CXX11
+#if HAS_CXX11
 #include <type_traits>
 #endif
 
@@ -45,7 +45,7 @@ namespace AMDiS
   // introduce some shortcuts for boost::mpl
   // ---------------------------------------
 
-#ifdef HAS_CXX11
+#if HAS_CXX11
   template <bool B>
   using bool_ = std::integral_constant<bool, B>;