diff --git a/CMake/FindTBB.cmake b/CMake/FindTBB.cmake
index 71565cc7a05e3165877c0234a4d4cd2e038693a2..4ad009035a8d08e1e6de49632b347e727ba3fa17 100644
--- a/CMake/FindTBB.cmake
+++ b/CMake/FindTBB.cmake
@@ -245,37 +245,36 @@ unset(_TBB_INCLUDE_DIRS CACHE)
 # Versions
 # ----------------------------------------------------------------------------  
  
-SET(_TBB_VERSION_INTERFACE ${TBB_VERSION_INTERFACE})
-IF( (NOT TBB_VERSION_INTERFACE) AND TBB_INCLUDE_DIRS AND NOT DEFINED ENV{ONEAPI_ROOT})
-    FILE(READ "${TBB_INCLUDE_DIRS}/tbb/tbb_stddef.h" _FILE)
-    set(_TBB_VERSION_MAJOR 0)
-    set(_TBB_VERSION_MINOR 0)
+# Find file containing version info
+IF(EXISTS "${TBB_INCLUDE_DIRS}/tbb/tbb_stddef.h")
+    FILE(READ "${TBB_INCLUDE_DIRS}/tbb/tbb_stddef.h" _FILE) # older TBB
+ELSEIF(EXISTS "${TBB_INCLUDE_DIRS}/oneapi/tbb/version.h")
+    FILE(READ "${TBB_INCLUDE_DIRS}/oneapi/tbb/version.h" _FILE) # newer oneTBB
+ELSE()
+    MESSAGE(STATUS "TBB_LIBRARIES: ${TBB_LIBRARIES}")
+    MESSAGE(STATUS "TBB_INCLUDE_DIRS: ${TBB_INCLUDE_DIRS}")
+    MESSAGE(FATAL_ERROR "Cannot find version file in ${TBB_INCLUDE_DIRS}/tbb.")
+ENDIF()
+# If file has been found, read the version
+IF (DEFINED _FILE)
     STRING(REGEX REPLACE ".*#define TBB_INTERFACE_VERSION ([0-9]+).*" "\\1" _TBB_VERSION_INTERFACE "${_FILE}")
     STRING(REGEX REPLACE ".*#define TBB_VERSION_MAJOR ([0-9]+).*"     "\\1" _TBB_VERSION_MAJOR     "${_FILE}")
     STRING(REGEX REPLACE ".*#define TBB_VERSION_MINOR ([0-9]+).*"     "\\1" _TBB_VERSION_MINOR     "${_FILE}")
-    set(_TBB_VERSION_STRING "${_TBB_VERSION_MAJOR}.${_TBB_VERSION_MINOR}")
-    unset(_FILE)
-ENDIF()
-IF(NOT TBB_VERSION_INTERFACE)
-    SET(TBB_VERSION_INTERFACE ${_TBB_VERSION_INTERFACE} CACHE STRING "" FORCE)
-    SET(TBB_VERSION_MAJOR ${_TBB_VERSION_MAJOR} CACHE INTERNAL "" FORCE)
-    SET(TBB_VERSION_MINOR ${_TBB_VERSION_MINOR} CACHE INTERNAL "" FORCE)
-    SET(TBB_VERSION_STRING ${_TBB_VERSION_STRING} CACHE STRING "" FORCE)
-    mark_as_advanced(TBB_VERSION_INTERFACE)
-    mark_as_advanced(TBB_VERSION_MAJOR)
-    mark_as_advanced(TBB_VERSION_MINOR)
-    mark_as_advanced(TBB_VERSION_STRING)
+    STRING(REGEX REPLACE ".*#define TBB_VERSION_PATCH ([0-9]+).*"     "\\1" _TBB_VERSION_PATCH     "${_FILE}")
+    SET(TBB_INTERFACE_VERSION ${_TBB_INTERFACE_VERSION})
+    SET(TBB_VERSION ${_TBB_VERSION_MAJOR}.${_TBB_VERSION_MINOR}.${_TBB_VERSION_PATCH})
+    IF (_VERB)
+        MESSAGE(STATUS "TBB version: ${TBB_VERSION} (${TBB_INTERFACE_VERSION})")
+    ENDIF()
 ENDIF()
 # ----------------------------------------------------------------------------   
 
 include(FindPackageHandleStandardArgs)
 # handle the QUIETLY and REQUIRED arguments and set TBB_FOUND to TRUE
 # if all listed variables are TRUE
-find_package_handle_standard_args(TBB DEFAULT_MSG 
-                TBB_LIBRARIES TBB_INCLUDE_DIRS
-                TBB_LIB_PATH TBB_LIB_PATH_DEBUG)
-
-#MESSAGE(STATUS "TBB_FOUND = ${TBB_FOUND}")
+find_package_handle_standard_args(TBB
+                                  REQUIRED_VARS TBB_LIBRARIES TBB_INCLUDE_DIRS TBB_LIB_PATH TBB_LIB_PATH_DEBUG
+                                  VERSION_VAR TBB_VERSION)
 # ----------------------------------------------------------------------------   
 
 unset(_VERB)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 5b5da42d071ae94d6989d1bb93a7538f3467114a..8bb8eca85ec84335a03f532aede76d2d355420f3 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -15,11 +15,7 @@
 # ----------------------------------------------------------------------------
 PROJECT(amfe)
 # ----------------------------------------------------------------------------
-CMAKE_MINIMUM_REQUIRED(VERSION 3.1)
-IF(${CMAKE_VERSION} VERSION_GREATER "3.14.0") # we might want to update the project and use the NEW behavior here
-    cmake_policy(SET CMP0078 OLD)
-    cmake_policy(SET CMP0086 OLD)
-ENDIF()
+CMAKE_MINIMUM_REQUIRED(VERSION 3.14)
 
 # -- I/O
 # Lib/Exe dir
@@ -66,17 +62,12 @@ OPTION(USE_MUMPS       "Compile with MUMPS"              ON)
 
 # -- DEPENDENCIES
 # Python
-IF (CMAKE_VERSION VERSION_LESS 3.12.0)
-    FIND_PACKAGE(PythonInterp 3.6 REQUIRED)
-    FIND_PACKAGE(PythonLibs 3.6 REQUIRED)
-ELSE()
-    FIND_PACKAGE(Python3 COMPONENTS Interpreter Development)
-    # use Python3_ROOT_DIR if wrong python found (e.g. anaconda)
-    SET(PYTHON_EXECUTABLE ${Python3_EXECUTABLE})
-    SET(PYTHON_LIBRARIES ${Python3_LIBRARIES})
-    SET(PYTHON_INCLUDE_PATH ${Python3_INCLUDE_DIRS}) 
-    SET(PYTHONLIBS_VERSION_STRING ${Python3_VERSION})     
-ENDIF()
+# use Python3_ROOT_DIR if wrong python found (e.g. anaconda)
+FIND_PACKAGE(Python3 COMPONENTS Interpreter Development)
+SET(PYTHON_EXECUTABLE ${Python3_EXECUTABLE})
+SET(PYTHON_LIBRARIES ${Python3_LIBRARIES})
+SET(PYTHON_INCLUDE_PATH ${Python3_INCLUDE_DIRS}) 
+SET(PYTHONLIBS_VERSION_STRING ${Python3_VERSION})     
 MESSAGE(STATUS "PYTHON_EXECUTABLE:FILEPATH=${PYTHON_EXECUTABLE}")
 MESSAGE(STATUS "PYTHON_LIBRARIES:FILEPATH=${PYTHON_LIBRARIES}")
 MESSAGE(STATUS "PYTHON_INCLUDE_PATH:FILEPATH=${PYTHON_INCLUDE_PATH}")
diff --git a/fwk/_src/CMakeLists.txt b/fwk/_src/CMakeLists.txt
index 78c8658478fbd983c3d1625165f0e6957d27a216..a1e220fd29675d98f3d7a279044ef7bc3b6d74a3 100644
--- a/fwk/_src/CMakeLists.txt
+++ b/fwk/_src/CMakeLists.txt
@@ -19,29 +19,16 @@ INCLUDE(${SWIG_USE_FILE})
 FILE(GLOB SRCS *.h *.cpp *.inl *.swg)
 FILE(GLOB ISRCS *.i)
 
-SET(CMAKE_SWIG_FLAGS "")
 SET_SOURCE_FILES_PROPERTIES(${ISRCS} PROPERTIES CPLUSPLUS ON)
+SET(CMAKE_SWIG_FLAGS "-interface" "_fwkw") # avoids "import _module_d" with MSVC/Debug
+SWIG_ADD_LIBRARY(fwkw LANGUAGE python SOURCES ${ISRCS} ${SRCS})
+SET_PROPERTY(TARGET fwkw PROPERTY SWIG_USE_TARGET_INCLUDE_DIRECTORIES ON)
+MACRO_DebugPostfix(fwkw)
 
-SET(SWINCFLAGS
--I${PROJECT_SOURCE_DIR}/fwk/src
-)
-SET_SOURCE_FILES_PROPERTIES(${ISRCS} PROPERTIES SWIG_FLAGS "${SWINCFLAGS}")
-
-if (${CMAKE_VERSION} VERSION_LESS "3.8.0")
-    SWIG_ADD_MODULE(fwkw python ${ISRCS} ${SRCS})
-else()
-    SWIG_ADD_LIBRARY(fwkw LANGUAGE python SOURCES ${ISRCS} ${SRCS})
-endif()
-MACRO_DebugPostfix(_fwkw)
-
-TARGET_INCLUDE_DIRECTORIES(_fwkw PRIVATE ${PROJECT_SOURCE_DIR}/fwk/_src
-                                         ${PYTHON_INCLUDE_PATH}
-)
-
-SWIG_LINK_LIBRARIES(fwkw
-                    fwk ${PYTHON_LIBRARIES}
-)
+TARGET_INCLUDE_DIRECTORIES(fwkw PRIVATE ${PROJECT_SOURCE_DIR}/fwk/_src
+                                        ${PYTHON_INCLUDE_PATH})
+TARGET_LINK_LIBRARIES(fwkw PRIVATE fwk ${PYTHON_LIBRARIES})
 
 INSTALL(FILES "${EXECUTABLE_OUTPUT_PATH}/\${BUILD_TYPE}/fwkw.py"
         DESTINATION ${CMAKE_INSTALL_PREFIX})
-INSTALL(TARGETS _fwkw DESTINATION ${CMAKE_INSTALL_PREFIX})
+INSTALL(TARGETS fwkw DESTINATION ${CMAKE_INSTALL_PREFIX})
diff --git a/tbox/_src/CMakeLists.txt b/tbox/_src/CMakeLists.txt
index 1dea57d843faf64c93ee41ba2a9ce4ceee12ea56..02151e8e9b65f760ffb6ce57b29fea66cb388862 100644
--- a/tbox/_src/CMakeLists.txt
+++ b/tbox/_src/CMakeLists.txt
@@ -19,33 +19,17 @@ INCLUDE(${SWIG_USE_FILE})
 FILE(GLOB SRCS *.h *.cpp *.inl *.swg)
 FILE(GLOB ISRCS *.i)
 
-SET(CMAKE_SWIG_FLAGS "")
 SET_SOURCE_FILES_PROPERTIES(${ISRCS} PROPERTIES CPLUSPLUS ON)
+SET(CMAKE_SWIG_FLAGS "-interface" "_tboxw") # avoids "import _module_d" with MSVC/Debug
+SWIG_ADD_LIBRARY(tboxw LANGUAGE python SOURCES ${ISRCS} ${SRCS})
+SET_PROPERTY(TARGET tboxw PROPERTY SWIG_USE_TARGET_INCLUDE_DIRECTORIES ON)
+MACRO_DebugPostfix(tboxw)
 
-SET(SWINCFLAGS 
--I${PROJECT_SOURCE_DIR}/tbox/src
--I${PROJECT_SOURCE_DIR}/tbox/_src
--I${PROJECT_SOURCE_DIR}/fwk/src
--I${PROJECT_SOURCE_DIR}/fwk/_src
-)
-SET_SOURCE_FILES_PROPERTIES(${ISRCS} PROPERTIES SWIG_FLAGS "${SWINCFLAGS}")
-
-if (${CMAKE_VERSION} VERSION_LESS "3.8.0")
-    SWIG_ADD_MODULE(tboxw python ${ISRCS} ${SRCS})
-else()
-    SWIG_ADD_LIBRARY(tboxw LANGUAGE python SOURCES ${ISRCS} ${SRCS})
-endif()
-MACRO_DebugPostfix(_tboxw)
-
-TARGET_INCLUDE_DIRECTORIES(_tboxw PRIVATE ${PROJECT_SOURCE_DIR}/fwk/_src
-                                          ${PROJECT_SOURCE_DIR}/tbox/_src
-                                          ${PYTHON_INCLUDE_PATH}
-)
-
-SWIG_LINK_LIBRARIES(tboxw
-                    tbox fwk ${PYTHON_LIBRARIES}
-)
+TARGET_INCLUDE_DIRECTORIES(tboxw PRIVATE ${PROJECT_SOURCE_DIR}/tbox/_src
+                                         ${PROJECT_SOURCE_DIR}/fwk/_src
+                                         ${PYTHON_INCLUDE_PATH})
+TARGET_LINK_LIBRARIES(tboxw PRIVATE tbox fwk ${PYTHON_LIBRARIES})
 
 INSTALL(FILES "${EXECUTABLE_OUTPUT_PATH}/\${BUILD_TYPE}/tboxw.py"
         DESTINATION ${CMAKE_INSTALL_PREFIX})
-INSTALL(TARGETS _tboxw DESTINATION ${CMAKE_INSTALL_PREFIX})
+INSTALL(TARGETS tboxw DESTINATION ${CMAKE_INSTALL_PREFIX})
diff --git a/tbox/src/wMshConvert.cpp b/tbox/src/wMshConvert.cpp
index 013fff0c07c8539820a1d14ae2fd54138aafa852..dd48f05554736b46383083f81a0a29fa934adb95 100644
--- a/tbox/src/wMshConvert.cpp
+++ b/tbox/src/wMshConvert.cpp
@@ -22,6 +22,7 @@
 #include <fstream>
 #include <set>
 #include <algorithm>
+#include <limits>
 
 using namespace tbox;
 
diff --git a/tboxVtk/_src/CMakeLists.txt b/tboxVtk/_src/CMakeLists.txt
index f1ad6f73a27613af52c9e94bbd1f84d55285a4f0..c0f894bba572447026d8d4788e018a614ceb105c 100644
--- a/tboxVtk/_src/CMakeLists.txt
+++ b/tboxVtk/_src/CMakeLists.txt
@@ -19,35 +19,18 @@ INCLUDE(${SWIG_USE_FILE})
 FILE(GLOB SRCS *.h *.cpp *.inl *.swg)
 FILE(GLOB ISRCS *.i)
 
-SET(CMAKE_SWIG_FLAGS "")
 SET_SOURCE_FILES_PROPERTIES(${ISRCS} PROPERTIES CPLUSPLUS ON)
+SET(CMAKE_SWIG_FLAGS "-interface" "_tboxVtkw") # avoids "import _module_d" with MSVC/Debug
+SWIG_ADD_LIBRARY(tboxVtkw LANGUAGE python SOURCES ${ISRCS} ${SRCS})
+SET_PROPERTY(TARGET tboxVtkw PROPERTY SWIG_USE_TARGET_INCLUDE_DIRECTORIES ON)
+MACRO_DebugPostfix(tboxVtkw)
 
-SET(SWINCFLAGS 
--I${PROJECT_SOURCE_DIR}/tboxVtk/src
--I${PROJECT_SOURCE_DIR}/tbox/src
--I${PROJECT_SOURCE_DIR}/tbox/_src
--I${PROJECT_SOURCE_DIR}/fwk/src
--I${PROJECT_SOURCE_DIR}/fwk/_src
-)
-SET_SOURCE_FILES_PROPERTIES(${ISRCS} PROPERTIES SWIG_FLAGS "${SWINCFLAGS}")
-
-if (${CMAKE_VERSION} VERSION_LESS "3.8.0")
-    SWIG_ADD_MODULE(tboxVtkw python ${ISRCS} ${SRCS})
-else()
-    SWIG_ADD_LIBRARY(tboxVtkw LANGUAGE python SOURCES ${ISRCS} ${SRCS})
-endif()
-MACRO_DebugPostfix(_tboxVtkw)
-
-TARGET_INCLUDE_DIRECTORIES(_tboxVtkw PRIVATE ${PROJECT_SOURCE_DIR}/tboxVtk/_src
-                                          ${PROJECT_SOURCE_DIR}/fwk/_src
-                                          ${PROJECT_SOURCE_DIR}/tbox/_src
-                                          ${PYTHON_INCLUDE_PATH}
-)
-
-SWIG_LINK_LIBRARIES(tboxVtkw
-                    tboxVtk tbox fwk ${PYTHON_LIBRARIES}
-)
+TARGET_INCLUDE_DIRECTORIES(tboxVtkw PRIVATE ${PROJECT_SOURCE_DIR}/tboxVtk/_src
+                                            ${PROJECT_SOURCE_DIR}/tbox/_src
+                                            ${PROJECT_SOURCE_DIR}/fwk/_src
+                                            ${PYTHON_INCLUDE_PATH})
+TARGET_LINK_LIBRARIES(tboxVtkw PRIVATE tboxVtk tbox fwk ${PYTHON_LIBRARIES})
 
 INSTALL(FILES "${EXECUTABLE_OUTPUT_PATH}/\${BUILD_TYPE}/tboxVtkw.py"
         DESTINATION ${CMAKE_INSTALL_PREFIX})
-INSTALL(TARGETS _tboxVtkw DESTINATION ${CMAKE_INSTALL_PREFIX})
+INSTALL(TARGETS tboxVtkw DESTINATION ${CMAKE_INSTALL_PREFIX})
diff --git a/tboxVtk/src/CMakeLists.txt b/tboxVtk/src/CMakeLists.txt
index 2d38e5c6013bd1b04b3e5e32b1f2cdbb03524005..288a3a4a674d94056a5c2ae8924bbbe1047596d7 100644
--- a/tboxVtk/src/CMakeLists.txt
+++ b/tboxVtk/src/CMakeLists.txt
@@ -27,14 +27,18 @@ TARGET_INCLUDE_DIRECTORIES(tboxVtk PUBLIC ${PROJECT_SOURCE_DIR}/tboxVtk/src)
 
 
 # 1. first, look for all available VTK libraries
-FIND_PACKAGE(VTK REQUIRED NO_MODULE)
+FIND_PACKAGE(VTK REQUIRED NO_MODULE QUIET)
 IF(${VTK_VERSION} VERSION_LESS 6.0)
 	MESSAGE(FATAL_ERROR "VTK>=6 required!")
 ENDIF()
-MESSAGE(STATUS "VTK_LIBRARIES1 = ${VTK_LIBRARIES}") # display all VTK libs
+#MESSAGE(STATUS "VTK_LIBRARIES1 = ${VTK_LIBRARIES}") # display all VTK libs
 
 # list of required components
-SET(REQVTKCMP vtkIOXML)
+IF(${VTK_VERSION} VERSION_LESS 9.0)
+	SET(REQVTKCMP vtkIOXML)
+ELSE()
+	SET(REQVTKCMP IOXML)
+ENDIF()
 
 # check whether MPI has been compiled
 IF(TARGET vtkParallelMPI) # NOTE: this test also works with a previous single-COMPONENT search
@@ -47,16 +51,19 @@ ENDIF()
 
 # 2. second, perform a new search with a limited number of components
 # NOTE: you may just disable the following line to link against ALL vtk libraries!
-FIND_PACKAGE(VTK REQUIRED COMPONENTS ${REQVTKCMP} NO_MODULE)
+FIND_PACKAGE(VTK REQUIRED COMPONENTS ${REQVTKCMP} NO_MODULE QUIET)
+IF(${VTK_FOUND})
+	MESSAGE(STATUS "Found VTK ${VTK_VERSION} at \"${VTK_PREFIX_PATH}\" (components: ${VTK_LIBRARIES})")
+ENDIF()
 
 # debug
-MESSAGE(STATUS "VTK_DEFINITIONS = ${VTK_DEFINITIONS}")
-MESSAGE(STATUS "VTK_REQUIRED_CXX_FLAGS = ${VTK_REQUIRED_CXX_FLAGS}")
-MESSAGE(STATUS "VTK_REQUIRED_EXE_LINKER_FLAGS = ${VTK_REQUIRED_EXE_LINKER_FLAGS}")
-MESSAGE(STATUS "VTK_REQUIRED_SHARED_LINKER_FLAGS = ${VTK_REQUIRED_SHARED_LINKER_FLAGS}")
-MESSAGE(STATUS "VTK_USE_FILE = ${VTK_USE_FILE}")
-MESSAGE(STATUS "VTK_INCLUDE_DIR = ${VTK_INCLUDE_DIR}")
-MESSAGE(STATUS "VTK_LIBRARIES = ${VTK_LIBRARIES}")
+#MESSAGE(STATUS "VTK_DEFINITIONS = ${VTK_DEFINITIONS}")
+#MESSAGE(STATUS "VTK_REQUIRED_CXX_FLAGS = ${VTK_REQUIRED_CXX_FLAGS}")
+#MESSAGE(STATUS "VTK_REQUIRED_EXE_LINKER_FLAGS = ${VTK_REQUIRED_EXE_LINKER_FLAGS}")
+#MESSAGE(STATUS "VTK_REQUIRED_SHARED_LINKER_FLAGS = ${VTK_REQUIRED_SHARED_LINKER_FLAGS}")
+#MESSAGE(STATUS "VTK_USE_FILE = ${VTK_USE_FILE}")
+#MESSAGE(STATUS "VTK_INCLUDE_DIR = ${VTK_INCLUDE_DIR}")
+#MESSAGE(STATUS "VTK_LIBRARIES = ${VTK_LIBRARIES}")
 
 TARGET_INCLUDE_DIRECTORIES(tboxVtk PUBLIC ${VTK_INCLUDE_DIRS})
 TARGET_COMPILE_DEFINITIONS(tboxVtk PUBLIC ${VTK_DEFINITIONS})