diff --git a/.clang-tidy b/.clang-tidy
new file mode 100644
index 0000000000000000000000000000000000000000..2747454ca09d19d0af59207f587a0b3afe36b033
--- /dev/null
+++ b/.clang-tidy
@@ -0,0 +1,56 @@
+---
+Checks: '
+-*,
+
+bugprone-*,
+-bugprone-branch-clone,
+-bugprone-narrowing-conversions,
+-bugprone-macro-parentheses,
+
+misc-*,
+-misc-non-private-member-variables-in-classes,
+
+modernize-*,
+-modernize-avoid-c-arrays,
+-modernize-use-trailing-return-type,
+-modernize-raw-string-literal,
+-modernize-loop-convert,
+-modernize-use-auto,
+-modernize-use-nullptr,
+-modernize-pass-by-value,
+
+mpi-*,
+
+openmp-*
+
+performance-*,
+
+portability-*
+
+readability-*,
+-readability-braces-around-statements,
+-readability-magic-numbers,
+-readability-isolate-declaration,
+
+
+cppcoreguidelines-avoid-goto,
+cppcoreguidelines-avoid-non-const-global-variables,
+cppcoreguidelines-init-variables,
+cppcoreguidelines-interfaces-global-init,
+cppcoreguidelines-no-malloc,
+cppcoreguidelines-owning-memory,
+cppcoreguidelines-pro-type-const-cast,
+cppcoreguidelines-pro-type-member-init,
+cppcoreguidelines-pro-type-static-cast-downcast,
+cppcoreguidelines-slicing,
+cppcoreguidelines-special-member-functions,
+
+-cppcoreguidelines-init-variables,
+-cppcoreguidelines-pro-type-member-init,
+-cppcoreguidelines-owning-memory,
+-cppcoreguidelines-special-member-functions,
+-cppcoreguidelines-interfaces-global-init
+
+'
+HeaderFilterRegex: '\.h$'
+...
diff --git a/3rdParty/MuParser/CMakeLists.txt b/3rdParty/MuParser/CMakeLists.txt
index 14a1e4e4528181800f03adfd3695310783042707..49aa3ac25552f6050de4eb5ae08928fddb8a6cf4 100644
--- a/3rdParty/MuParser/CMakeLists.txt
+++ b/3rdParty/MuParser/CMakeLists.txt
@@ -35,7 +35,7 @@ if(MSVC)
     set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4251 /wd4310 /wd4267") # disable all muparser warnings
 elseif(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX)
     # Update if necessary
-    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wno-long-long -pedantic")
+    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wno-long-long -pedantic -Wno-unknown-pragmas")
 endif()
 
 add_library(muparser
diff --git a/3rdParty/MuParser/include/muParser.h b/3rdParty/MuParser/include/muParser.h
index 321fba9c793179e29ce50438a332547fd1a3927f..3a2bedc39180c678a63cfa81b893a339b85324f7 100644
--- a/3rdParty/MuParser/include/muParser.h
+++ b/3rdParty/MuParser/include/muParser.h
@@ -29,6 +29,10 @@
 #ifndef MU_PARSER_H
 #define MU_PARSER_H
 
+#ifdef __clang__
+#pragma clang system_header
+#endif
+
 //--- Standard includes ------------------------------------------------------------------------
 #include <vector>
 
diff --git a/3rdParty/MuParser/include/muParserBase.h b/3rdParty/MuParser/include/muParserBase.h
index 7793818a9c90a6f40c3df877099ed53d135f5f91..5ccadd99d1d33b6e69a123480a31b82079234945 100644
--- a/3rdParty/MuParser/include/muParserBase.h
+++ b/3rdParty/MuParser/include/muParserBase.h
@@ -29,6 +29,10 @@
 #ifndef MU_PARSER_BASE_H
 #define MU_PARSER_BASE_H
 
+#ifdef __clang__
+#pragma clang system_header
+#endif
+
 //--- Standard includes ------------------------------------------------------------------------
 #include <cmath>
 #include <string>
diff --git a/3rdParty/MuParser/include/muParserDLL.h b/3rdParty/MuParser/include/muParserDLL.h
index 18051c4d7835b266a463bd36f974d66d5729b13d..14c65b48a463c6bfb52fb92cca2daf62988df937 100644
--- a/3rdParty/MuParser/include/muParserDLL.h
+++ b/3rdParty/MuParser/include/muParserDLL.h
@@ -29,6 +29,10 @@
 #ifndef MU_PARSER_DLL_H
 #define MU_PARSER_DLL_H
 
+#ifdef __clang__
+#pragma clang system_header
+#endif
+
 #include "muParserFixes.h"
 
 #ifdef __cplusplus
diff --git a/3rdParty/metis/metis-5.1.1/include/metis.h b/3rdParty/metis/metis-5.1.1/include/metis.h
index 90f5163c1d96ad05b78c9033904e327db6706ec3..3fd7b0789fa09aa25a679c806159f7f0b39b876c 100644
--- a/3rdParty/metis/metis-5.1.1/include/metis.h
+++ b/3rdParty/metis/metis-5.1.1/include/metis.h
@@ -10,6 +10,11 @@
 #ifndef _METIS_H_
 #define _METIS_H_ 
 
+#ifdef __clang__
+#pragma clang system_header
+#endif
+
+
 /****************************************************************************
 * A set of defines that can be modified by the user
 *****************************************************************************/
diff --git a/3rdParty/metis/metis-5.1.1/libmetis/CMakeLists.txt b/3rdParty/metis/metis-5.1.1/libmetis/CMakeLists.txt
index 85f96b08a0b224e9dccf463e397b562c23292a1b..4732b645ea354ada4a61540e12f73bff90540cb5 100644
--- a/3rdParty/metis/metis-5.1.1/libmetis/CMakeLists.txt
+++ b/3rdParty/metis/metis-5.1.1/libmetis/CMakeLists.txt
@@ -8,6 +8,10 @@ if(UNIX)
   target_link_libraries(metis m)
 endif()
 
+if(MSVC)
+   target_compile_options(metis PRIVATE "/w")
+endif()
+
 if(METIS_INSTALL)
   install(TARGETS metis
     LIBRARY DESTINATION lib
diff --git a/CMake/VirtualFluidsMacros.cmake b/CMake/VirtualFluidsMacros.cmake
index cf0f24ec944883538749775ecbcdd4a43a370b3b..2e9abfeeeca983dd6035306358011a3cd071c63b 100644
--- a/CMake/VirtualFluidsMacros.cmake
+++ b/CMake/VirtualFluidsMacros.cmake
@@ -101,6 +101,12 @@ endfunction()
 #################################################################################
 function(vf_add_library)
 
+    # enable clang tidy for this target
+    if(BUILD_VF_CLANG_TIDY)
+        find_program(CLANG_TIDY_COMMAND NAMES clang-tidy)
+        set(CMAKE_CXX_CLANG_TIDY "${CLANG_TIDY_COMMAND}")
+    endif()
+
     set( options )
     set( oneValueArgs )
     set( multiValueArgs NAME BUILDTYPE DEPENDS FILES FOLDER EXCLUDE)
@@ -169,6 +175,7 @@ function(vf_add_library)
 
     status("... configuring target: ${library_name} (type=${ARG_BUILDTYPE}) done")
 
+    unset(CMAKE_CXX_CLANG_TIDY)
 endfunction()
 
 
diff --git a/CMake/compilerflags/AppleClang.cmake b/CMake/compilerflags/AppleClang.cmake
index 05c497165b6f395f98c52bd2fbcad6cdc1cc94cf..1887de8bf98ac6793cf8f6e2181d38db152ebfb9 100644
--- a/CMake/compilerflags/AppleClang.cmake
+++ b/CMake/compilerflags/AppleClang.cmake
@@ -20,7 +20,3 @@ list(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "-Wunreachable-code")
 
 list(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "-Wno-unused-function")
 list(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "-Wno-reorder-ctor")
-
-# temp:
-list(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "-Wno-sometimes-uninitialized")
-list(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "-Wno-inconsistent-missing-override")
\ No newline at end of file
diff --git a/CMake/compilerflags/GNU.cmake b/CMake/compilerflags/GNU.cmake
index f44cafc66eced55f1cf28f05ca0ddc9ad24b3e7d..8f932429c9c8f43d25b9dcd238efcbc3ed7a5fe0 100644
--- a/CMake/compilerflags/GNU.cmake
+++ b/CMake/compilerflags/GNU.cmake
@@ -21,7 +21,7 @@ list(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "-Wall")
 list(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "-Wno-unused-function")
 list(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "-Wno-reorder")
 list(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "-Wno-sign-compare")
-
+list(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "-Wno-unknown-pragmas")
 
 #############################################################################################################
 # linker options
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 6c98c8aa639a81526606a7124bf97e1c150a6032..3ca84ca3f9045f45344943c24a4d83570c4beeb5 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -36,7 +36,9 @@ set (VF_ROOT_DIR  ${CMAKE_CURRENT_SOURCE_DIR})
 #################################################################################
 option(BUILD_VF_CPU "Build VirtualFluids cpu variant" OFF)
 option(BUILD_VF_GPU "Build VirtualFluids gpu variant" OFF)
+
 option(BUILD_VF_UNIT_TESTS "Build VirtualFluids unit tests" OFF)
+option(BUILD_VF_CLANG_TIDY "Add the clang tidy checks to the targets" OFF)
 
 option(BUILD_SHARED_LIBS "" ON)
 
diff --git a/apps/cpu/LaminarTubeFlow/ltf.cpp b/apps/cpu/LaminarTubeFlow/ltf.cpp
index 63cabd4f8acc33ccce7bd85f305762e5c35d6d66..f11526f0ebab646430028615e98e8f1a5710ec3b 100644
--- a/apps/cpu/LaminarTubeFlow/ltf.cpp
+++ b/apps/cpu/LaminarTubeFlow/ltf.cpp
@@ -325,7 +325,7 @@ void run(string configname)
    }
 
 }
-int main(int argc, char* argv[])
+int main(int  /*argc*/, char* argv[])
 {
    if (argv != NULL)
    {
diff --git a/apps/cpu/LidDrivenCavity/LidDrivenCavity.cpp b/apps/cpu/LidDrivenCavity/LidDrivenCavity.cpp
index bde6df56d697f197c2f0e486647a09f0c06ba20b..104d487b905c03901ffa3ecc24f2f34b44cffe5e 100644
--- a/apps/cpu/LidDrivenCavity/LidDrivenCavity.cpp
+++ b/apps/cpu/LidDrivenCavity/LidDrivenCavity.cpp
@@ -37,7 +37,7 @@
 
 using namespace std;
 
-int main(int argc, char* argv[])
+int main(int  /*argc*/, char*  /*argv*/[])
 {
    try
    {
@@ -110,30 +110,28 @@ int main(int argc, char* argv[])
       grid->accept(genBlocks);
 
       // Write block grid to VTK-file
-      SPtr<CoProcessor> ppblocks(new WriteBlocksCoProcessor(grid, SPtr<UbScheduler>(new UbScheduler(1)), path, WbWriterVtkXmlBinary::getInstance(), comm));
+      auto ppblocks = std::make_shared<WriteBlocksCoProcessor>(grid, SPtr<UbScheduler>(new UbScheduler(1)), path, WbWriterVtkXmlBinary::getInstance(), comm);
       ppblocks->process(0);
       ppblocks.reset();
 
       // Create LBM kernel
-      
-      //SPtr<LBMKernel> kernel = SPtr<LBMKernel>(new CumulantK17LBMKernel());
-
-      SPtr<LBMKernel> kernel = SPtr<LBMKernel>(new LBMKernelETD3Q27BGK());
+      auto kernel = std::make_shared<LBMKernelETD3Q27BGK>();
+      // auto kernel = std::make_shared<CumulantK17LBMKernel>();
 
       //////////////////////////////////////////////////////////////////////////
       // Create boundary conditions (BC)
       //////////////////////////////////////////////////////////////////////////     
       // Create no-slip BC
-      SPtr<BCAdapter> noSlipBCAdapter(new NoSlipBCAdapter());
-      noSlipBCAdapter->setBcAlgorithm(SPtr<BCAlgorithm>(new NoSlipBCAlgorithm()));
+      auto noSlipBCAdapter = std::make_shared<NoSlipBCAdapter>();
+      noSlipBCAdapter->setBcAlgorithm(std::make_shared<NoSlipBCAlgorithm>());
       
       // Velocity BC
       mu::Parser fct;
       fct.SetExpr("u");
       fct.DefineConst("u", u);
       // Set the same velocity in x and y-direction
-      SPtr<BCAdapter> velBCAdapter(new VelocityBCAdapter(true, true, false, fct, 0, BCFunction::INFCONST));
-      velBCAdapter->setBcAlgorithm(SPtr<BCAlgorithm>(new VelocityBCAlgorithm()));
+      auto velBCAdapter = std::make_shared<VelocityBCAdapter>(true, true, false, fct, 0, BCFunction::INFCONST);
+      velBCAdapter->setBcAlgorithm(std::make_shared<VelocityBCAlgorithm>());
 
       // Add velocity boundary condition to visitor. No-slip boundary   
       BoundaryConditionsBlockVisitor bcVisitor;
@@ -141,7 +139,7 @@ int main(int argc, char* argv[])
 
       // Create boundary conditions processor
       SPtr<BCProcessor> bcProc;
-      bcProc = SPtr<BCProcessor>(new BCProcessor());
+      bcProc = std::make_shared<BCProcessor>();
       kernel->setBCProcessor(bcProc);
 
       // Create boundary conditions geometry
diff --git a/cpu.cmake b/cpu.cmake
index 7ef58762d25a5d5580e96d3ed23093fda275001d..5c7fdda0e845cf5f702de27f5fde2bff7d89b79a 100644
--- a/cpu.cmake
+++ b/cpu.cmake
@@ -80,6 +80,7 @@ if(${USE_METIS} AND NOT METIS_INCLUDEDIR)
 endif()
 
 
+
 add_subdirectory(${VF_THIRD_DIR}/MuParser)
 add_subdirectory(${VF_THIRD_DIR}/pybind11/pybind11-2.5.0)
 
diff --git a/src/basics/Core/DataTypes.h b/src/basics/Core/DataTypes.h
index 67a17fa765514c41247c480709864b4dae1b28ba..b4fa3a0d96e10bd4e04a809c075e49e0f9867f05 100644
--- a/src/basics/Core/DataTypes.h
+++ b/src/basics/Core/DataTypes.h
@@ -7,10 +7,10 @@
 #ifdef VF_DOUBLE_ACCURACY
 typedef double real;
 #else
-typedef float  real;
+using real = float;
 #endif
 
-typedef unsigned int uint;
+using uint = unsigned int;
 #define INVALID_INDEX 4294967295 //max uint
 
 #endif
diff --git a/src/basics/Core/Input/ConfigData/ConfigData.h b/src/basics/Core/Input/ConfigData/ConfigData.h
index acd5ee053b6f1972e7e36751c15387e16d976688..16f789ef9f0104ce12caa630bc00181d80f06fa6 100644
--- a/src/basics/Core/Input/ConfigData/ConfigData.h
+++ b/src/basics/Core/Input/ConfigData/ConfigData.h
@@ -9,6 +9,8 @@
 class ConfigData
 {
 public:
+    virtual ~ConfigData() = default;
+
 	virtual real getViscosity() = 0;
 	virtual uint getNumberOfDevices() = 0;
 	virtual std::vector<uint> getDevices() = 0;
diff --git a/src/basics/Core/Input/ConfigData/ConfigDataImp.cpp b/src/basics/Core/Input/ConfigData/ConfigDataImp.cpp
index 48836eaa43ceb17748f7f105cdb24f509d665534..35652c2eb74a7d2c91123ab83c04753e648828d7 100644
--- a/src/basics/Core/Input/ConfigData/ConfigDataImp.cpp
+++ b/src/basics/Core/Input/ConfigData/ConfigDataImp.cpp
@@ -87,10 +87,6 @@ ConfigDataImp::ConfigDataImp()
 
 }
 
-ConfigDataImp::~ConfigDataImp(void)
-{
-}
-
 real ConfigDataImp::getViscosity()
 {
 	return this->viscosity;
diff --git a/src/basics/Core/Input/ConfigData/ConfigDataImp.h b/src/basics/Core/Input/ConfigData/ConfigDataImp.h
index bcd518056d282b89475ae8471207e5f86fc07bc4..94d503b78c25eb980b4f1972cfb99fc159fb3dd5 100644
--- a/src/basics/Core/Input/ConfigData/ConfigDataImp.h
+++ b/src/basics/Core/Input/ConfigData/ConfigDataImp.h
@@ -10,93 +10,92 @@ class  ConfigDataImp : public ConfigData
 {
 public:
     static std::shared_ptr<ConfigDataImp> getNewInstance();
-    virtual ~ConfigDataImp(void);
 
-	real getViscosity();
-	uint getNumberOfDevices();
-	std::vector<uint> getDevices();
-	std::string getOutputPath();
-	std::string getPrefix();
-	std::string getGridPath();
-	bool getPrintOutputFiles();
-	bool getGeometryValues();
-	bool getCalc2ndOrderMoments();
-	bool getCalc3rdOrderMoments();
-	bool getCalcHighOrderMoments();
-	bool getReadGeo();
-	bool getCalcMedian();
-	bool getCalcDragLift();
-	bool getCalcCp();
-	bool getWriteVeloASCIIfiles();
-	bool getCalcPlaneConc();
-	bool getConcFile();
-	bool getStreetVelocityFile();
-	bool getUseMeasurePoints();
-	bool getUseWale();
-	bool getUseInitNeq();
-	bool getSimulatePorousMedia();
-	uint getD3Qxx();
-	uint getTEnd();
-	uint getTOut();
-	uint getTStartOut();
-	uint getTimeCalcMedStart();
-	uint getTimeCalcMedEnd();
-	uint getPressInID();
-	uint getPressOutID();
-	uint getPressInZ();
-	uint getPressOutZ();
-	bool getDiffOn();
-	uint getDiffMod();
-	real getDiffusivity();
-	real getTemperatureInit();
-	real getTemperatureBC();
-	real getVelocity();
-	real getViscosityRatio();
-	real getVelocityRatio();
-	real getDensityRatio();
-	real getPressRatio();
-	real getRealX();
-	real getRealY();
-	real getFactorPressBC();
-	std::string getGeometryFileC();
-	std::string getGeometryFileM();
-	std::string getGeometryFileF();
-	uint getClockCycleForMP();
-	uint getTimestepForMP();
-	real getForcingX();
-	real getForcingY();
-	real getForcingZ();
-    real getQuadricLimiterP();
-    real getQuadricLimiterM();
-    real getQuadricLimiterD();
-	bool getCalcParticles();
-	int getParticleBasicLevel();
-	int getParticleInitLevel();
-	int getNumberOfParticles();
-	real getStartXHotWall();
-	real getEndXHotWall();
-	std::vector<std::string> getPossNeighborFilesX();
-	std::vector<std::string> getPossNeighborFilesY();
-	std::vector<std::string> getPossNeighborFilesZ();
+	real getViscosity() override;
+	uint getNumberOfDevices() override;
+	std::vector<uint> getDevices() override;
+	std::string getOutputPath() override;
+	std::string getPrefix() override;
+	std::string getGridPath() override;
+	bool getPrintOutputFiles() override;
+	bool getGeometryValues() override;
+	bool getCalc2ndOrderMoments() override;
+	bool getCalc3rdOrderMoments() override;
+	bool getCalcHighOrderMoments() override;
+	bool getReadGeo() override;
+	bool getCalcMedian() override;
+	bool getCalcDragLift() override;
+	bool getCalcCp() override;
+	bool getWriteVeloASCIIfiles() override;
+	bool getCalcPlaneConc() override;
+	bool getConcFile() override;
+	bool getStreetVelocityFile() override;
+	bool getUseMeasurePoints() override;
+	bool getUseWale() override;
+	bool getUseInitNeq() override;
+	bool getSimulatePorousMedia() override;
+	uint getD3Qxx() override;
+	uint getTEnd() override;
+	uint getTOut() override;
+	uint getTStartOut() override;
+	uint getTimeCalcMedStart() override;
+	uint getTimeCalcMedEnd() override;
+	uint getPressInID() override;
+	uint getPressOutID() override;
+	uint getPressInZ() override;
+	uint getPressOutZ() override;
+	bool getDiffOn() override;
+	uint getDiffMod() override;
+	real getDiffusivity() override;
+	real getTemperatureInit() override;
+	real getTemperatureBC() override;
+	real getVelocity() override;
+	real getViscosityRatio() override;
+	real getVelocityRatio() override;
+	real getDensityRatio() override;
+	real getPressRatio() override;
+	real getRealX() override;
+	real getRealY() override;
+	real getFactorPressBC() override;
+	std::string getGeometryFileC() override;
+	std::string getGeometryFileM() override;
+	std::string getGeometryFileF() override;
+	uint getClockCycleForMP() override;
+	uint getTimestepForMP() override;
+	real getForcingX() override;
+	real getForcingY() override;
+	real getForcingZ() override;
+    real getQuadricLimiterP() override;
+    real getQuadricLimiterM() override;
+    real getQuadricLimiterD() override;
+	bool getCalcParticles() override;
+	int getParticleBasicLevel() override;
+	int getParticleInitLevel() override;
+	int getNumberOfParticles() override;
+	real getStartXHotWall() override;
+	real getEndXHotWall() override;
+	std::vector<std::string> getPossNeighborFilesX() override;
+	std::vector<std::string> getPossNeighborFilesY() override;
+	std::vector<std::string> getPossNeighborFilesZ() override;
 	//std::vector<std::string> getPossNeighborFilesX();
 	//std::vector<std::string> getPossNeighborFilesY();
 	//std::vector<std::string> getPossNeighborFilesZ();
-	int getTimeDoCheckPoint();
-	int getTimeDoRestart();
-	bool getDoCheckPoint();
-	bool getDoRestart();
-	uint getMaxLevel();
-	std::vector<int> getGridX();
-	std::vector<int> getGridY();
-	std::vector<int> getGridZ();
-	std::vector<int> getDistX();
-	std::vector<int> getDistY();
-	std::vector<int> getDistZ();
-	std::vector<bool> getNeedInterface();
-	std::string getMainKernel();
-	bool getMultiKernelOn();
-	std::vector<int> getMultiKernelLevel();
-	std::vector<std::string> getMultiKernelName();
+	int getTimeDoCheckPoint() override;
+	int getTimeDoRestart() override;
+	bool getDoCheckPoint() override;
+	bool getDoRestart() override;
+	uint getMaxLevel() override;
+	std::vector<int> getGridX() override;
+	std::vector<int> getGridY() override;
+	std::vector<int> getGridZ() override;
+	std::vector<int> getDistX() override;
+	std::vector<int> getDistY() override;
+	std::vector<int> getDistZ() override;
+	std::vector<bool> getNeedInterface() override;
+	std::string getMainKernel() override;
+	bool getMultiKernelOn() override;
+	std::vector<int> getMultiKernelLevel() override;
+	std::vector<std::string> getMultiKernelName() override;
 
 	void setViscosity(real viscosity);
 	void setNumberOfDevices(uint numberOfDevices);
@@ -185,90 +184,90 @@ public:
 	void setMultiKernelLevel(std::vector<int> multiKernelLevel);
 	void setMultiKernelName(std::vector<std::string> multiKernelName);
 
-	bool isViscosityInConfigFile();
-	bool isNumberOfDevicesInConfigFile();
-	bool isDevicesInConfigFile();
-	bool isOutputPathInConfigFile();
-	bool isPrefixInConfigFile();
-	bool isGridPathInConfigFile();
-	bool isPrintOutputFilesInConfigFile();
-	bool isGeometryValuesInConfigFile();
-	bool isCalc2ndOrderMomentsInConfigFile();
-	bool isCalc3rdOrderMomentsInConfigFile();
-	bool isCalcHighOrderMomentsInConfigFile();
-	bool isReadGeoInConfigFile();
-	bool isCalcMedianInConfigFile();
-	bool isCalcDragLiftInConfigFile();
-	bool isCalcCpInConfigFile();
-	bool isWriteVeloASCIIfilesInConfigFile();
-	bool isCalcPlaneConcInConfigFile();
-	bool isConcFileInConfigFile();
-	bool isStreetVelocityFileInConfigFile();
-	bool isUseMeasurePointsInConfigFile();
-	bool isUseWaleInConfigFile();
-	bool isUseInitNeqInConfigFile();
-	bool isSimulatePorousMediaInConfigFile();
-	bool isD3QxxInConfigFile();
-	bool isTEndInConfigFile();
-	bool isTOutInConfigFile();
-	bool isTStartOutInConfigFile();
-	bool isTimeCalcMedStartInConfigFile();
-	bool isTimeCalcMedEndInConfigFile();
-	bool isPressInIDInConfigFile();
-	bool isPressOutIDInConfigFile();
-	bool isPressInZInConfigFile();
-	bool isPressOutZInConfigFile();
-	bool isDiffOnInConfigFile();
-	bool isDiffModInConfigFile();
-	bool isDiffusivityInConfigFile();
-	bool isTemperatureInitInConfigFile();
-	bool isTemperatureBCInConfigFile();
+	bool isViscosityInConfigFile() override;
+	bool isNumberOfDevicesInConfigFile() override;
+	bool isDevicesInConfigFile() override;
+	bool isOutputPathInConfigFile() override;
+	bool isPrefixInConfigFile() override;
+	bool isGridPathInConfigFile() override;
+	bool isPrintOutputFilesInConfigFile() override;
+	bool isGeometryValuesInConfigFile() override;
+	bool isCalc2ndOrderMomentsInConfigFile() override;
+	bool isCalc3rdOrderMomentsInConfigFile() override;
+	bool isCalcHighOrderMomentsInConfigFile() override;
+	bool isReadGeoInConfigFile() override;
+	bool isCalcMedianInConfigFile() override;
+	bool isCalcDragLiftInConfigFile() override;
+	bool isCalcCpInConfigFile() override;
+	bool isWriteVeloASCIIfilesInConfigFile() override;
+	bool isCalcPlaneConcInConfigFile() override;
+	bool isConcFileInConfigFile() override;
+	bool isStreetVelocityFileInConfigFile() override;
+	bool isUseMeasurePointsInConfigFile() override;
+	bool isUseWaleInConfigFile() override;
+	bool isUseInitNeqInConfigFile() override;
+	bool isSimulatePorousMediaInConfigFile() override;
+	bool isD3QxxInConfigFile() override;
+	bool isTEndInConfigFile() override;
+	bool isTOutInConfigFile() override;
+	bool isTStartOutInConfigFile() override;
+	bool isTimeCalcMedStartInConfigFile() override;
+	bool isTimeCalcMedEndInConfigFile() override;
+	bool isPressInIDInConfigFile() override;
+	bool isPressOutIDInConfigFile() override;
+	bool isPressInZInConfigFile() override;
+	bool isPressOutZInConfigFile() override;
+	bool isDiffOnInConfigFile() override;
+	bool isDiffModInConfigFile() override;
+	bool isDiffusivityInConfigFile() override;
+	bool isTemperatureInitInConfigFile() override;
+	bool isTemperatureBCInConfigFile() override;
 	//bool isViscosityInConfigFile();
-	bool isVelocityInConfigFile();
-	bool isViscosityRatioInConfigFile();
-	bool isVelocityRatioInConfigFile();
-	bool isDensityRatioInConfigFile();
-	bool isPressRatioInConfigFile();
-	bool isRealXInConfigFile();
-	bool isRealYInConfigFile();
-	bool isFactorPressBCInConfigFile();
-	bool isGeometryFileCInConfigFile();
-	bool isGeometryFileMInConfigFile();
-	bool isGeometryFileFInConfigFile();
-	bool isClockCycleForMPInConfigFile();
-	bool isTimestepForMPInConfigFile();
-	bool isForcingXInConfigFile();
-	bool isForcingYInConfigFile();
-	bool isForcingZInConfigFile();
-	bool isQuadricLimiterPInConfigFile();
-	bool isQuadricLimiterMInConfigFile();
-	bool isQuadricLimiterDInConfigFile();
-	bool isCalcParticlesInConfigFile();
-	bool isParticleBasicLevelInConfigFile();
-	bool isParticleInitLevelInConfigFile();
-	bool isNumberOfParticlesInConfigFile();
-	bool isNeighborWSBInConfigFile();
-	bool isStartXHotWallInConfigFile();
-	bool isEndXHotWallInConfigFile();
-	bool isPossNeighborFilesXInConfigFile();
-	bool isPossNeighborFilesYInConfigFile();
-	bool isPossNeighborFilesZInConfigFile();
-	bool isTimeDoCheckPointInConfigFile();
-	bool isTimeDoRestartInConfigFile();
-	bool isDoCheckPointInConfigFile();
-	bool isDoRestartInConfigFile();
-	bool isMaxLevelInConfigFile();
-	bool isGridXInConfigFile();
-	bool isGridYInConfigFile();
-	bool isGridZInConfigFile();
-	bool isDistXInConfigFile();
-	bool isDistYInConfigFile();
-	bool isDistZInConfigFile();
-	bool isNeedInterfaceInConfigFile();
-	bool isMainKernelInConfigFile();
-	bool isMultiKernelOnInConfigFile();
-	bool isMultiKernelLevelInConfigFile();
-	bool isMultiKernelNameInConfigFile();
+	bool isVelocityInConfigFile() override;
+	bool isViscosityRatioInConfigFile() override;
+	bool isVelocityRatioInConfigFile() override;
+	bool isDensityRatioInConfigFile() override;
+	bool isPressRatioInConfigFile() override;
+	bool isRealXInConfigFile() override;
+	bool isRealYInConfigFile() override;
+	bool isFactorPressBCInConfigFile() override;
+	bool isGeometryFileCInConfigFile() override;
+	bool isGeometryFileMInConfigFile() override;
+	bool isGeometryFileFInConfigFile() override;
+	bool isClockCycleForMPInConfigFile() override;
+	bool isTimestepForMPInConfigFile() override;
+	bool isForcingXInConfigFile() override;
+	bool isForcingYInConfigFile() override;
+	bool isForcingZInConfigFile() override;
+	bool isQuadricLimiterPInConfigFile() override;
+	bool isQuadricLimiterMInConfigFile() override;
+	bool isQuadricLimiterDInConfigFile() override;
+	bool isCalcParticlesInConfigFile() override;
+	bool isParticleBasicLevelInConfigFile() override;
+	bool isParticleInitLevelInConfigFile() override;
+	bool isNumberOfParticlesInConfigFile() override;
+	bool isNeighborWSBInConfigFile() override;
+	bool isStartXHotWallInConfigFile() override;
+	bool isEndXHotWallInConfigFile() override;
+	bool isPossNeighborFilesXInConfigFile() override;
+	bool isPossNeighborFilesYInConfigFile() override;
+	bool isPossNeighborFilesZInConfigFile() override;
+	bool isTimeDoCheckPointInConfigFile() override;
+	bool isTimeDoRestartInConfigFile() override;
+	bool isDoCheckPointInConfigFile() override;
+	bool isDoRestartInConfigFile() override;
+	bool isMaxLevelInConfigFile() override;
+	bool isGridXInConfigFile() override;
+	bool isGridYInConfigFile() override;
+	bool isGridZInConfigFile() override;
+	bool isDistXInConfigFile() override;
+	bool isDistYInConfigFile() override;
+	bool isDistZInConfigFile() override;
+	bool isNeedInterfaceInConfigFile() override;
+	bool isMainKernelInConfigFile() override;
+	bool isMultiKernelOnInConfigFile() override;
+	bool isMultiKernelLevelInConfigFile() override;
+	bool isMultiKernelNameInConfigFile() override;
 
 
 private:
diff --git a/src/basics/Core/Input/ConfigFileReader/ConfigFileReader.cpp b/src/basics/Core/Input/ConfigFileReader/ConfigFileReader.cpp
index 1053a7f5fcb2feb6280ebdbe563bd1a9c7196424..4bdf8669b1ed481e64d1059d1479f05cae7e164d 100644
--- a/src/basics/Core/Input/ConfigFileReader/ConfigFileReader.cpp
+++ b/src/basics/Core/Input/ConfigFileReader/ConfigFileReader.cpp
@@ -13,14 +13,10 @@ BASICS_EXPORT std::shared_ptr<ConfigFileReader> ConfigFileReader::getNewInstance
 }
 
 ConfigFileReader::ConfigFileReader()
-{
-
-}
+= default;
 
 BASICS_EXPORT ConfigFileReader::~ConfigFileReader()
-{
-
-}
+= default;
 
 BASICS_EXPORT std::shared_ptr<ConfigData> ConfigFileReader::readConfigFile(const std::string &filePath) const
 {
diff --git a/src/basics/Core/Input/ConfigFileReader/ConfigFileReader.h b/src/basics/Core/Input/ConfigFileReader/ConfigFileReader.h
index b33e0935ba1090ca8c243772a1d9a4fefd2e54d6..6dd241967652c9246640458e4fd1283766c32701 100644
--- a/src/basics/Core/Input/ConfigFileReader/ConfigFileReader.h
+++ b/src/basics/Core/Input/ConfigFileReader/ConfigFileReader.h
@@ -11,7 +11,7 @@ class  ConfigFileReader
 {
 public:
     BASICS_EXPORT static std::shared_ptr<ConfigFileReader> getNewInstance();
-    BASICS_EXPORT virtual ~ConfigFileReader(void);
+    BASICS_EXPORT virtual ~ConfigFileReader();
 
     BASICS_EXPORT std::shared_ptr<ConfigData> readConfigFile(const std::string &filePath) const;
 
diff --git a/src/basics/Core/Input/ConfigInput/ConfigInput.cpp b/src/basics/Core/Input/ConfigInput/ConfigInput.cpp
index ce8ea0401d1baf6a44fa174022576eaa7df59149..d894bcc28bd179e0c63b0f2ddf26adc9c070de36 100644
--- a/src/basics/Core/Input/ConfigInput/ConfigInput.cpp
+++ b/src/basics/Core/Input/ConfigInput/ConfigInput.cpp
@@ -1,5 +1,5 @@
 #include "ConfigInput.h"
-#include <errno.h>
+#include <cerrno>
 #include <algorithm>
 #include <sstream>
 #include <iostream>
@@ -37,9 +37,7 @@ namespace input
     }
 
     ConfigInput::~ConfigInput()
-    {
-
-    }
+    = default;
 
     bool ConfigInput::hasValue(const std::string &key) const
     {
@@ -67,7 +65,7 @@ namespace input
 
     void ConfigInput::makeLower(std::string &value) const
     {
-        for (unsigned i = 0; i < value.size(); i++)
+        for (size_t i = 0; i < value.size(); i++)
             value[i] = tolower(value[i]);
     }
 
diff --git a/src/basics/Core/Input/ConfigInput/ConfigInput.h b/src/basics/Core/Input/ConfigInput/ConfigInput.h
index 2ec97c14abe91e49a8d4945b50157c7d6b2cf993..d01e1b8128366ad5bd4287937b8f7c5577237528 100644
--- a/src/basics/Core/Input/ConfigInput/ConfigInput.h
+++ b/src/basics/Core/Input/ConfigInput/ConfigInput.h
@@ -16,10 +16,10 @@ namespace input
     {
     public:
         BASICS_EXPORT ConfigInput(std::istream &stream);
-        BASICS_EXPORT virtual ~ConfigInput(void);
+        BASICS_EXPORT ~ConfigInput() override;
    
-        BASICS_EXPORT bool hasValue(const std::string &key) const;
-        BASICS_EXPORT std::string getValue(const std::string &key);
+        BASICS_EXPORT bool hasValue(const std::string &key) const override;
+        BASICS_EXPORT std::string getValue(const std::string &key) override;
 
     protected:
         virtual void setTokenValuePair();
@@ -41,7 +41,7 @@ namespace input
 
     protected:
         std::istream &stream;
-        typedef std::pair <std::string, std::string> String_Pair;
+        using String_Pair = std::pair <std::string, std::string>;
         std::map<std::string, std::string> configEntries;
     };
 }
diff --git a/src/basics/Core/Input/Input.cpp b/src/basics/Core/Input/Input.cpp
index f5b3798e070cf60e024484efb2c1ef91978b26b1..4d2aee7de00d2e74727246f3720616a653aabc81 100644
--- a/src/basics/Core/Input/Input.cpp
+++ b/src/basics/Core/Input/Input.cpp
@@ -1,5 +1,7 @@
 #include "Input.h"
 
+#include <memory>
+
 #ifdef BUILD_JSONCPP
 #include "JsonInput/JsonInput.h"
 #endif
@@ -9,16 +11,14 @@
 namespace input
 {
 
-    std::unique_ptr<input::Input> Input::makeInput(std::istream &stream, const std::string &inputType)
+    std::unique_ptr<input::Input> Input::makeInput(std::istream &stream, const std::string & /*inputType*/)
     {
 #ifdef BUILD_JSONCPP
         if(inputType == "json")
             return std::unique_ptr<Input>(new JsonInput(stream));
 #endif
-         
-        // changed by St. Lenz: make_unique<...> is C++ 14 standard!
-        //return std::make_unique<ConfigInput>(stream);
-        return std::unique_ptr<ConfigInput>(new ConfigInput(stream));
+
+        return std::make_unique<ConfigInput>(stream);
     }
 
 }
diff --git a/src/basics/Core/Logger/Logger.cpp b/src/basics/Core/Logger/Logger.cpp
index 95c577bfd1f3d1a42fdeaa9650e4bbe51f8cf098..f7a9b2a1ec2ceb788840d918bbe08fff1e757795 100644
--- a/src/basics/Core/Logger/Logger.cpp
+++ b/src/basics/Core/Logger/Logger.cpp
@@ -23,9 +23,7 @@ namespace logging {
     }
 
     logging::Logger::~Logger()
-    {
-
-    }
+    = default;
 
     void Logger::addStreamToList(std::ostream* stream)
     {
diff --git a/src/basics/Core/Logger/implementations/LoggerImp.cpp b/src/basics/Core/Logger/implementations/LoggerImp.cpp
index b06523afbcee1fc26b8008a7b08ebdf82d68b579..48ad23a3082539706fa70b5d4ae895b35b0a7782 100644
--- a/src/basics/Core/Logger/implementations/LoggerImp.cpp
+++ b/src/basics/Core/Logger/implementations/LoggerImp.cpp
@@ -17,9 +17,7 @@ logging::LoggerImp::LoggerImp(std::ostream* stream) : logging::Logger(stream)
 }
 
 logging::LoggerImp::~LoggerImp()
-{
-
-}
+= default;
 
 logging::Logger& logging::LoggerImp::operator<<(const Level &level)
 {
diff --git a/src/basics/Core/Logger/implementations/LoggerImp.h b/src/basics/Core/Logger/implementations/LoggerImp.h
index 397c9095fe22f3c018352a5c92b612949b77b36f..851f294640d887be8d4ac32d17130c6713d13eac 100644
--- a/src/basics/Core/Logger/implementations/LoggerImp.h
+++ b/src/basics/Core/Logger/implementations/LoggerImp.h
@@ -16,7 +16,7 @@ namespace logging
     {
     public:
         LoggerImp(std::ostream* stream);
-        virtual ~LoggerImp();
+        ~LoggerImp() override;
 
         Logger& operator<<(const Level &level) override;
         Logger& operator<<(const std::string &message) override;
diff --git a/src/basics/Core/StringUtilities/StringUtil.cpp b/src/basics/Core/StringUtilities/StringUtil.cpp
index 42e8669c3e907c6f149b9bd4418a12fe73e7d211..8fd31c718b9426086ffa3866083f7f4949b1efdc 100644
--- a/src/basics/Core/StringUtilities/StringUtil.cpp
+++ b/src/basics/Core/StringUtilities/StringUtil.cpp
@@ -74,7 +74,7 @@ double StringUtil::toDouble(const std::string &input)
 
 bool StringUtil::toBool(const std::string &input)
 {
-    bool b = 0;
+    bool b {false};
     std::string trimmedInput = trim(input);
     if (!toBool(b, trimmedInput, std::boolalpha))
         throw "StringUtils::toBool() - Not a bool: " + trimmedInput;
@@ -143,7 +143,7 @@ std::vector<bool> StringUtil::toBoolVector(const std::string & input)
     inputEntries = split(input, " \n\t");
 	for(std::string entry : inputEntries)
 	{
-		bool b = 0;
+		bool b {false};
 		std::string trimmedInput = trim(input);
 		if (toBool(b, trimmedInput, std::noboolalpha))
 			v.push_back(b);
diff --git a/src/basics/Core/StringUtilities/StringUtil.h b/src/basics/Core/StringUtilities/StringUtil.h
index e860418cb826b800701c1ede60a378fa07f8cf92..63ee9e965737e6fdfdb91d17bd6b158c76634453 100644
--- a/src/basics/Core/StringUtilities/StringUtil.h
+++ b/src/basics/Core/StringUtilities/StringUtil.h
@@ -37,9 +37,9 @@ public:
     static BASICS_EXPORT bool endsWith(const std::string &input, const std::string &end);
 
 private:
-    StringUtil() {};
-    StringUtil(const StringUtil&) {};
-    virtual ~StringUtil() {};
+    StringUtil() = default;;
+    StringUtil(const StringUtil&) = default;;
+    virtual ~StringUtil() = default;;
 
     static bool toBool(bool &t, const std::string &input, std::ios_base &(*f)(std::ios_base&));
 };
diff --git a/src/basics/Core/Timer/TimerImp.h b/src/basics/Core/Timer/TimerImp.h
index 9cda82fb059e6a1dcb719aba8a4a972c4b363e9c..9759b9daac566fe23c04235105357ea9770457a7 100644
--- a/src/basics/Core/Timer/TimerImp.h
+++ b/src/basics/Core/Timer/TimerImp.h
@@ -12,7 +12,7 @@
 class BASICS_EXPORT TimerImp : public Timer
 {
 public:
-    typedef std::chrono::high_resolution_clock::time_point timePoint;
+    using timePoint = std::chrono::high_resolution_clock::time_point;
 
     void start() override;
     void end() override;
diff --git a/src/basics/Core/VectorTypes.cpp b/src/basics/Core/VectorTypes.cpp
index 5abd02cfe84c5707a6ad6cc7fdfd71924dc4d0fc..59c3d80c8cbfae3f177484a8378edf50bfdbb86e 100644
--- a/src/basics/Core/VectorTypes.cpp
+++ b/src/basics/Core/VectorTypes.cpp
@@ -2,19 +2,19 @@
 
 //Vec3 Vec3::operator+( Vec3& left, Vec3& right ){
 Vec3 Vec3::operator+( Vec3& right ){
-    return Vec3( this->x + right.x, 
+    return { this->x + right.x, 
                  this->y + right.y, 
-                 this->z + right.z );
+                 this->z + right.z };
 }
 
 Vec3 Vec3::operator-( Vec3& right ){
-    return Vec3( this->x - right.x, 
+    return { this->x - right.x, 
                  this->y - right.y, 
-                 this->z - right.z );
+                 this->z - right.z };
 }
 
 Vec3 operator*( real scalar, Vec3& vec ){
-    return Vec3( scalar * vec.x, 
+    return { scalar * vec.x, 
                  scalar * vec.y, 
-                 scalar * vec.z );
+                 scalar * vec.z };
 }
diff --git a/src/basics/Core/VectorTypes.h b/src/basics/Core/VectorTypes.h
index dd4b26779c594ca4bdb9a0f57268ce879026a3fb..d59771bf9934d59431ed3c3f408defc7950c02cd 100644
--- a/src/basics/Core/VectorTypes.h
+++ b/src/basics/Core/VectorTypes.h
@@ -16,10 +16,10 @@
 #include "RealConstants.h"
 
 struct BASICS_EXPORT Vec3 {
-    real x, y, z; 
+    real x{c0o1}, y{c0o1}, z{c0o1}; 
 
     __host__ __device__ Vec3(real x, real y, real z) : x(x), y(y), z(z) {}
-    __host__ __device__ Vec3() : x(c0o1), y(c0o1), z(c0o1) {}
+    __host__ __device__ Vec3()  = default;
 
     __host__ __device__ real length() {
         return std::sqrt( x*x + y*y + z*z );
diff --git a/src/basics/basics/container/CbArray2D.h b/src/basics/basics/container/CbArray2D.h
index c4c115c29321073b4f56dccf27ebd53507c93b20..107bc386f964b2276ccb0ece2bf022d139b757c6 100644
--- a/src/basics/basics/container/CbArray2D.h
+++ b/src/basics/basics/container/CbArray2D.h
@@ -53,13 +53,13 @@
 class IndexerX2X1
 {
 public:
-   typedef int size_type;
+   using size_type = int;
 public:
-   inline std::size_t getIndex(const size_type& x1, const size_type& x2, const size_type& nx1, const size_type& nx2) const
+   inline std::size_t getIndex(const size_type& x1, const size_type& x2, const size_type& nx1, const size_type&  /*nx2*/) const
    {
       return nx1* x2 + x1;
    }
-   inline std::size_t getStartIndexOfSortedArray(const size_type& x1, const size_type& x2, const size_type& nx1, const size_type& nx2) const
+   inline std::size_t getStartIndexOfSortedArray(const size_type&  /*x1*/, const size_type& x2, const size_type& nx1, const size_type&  /*nx2*/) const
    {
       return  nx1* x2;
    }
@@ -74,13 +74,13 @@ public:
 class IndexerX1X2
 {
 public:
-   typedef int size_type;
+   using size_type = int;
 public:
-   inline std::size_t getIndex(const size_type& x1, const size_type& x2, const size_type& nx1,const size_type& nx2) const
+   inline std::size_t getIndex(const size_type& x1, const size_type& x2, const size_type&  /*nx1*/,const size_type& nx2) const
    {
       return nx2* x1+ x2;
    }
-   inline std::size_t getStartIndexOfSortedArray(const size_type& x1, const size_type& x2, const size_type& nx1, const size_type& nx2) const
+   inline std::size_t getStartIndexOfSortedArray(const size_type& x1, const size_type&  /*x2*/, const size_type&  /*nx1*/, const size_type& nx2) const
    {
       return  nx2* x1;
    }
@@ -104,13 +104,13 @@ template<typename T, typename IndexClass = IndexerX2X1>
 class CbArray2D
 {
 public:
-   typedef T                                                   value_type;
-   typedef IndexClass                                          indexer_type;
-   typedef typename IndexClass::size_type                      size_type;
-   typedef typename std::vector< value_type >::reference       reference;
-   typedef typename std::vector< value_type >::const_reference const_reference;
-   typedef typename std::vector< value_type >::pointer         pointer;
-   typedef typename std::vector< value_type >::const_pointer   const_pointer;
+   using value_type = T;
+   using indexer_type = IndexClass;
+   using size_type = typename IndexClass::size_type;
+   using reference = typename std::vector<value_type>::reference;
+   using const_reference = typename std::vector<value_type>::const_reference;
+   using pointer = typename std::vector<value_type>::pointer;
+   using const_pointer = typename std::vector<value_type>::const_pointer;
 
 private:
    template< typename value_type2, typename IndexClass2 > friend class CbArray2D;
@@ -163,10 +163,7 @@ public:
          this->data[i] = src.data[i];
    }
    /*=======================================================================*/
-   virtual ~CbArray2D()
-   {
-      //vector wird automatisch zerstoert
-   }
+   virtual ~CbArray2D() = default;
    /*=======================================================================*/
    CbArray2D& operator= (const CbArray2D& rhs)
    {
diff --git a/src/basics/basics/container/CbArray3D.h b/src/basics/basics/container/CbArray3D.h
index f8ad3e8c9e114729bcaa1e6bfa67fa2c9cceba0d..103cc6110574328bfc673843d78c02563fdd5b66 100644
--- a/src/basics/basics/container/CbArray3D.h
+++ b/src/basics/basics/container/CbArray3D.h
@@ -56,15 +56,15 @@
 class IndexerX3X2X1// FunctorX1SortedForX1X2Plane
 {
 public:
-   typedef size_t size_type;
+   using size_type = size_t;
 public:
    inline std::size_t getIndex(  const size_type& x1 , const size_type& x2 , const size_type& x3
-                               , const size_type& nx1, const size_type& nx2, const size_type& nx3 ) const
+                               , const size_type& nx1, const size_type& nx2, const size_type&  /*nx3*/ ) const
    {
       return  nx1 * ( nx2 * x3 + x2) + x1 ;
    }
-   inline std::size_t getStartIndexOfSortedArray(  const size_type& x1 , const size_type& x2 , const size_type& x3
-                                                 , const size_type& nx1, const size_type& nx2, const size_type& nx3 ) const
+   inline std::size_t getStartIndexOfSortedArray(  const size_type&  /*x1*/ , const size_type& x2 , const size_type& x3
+                                                 , const size_type& nx1, const size_type& nx2, const size_type&  /*nx3*/ ) const
    {
       return  nx1 * ( nx2 * x3 + x2);
    }
@@ -80,15 +80,15 @@ public:
 class IndexerX1X2X3 //FunctorX3SortedForX3X2Plane
 {
 public:
-   typedef size_t size_type;
+   using size_type = size_t;
 public:
    inline std::size_t getIndex(  const size_type& x1 , const size_type& x2 , const size_type& x3
-                               , const size_type& nx1, const size_type& nx2, const size_type& nx3 ) const
+                               , const size_type&  /*nx1*/, const size_type& nx2, const size_type& nx3 ) const
    {
       return  nx3 * ( nx2 * x1 + x2) + x3 ;
    }
-   inline std::size_t getStartIndexOfSortedArray(  const size_type& x1 , const size_type& x2 , const size_type& x3
-                                                 , const size_type& nx1, const size_type& nx2, const size_type& nx3 ) const
+   inline std::size_t getStartIndexOfSortedArray(  const size_type& x1 , const size_type& x2 , const size_type&  /*x3*/
+                                                 , const size_type&  /*nx1*/, const size_type& nx2, const size_type& nx3 ) const
    {
       return  nx3 * ( nx2 * x1 + x2);
    }
@@ -104,15 +104,15 @@ public:
 class IndexerX2X1X3
 {
 public:
-   typedef size_t size_type;
+   using size_type = size_t;
 public:
    inline std::size_t getIndex(  const size_type& x1 , const size_type& x2 , const size_type& x3
-                               , const size_type& nx1, const size_type& nx2, const size_type& nx3 ) const
+                               , const size_type& nx1, const size_type&  /*nx2*/, const size_type& nx3 ) const
    {
       return  nx3* ( nx1 * x2 + x1) + x3 ;
    }
-   inline std::size_t getStartIndexOfSortedArray(  const size_type& x1 , const size_type& x2 , const size_type& x3
-                                                 , const size_type& nx1, const size_type& nx2, const size_type& nx3 ) const
+   inline std::size_t getStartIndexOfSortedArray(  const size_type& x1 , const size_type& x2 , const size_type&  /*x3*/
+                                                 , const size_type& nx1, const size_type&  /*nx2*/, const size_type& nx3 ) const
    {
       return  nx3* ( nx1 * x2 + x1);
    }
@@ -136,15 +136,15 @@ template<typename T, typename IndexClass = IndexerX3X2X1>
 class CbArray3D
 {
 public:
-   typedef SPtr< CbArray3D <T,IndexClass> > CbArray3DPtr;
+   using CbArray3DPtr = SPtr<CbArray3D<T, IndexClass> >;
 
-   typedef T                                                   value_type;
-   typedef IndexClass                                          indexer_type;
-   typedef typename IndexClass::size_type                      size_type;
-   typedef typename std::vector< value_type >::reference       reference;
-   typedef typename std::vector< value_type >::const_reference const_reference;
-   typedef typename std::vector< value_type >::pointer         pointer;
-   typedef typename std::vector< value_type >::const_pointer   const_pointer;
+   using value_type = T;
+   using indexer_type = IndexClass;
+   using size_type = typename IndexClass::size_type;
+   using reference = typename std::vector<value_type>::reference;
+   using const_reference = typename std::vector<value_type>::const_reference;
+   using pointer = typename std::vector<value_type>::pointer;
+   using const_pointer = typename std::vector<value_type>::const_pointer;
 
 private:
    template< typename value_type2, typename IndexClass2 > friend class CbArray3D;
@@ -199,10 +199,7 @@ public:
          this->data[i] = src.data[i];
    }
    /*=======================================================================*/
-   virtual ~CbArray3D()
-   {
-      //vector wird automatisch zerstoert
-   }
+   virtual ~CbArray3D() = default;
    /*=======================================================================*/
    CbArray3D& operator= (const CbArray3D& rhs)
    {
diff --git a/src/basics/basics/container/CbArray4D.h b/src/basics/basics/container/CbArray4D.h
index 21579b0da97abf5a7bb062d17f4cc03b3fefaaef..16c5542323de11ab72c3598e5b6fa03ed475e18e 100644
--- a/src/basics/basics/container/CbArray4D.h
+++ b/src/basics/basics/container/CbArray4D.h
@@ -56,15 +56,15 @@
 class IndexerX1X2X3X4
 {
 public:
-   typedef int size_type;
+   using size_type = int;
 public:
    inline std::size_t getIndex( const size_type& x1 , const size_type& x2 , const size_type& x3 , const size_type& x4
-                            , const size_type& nx1, const size_type& nx2, const size_type& nx3, const size_type& nx4 )  const
+                            , const size_type&  /*nx1*/, const size_type& nx2, const size_type& nx3, const size_type& nx4 )  const
    {
       return nx4*(nx3*(nx2*x1+ x2)+x3)+x4 ;
    }
-   inline std::size_t getStartIndexOfSortedArray(  const size_type& x1 , const size_type& x2 , const size_type& x3 , const size_type& x4
-                                               , const size_type& nx1, const size_type& nx2, const size_type& nx3, const size_type& nx4 )  const
+   inline std::size_t getStartIndexOfSortedArray(  const size_type& x1 , const size_type& x2 , const size_type& x3 , const size_type&  /*x4*/
+                                               , const size_type&  /*nx1*/, const size_type& nx2, const size_type& nx3, const size_type& nx4 )  const
    {
       return  nx4*(nx3*(nx2*x1+ x2)+x3);
    }
@@ -82,15 +82,15 @@ public:
 class IndexerX4X3X2X1
 {
 public:
-   typedef size_t size_type;
+   using size_type = size_t;
 public:
    inline std::size_t getIndex( const size_type& x1 , const size_type& x2 , const size_type& x3 , const size_type& x4
-      , const size_type& nx1, const size_type& nx2, const size_type& nx3, const size_type& nx4 )  const
+      , const size_type& nx1, const size_type& nx2, const size_type& nx3, const size_type&  /*nx4*/ )  const
    {
       return nx1*(nx2*(nx3*x4+ x3)+x2)+x1;
    }
-   inline std::size_t getStartIndexOfSortedArray(  const size_type& x1 , const size_type& x2 , const size_type& x3 , const size_type& x4
-      , const size_type& nx1, const size_type& nx2, const size_type& nx3, const size_type& nx4 )  const
+   inline std::size_t getStartIndexOfSortedArray(  const size_type&  /*x1*/ , const size_type& x2 , const size_type& x3 , const size_type& x4
+      , const size_type& nx1, const size_type& nx2, const size_type& nx3, const size_type&  /*nx4*/ )  const
    {
       return  nx1*(nx2*(nx3*x4+ x3)+x2);
    }
@@ -110,15 +110,15 @@ template<typename T, typename IndexClass = IndexerX4X3X2X1>
 class CbArray4D
 {
 public:
-   typedef SPtr< CbArray4D <T,IndexClass> > CbArray4DPtr;
+   using CbArray4DPtr = SPtr<CbArray4D<T, IndexClass> >;
 
-   typedef T                                                   value_type;
-   typedef IndexClass                                          indexer_type;
-   typedef typename IndexClass::size_type                      size_type;
-   typedef typename std::vector< value_type >::reference       reference;
-   typedef typename std::vector< value_type >::const_reference const_reference;
-   typedef typename std::vector< value_type >::pointer         pointer;
-   typedef typename std::vector< value_type >::const_pointer   const_pointer;
+   using value_type = T;
+   using indexer_type = IndexClass;
+   using size_type = typename IndexClass::size_type;
+   using reference = typename std::vector<value_type>::reference;
+   using const_reference = typename std::vector<value_type>::const_reference;
+   using pointer = typename std::vector<value_type>::pointer;
+   using const_pointer = typename std::vector<value_type>::const_pointer;
 
 private:
    template< typename value_type2, typename IndexClass2 > friend class CbArray4D;
@@ -175,10 +175,7 @@ public:
          this->data[i] = src.data[i];
    }
    /*=======================================================================*/
-   virtual ~CbArray4D()
-   {
-      //vector wird automatisch zerstoert
-   }
+   virtual ~CbArray4D()= default;
    /*=======================================================================*/
    CbArray4D& operator= (const CbArray4D& rhs)
    {
diff --git a/src/basics/basics/container/CbVector.h b/src/basics/basics/container/CbVector.h
index d0fc6144d0762b58d823fa4abbecfbf7c61a7aa3..49ccfcfacbd25d47bcfafa1c52f10cfe6a0c139c 100644
--- a/src/basics/basics/container/CbVector.h
+++ b/src/basics/basics/container/CbVector.h
@@ -63,26 +63,27 @@ template< typename T >
 class CbVector
 {
 public:
-   typedef T           value_type;
-   typedef value_type* pointer;
-   typedef std::size_t size_type;
+   using value_type = T;
+   using pointer = value_type *;
+   using size_type = std::size_t;
 
    friend class CbVectorAllocator<value_type>; //um auf ptrData und dataSize zugreifen zu koennen!
 
+    CbVector<value_type>(const CbVector<value_type>& src) = delete;
 public:
    /*==========================================================*/
    CbVector( CbVectorAllocator<value_type>* const& allocator = new CbVectorAllocatorStd<value_type> )
       :  ptrData(NULL)
-       , dataSize(0)
-       , allocator(allocator)
+       , 
+        allocator(allocator)
    {
       this->allocator->alloc(*this,0,value_type());
    }
    /*==========================================================*/
    CbVector( const size_type size, CbVectorAllocator<value_type>* const& allocator = new CbVectorAllocatorStd<value_type>, const value_type& value=value_type() )
       :  ptrData(NULL)
-       , dataSize(0)
-       , allocator(allocator)
+       , 
+        allocator(allocator)
    {
       this->allocator->alloc(*this,size,value);
    }
@@ -99,7 +100,8 @@ public:
    /*=======================================================================*/
    CbVector& operator= (const CbVector& src)
    {
-      if(this == &src) return *this;
+      if(this == &src)
+          return *this;
 
       //gespeicherte Datenelemente loeschen
       //Laenge anpassen
@@ -205,9 +207,8 @@ public:
 
 private:
    value_type* ptrData;
-   size_type   dataSize;
+   size_type   dataSize{0};
    CbVectorAllocator<value_type>* allocator;
-   CbVector<value_type>(const CbVector<value_type>& src);
    //CbVector<value_type>& operator=(const CbVector<value_type>& src);
 };
 
@@ -218,12 +219,12 @@ template< typename T >
 class CbVectorAllocator
 {
 public:
-   typedef typename CbVector<T>::value_type          value_type;
-   typedef typename CbVector<value_type>::size_type  size_type;
+   using value_type = typename CbVector<T>::value_type;
+   using size_type = typename CbVector<value_type>::size_type;
 
 public:
-   CbVectorAllocator() {}
-   virtual ~CbVectorAllocator() {}
+   CbVectorAllocator() = default;
+   virtual ~CbVectorAllocator() = default;
 
    virtual bool alloc(CbVector< value_type >& vec, const size_type& dataSize, const value_type& value=value_type()) = 0;
    virtual bool resize(CbVector< value_type >& vec, const size_type& dataSize, const value_type& value=value_type()) = 0;
@@ -254,8 +255,8 @@ class CbVectorAllocatorStd : public CbVectorAllocator<T>
 {
 public:
    //typedefs wiederholen, da Basisklasse = template -> "Dependent-Base"-Problem
-   typedef typename CbVector<T>::value_type          value_type;
-   typedef typename CbVector<value_type>::size_type  size_type;
+   using value_type = typename CbVector<T>::value_type;
+   using size_type = typename CbVector<value_type>::size_type;
 
 public:
    CbVectorAllocatorStd() : CbVectorAllocator<value_type>()
@@ -263,12 +264,12 @@ public:
 
    }
    /*==========================================================*/
-   bool alloc(CbVector< value_type >& src, const size_type& dataSize, const value_type& value=value_type())
+   bool alloc(CbVector< value_type >& src, const size_type& dataSize, const value_type& value=value_type()) override
    {
       return this->resize(src,dataSize,value);
    }
    /*==========================================================*/
-   bool resize(CbVector< value_type >& vec, const size_type& dataSize, const value_type& value=value_type())
+   bool resize(CbVector< value_type >& vec, const size_type& dataSize, const value_type& value=value_type()) override
    {
       if( CbVectorAllocatorStd< value_type >::dataSizeOf(vec) == dataSize) return false;
 
@@ -289,7 +290,7 @@ public:
       return true;
    }
    /*==========================================================*/
-   bool dealloc(CbVector< value_type >& vec)
+   bool dealloc(CbVector< value_type >& vec) override
    {
       if( this->ptrDataOf(vec) )
       {
diff --git a/src/basics/basics/container/CbVectorPool.h b/src/basics/basics/container/CbVectorPool.h
index a89804d82814756d6c9f8889a4b82714b9f6ea11..a025016672bd7999de7fc4060804b52620da4ced 100644
--- a/src/basics/basics/container/CbVectorPool.h
+++ b/src/basics/basics/container/CbVectorPool.h
@@ -66,13 +66,13 @@ template<typename T>
 class CbVectorPool
 {
 public:
-   typedef typename CbVector<T>::value_type value_type;
-   typedef typename CbVector<T>::size_type  size_type;
-   typedef std::vector< value_type >        Pool;
+   using value_type = typename CbVector<T>::value_type;
+   using size_type = typename CbVector<T>::size_type;
+   using Pool = std::vector<value_type>;
 
-   typedef std::string CbVectorKey;
-   typedef std::map< CbVectorKey, CbVector< value_type >* /*ptrVector*/  > CbVectorMap;
-   typedef typename CbVectorMap::iterator CbVectorMapIter;
+   using CbVectorKey = std::string;
+   using CbVectorMap = std::map<CbVectorKey, CbVector<value_type> *>;
+   using CbVectorMapIter = typename CbVectorMap::iterator;
 
 public:
    //////////////////////////////////////////////////////////////////////////
@@ -401,11 +401,13 @@ class CbVectorAllocatorPool : public CbVectorAllocator<T>
 {
 public:
    //typedefs wiederholen, da Basisklasse = template -> "Dependent-Base"-Problem
-   typedef typename CbVector<T>::value_type          value_type;
-   typedef typename CbVector<value_type>::size_type  size_type;
+   using value_type = typename CbVector<T>::value_type;
+   using size_type = typename CbVector<value_type>::size_type;
 
    friend class CbVectorPool< value_type >;
 
+    CbVectorAllocatorPool( const CbVectorAllocatorPool& ) = delete;
+    const CbVectorAllocatorPool& operator=( const CbVectorAllocatorPool& ) = delete;
 public:
    /*==========================================================*/
    CbVectorAllocatorPool(const typename CbVectorPool< value_type >::CbVectorKey& key, CbVectorPool<value_type>* const& ptrVectorPool)
@@ -427,19 +429,19 @@ public:
       key = ptrVectorPool->getNextCbVectorKey();
    }
    /*==========================================================*/
-   bool alloc(CbVector< value_type >& vec, const size_type& dataSize, const value_type& value=value_type())
+   bool alloc(CbVector< value_type >& vec, const size_type& dataSize, const value_type& value=value_type()) override
    {
       if(!ptrVectorPool) UB_THROW( UbException(UB_EXARGS,"vectorPool seems to be destroyed, ptrVectorPool==NULL") );
       return ptrVectorPool->allocVectorData(vec, dataSize, value);
    }
    /*==========================================================*/
-   bool resize(CbVector< value_type >& vec, const size_type& dataSize, const value_type& value=value_type())
+   bool resize(CbVector< value_type >& vec, const size_type& dataSize, const value_type& value=value_type()) override
    {
       if(!ptrVectorPool) UB_THROW( UbException(UB_EXARGS,"vectorPool seems to be destroyed, ptrVectorPool==NULL") );
       return ptrVectorPool->resizeVectorData(vec, dataSize, value);
    }
    /*==========================================================*/
-   bool dealloc(CbVector< value_type >& vec)
+   bool dealloc(CbVector< value_type >& vec) override
    {
       if(ptrVectorPool) return this->ptrVectorPool->deallocVectorData(vec);
       //wenn kein ptrVectorPool -> wurde bereits deallokiert
@@ -458,9 +460,6 @@ private:
    typename CbVectorPool< value_type >::Pool::size_type startIndexInPool;
 
    CbVectorPool< value_type >* ptrVectorPool;
-
-   CbVectorAllocatorPool( const CbVectorAllocatorPool& );                 //no copy allowed
-   const CbVectorAllocatorPool& operator=( const CbVectorAllocatorPool& );//no copy allowed
 };
 
 
diff --git a/src/basics/basics/memory/MbSmartPtr.h b/src/basics/basics/memory/MbSmartPtr.h
index 4321a8e1aa5a0949899a77767499d68266e49049..54d154f148d99afb22d61e15d46304dff6099dbf 100644
--- a/src/basics/basics/memory/MbSmartPtr.h
+++ b/src/basics/basics/memory/MbSmartPtr.h
@@ -9,10 +9,11 @@
 
 #include <basics/memory/MbSmartPtrBase.h>
 
-#ifdef CAB_RCF
-   #include <3rdParty/rcf/RcfSerializationIncludes.h>
+#ifdef __clang__
+#pragma clang system_header
 #endif
 
+
 //=====================================================
 // Globale Funktion, um das Loeschen des referenzierten
 // Objektes flexibler zu gestalten.
@@ -50,7 +51,7 @@ public:
 		init(ptr.get());
 	}
 	// Destruktor
-   ~MbSmartPtr<ObjType>()
+   ~MbSmartPtr<ObjType>() override
 	{
       init(NULL);
 	}
@@ -66,7 +67,7 @@ public:
 	template<class ParamType>
 	const MbSmartPtr<ObjType>& operator =(const MbSmartPtr<ParamType>& ptr)
 	{
-   	init(ptr.get());
+   	    init(ptr.get());
 		return *this;
 	}
 	const MbSmartPtr<ObjType>& operator =(const MbSmartPtr<ObjType>& ptr)
@@ -102,26 +103,6 @@ public:
    {
       return MbSmartPtrBase::removeFromGC(mpPtr);
    }
-
-#ifdef CAB_RCF
-   template<class Archive>
-   void serialize(Archive & ar, const unsigned int version)
-   {
-      if(ArchiveTools::isWriting(ar))
-      {
-         ar & mpPtr;
-      }
-      else
-      {
-         ObjType* ptr;
-         ar & ptr;
-
-         mpPtr=NULL;
-         init(ptr);
-      }
-   }
-#endif //CAB_RCF
-
 private:
    void init(const ObjType* pPtr)
 	{
diff --git a/src/basics/basics/memory/MbSmartPtrBase.h b/src/basics/basics/memory/MbSmartPtrBase.h
index bd8af59096a5edecd81b1ad8df7e876e2c28f9b9..7c531902b4279f842daa99b0126eee9984154d54 100644
--- a/src/basics/basics/memory/MbSmartPtrBase.h
+++ b/src/basics/basics/memory/MbSmartPtrBase.h
@@ -28,19 +28,20 @@ class MbSmartPtrBase
    class MbSmartPtrBaseMap
    {
    private:
-      MbSmartPtrBaseMap() { }
-      MbSmartPtrBaseMap( const MbSmartPtrBaseMap& );                  //no copy allowed
-      const MbSmartPtrBaseMap& operator=( const MbSmartPtrBaseMap& ); //no copy allowed
+      MbSmartPtrBaseMap() = default;
 
       std::map<void*,int> mpCntrMap;
    public:
+       MbSmartPtrBaseMap( const MbSmartPtrBaseMap& ) = delete;
+       const MbSmartPtrBaseMap& operator=( const MbSmartPtrBaseMap& ) = delete;
+
       static MbSmartPtrBaseMap* getInstance() { static MbSmartPtrBaseMap instance; return &instance; }
       std::map<void*,int>& getMap()           { return mpCntrMap;                                    }
    };
 
 protected:
-   MbSmartPtrBase() {}
-   virtual ~MbSmartPtrBase() {}
+   MbSmartPtrBase() = default;
+   virtual ~MbSmartPtrBase() = default;
    bool addRef(void* p);
 	bool releaseRef(void* p);
    bool removeFromGC(void* ptr) const;
diff --git a/src/basics/basics/objects/ObObject.h b/src/basics/basics/objects/ObObject.h
index 0675ae68ff99f7db380c3d99500268bf94698b2b..0b543dc18c2a260a7146a168155f33966d619638 100644
--- a/src/basics/basics/objects/ObObject.h
+++ b/src/basics/basics/objects/ObObject.h
@@ -43,14 +43,14 @@ public:
     ObObject() = default;
    ObObject(const std::string& name) : name(name) { }
 
-   virtual ~ObObject() = default;
+   ~ObObject() override = default;
 
    virtual ObObject* clone() = 0;
 
    virtual std::string getName()  { return name; }
    void setName(std::string name) { this->name = name; }
 
-   virtual std::string toString() override = 0;
+   std::string toString() override = 0;
 
 
 private:
diff --git a/src/basics/basics/parallel/PbMpi.h b/src/basics/basics/parallel/PbMpi.h
index f6bf20b6f21d392a20fd153ae8790048a76aea1e..d3954e363a77bc77d2c9fe97c48b1a352c571d57 100644
--- a/src/basics/basics/parallel/PbMpi.h
+++ b/src/basics/basics/parallel/PbMpi.h
@@ -14,6 +14,11 @@
 #  error VF_MPI has to be defined
 #endif
 
+// As we doing a lot of const-cast here we define PbMpi.h to system_header to mute clang-tidy
+#ifdef __clang__
+#pragma clang system_header
+#endif
+
 //#undef SEEK_SET
 //#undef SEEK_CUR
 //#undef SEEK_END
@@ -139,10 +144,10 @@ namespace PbMpi
    //////////////////////////////////////////////////////////////////////////
    namespace PbMpi
    {
-      typedef MPI_Comm    Comm;
-      typedef MPI_Group   Group;
-      typedef MPI_Request Request;
-      typedef MPI_Status  Status;
+      using Comm = MPI_Comm;
+      using Group = MPI_Group;
+      using Request = MPI_Request;
+      using Status = MPI_Status;
    }
 
    #define PbMpi_COMM_WORLD ((PbMpi::Comm)MPI_COMM_WORLD)
diff --git a/src/basics/basics/transmitter/TbTransmitter.h b/src/basics/basics/transmitter/TbTransmitter.h
index b5bb087df96a9045ff541f83afe7cc058e344289..61874360faa73689d435068baafdf9ece8f9ac44 100644
--- a/src/basics/basics/transmitter/TbTransmitter.h
+++ b/src/basics/basics/transmitter/TbTransmitter.h
@@ -30,11 +30,11 @@ template<typename T>
 class TbTransmitter
 {
 public:
-   typedef T value_type;
+   using value_type = T;
 
 public:
-   TbTransmitter() {}
-   virtual ~TbTransmitter()  {  /*std::cout<<typeid(*this).name()<<" dtor"<<std::endl;*/  }
+   TbTransmitter() = default;
+   virtual ~TbTransmitter() = default;
 
    virtual bool isLocalTransmitter()  const = 0;
    virtual bool isRemoteTransmitter() const = 0;
diff --git a/src/basics/basics/transmitter/TbTransmitterLocal.h b/src/basics/basics/transmitter/TbTransmitterLocal.h
index fba8f150c814b82f1042afad3c9f6f68de4bd0bb..abc127a0a9f01d8b7a83954b0351ede87b0813c3 100644
--- a/src/basics/basics/transmitter/TbTransmitterLocal.h
+++ b/src/basics/basics/transmitter/TbTransmitterLocal.h
@@ -32,9 +32,9 @@ template<typename T>
 class TbLocalTransmitter : public TbTransmitter<T>
 {
 public:
-   typedef SPtr< TbLocalTransmitter<T> > TbLocalTransmitterPtr;
+   using TbLocalTransmitterPtr = SPtr<TbLocalTransmitter<T> >;
 
-   typedef T value_type;
+   using value_type = T;
 
 public:
    TbLocalTransmitter() : TbTransmitter<T>() 
@@ -42,18 +42,18 @@ public:
 
    }
    
-   bool isLocalTransmitter()  const { return true;                         }
-   bool isRemoteTransmitter() const { return !this->isLocalTransmitter();  }
+   bool isLocalTransmitter()  const override { return true;                         }
+   bool isRemoteTransmitter() const override { return !this->isLocalTransmitter();  }
 
    //send buffer wird autom resized
-   void sendDataSize()    { }
+   void sendDataSize() override    { }
    //reiceive braucht nichts machen, da send==receive buffer ;-)
-   void receiveDataSize() { } 
+   void receiveDataSize() override { } 
 
-   void        sendData()    { }
-   value_type& receiveData() { return this->data; }
+   void        sendData() override    { }
+   value_type& receiveData() override { return this->data; }
 
-   std::string toString()  const { return "TbLocalTransmitter"+(std::string)typeid(T).name(); }
+   std::string toString()  const override { return "TbLocalTransmitter"+(std::string)typeid(T).name(); }
 };
 
 //////////////////////////////////////////////////////////////////////////
@@ -62,7 +62,7 @@ template<typename T>
 class TbVectorReceiverLocal : public TbTransmitter<T>
 {
 public:
-   typedef T value_type;
+   using value_type = T;
 
 public:
    TbVectorReceiverLocal() : TbTransmitter<value_type>() 
@@ -89,7 +89,7 @@ template<typename T>
 class TbVectorSenderLocal : public TbTransmitter<T>
 {
 public:
-   typedef T value_type;
+   using value_type = T;
 
 public:
    TbVectorSenderLocal(SPtr< TbVectorReceiverLocal< value_type > > receiver) 
diff --git a/src/basics/basics/transmitter/TbTransmitterMpiPool.h b/src/basics/basics/transmitter/TbTransmitterMpiPool.h
index 78decb50c1447ccc3c3e84b388a11e37c302e2fc..aa5a9c16704e8491052abb63520a686bd8336a45 100644
--- a/src/basics/basics/transmitter/TbTransmitterMpiPool.h
+++ b/src/basics/basics/transmitter/TbTransmitterMpiPool.h
@@ -41,20 +41,20 @@ template<typename T>
 class TbCbVectorMpiPool : public CbVectorPool<T>
 {
 public:
-   typedef SPtr< TbCbVectorMpiPool< T > > MpiPoolPtr;
+   using MpiPoolPtr = SPtr< TbCbVectorMpiPool< T > >;
 
    //////////////////////////////////////////////////////////////////////////
-   typedef std::map<std::string, MpiPoolPtr >      MpiPoolPtrMap;
-   typedef typename MpiPoolPtrMap::iterator MpiPoolPtrMapIter;
+   using MpiPoolPtrMap = std::map<std::string, MpiPoolPtr>;
+   using MpiPoolPtrMapIter = typename MpiPoolPtrMap::iterator;
 
    //da BasisKlasse templateKlasse ist MUSS man hier die typedefs nochmal wiederholen!
-   typedef typename CbVector<T>::value_type value_type;
-   typedef typename CbVector<T>::size_type  size_type;
-   typedef std::vector< value_type >        Pool;
+   using value_type = typename CbVector<T>::value_type;
+   using size_type = typename CbVector<T>::size_type;
+   using Pool = std::vector<value_type>;
 
-   typedef std::string CbVectorKey;
-   typedef std::map< CbVectorKey, CbVector< value_type >* /*ptrVector*/  > CbVectorMap;
-   typedef typename CbVectorMap::iterator CbVectorMapIter;
+   using CbVectorKey = std::string;
+   using CbVectorMap = std::map<CbVectorKey, CbVector<value_type> *>;
+   using CbVectorMapIter = typename CbVectorMap::iterator;
 
    //////////////////////////////////////////////////////////////////////////
    friend class TbCbVectorSenderMpiPool< T >; 
@@ -447,7 +447,7 @@ template<typename T>
 class TbCbVectorSenderMpiPool : public TbTransmitter< CbVector< T >  >
 {
 public:
-   typedef CbVector< T > value_type;
+   using value_type = CbVector<T>;
 
 public:
    TbCbVectorSenderMpiPool(std::string cbVectorKey, TbCbVectorMpiPool< T >* mpiVectorPool)
@@ -455,7 +455,7 @@ public:
    { 
       this->getData().setAllocator( new CbVectorAllocatorPool<T>(cbVectorKey,this->mpiVectorPool) );
    }
-   ~TbCbVectorSenderMpiPool()
+   ~TbCbVectorSenderMpiPool() override
    {
       if( this->mpiVectorPool->getNofStoredVectors()==1 ) //last entry!
       {
@@ -463,22 +463,22 @@ public:
       }
    }
 
-   bool isLocalTransmitter()  const { return false;                        }
-   bool isRemoteTransmitter() const { return !this->isLocalTransmitter();  }
+   bool isLocalTransmitter()  const override { return false;                        }
+   bool isRemoteTransmitter() const override { return !this->isLocalTransmitter();  }
 
-   void sendDataSize()          { this->mpiVectorPool->sendDataOrder(); }
-   void receiveDataSize()       { throw UbException(UB_EXARGS,"TbMpiPoolSender sends only");  }   
-   CbVector< T >& receiveData() { throw UbException(UB_EXARGS,"TbMpiPoolSender sends only");  }
-   void prepareForSend()        { this->mpiVectorPool->prepareForSendData(); }
-   void sendData()              { this->mpiVectorPool->sendData(); }
+   void sendDataSize() override          { this->mpiVectorPool->sendDataOrder(); }
+   void receiveDataSize() override       { throw UbException(UB_EXARGS,"TbMpiPoolSender sends only");  }   
+   CbVector< T >& receiveData() override { throw UbException(UB_EXARGS,"TbMpiPoolSender sends only");  }
+   void prepareForSend() override        { this->mpiVectorPool->prepareForSendData(); }
+   void sendData() override              { this->mpiVectorPool->sendData(); }
 
    //info-section (usable for remote transmitter)
    int  getSendTbRank()   const { return  this->mpiVectorPool->getRemoteRank(); }
    int  getSendTbTag()    const { return  this->mpiVectorPool->getRemoteTag();  }
-   int  getRecvFromRank() const { throw UbException(UB_EXARGS,"TbCbVectorSenderMpiPool sends only"); }
-   int  getRecvFromTag()  const { throw UbException(UB_EXARGS,"TbCbVectorSenderMpiPool sends only"); }
+   int  getRecvFromRank() const override { throw UbException(UB_EXARGS,"TbCbVectorSenderMpiPool sends only"); }
+   int  getRecvFromTag()  const override { throw UbException(UB_EXARGS,"TbCbVectorSenderMpiPool sends only"); }
 
-   std::string toString() const { return "TbCbVectorSenderMpiPool<"+(std::string)typeid(T).name()+" to rank (tag)"+UbSystem::toString(getSendTbRank())+"("+UbSystem::toString(getSendTbTag())+")"; }
+   std::string toString() const override { return "TbCbVectorSenderMpiPool<"+(std::string)typeid(T).name()+" to rank (tag)"+UbSystem::toString(getSendTbRank())+"("+UbSystem::toString(getSendTbTag())+")"; }
 
 protected:
    TbCbVectorMpiPool<T>* mpiVectorPool;
@@ -490,7 +490,7 @@ template<typename T>
 class TbCbVectorReceiverMpiPool : public TbTransmitter< CbVector< T >  >
 {
 public:
-   typedef CbVector< T > value_type;   
+   using value_type = CbVector<T>;   
 
 public:
    TbCbVectorReceiverMpiPool(std::string cbVectorKey, TbCbVectorMpiPool< T >* mpiVectorPool)
@@ -498,21 +498,21 @@ public:
    { 
       this->getData().setAllocator( new CbVectorAllocatorPool<T>(cbVectorKey, this->mpiVectorPool) );
    }
-   ~TbCbVectorReceiverMpiPool()
+   ~TbCbVectorReceiverMpiPool() override
    {
       if( this->mpiVectorPool->getNofStoredVectors()==1 ) //last entry!
       {
          TbCbVectorMpiPool< T >::deleteTbCbVectorMpiPool(this->mpiVectorPool->getPoolKey());  
       }
    }
-   bool isLocalTransmitter()  const { return false;                        }
-   bool isRemoteTransmitter() const { return !this->isLocalTransmitter();  }
-
-   void sendDataSize()      { throw UbException(UB_EXARGS,"TbCbVectorReceiverMpiPool receives only");  }   
-   void receiveDataSize()   { this->mpiVectorPool->receiveDataOrder(); }  
-   void sendData()          { throw UbException(UB_EXARGS,"TbCbVectorReceiverMpiPool receives only"); }
-   void prepareForReceive() { this->mpiVectorPool->prepareForReceiveData(); }
-   CbVector< T >& receiveData()
+   bool isLocalTransmitter()  const override { return false;                        }
+   bool isRemoteTransmitter() const override { return !this->isLocalTransmitter();  }
+
+   void sendDataSize() override      { throw UbException(UB_EXARGS,"TbCbVectorReceiverMpiPool receives only");  }   
+   void receiveDataSize() override   { this->mpiVectorPool->receiveDataOrder(); }  
+   void sendData() override          { throw UbException(UB_EXARGS,"TbCbVectorReceiverMpiPool receives only"); }
+   void prepareForReceive() override { this->mpiVectorPool->prepareForReceiveData(); }
+   CbVector< T >& receiveData() override
    { 
       this->mpiVectorPool->receiveData();
       return this->getData();
@@ -521,10 +521,10 @@ public:
    //info-section (usable for remote transmitter)
    int  getSendTbRank()   const { throw UbException(UB_EXARGS,"TbCbVectorReceiverMpiPool receives only"); }
    int  getSendTbTag()    const { throw UbException(UB_EXARGS,"TbCbVectorReceiverMpiPool receives only"); }
-   int  getRecvFromRank() const { return  this->mpiVectorPool->getRemoteRank();  }
-   int  getRecvFromTag()  const { return  this->mpiVectorPool->getRemoteTag();  }
+   int  getRecvFromRank() const override { return  this->mpiVectorPool->getRemoteRank();  }
+   int  getRecvFromTag()  const override { return  this->mpiVectorPool->getRemoteTag();  }
 
-   std::string toString() const { return "TbCbVectorReceiverMpiPool<"+(std::string)typeid(T).name()+" to rank (tag)"+UbSystem::toString(getRecvFromRank())+"("+UbSystem::toString(getRecvFromTag())+")"; }
+   std::string toString() const override { return "TbCbVectorReceiverMpiPool<"+(std::string)typeid(T).name()+" to rank (tag)"+UbSystem::toString(getRecvFromRank())+"("+UbSystem::toString(getRecvFromTag())+")"; }
 
 protected:
    TbCbVectorMpiPool<T>* mpiVectorPool;
diff --git a/src/basics/basics/utilities/UbComparators.h b/src/basics/basics/utilities/UbComparators.h
index abde770000e220422f06bae6ba83640ef9c45f15..0e7d2cbeda4334e34630611f9bafa90d4e5ab7c0 100644
--- a/src/basics/basics/utilities/UbComparators.h
+++ b/src/basics/basics/utilities/UbComparators.h
@@ -45,8 +45,8 @@ namespace UbComparators
    template <typename T, typename C> 
    struct MemberInfo<T C::*> 
    { 
-      typedef T type; 
-      typedef C class_type; 
+      using type = T; 
+      using class_type = C; 
 
       static       T& apply(       C& c, T C::* ptr ) { return c.*ptr; } 
       static const T& apply( const C& c, T C::* ptr ) { return c.*ptr; } 
@@ -56,8 +56,8 @@ namespace UbComparators
    template <typename T, typename C> 
    struct MemberInfo<T (C::*)()> 
    { 
-      typedef T type; 
-      typedef C class_type; 
+      using type = T; 
+      using class_type = C; 
 
       static T apply( C& c, T (C::*ptr)() ) { return (c.*ptr)(); } 
    }; 
@@ -66,8 +66,8 @@ namespace UbComparators
    template <typename T, typename C> 
    struct MemberInfo<T (C::*)() const> 
    { 
-      typedef T type; 
-      typedef C class_type; 
+      using type = T; 
+      using class_type = C; 
 
       static T apply( const C& c, T (C::*ptr)() const ) { return (c.*ptr)(); } 
    }; 
@@ -77,7 +77,7 @@ namespace UbComparators
    class MemComp 
       : private Comp  // -> usage of Empty Base Class Optimization (EBCO) 
    { 
-      typedef typename MemberInfo<Ptr>::class_type C; 
+      using C = typename MemberInfo<Ptr>::class_type; 
 
    public: 
       MemComp( Ptr ptr, Comp c = Comp() ) 
diff --git a/src/basics/basics/utilities/UbEqual.h b/src/basics/basics/utilities/UbEqual.h
index e748bec34fd33b1f14fa694a43e4ffcd26fbfaed..c605c36efd8b793ba4585aad27fc9eb083185e26 100644
--- a/src/basics/basics/utilities/UbEqual.h
+++ b/src/basics/basics/utilities/UbEqual.h
@@ -56,54 +56,54 @@
 template < typename T1, typename T2 >
 struct UbEqualTrait
 {
-   typedef T1 High;
-   typedef T1 Low;
+   using High = T1;
+   using Low = T1;
 };
 
 //std-trait, fuer gleiche T
 template < typename T >
 struct UbEqualTrait< T, T >
 {
-   typedef T High;
-   typedef T Low;
+   using High = T;
+   using Low = T;
 };
 
 //spezialisierung fuer diverse Typen-Tuples
-template<> struct UbEqualTrait< short, int >          { typedef int         High; typedef short  Low; };
-template<> struct UbEqualTrait< short, long >         { typedef long        High; typedef short  Low; };
-template<> struct UbEqualTrait< short, float >        { typedef float       High; typedef short  Low; };
-template<> struct UbEqualTrait< short, double >       { typedef double      High; typedef short  Low; };
-template<> struct UbEqualTrait< short, long double >  { typedef long double High; typedef short  Low; };
-
-template<> struct UbEqualTrait< int, short >          { typedef int         High; typedef short  Low; };
-template<> struct UbEqualTrait< int, long >           { typedef long        High; typedef int    Low; };
-template<> struct UbEqualTrait< int, float >          { typedef float       High; typedef int    Low; };
-template<> struct UbEqualTrait< int, double >         { typedef double      High; typedef int    Low; };
-template<> struct UbEqualTrait< int, long double >    { typedef long double High; typedef int    Low; };
-
-template<> struct UbEqualTrait< long, short >         { typedef long        High; typedef short  Low; };
-template<> struct UbEqualTrait< long, int >           { typedef long        High; typedef int    Low; };
-template<> struct UbEqualTrait< long, float >         { typedef float       High; typedef long   Low; };
-template<> struct UbEqualTrait< long, double >        { typedef double      High; typedef long   Low; };
-template<> struct UbEqualTrait< long, long double >   { typedef long double High; typedef long   Low; };
-
-template<> struct UbEqualTrait< float, short >        { typedef float       High; typedef short  Low; };
-template<> struct UbEqualTrait< float, int >          { typedef float       High; typedef int    Low; };
-template<> struct UbEqualTrait< float, long >         { typedef float       High; typedef long   Low; };
-template<> struct UbEqualTrait< float, double >       { typedef double      High; typedef float  Low; };
-template<> struct UbEqualTrait< float, long double >  { typedef long double High; typedef float  Low; };
-
-template<> struct UbEqualTrait< double, short >       { typedef double      High; typedef short  Low; };
-template<> struct UbEqualTrait< double, int >         { typedef double      High; typedef int    Low; };
-template<> struct UbEqualTrait< double, long >        { typedef double      High; typedef long   Low; };
-template<> struct UbEqualTrait< double, float >       { typedef double      High; typedef float  Low; };
-template<> struct UbEqualTrait< double, long double > { typedef long double High; typedef double Low; };
-
-template<> struct UbEqualTrait< long double, short >  { typedef long double High; typedef short  Low; };
-template<> struct UbEqualTrait< long double, int >    { typedef long double High; typedef int    Low; };
-template<> struct UbEqualTrait< long double, long >   { typedef long double High; typedef long   Low; };
-template<> struct UbEqualTrait< long double, float >  { typedef long double High; typedef float  Low; };
-template<> struct UbEqualTrait< long double, double > { typedef long double High; typedef double Low; };
+template<> struct UbEqualTrait< short, int >          { using High = int; using Low = short; };
+template<> struct UbEqualTrait< short, long >         { using High = long; using Low = short; };
+template<> struct UbEqualTrait< short, float >        { using High = float; using Low = short; };
+template<> struct UbEqualTrait< short, double >       { using High = double; using Low = short; };
+template<> struct UbEqualTrait< short, long double >  { using High = long double; using Low = short; };
+
+template<> struct UbEqualTrait< int, short >          { using High = int; using Low = short; };
+template<> struct UbEqualTrait< int, long >           { using High = long; using Low = int; };
+template<> struct UbEqualTrait< int, float >          { using High = float; using Low = int; };
+template<> struct UbEqualTrait< int, double >         { using High = double; using Low = int; };
+template<> struct UbEqualTrait< int, long double >    { using High = long double; using Low = int; };
+
+template<> struct UbEqualTrait< long, short >         { using High = long; using Low = short; };
+template<> struct UbEqualTrait< long, int >           { using High = long; using Low = int; };
+template<> struct UbEqualTrait< long, float >         { using High = float; using Low = long; };
+template<> struct UbEqualTrait< long, double >        { using High = double; using Low = long; };
+template<> struct UbEqualTrait< long, long double >   { using High = long double; using Low = long; };
+
+template<> struct UbEqualTrait< float, short >        { using High = float; using Low = short; };
+template<> struct UbEqualTrait< float, int >          { using High = float; using Low = int; };
+template<> struct UbEqualTrait< float, long >         { using High = float; using Low = long; };
+template<> struct UbEqualTrait< float, double >       { using High = double; using Low = float; };
+template<> struct UbEqualTrait< float, long double >  { using High = long double; using Low = float; };
+
+template<> struct UbEqualTrait< double, short >       { using High = double; using Low = short; };
+template<> struct UbEqualTrait< double, int >         { using High = double; using Low = int; };
+template<> struct UbEqualTrait< double, long >        { using High = double; using Low = long; };
+template<> struct UbEqualTrait< double, float >       { using High = double; using Low = float; };
+template<> struct UbEqualTrait< double, long double > { using High = long double; using Low = double; };
+
+template<> struct UbEqualTrait< long double, short >  { using High = long double; using Low = short; };
+template<> struct UbEqualTrait< long double, int >    { using High = long double; using Low = int; };
+template<> struct UbEqualTrait< long double, long >   { using High = long double; using Low = long; };
+template<> struct UbEqualTrait< long double, float >  { using High = long double; using Low = float; };
+template<> struct UbEqualTrait< long double, double > { using High = long double; using Low = double; };
 
 //////////////////////////////////////////////////////////////////////////
 //fuer Allgmeine-Typen ( operator== ):
@@ -127,7 +127,7 @@ inline bool specific_equal< long double, long double >(const long double& a, con
 template< typename T1, typename T2 >
 inline bool isUbEqual(const T1& a, const T2& b)
 {
-   typedef typename UbEqualTrait<T1,T2>::Low Low;
+   using Low = typename UbEqualTrait<T1, T2>::Low;
    return specific_equal< Low, Low >(static_cast< Low >( a ),static_cast< Low >( b ));
 };
 
diff --git a/src/basics/basics/utilities/UbException.h b/src/basics/basics/utilities/UbException.h
index f999f8e13f4d37ac88ccfb72b2fcd2f581a0f3e1..7c625c33f73fb92ae4d3aa1a7a20c822276f16a0 100644
--- a/src/basics/basics/utilities/UbException.h
+++ b/src/basics/basics/utilities/UbException.h
@@ -80,7 +80,7 @@
 class UbException : public std::runtime_error
 {
 public:
-   typedef UbTuple< std::string, int, std::string, std::string > ExceptionData;
+   using ExceptionData = UbTuple<std::string, int, std::string, std::string>;
 public:
    //////////////////////////////////////////////////////////////////////////
    //constructors
@@ -109,11 +109,11 @@ public:
    }
    //////////////////////////////////////////////////////////////////////////
    //destructor
-   virtual ~UbException() throw() { }
+   ~UbException() noexcept override = default;
    //////////////////////////////////////////////////////////////////////////
    //virtual public methods
    //returns  exception-string
-   virtual const char* what() const throw()
+   const char* what() const noexcept override
    {
       exceptionString = this->toString();
       return exceptionString.c_str();  //ansonsten ist das Verhalten anschliessend undefiniert!
diff --git a/src/basics/basics/utilities/UbFileInput.h b/src/basics/basics/utilities/UbFileInput.h
index 2c57b175faf491b65abd28f9538038b3947ec58f..006c0b98781f3fa0d738bc2f41ee242a9d7daa33 100644
--- a/src/basics/basics/utilities/UbFileInput.h
+++ b/src/basics/basics/utilities/UbFileInput.h
@@ -36,8 +36,8 @@ public:
    enum FILETYPE {ASCII, BINARY};      
 
 public:
-   UbFileInput() : filename(""), commentindicator('C') { }
-   virtual ~UbFileInput() { infile.close(); }
+   UbFileInput() : filename("") { }
+   virtual ~UbFileInput() = default;
 
    virtual bool        operator!() { return !(infile); }
    virtual bool        isOpen()    { return !(!(infile)); }
@@ -89,7 +89,7 @@ public:
 protected:
    std::ifstream infile;
    std::string   filename;
-   char          commentindicator;
+   char          commentindicator{'C'};
 };
 
 #endif //UBFILEINPUT_H
diff --git a/src/basics/basics/utilities/UbFileInputASCII.h b/src/basics/basics/utilities/UbFileInputASCII.h
index e999500a9510b93063e6f66f52364efce6257f7c..40d5528c8b2aaefc427a7998c948d827c446f222 100644
--- a/src/basics/basics/utilities/UbFileInputASCII.h
+++ b/src/basics/basics/utilities/UbFileInputASCII.h
@@ -36,34 +36,34 @@ public:
    UbFileInputASCII() : UbFileInput() { }
    UbFileInputASCII(std::string filename);
 	
-   bool open(std::string filename);
+   bool open(std::string filename) override;
 
-   std::string getFileName();				
-	void	      skipLine();					   // Springt zur naechsten Zeile
+   std::string getFileName() override;				
+	void	      skipLine() override;					   // Springt zur naechsten Zeile
 
-   void        readLine();		 
-   std::string readStringLine();				
-	int		   readInteger();				   // Liest einen Int-Wert ein
+   void        readLine() override;		 
+   std::string readStringLine() override;				
+	int		   readInteger() override;				   // Liest einen Int-Wert ein
     long long   readLongLong();                       // Liest einen long-Wert ein
 
-   std::size_t readSize_t();
-   double	   readDouble();				   // Liest einen double-Wert ein
-	float 	   readFloat();				   // Liest einen float-Wert ein
-	bool  	   readBool();				      // Liest einen bool-Wert ein
-   char        readChar();                // Liest einen char-Wert ein
-   std::string	readString();				   // Liest ein Wort ein
-	std::string	readLineTill(char stop);	// Liest gesamte Zeile ein bis zu einem bestimmten Zeichen
-	std::string	parseString();	
+   std::size_t readSize_t() override;
+   double	   readDouble() override;				   // Liest einen double-Wert ein
+	float 	   readFloat() override;				   // Liest einen float-Wert ein
+	bool  	   readBool() override;				      // Liest einen bool-Wert ein
+   char        readChar() override;                // Liest einen char-Wert ein
+   std::string	readString() override;				   // Liest ein Wort ein
+	std::string	readLineTill(char stop) override;	// Liest gesamte Zeile ein bis zu einem bestimmten Zeichen
+	std::string	parseString() override;	
 
 
-   bool        containsString(const std::string& var);
-   void        setPosAfterLineWithString(const std::string& var);
-   int		   readIntegerAfterString(const std::string& var);
-   double	   readDoubleAfterString(const std::string& var);
-   bool        readBoolAfterString(const std::string& var);
-   std::string readStringAfterString(const std::string& var);
+   bool        containsString(const std::string& var) override;
+   void        setPosAfterLineWithString(const std::string& var) override;
+   int		   readIntegerAfterString(const std::string& var) override;
+   double	   readDoubleAfterString(const std::string& var) override;
+   bool        readBoolAfterString(const std::string& var) override;
+   std::string readStringAfterString(const std::string& var) override;
 
-   FILETYPE getFileType() { return ASCII; }
+   FILETYPE getFileType() override { return ASCII; }
 
    template< typename T >
    friend inline UbFileInputASCII& operator>>(UbFileInputASCII& file, T& data) 
diff --git a/src/basics/basics/utilities/UbFileInputBinary.cpp b/src/basics/basics/utilities/UbFileInputBinary.cpp
index a7071b367df58a6f51f04ab2c69d15ca0fe27665..0cf6a5a85deab826f7a4ca6089fe2aedca39f3cb 100644
--- a/src/basics/basics/utilities/UbFileInputBinary.cpp
+++ b/src/basics/basics/utilities/UbFileInputBinary.cpp
@@ -109,7 +109,7 @@ string UbFileInputBinary::readStringLine()
    return dummy;
 }
 /*==========================================================*/
-string UbFileInputBinary::readLineTill(char stop)				
+string UbFileInputBinary::readLineTill(char  /*stop*/)				
 {
    UB_THROW( UbException(UB_EXARGS,"method makes no sense for binary streams") );
 }
@@ -119,32 +119,32 @@ string UbFileInputBinary::parseString()
    UB_THROW( UbException(UB_EXARGS,"method makes no sense for binary streams") );
 }
 /*==========================================================*/
-bool UbFileInputBinary::containsString(const string& var)
+bool UbFileInputBinary::containsString(const string&  /*var*/)
 {
    UB_THROW( UbException(UB_EXARGS,"method makes no sense for binary streams") );
 }
 /*==========================================================*/
-void UbFileInputBinary::setPosAfterLineWithString(const string& var)
+void UbFileInputBinary::setPosAfterLineWithString(const string&  /*var*/)
 {
    UB_THROW( UbException(UB_EXARGS,"method makes no sense for binary streams") );
 }
 /*==========================================================*/
-int UbFileInputBinary::readIntegerAfterString(const string& var)
+int UbFileInputBinary::readIntegerAfterString(const string&  /*var*/)
 {
    UB_THROW( UbException(UB_EXARGS,"method makes no sense for binary streams") );
 }
 /*==========================================================*/
-double UbFileInputBinary::readDoubleAfterString(const string& var)	
+double UbFileInputBinary::readDoubleAfterString(const string&  /*var*/)	
 {
    UB_THROW( UbException(UB_EXARGS,"method makes no sense for binary streams") );
 }
 /*==========================================================*/
-string UbFileInputBinary::readStringAfterString(const string& var)	
+string UbFileInputBinary::readStringAfterString(const string&  /*var*/)	
 {
    UB_THROW( UbException(UB_EXARGS,"method makes no sense for binary streams") );
 }
 /*==========================================================*/
-bool UbFileInputBinary::readBoolAfterString(const string& var)	
+bool UbFileInputBinary::readBoolAfterString(const string&  /*var*/)	
 {
    UB_THROW( UbException(UB_EXARGS,"method makes no sense for binary streams") );
 }
diff --git a/src/basics/basics/utilities/UbFileInputBinary.h b/src/basics/basics/utilities/UbFileInputBinary.h
index c410c822fbc97d5e7924efacf3987d8af657a0b6..06086639323cffc8714e8bac64585127c422cfcc 100644
--- a/src/basics/basics/utilities/UbFileInputBinary.h
+++ b/src/basics/basics/utilities/UbFileInputBinary.h
@@ -34,29 +34,29 @@ public:
    UbFileInputBinary() : UbFileInput() {  }
    UbFileInputBinary(std::string filename);
 	
-	bool        open(std::string filename);
+	bool        open(std::string filename) override;
 
-   void	      skipLine();					   // Springt zur naechsten Zeile
-	void        readLine();		 
-   std::string readStringLine();				
-   std::size_t readSize_t();				
-   int		   readInteger();				   // Liest einen Int-Wert ein
-	double	   readDouble();				   // Liest einen double-Wert ein
-	float 	   readFloat();				   // Liest einen float-Wert ein
-	bool  	   readBool();				      // Liest einen bool-Wert ein
-   char        readChar();                // Liest einen char-Wert ein
-   std::string	readString();				   // Liest ein Wort ein
-	std::string	readLineTill(char stop);	// Liest gesamte Zeile ein bis zu einem bestimmten Zeichen
-	std::string	parseString();	// Liest 
+   void	      skipLine() override;					   // Springt zur naechsten Zeile
+	void        readLine() override;		 
+   std::string readStringLine() override;				
+   std::size_t readSize_t() override;				
+   int		   readInteger() override;				   // Liest einen Int-Wert ein
+	double	   readDouble() override;				   // Liest einen double-Wert ein
+	float 	   readFloat() override;				   // Liest einen float-Wert ein
+	bool  	   readBool() override;				      // Liest einen bool-Wert ein
+   char        readChar() override;                // Liest einen char-Wert ein
+   std::string	readString() override;				   // Liest ein Wort ein
+	std::string	readLineTill(char stop) override;	// Liest gesamte Zeile ein bis zu einem bestimmten Zeichen
+	std::string	parseString() override;	// Liest 
 
-   bool        containsString(const std::string& var);
-   void        setPosAfterLineWithString(const std::string& var);
-   int		   readIntegerAfterString(const std::string& var);
-   double	   readDoubleAfterString(const std::string& var);
-   bool        readBoolAfterString(const std::string& var);
-   std::string readStringAfterString(const std::string& var);
+   bool        containsString(const std::string& var) override;
+   void        setPosAfterLineWithString(const std::string& var) override;
+   int		   readIntegerAfterString(const std::string& var) override;
+   double	   readDoubleAfterString(const std::string& var) override;
+   bool        readBoolAfterString(const std::string& var) override;
+   std::string readStringAfterString(const std::string& var) override;
 
-   FILETYPE getFileType() { return BINARY; }
+   FILETYPE getFileType() override { return BINARY; }
 
    template< typename T >
    friend inline UbFileInputBinary& operator>>(UbFileInputBinary& file, T& data) 
diff --git a/src/basics/basics/utilities/UbFileOutput.h b/src/basics/basics/utilities/UbFileOutput.h
index 2ee5ac92fa1a59c31044bc7da95382805b09a389..38c0928088d4598f0416fabaea7ebab3385607b8 100644
--- a/src/basics/basics/utilities/UbFileOutput.h
+++ b/src/basics/basics/utilities/UbFileOutput.h
@@ -35,9 +35,9 @@ public:
    enum FILETYPE {ASCII, BINARY};      
 
 public:
-   UbFileOutput() : filename(""), commentindicator('C') {  }
-   UbFileOutput(const std::string& filename)  : filename(filename), commentindicator('C') { }             
-   virtual ~UbFileOutput() { outfile.flush();outfile.close(); }
+   UbFileOutput() : filename("") {  }
+   UbFileOutput(const std::string& filename)  : filename(filename) { }
+   virtual ~UbFileOutput() { outfile.flush(); }
 
    virtual bool open(const std::string& filename, CREATEOPTION opt=OUTFILE) = 0;
 
@@ -87,7 +87,7 @@ public:
 protected:
    std::ofstream outfile;
    std::string   filename; 
-   char          commentindicator; 
+   char          commentindicator{'C'}; 
 };
 
 #endif //UBFILEOUTPUT_H
diff --git a/src/basics/basics/utilities/UbFileOutputASCII.cpp b/src/basics/basics/utilities/UbFileOutputASCII.cpp
index a195f9616cf4880ed31f8e2d42e33f1fd2f53aaa..3a0930105e936982e664d48a6cbb0abf150f12d2 100644
--- a/src/basics/basics/utilities/UbFileOutputASCII.cpp
+++ b/src/basics/basics/utilities/UbFileOutputASCII.cpp
@@ -6,7 +6,7 @@
 
 using namespace std;
 
-UbFileOutputASCII::UbFileOutputASCII(const string& filename, const bool& createPath, const int& precision)
+UbFileOutputASCII::UbFileOutputASCII(const string& filename, const bool& createPath, const int&  /*precision*/)
    : UbFileOutput(filename)
 {
 	this->commentindicator = 'C'; 
diff --git a/src/basics/basics/utilities/UbFileOutputASCII.h b/src/basics/basics/utilities/UbFileOutputASCII.h
index cfe68b6991c8122d3bc4103a372940fea55b6649..25041513f8989990b6cb99a80186b2049771bedc 100644
--- a/src/basics/basics/utilities/UbFileOutputASCII.h
+++ b/src/basics/basics/utilities/UbFileOutputASCII.h
@@ -37,29 +37,29 @@ public:
    UbFileOutputASCII(const std::string& filename, const bool& createPath=true,  const int& precision=15);             
    UbFileOutputASCII(const std::string& filename, CREATEOPTION opt, const bool& createPath=true, const int& precision=15);
    
-   bool open(const std::string& filename, CREATEOPTION opt=OUTFILE);
+   bool open(const std::string& filename, CREATEOPTION opt=OUTFILE) override;
    
-   void writeBool(const bool& value, const int& width=0);
-   void writeDouble(const double& value, const int& width=0);
-	void writeFloat(const float& value, const int& width=0);
-	void writeInteger(const int& value, const int& width=0);
-   void writeSize_t(const std::size_t& value, const int& width=0);
-   void writeChar(const char& value, const int& width=0);
-   void writeString(const std::string& value, const int& width=0);
-   void writeStringOnly(const std::string& value);
-   void writeLine(const std::string& value, const int& width=0);
-   void writeLine();
+   void writeBool(const bool& value, const int& width=0) override;
+   void writeDouble(const double& value, const int& width=0) override;
+	void writeFloat(const float& value, const int& width=0) override;
+	void writeInteger(const int& value, const int& width=0) override;
+   void writeSize_t(const std::size_t& value, const int& width=0) override;
+   void writeChar(const char& value, const int& width=0) override;
+   void writeString(const std::string& value, const int& width=0) override;
+   void writeStringOnly(const std::string& value) override;
+   void writeLine(const std::string& value, const int& width=0) override;
+   void writeLine() override;
   
-   void setPrecision(const int& precision);
-   int  getPrecision() { return (int)outfile.precision(); }
+   void setPrecision(const int& precision) override;
+   int  getPrecision() override { return (int)outfile.precision(); }
 
-   void setCommentIndicator(char commentindicator) {this->commentindicator = commentindicator;} 
+   void setCommentIndicator(char commentindicator) override {this->commentindicator = commentindicator;} 
    
-   void writeCommentLine(const std::string& line);
-   void writeCommentLine(char indicator, const std::string& line);
-   void writeCopyOfFile(const std::string& filename);
+   void writeCommentLine(const std::string& line) override;
+   void writeCommentLine(char indicator, const std::string& line) override;
+   void writeCopyOfFile(const std::string& filename) override;
 
-   FILETYPE getFileType() { return ASCII; }
+   FILETYPE getFileType() override { return ASCII; }
 
    template< typename T >
    friend inline UbFileOutputASCII& operator<<(UbFileOutputASCII& file, const T& data) 
diff --git a/src/basics/basics/utilities/UbFileOutputBinary.cpp b/src/basics/basics/utilities/UbFileOutputBinary.cpp
index bc0cbad6664b27ca7c1da6720aa2cc7149967ab7..a34d11441f6ac6176ab987bb52734af7e3dd2cdc 100644
--- a/src/basics/basics/utilities/UbFileOutputBinary.cpp
+++ b/src/basics/basics/utilities/UbFileOutputBinary.cpp
@@ -64,22 +64,22 @@ bool UbFileOutputBinary::open(const string& filename, UbFileOutput::CREATEOPTION
    return outfile.is_open();
 }
 /*==========================================================*/
-void UbFileOutputBinary::writeBool(const bool& value, const int& width)				
+void UbFileOutputBinary::writeBool(const bool& value, const int&  /*width*/)				
 {
    outfile.write((char*)&value,sizeof(bool));
 }
 /*==========================================================*/
-void UbFileOutputBinary::writeDouble(const double& value, const int& width)				
+void UbFileOutputBinary::writeDouble(const double& value, const int&  /*width*/)				
 {
    outfile.write((char*)&value,sizeof(double));
 }
 /*==========================================================*/
-void UbFileOutputBinary::writeFloat(const float& value, const int& width)				
+void UbFileOutputBinary::writeFloat(const float& value, const int&  /*width*/)				
 {
 	outfile.write((char*)&value,sizeof(float));
 }
 /*==========================================================*/
-void UbFileOutputBinary::setPrecision(const int& precision)				
+void UbFileOutputBinary::setPrecision(const int&  /*precision*/)				
 {
    UB_THROW( UbException(UB_EXARGS,"no way") );
 }
@@ -89,22 +89,22 @@ int UbFileOutputBinary::getPrecision()
    UB_THROW( UbException(UB_EXARGS,"no way") );
 }
 /*==========================================================*/
-void UbFileOutputBinary::writeInteger(const int& value, const int& width)				
+void UbFileOutputBinary::writeInteger(const int& value, const int&  /*width*/)				
 {
    outfile.write((char*)&value,sizeof(value));
 }
 /*==========================================================*/
-void UbFileOutputBinary::writeSize_t(const std::size_t& value, const int& width)
+void UbFileOutputBinary::writeSize_t(const std::size_t& value, const int&  /*width*/)
 {
    outfile.write((char*)&value,sizeof(value));
 }
 /*==========================================================*/
-void UbFileOutputBinary::writeChar(const char& value, const int& width)				
+void UbFileOutputBinary::writeChar(const char& value, const int&  /*width*/)				
 {
    outfile.write((char*)&value,sizeof(value));
 }
 /*==========================================================*/
-void UbFileOutputBinary::writeString(const string& value, const int& width)				
+void UbFileOutputBinary::writeString(const string& value, const int&  /*width*/)				
 {
    char c='\0';
    unsigned int length = (unsigned)value.length();
@@ -131,12 +131,12 @@ void UbFileOutputBinary::writeString(const string& value, const int& width)
    }
 }
 /*==========================================================*/
-void UbFileOutputBinary::writeStringOnly(const string& value)				
+void UbFileOutputBinary::writeStringOnly(const string&  /*value*/)				
 {
-   UbException(UB_EXARGS,"no way... causes to many errors");
+   throw UbException(UB_EXARGS,"no way... causes to many errors"); // TODO: WTF?
 }
 /*==========================================================*/
-void UbFileOutputBinary::writeLine(const std::string& value, const int& width)				
+void UbFileOutputBinary::writeLine(const std::string& value, const int&  /*width*/)				
 {
    this->writeString(value);
    char c='\n';
diff --git a/src/basics/basics/utilities/UbFileOutputBinary.h b/src/basics/basics/utilities/UbFileOutputBinary.h
index 76c50246793f61f294fe8305fb9fd46f0a807842..11b62b791523e202cbc5ea0a8a1264ecfd24025b 100644
--- a/src/basics/basics/utilities/UbFileOutputBinary.h
+++ b/src/basics/basics/utilities/UbFileOutputBinary.h
@@ -36,26 +36,26 @@ public:
    UbFileOutputBinary(const std::string& filename, const bool& createPath=true);
    UbFileOutputBinary(const std::string& filename, UbFileOutput::CREATEOPTION opt, const bool& createPath);
    
-   bool open(const std::string& filename, UbFileOutput::CREATEOPTION opt=OUTFILE);
+   bool open(const std::string& filename, UbFileOutput::CREATEOPTION opt=OUTFILE) override;
 
-   void writeInteger(const int& value, const int& width=0);
-   void writeDouble(const double& value, const int& width=0);
-	void writeFloat(const float& value, const int& width=0);
-	void writeBool(const bool& value, const int& width=0);
-   void writeChar(const char& value, const int& width=0);
-   void writeSize_t(const std::size_t& value, const int& width=0);
-   void writeString(const std::string& value, const int& width=0);
-   void writeStringOnly(const std::string& value);
-   void writeLine(const std::string& value, const int& width=0);
-   void writeLine();
-   void writeCommentLine(const std::string& line);
-   void writeCommentLine(char indicator, const std::string& line);
-   void writeCopyOfFile(const std::string& filename);
+   void writeInteger(const int& value, const int& width=0) override;
+   void writeDouble(const double& value, const int& width=0) override;
+	void writeFloat(const float& value, const int& width=0) override;
+	void writeBool(const bool& value, const int& width=0) override;
+   void writeChar(const char& value, const int& width=0) override;
+   void writeSize_t(const std::size_t& value, const int& width=0) override;
+   void writeString(const std::string& value, const int& width=0) override;
+   void writeStringOnly(const std::string& value) override;
+   void writeLine(const std::string& value, const int& width=0) override;
+   void writeLine() override;
+   void writeCommentLine(const std::string& line) override;
+   void writeCommentLine(char indicator, const std::string& line) override;
+   void writeCopyOfFile(const std::string& filename) override;
 
-   void setPrecision(const int& precision);
-   int  getPrecision();
+   void setPrecision(const int& precision) override;
+   int  getPrecision() override;
 
-   FILETYPE getFileType() { return BINARY; }
+   FILETYPE getFileType() override { return BINARY; }
 
    template< typename T >
    friend inline UbFileOutputBinary& operator<<(UbFileOutputBinary& file, const T& data) 
diff --git a/src/basics/basics/utilities/UbInfinity.h b/src/basics/basics/utilities/UbInfinity.h
index 229a14b23c79fc3bc95650bb272209f3b7392d23..460c439ecd3141ab8bc1973934007acf58a42b50 100644
--- a/src/basics/basics/utilities/UbInfinity.h
+++ b/src/basics/basics/utilities/UbInfinity.h
@@ -69,7 +69,7 @@ class UbNegInfinity
       return UbLimits<T>::ninf() == rhs;
    }
  protected:
-    inline UbNegInfinity() {}
+    inline UbNegInfinity() = default;
 
  private:
    UbNegInfinity( const UbNegInfinity& ninf );             //copy constructor (private & undefined)
diff --git a/src/basics/basics/utilities/UbLogger.h b/src/basics/basics/utilities/UbLogger.h
index ccb3f1f87eb21e797f51ec1e8a6c9b48eecf942a..e30157cb56c8979f2b3fffb27129008626c66fba 100644
--- a/src/basics/basics/utilities/UbLogger.h
+++ b/src/basics/basics/utilities/UbLogger.h
@@ -110,7 +110,7 @@ template <typename OutputPolicy>
 class UbLogger
 {   
 public:
-   typedef OutputPolicy output_policy;
+   using output_policy = OutputPolicy;
 public:
     UbLogger();
     virtual ~UbLogger();
@@ -138,8 +138,7 @@ private:
 //////////////////////////////////////////////////////////////////////////
 template <typename OutputPolicy>
 UbLogger<OutputPolicy>::UbLogger()
-{
-}
+= default;
 /*==========================================================*/
 template <typename OutputPolicy>
 std::ostringstream& UbLogger<OutputPolicy>::get(const LogLevel& level) 
diff --git a/src/basics/basics/utilities/UbMath.h b/src/basics/basics/utilities/UbMath.h
index 659b66cc5d12dab588034e3f7997fe448f769a46..195dda3998120d85f506b8faf09409858a6a0a52 100644
--- a/src/basics/basics/utilities/UbMath.h
+++ b/src/basics/basics/utilities/UbMath.h
@@ -176,7 +176,7 @@ namespace UbMath
    template<typename T1, typename T2>
    inline bool equal(const T1& value, const T2& reference) 
    { 
-      typedef typename UbEqualTrait<T1,T2>::High High;
+      using High = typename UbEqualTrait<T1, T2>::High;
       return std::fabs(value-reference) < Epsilon<High>::val(); 
    }
    /*=======================================================*/
@@ -189,28 +189,28 @@ namespace UbMath
    template<typename T1, typename T2>
    inline bool less(const T1& value, const T2& reference)   
    { 
-      typedef typename UbEqualTrait<T1,T2>::High High;
+      using High = typename UbEqualTrait<T1, T2>::High;
       return value < reference - Epsilon<High>::val(); 
    }
    /*=======================================================*/
    template<typename T1, typename T2>
    inline bool lessEqual(const T1& value, const T2& reference) 
    { 
-      typedef typename UbEqualTrait<T1,T2>::High High;
+      using High = typename UbEqualTrait<T1, T2>::High;
       return value <= reference + Epsilon<High>::val();
    }
    /*=======================================================*/
    template<typename T1, typename T2>
    inline bool greater(const T1& value, const T2& reference)      
    { 
-      typedef typename UbEqualTrait<T1,T2>::High High;
+      using High = typename UbEqualTrait<T1, T2>::High;
       return value > reference + Epsilon<High>::val();  
    }
    /*=======================================================*/
    template<typename T1, typename T2>
    inline bool greaterEqual(const T1& value, const T2& reference) 
    { 
-      typedef typename UbEqualTrait<T1,T2>::High High;
+      using High = typename UbEqualTrait<T1, T2>::High;
       return value >= reference - Epsilon<High>::val(); 
    }
    /*=======================================================*/
diff --git a/src/basics/basics/utilities/UbNupsTimer.h b/src/basics/basics/utilities/UbNupsTimer.h
index b18cbe30f3844d1e5193bc7a0d1fd226f2f86301..b4668ba91be3997922502956fd618da0521907c1 100644
--- a/src/basics/basics/utilities/UbNupsTimer.h
+++ b/src/basics/basics/utilities/UbNupsTimer.h
@@ -32,7 +32,7 @@ public:
       mTempNodes = 0.0;
    }
    /*==========================================================*/
-   void initTiming()
+   void initTiming() override
    {
       UbTiming::initTiming();
       mNofNodes.resize(0);
@@ -46,7 +46,7 @@ public:
       UbTiming::startTiming();
    }
    /*==========================================================*/
-   void endTiming()
+   void endTiming() override
    {
       UbTiming::endTiming();
       //save #node and time informations
diff --git a/src/basics/basics/utilities/UbObservable.h b/src/basics/basics/utilities/UbObservable.h
index 56967b904836debbec0f8e5fc785de030824749d..f877718f185615bd0645d8b54fd74b35eba4f476 100644
--- a/src/basics/basics/utilities/UbObservable.h
+++ b/src/basics/basics/utilities/UbObservable.h
@@ -77,17 +77,16 @@ protected:
      Usually this constructor is used in extended classes.
    */
    UbObservable()
-   {
-   }
+   = default;
    
-   UbObservable(const UbObservable& src)
+   UbObservable(const UbObservable&  /*src*/)
    {
       //no copy of observers !!!
    }
    
    //falls irgendein schlaumeier den =operator von UbObservable aufrufen sollte,
    //dann macht diesr auch keine kopie! (Allg: zuweisungsoperatoren werden nie vererbt
-   UbObservable& operator=(const UbObservable& src)
+   UbObservable& operator=(const UbObservable&  /*src*/)
    {
       return *this;
    }
diff --git a/src/basics/basics/utilities/UbObserver.h b/src/basics/basics/utilities/UbObserver.h
index 0f2db5270aec44ba41a72f9ac8e6022308a12ecd..dab5d28c0cc83a4a73fdba8d9be7f979f9d96c2b 100644
--- a/src/basics/basics/utilities/UbObserver.h
+++ b/src/basics/basics/utilities/UbObserver.h
@@ -50,11 +50,11 @@ class UbObserver
 {
 protected:
 
-   UbObserver(){}
+   UbObserver()= default;
 
 public:
 
-   virtual ~UbObserver(){}
+   virtual ~UbObserver()= default;
 
    /*======================================================================*/
    /*  Methods                                                           */
diff --git a/src/basics/basics/utilities/UbScheduler.h b/src/basics/basics/utilities/UbScheduler.h
index c927e45b4e4f3c3188b2d1b46a15abc6bd466319..fcb410b2270843ee8e6c8a274228be71446d2841 100644
--- a/src/basics/basics/utilities/UbScheduler.h
+++ b/src/basics/basics/utilities/UbScheduler.h
@@ -100,7 +100,7 @@ public:
       this->addSchedule(schedule);
    }
    /*==========================================================*/
-   virtual ~UbScheduler() {}
+   virtual ~UbScheduler() = default;
    /*==========================================================*/
    inline void addSchedule(const UbSchedule& schedule)
    {
@@ -136,7 +136,7 @@ public:
       }
 
       //nu aber:
-      schedules.push_back(UbSchedule(step, begin, end));
+      schedules.emplace_back(step, begin, end);
 
       if( end>maxT ) maxT = end;
 
@@ -318,7 +318,7 @@ protected:
    std::vector<UbSchedule> schedules;
 };
 
-typedef UbScheduler::UbSchedule UbSchedule;
+using UbSchedule = UbScheduler::UbSchedule;
 
 #endif //UBSCHEDULER_H
 
diff --git a/src/basics/basics/utilities/UbSystem.h b/src/basics/basics/utilities/UbSystem.h
index 8efe16cca5c988764bd1eb19f6ef62d41534355b..975e7027525c0c6f0b115279db08c006ddd8788b 100644
--- a/src/basics/basics/utilities/UbSystem.h
+++ b/src/basics/basics/utilities/UbSystem.h
@@ -57,7 +57,7 @@
    #include "dirent.h"
    #include <sys/stat.h>
    #include <unistd.h>
-   #include <string.h>
+   #include <cstring>
 #elif defined(__AIX__)
    #define UBSYSTEM_AIX
    #include "dirent.h"
@@ -243,7 +243,7 @@ namespace UbSystem
       return static_cast<std::string>( str );
    }
    /*==========================================================*/
-   inline bool isDirectory(const std::string& dir, const unsigned& attemptions = 3)
+   inline bool isDirectory(const std::string& dir, const unsigned&  /*attemptions*/ = 3)
    {
       if( dir.empty() ) 
          UB_THROW( UbException(UB_EXARGS,"dir is empty") );
@@ -493,14 +493,14 @@ namespace UbSystem
    template<typename Ta, typename Tb>
    class IfThenElse<true, Ta, Tb> {
    public:
-      typedef Ta ResultT;
+      using ResultT = Ta;
    };
 
    // partial specialization: false yields third argument
    template<typename Ta, typename Tb>
    class IfThenElse<false, Ta, Tb> {
    public:
-      typedef Tb ResultT;
+      using ResultT = Tb;
    };
    //////////////////////////////////////////////////////////////////////////
    // generic IfThenElse - end
@@ -512,7 +512,7 @@ namespace UbSystem
    template< typename T>
    struct type2type
    {
-      typedef T type;
+      using type = T;
    };
 
 
@@ -522,8 +522,8 @@ namespace UbSystem
    template <typename Pair>
    struct select1st
    {
-      typedef Pair argument_type ;
-      typedef typename Pair::first_type result_type ;
+      using argument_type = Pair ;
+      using result_type = typename Pair::first_type ;
 
       const result_type&  operator()(const argument_type &p) const
       {
@@ -534,8 +534,8 @@ namespace UbSystem
    template <typename Pair>
    struct select2nd
    {
-      typedef Pair argument_type ;
-      typedef typename Pair::second_type result_type ;
+      using argument_type = Pair ;
+      using result_type = typename Pair::second_type ;
 
       const result_type& operator()(const argument_type &p) const
       {
diff --git a/src/basics/basics/utilities/UbTiming.h b/src/basics/basics/utilities/UbTiming.h
index 9260892669a7010ef35c75acc81b460646c06243..35181c4198b818458145a4fa3879f355b24b6536 100644
--- a/src/basics/basics/utilities/UbTiming.h
+++ b/src/basics/basics/utilities/UbTiming.h
@@ -64,7 +64,7 @@ public:
       this->name        = name;
    }
    /*==========================================================*/
-   virtual ~UbTiming() {}  
+   virtual ~UbTiming() = default;  
    /*==========================================================*/
    virtual void initTiming()
    {
@@ -176,8 +176,8 @@ protected:
 
 #ifdef UBSYSTEM_APPLE   //Apple hack
    #include <mach/mach_time.h>  
-   #include <time.h>  
-   #include <stdio.h> 
+   #include <ctime>
+   #include <cstdio>
    inline void mach_absolute_difference(const uint64_t& end, const uint64_t& start, struct timespec *tp) 
    {  
          uint64_t difference = end - start;  
@@ -223,20 +223,19 @@ class UbTimer
 {
 public:
    UbTimer(const bool& storeLapTimes = false) 
-      :  name("unamed"), isMeasuring(false), storeLapTimes(storeLapTimes)
-       , startTime(0.0), totalTime(0.0), lapTime(0.0)
+      :  name("unamed"),  storeLapTimes(storeLapTimes)
+        
    {
 
    }
    /*==========================================================*/
    UbTimer(const std::string& name, const bool& storeLapTimes = false) 
-      :  name(name), isMeasuring(false), storeLapTimes(storeLapTimes)
-       , startTime(0.0), totalTime(0.0), lapTime(0.0)
+      :  name(name), storeLapTimes(storeLapTimes)
    {
 
    }
    /*==========================================================*/
-   virtual ~UbTimer() {}  
+   virtual ~UbTimer() = default;  
    /*==========================================================*/
    double              getLapTime() const               { return this->lapTime;  }
    std::vector<double> getLapTimes() const              { return this->lapTimes; }
@@ -355,12 +354,12 @@ public:
 
 protected:
    std::string name;
-   bool        isMeasuring;
+   bool        isMeasuring{false};
    bool        storeLapTimes;
 
-   double      startTime;
-   double      totalTime;
-   double      lapTime;
+   double      startTime{0.0};
+   double      totalTime{0.0};
+   double      lapTime{0.0};
    
    std::vector<double> lapTimes;
 };
@@ -380,16 +379,16 @@ protected:
 
 class UbProgressTimer : public UbTimer
 {
-private:
-	UbProgressTimer(const UbProgressTimer& rhs);
 public:
+    UbProgressTimer(const UbProgressTimer& rhs) = delete;
+
   explicit UbProgressTimer( std::ostream & os = std::cout )
      : UbTimer(),os(os) 
   {
   	  this->start();
   }
   /*==========================================================*/
-  ~UbProgressTimer()
+  ~UbProgressTimer() override
   {
   //  A) Throwing an exception from a destructor is a Bad Thing.
   //  B) The progress_timer destructor does output which may throw.
diff --git a/src/basics/basics/utilities/UbTuple.h b/src/basics/basics/utilities/UbTuple.h
index 6b9b8b52aef2cb498c127506125b644113456aad..f081f2e9e0a054e320a2dfb1fd6e6e49d0489216 100644
--- a/src/basics/basics/utilities/UbTuple.h
+++ b/src/basics/basics/utilities/UbTuple.h
@@ -78,12 +78,12 @@ template <typename T>
 class UbTypeOp    // primary template
 {           
 public:
-   typedef T         ArgT;
-   typedef T         BareT;
-   typedef T const   ConstT;
-   typedef T &       RefT;
-   typedef T &       RefBareT;
-   typedef T const & RefConstT;
+   using ArgT = T;
+   using BareT = T;
+   using ConstT = const T;
+   using RefT = T &;
+   using RefBareT = T &;
+   using RefConstT = const T &;
 };
 /**** end of typeop1.hpp ****/
 
@@ -95,12 +95,12 @@ template <typename T>
 class UbTypeOp <T const>  // partial specialization for const types
 {
  public:
-   typedef T const   ArgT;
-   typedef T         BareT;
-   typedef T const   ConstT;
-   typedef T const & RefT;
-   typedef T &       RefBareT;
-   typedef T const & RefConstT;
+   using ArgT = const T;
+   using BareT = T;
+   using ConstT = const T;
+   using RefT = const T &;
+   using RefBareT = T &;
+   using RefConstT = const T &;
 };
 /**** end of typeop2.hpp ****/
 
@@ -112,12 +112,12 @@ template <typename T>
 class UbTypeOp <T&>        // partial specialization for references
 {
 public:
-   typedef T &                           ArgT;
-   typedef typename UbTypeOp<T>::BareT   BareT;
-   typedef T const                       ConstT;
-   typedef T &                           RefT;
-   typedef typename UbTypeOp<T>::BareT & RefBareT;
-   typedef T const &                     RefConstT;
+   using ArgT = T &;
+   using BareT = typename UbTypeOp<T>::BareT;
+   using ConstT = const T;
+   using RefT = T &;
+   using RefBareT = typename UbTypeOp<T>::BareT &;
+   using RefConstT = const T &;
 };
 /**** end of typeop3.hpp ****/
 
@@ -129,12 +129,12 @@ template<>
 class UbTypeOp <void>      // full specialization for void
 {
 public:
-   typedef void       ArgT;
-   typedef void       BareT;
-   typedef void const ConstT;
-   typedef void       RefT;
-   typedef void       RefBareT;
-   typedef void       RefConstT;
+   using ArgT = void;
+   using BareT = void;
+   using ConstT = const void;
+   using RefT = void;
+   using RefBareT = void;
+   using RefConstT = void;
 };
 /**** end of typeop4.hpp ****/
 
@@ -149,8 +149,8 @@ template <typename T1, typename T2>
 class UbDuo 
 {
 public:
-   typedef T1 Type1;  // type of first field
-   typedef T2 Type2;  // type of second field
+   using Type1 = T1;  // type of first field
+   using Type2 = T2;  // type of second field
    enum { N = 2 };    // number of fields
 
 public:
@@ -224,8 +224,8 @@ template <typename A, typename B, typename C>
 class UbDuo<A, UbDuo<B,C> > 
 {
 public:
-   typedef A          T1;           // type of first field
-   typedef UbDuo<B,C> T2;           // type of second field
+   using T1 = A;           // type of first field
+   using T2 = UbDuo<B, C>;           // type of second field
    enum { N = UbDuo<B,C>::N + 1 };  // number of fields
  
 public:
@@ -264,7 +264,7 @@ template <int N, typename T>
 class UbDuoT 
 {
 public:
-   typedef void ResultT;    // in general, the result type is void
+   using ResultT = void;    // in general, the result type is void
 };
 
 // specialization for 1st field of a plain duo
@@ -272,7 +272,7 @@ template <typename A, typename B>
 class UbDuoT<1, UbDuo<A,B> > 
 {
 public:
-   typedef A ResultT;
+   using ResultT = A;
 };
 
 // specialization for 2nd field of a plain duo
@@ -280,7 +280,7 @@ template <typename A, typename B>
 class UbDuoT<2, UbDuo<A,B> > 
 {
 public:
-   typedef B ResultT;
+   using ResultT = B;
 };
 
 // specialization for Nth field of a recursive duo
@@ -288,7 +288,7 @@ template <int N, typename A, typename B, typename C>
 class UbDuoT<N, UbDuo<A, UbDuo<B,C> > > 
 {
 public:
-   typedef typename UbDuoT<N-1, UbDuo<B,C> >::ResultT ResultT;
+   using ResultT = typename UbDuoT<N - 1, UbDuo<B, C> >::ResultT;
 };
 
 // specialization for 1st field of a recursive duo
@@ -296,7 +296,7 @@ template <typename A, typename B, typename C>
 class UbDuoT<1, UbDuo<A, UbDuo<B,C> > > 
 {
 public:
-   typedef A ResultT;
+   using ResultT = A;
 };
 
 // specialization for 2nd field of a recursive duo
@@ -304,7 +304,7 @@ template <typename A, typename B, typename C>
 class UbDuoT<2, UbDuo<A, UbDuo<B,C> > > 
 {
 public:
-   typedef B ResultT;
+   using ResultT = B;
 };
 
 //duo4.hpp
@@ -388,8 +388,8 @@ template <typename A>
 struct UbDuo<A,void> 
 {
 public:
-   typedef A    T1;  // type of first field
-   typedef void T2;  // type of second field
+   using T1 = A;  // type of first field
+   using T2 = void;  // type of second field
    enum { N = 1 };   // number of fields
 
 private:
@@ -464,10 +464,10 @@ template <typename P1,
 class UbTuple : public UbDuo<P1, typename UbTuple<P2,P3,P4,P5,P6,P7,P8,UbNullT>::BaseT> 
 {
 public:
-   typedef UbDuo<P1, typename UbTuple<P2,P3,P4,P5,P6,P7,P8,UbNullT>::BaseT>  BaseT;
+   using BaseT = UbDuo<P1, typename UbTuple<P2, P3, P4, P5, P6, P7, P8, UbNullT>::BaseT>;
 
    // constructor:
-   UbTuple() {}
+   UbTuple() = default;
    UbTuple( typename UbTypeOp<P1>::RefConstT a1,
             typename UbTypeOp<P2>::RefConstT a2,
             typename UbTypeOp<P3>::RefConstT a3 = UbNullT(),
@@ -494,10 +494,10 @@ public:
 template <typename P1, typename P2>
 class UbTuple<P1,P2,UbNullT,UbNullT,UbNullT,UbNullT,UbNullT,UbNullT> : public UbDuo<P1,P2> {
 public:
-   typedef UbDuo<P1,P2> BaseT;
+   using BaseT = UbDuo<P1, P2>;
    
    // constructor:
-   UbTuple() {}
+   UbTuple() = default;
    UbTuple( typename UbTypeOp<P1>::RefConstT a1,
             typename UbTypeOp<P2>::RefConstT a2,
             typename UbTypeOp<UbNullT>::RefConstT = UbNullT(),
@@ -525,10 +525,10 @@ template <typename P1>
 class UbTuple<P1,UbNullT,UbNullT,UbNullT,UbNullT,UbNullT,UbNullT,UbNullT> : public UbDuo<P1,void>
 {
 public:
-   typedef UbDuo<P1,void> BaseT;
+   using BaseT = UbDuo<P1, void>;
 
    // constructor:
-   UbTuple() {}
+   UbTuple() = default;
    UbTuple( typename UbTypeOp<P1>::RefConstT a1,
             typename UbTypeOp<UbNullT>::RefConstT = UbNullT(),
             typename UbTypeOp<UbNullT>::RefConstT = UbNullT(),
@@ -608,26 +608,26 @@ inline UbTuple<T1,T2,T3,T4,T5,T6,T7,T8> makeUbTuple(T1 const &a1, T2 const &a2,T
 }
 
 //some typedefs
-typedef UbTuple<float,float>                               UbTupleFloat2;
-typedef UbTuple<float,float,float>                         UbTupleFloat3;
-typedef UbTuple<int,int>                                   UbTupleInt2;
-typedef UbTuple<int,int,int>                               UbTupleInt3;
-typedef UbTuple<int,int,int,int>                           UbTupleInt4;
-typedef UbTuple<int,int,int,int,int>                       UbTupleInt5;
-typedef UbTuple<int,int,int,int,int,int>                   UbTupleInt6;
-typedef UbTuple<int,int,int,int,int,int,int,int>           UbTupleInt8;
-typedef UbTuple<unsigned int,unsigned int,unsigned int,unsigned int,unsigned int,unsigned int,unsigned int,unsigned int> UbTupleUInt8;
-typedef UbTuple<double,double>                             UbTupleDouble2;
-typedef UbTuple<double,double,double>                      UbTupleDouble3;
-typedef UbTuple<double,double,double,double>               UbTupleDouble4;
-typedef UbTuple<double,double,double,double,double,double> UbTupleDouble6;
-typedef UbTuple<std::string,double,double>                 UbTupleStringDouble2;
-typedef UbTuple<std::string,double,double,double>          UbTupleStringDouble3;
-typedef UbTuple<std::string,int,int,int>                   UbTupleStringInt3;
-typedef UbTuple<short,short,short,short>                   UbTupleShort4;
-typedef UbTuple<bool,bool,bool>                            UbTupleBool3;
-typedef UbTuple<int,double,double>                         UbTupleIntDouble2;
-typedef UbTuple<int, bool>                                 UbTupleIntBool;
+using UbTupleFloat2 = UbTuple<float, float>;
+using UbTupleFloat3 = UbTuple<float, float, float>;
+using UbTupleInt2 = UbTuple<int, int>;
+using UbTupleInt3 = UbTuple<int, int, int>;
+using UbTupleInt4 = UbTuple<int, int, int, int>;
+using UbTupleInt5 = UbTuple<int, int, int, int, int>;
+using UbTupleInt6 = UbTuple<int, int, int, int, int, int>;
+using UbTupleInt8 = UbTuple<int, int, int, int, int, int, int, int>;
+using UbTupleUInt8 = UbTuple<unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int>;
+using UbTupleDouble2 = UbTuple<double, double>;
+using UbTupleDouble3 = UbTuple<double, double, double>;
+using UbTupleDouble4 = UbTuple<double, double, double, double>;
+using UbTupleDouble6 = UbTuple<double, double, double, double, double, double>;
+using UbTupleStringDouble2 = UbTuple<std::string, double, double>;
+using UbTupleStringDouble3 = UbTuple<std::string, double, double, double>;
+using UbTupleStringInt3 = UbTuple<std::string, int, int, int>;
+using UbTupleShort4 = UbTuple<short, short, short, short>;
+using UbTupleBool3 = UbTuple<bool, bool, bool>;
+using UbTupleIntDouble2 = UbTuple<int, double, double>;
+using UbTupleIntBool = UbTuple<int, bool>;
 
 
 #endif //UBTUPLE_H
diff --git a/src/basics/basics/utilities/Vector3D.cpp b/src/basics/basics/utilities/Vector3D.cpp
index bb8fb46a295205bc7d1cc085623b22ad84a40a90..75ab1b814c33f9f1d631dec6189d0117f6168b18 100644
--- a/src/basics/basics/utilities/Vector3D.cpp
+++ b/src/basics/basics/utilities/Vector3D.cpp
@@ -128,6 +128,9 @@ double& Vector3D::X3()
 /*=======================================================*/
 Vector3D& Vector3D::operator=(const Vector3D& rkV)
 {
+    if(this == &rkV)
+        return *this;
+
    m_afTuple[0] = rkV.m_afTuple[0];
    m_afTuple[1] = rkV.m_afTuple[1];
    m_afTuple[2] = rkV.m_afTuple[2];
diff --git a/src/basics/basics/utilities/Vector3DTest.cpp b/src/basics/basics/utilities/Vector3DTest.cpp
index e13f1fa2edd3126bb1f3c2e4b074be4964d948f7..a1d634f513b66bbe2df450cf5f492ebad62f7373 100644
--- a/src/basics/basics/utilities/Vector3DTest.cpp
+++ b/src/basics/basics/utilities/Vector3DTest.cpp
@@ -11,7 +11,7 @@ public:
     Vector3D vec1;
     Vector3D vec2;
 
-    void SetUp() 
+    void SetUp() override 
 	{
         vec1[0] = vec1[1] = vec1[2] = 4.0f;
         vec2[0] = 0.0f; vec2[0] = 2.4f; vec2[0] = -1.3f;
diff --git a/src/basics/basics/writer/WbWriter.h b/src/basics/basics/writer/WbWriter.h
index 9683c446e47257f6b340aa7c0fed5084a2179aa9..8e5524416350c4704fc8a27882e6c9c61dc51c9f 100644
--- a/src/basics/basics/writer/WbWriter.h
+++ b/src/basics/basics/writer/WbWriter.h
@@ -57,16 +57,16 @@ public:
 
    //////////////////////////////////////////////////////////////////////////
    //nodes
-   virtual std::string writeNodes(const std::string& filename,std::vector< UbTupleFloat3 >& nodes) { throw UbException(UB_EXARGS,"not implemented for "+(std::string)typeid(*this).name() );  }
-   virtual std::string writeNodesWithNodeData(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector<std::string >& datanames, std::vector<std::vector<double > >& nodedata) { throw UbException(UB_EXARGS,"not implemented for "+(std::string)typeid(*this).name() );  }
-   virtual std::string writeNodesWithNodeDataDouble(const std::string& filename,std::vector< UbTupleDouble3 >& nodes, std::vector<std::string >& datanames, std::vector<std::vector<double > >& nodedata) { throw UbException(UB_EXARGS,"not implemented for "+(std::string)typeid(*this).name() );  }
+   virtual std::string writeNodes(const std::string&  /*filename*/,std::vector< UbTupleFloat3 >&  /*nodes*/) { throw UbException(UB_EXARGS,"not implemented for "+(std::string)typeid(*this).name() );  }
+   virtual std::string writeNodesWithNodeData(const std::string&  /*filename*/,std::vector< UbTupleFloat3 >&  /*nodes*/, std::vector<std::string >&  /*datanames*/, std::vector<std::vector<double > >&  /*nodedata*/) { throw UbException(UB_EXARGS,"not implemented for "+(std::string)typeid(*this).name() );  }
+   virtual std::string writeNodesWithNodeDataDouble(const std::string&  /*filename*/,std::vector< UbTupleDouble3 >&  /*nodes*/, std::vector<std::string >&  /*datanames*/, std::vector<std::vector<double > >&  /*nodedata*/) { throw UbException(UB_EXARGS,"not implemented for "+(std::string)typeid(*this).name() );  }
 
    //////////////////////////////////////////////////////////////////////////
    //lines
    //     0 ---- 1
    //nodenumbering must start with 0!
-   virtual std::string writeLines(const std::string& filename,std::vector<UbTupleFloat3 >& nodes, std::vector<UbTupleInt2 >& lines) { throw UbException(UB_EXARGS,"not implemented for "+(std::string)typeid(*this).name() );  }
-   virtual std::string writeLinesWithNodeData(const std::string& filename,std::vector<UbTupleFloat3 >& nodes, std::vector<UbTupleInt2 >& lines) { throw UbException(UB_EXARGS,"not implemented for "+(std::string)typeid(*this).name() );  }
+   virtual std::string writeLines(const std::string&  /*filename*/,std::vector<UbTupleFloat3 >&  /*nodes*/, std::vector<UbTupleInt2 >&  /*lines*/) { throw UbException(UB_EXARGS,"not implemented for "+(std::string)typeid(*this).name() );  }
+   virtual std::string writeLinesWithNodeData(const std::string&  /*filename*/,std::vector<UbTupleFloat3 >&  /*nodes*/, std::vector<UbTupleInt2 >&  /*lines*/) { throw UbException(UB_EXARGS,"not implemented for "+(std::string)typeid(*this).name() );  }
 
    //////////////////////////////////////////////////////////////////////////
    //triangles
@@ -75,8 +75,8 @@ public:
    //                      
    //                  0 === 1
    //nodenumbering must start with 0!
-   virtual std::string writeTriangles(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt3 >& cells){ throw UbException(UB_EXARGS,"not implemented for "+(std::string)typeid(*this).name() );  }
-   virtual std::string writeTrianglesWithNodeData(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt3 >& cells, std::vector<std::string >& datanames, std::vector<std::vector<double > >& nodedata){ throw UbException(UB_EXARGS,"not implemented for "+(std::string)typeid(*this).name() );  }
+   virtual std::string writeTriangles(const std::string&  /*filename*/,std::vector< UbTupleFloat3 >&  /*nodes*/, std::vector< UbTupleInt3 >&  /*cells*/){ throw UbException(UB_EXARGS,"not implemented for "+(std::string)typeid(*this).name() );  }
+   virtual std::string writeTrianglesWithNodeData(const std::string&  /*filename*/,std::vector< UbTupleFloat3 >&  /*nodes*/, std::vector< UbTupleInt3 >&  /*cells*/, std::vector<std::string >&  /*datanames*/, std::vector<std::vector<double > >&  /*nodedata*/){ throw UbException(UB_EXARGS,"not implemented for "+(std::string)typeid(*this).name() );  }
 
    //////////////////////////////////////////////////////////////////////////
    //quads
@@ -85,11 +85,11 @@ public:
    //                  |   |
    //                  0---1
    //nodenumbering must start with 0!
-   virtual std::string writeQuads(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt4 >& cells){ throw UbException(UB_EXARGS,"not implemented for "+(std::string)typeid(*this).name() );  }
-   virtual std::string writeQuadsWithNodeData(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt4 >& cells, std::vector< std::string >& datanames, std::vector< std::vector< double > >& nodedata){ throw UbException(UB_EXARGS,"not implemented for "+(std::string)typeid(*this).name() );  }
-   virtual std::string writeQuadsWithCellData(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt4 >& cells, std::vector< std::string >& datanames, std::vector< std::vector< double > >& celldata){ throw UbException(UB_EXARGS,"not implemented for "+(std::string)typeid(*this).name() );  }
-   virtual std::string writeQuadsWithNodeAndCellData(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt4 >& cells, 
-                                                     std::vector< std::string >& nodedatanames, std::vector< std::vector< double > >& nodedata, std::vector< std::string >& celldatanames, std::vector< std::vector< double > >&celldata) { throw UbException(UB_EXARGS,"not implemented for "+(std::string)typeid(*this).name() );  }
+   virtual std::string writeQuads(const std::string&  /*filename*/,std::vector< UbTupleFloat3 >&  /*nodes*/, std::vector< UbTupleInt4 >&  /*cells*/){ throw UbException(UB_EXARGS,"not implemented for "+(std::string)typeid(*this).name() );  }
+   virtual std::string writeQuadsWithNodeData(const std::string&  /*filename*/,std::vector< UbTupleFloat3 >&  /*nodes*/, std::vector< UbTupleInt4 >&  /*cells*/, std::vector< std::string >&  /*datanames*/, std::vector< std::vector< double > >&  /*nodedata*/){ throw UbException(UB_EXARGS,"not implemented for "+(std::string)typeid(*this).name() );  }
+   virtual std::string writeQuadsWithCellData(const std::string&  /*filename*/,std::vector< UbTupleFloat3 >&  /*nodes*/, std::vector< UbTupleInt4 >&  /*cells*/, std::vector< std::string >&  /*datanames*/, std::vector< std::vector< double > >&  /*celldata*/){ throw UbException(UB_EXARGS,"not implemented for "+(std::string)typeid(*this).name() );  }
+   virtual std::string writeQuadsWithNodeAndCellData(const std::string&  /*filename*/,std::vector< UbTupleFloat3 >&  /*nodes*/, std::vector< UbTupleInt4 >&  /*cells*/, 
+                                                     std::vector< std::string >&  /*nodedatanames*/, std::vector< std::vector< double > >&  /*nodedata*/, std::vector< std::string >&  /*celldatanames*/, std::vector< std::vector< double > >& /*celldata*/) { throw UbException(UB_EXARGS,"not implemented for "+(std::string)typeid(*this).name() );  }
 
    //////////////////////////////////////////////////////////////////////////
    //octs
@@ -100,9 +100,9 @@ public:
    //   | 3 ---+ 2
    //   |/     |/
    //   0 ---- 1
-   virtual std::string writeOcts(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt8 >& cells){ throw UbException(UB_EXARGS,"not implemented for "+(std::string)typeid(*this).name() );  }
-   virtual std::string writeOctsWithCellData(const std::string& filename,std::vector<UbTupleFloat3 >& nodes, std::vector<UbTupleInt8 >& cells, std::vector<std::string >& datanames, std::vector<std::vector<double > >& celldata){ throw UbException(UB_EXARGS,"not implemented for "+(std::string)typeid(*this).name() );  }
-   virtual std::string writeOctsWithNodeData(const std::string& filename,std::vector<UbTupleFloat3 >& nodes, std::vector<UbTupleUInt8 >& cells, std::vector<std::string >& datanames, std::vector<std::vector<double > >& nodedata){ throw UbException(UB_EXARGS,"not implemented for "+(std::string)typeid(*this).name() );  }
+   virtual std::string writeOcts(const std::string&  /*filename*/,std::vector< UbTupleFloat3 >&  /*nodes*/, std::vector< UbTupleInt8 >&  /*cells*/){ throw UbException(UB_EXARGS,"not implemented for "+(std::string)typeid(*this).name() );  }
+   virtual std::string writeOctsWithCellData(const std::string&  /*filename*/,std::vector<UbTupleFloat3 >&  /*nodes*/, std::vector<UbTupleInt8 >&  /*cells*/, std::vector<std::string >&  /*datanames*/, std::vector<std::vector<double > >&  /*celldata*/){ throw UbException(UB_EXARGS,"not implemented for "+(std::string)typeid(*this).name() );  }
+   virtual std::string writeOctsWithNodeData(const std::string&  /*filename*/,std::vector<UbTupleFloat3 >&  /*nodes*/, std::vector<UbTupleUInt8 >&  /*cells*/, std::vector<std::string >&  /*datanames*/, std::vector<std::vector<double > >&  /*nodedata*/){ throw UbException(UB_EXARGS,"not implemented for "+(std::string)typeid(*this).name() );  }
 
 private:
 
diff --git a/src/basics/basics/writer/WbWriterAvsASCII.h b/src/basics/basics/writer/WbWriterAvsASCII.h
index 45e00fd6d1e7d6cc326e7d6bcadb63d897e1f72a..3e382f37dd3ebcf2c4a2f2ec453b1e789768578e 100644
--- a/src/basics/basics/writer/WbWriterAvsASCII.h
+++ b/src/basics/basics/writer/WbWriterAvsASCII.h
@@ -18,20 +18,20 @@ public:
       return &instance;
    }
 
+    WbWriterAvsASCII( const WbWriterAvsASCII& ) = delete;
+    const WbWriterAvsASCII& operator=( const WbWriterAvsASCII& ) = delete;
 private:
-   WbWriterAvsASCII() : WbWriter() {}                            
-   WbWriterAvsASCII( const WbWriterAvsASCII& );                  //no copy allowed 
-   const WbWriterAvsASCII& operator=( const WbWriterAvsASCII& ); //no copy allowed
+   WbWriterAvsASCII() = default;
 
 public:
-   std::string getFileExtension() { return ".ascii.inp"; }
+   std::string getFileExtension() override { return ".ascii.inp"; }
    
    ///////////////////virtual std::string writeOcts(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt8 >& cells) = 0;
    ///////////////////////////////////////////////////////
    //lines
    //     0 ---- 1
    //nodenumbering must start with 0!
-   std::string writeLines(const std::string& filename,std::vector<UbTupleFloat3 >& nodes, std::vector<UbTupleInt2 >& lines);
+   std::string writeLines(const std::string& filename,std::vector<UbTupleFloat3 >& nodes, std::vector<UbTupleInt2 >& lines) override;
 
    //////////////////////////////////////////////////////////////////////////
    //triangles
@@ -40,8 +40,8 @@ public:
    //                       
    //                  0---1
    //nodenumbering must start with 0!
-   std::string writeTriangles(const std::string& filename,std::vector<UbTupleFloat3 >& nodes, std::vector<UbTuple<int,int,int> >& triangles);
-   std::string writeTrianglesWithNodeData(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt3 >& cells, std::vector< std::string >& datanames, std::vector< std::vector< double > >& nodedata);
+   std::string writeTriangles(const std::string& filename,std::vector<UbTupleFloat3 >& nodes, std::vector<UbTuple<int,int,int> >& triangles) override;
+   std::string writeTrianglesWithNodeData(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt3 >& cells, std::vector< std::string >& datanames, std::vector< std::vector< double > >& nodedata) override;
 
    //////////////////////////////////////////////////////////////////////////
    //quads
@@ -50,10 +50,10 @@ public:
    //                  |   |
    //                  0---1
    //nodenumbering must start with 0!
-   std::string writeQuads(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt4 >& cells);
-   std::string writeQuadsWithNodeData(const std::string& filename, std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt4 >& cells, std::vector< std::string >& datanames, std::vector< std::vector< double > >& nodedata);
-   std::string writeQuadsWithCellData(const std::string& filename, std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt4 >& cells, std::vector< std::string >& datanames, std::vector< std::vector< double > >& celldata);
-   std::string writeQuadsWithNodeAndCellData(const std::string& filename, std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt4 >& cells, std::vector< std::string >& nodedatanames, std::vector< std::vector< double > >& nodedata, std::vector< std::string >& celldatanames, std::vector< std::vector< double > >& celldata);
+   std::string writeQuads(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt4 >& cells) override;
+   std::string writeQuadsWithNodeData(const std::string& filename, std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt4 >& cells, std::vector< std::string >& datanames, std::vector< std::vector< double > >& nodedata) override;
+   std::string writeQuadsWithCellData(const std::string& filename, std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt4 >& cells, std::vector< std::string >& datanames, std::vector< std::vector< double > >& celldata) override;
+   std::string writeQuadsWithNodeAndCellData(const std::string& filename, std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt4 >& cells, std::vector< std::string >& nodedatanames, std::vector< std::vector< double > >& nodedata, std::vector< std::string >& celldatanames, std::vector< std::vector< double > >& celldata) override;
 
    //////////////////////////////////////////////////////////////////////////
    //octs
@@ -64,8 +64,8 @@ public:
    //   | 3 ---+ 2
    //   |/     |/
    //   0 ---- 1
-   std::string writeOcts(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt8 >& cells);
-   std::string writeOctsWithCellData(const std::string& filename, std::vector<UbTupleFloat3 >& nodes, std::vector<UbTupleInt8 >& cells, std::vector<std::string >& datanames, std::vector< std::vector<double > >& celldata);
+   std::string writeOcts(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt8 >& cells) override;
+   std::string writeOctsWithCellData(const std::string& filename, std::vector<UbTupleFloat3 >& nodes, std::vector<UbTupleInt8 >& cells, std::vector<std::string >& datanames, std::vector< std::vector<double > >& celldata) override;
    std::string writeOctsWithNodeData(const std::string& filename, std::vector<UbTupleFloat3 >& nodes, std::vector<UbTupleUInt8 >& cells, std::vector<std::string >& datanames, std::vector< std::vector<double > >& nodedata) override;
 };
 
diff --git a/src/basics/basics/writer/WbWriterAvsBinary.h b/src/basics/basics/writer/WbWriterAvsBinary.h
index 8be53d2e9146eb9a2a82c0ca53c2e802a4681d38..17b44adaa4f19993c8b50b32bf707290308b8803 100644
--- a/src/basics/basics/writer/WbWriterAvsBinary.h
+++ b/src/basics/basics/writer/WbWriterAvsBinary.h
@@ -17,19 +17,20 @@ public:
       static WbWriterAvsBinary instance;
       return &instance;
    }
+
+    WbWriterAvsBinary( const WbWriterAvsBinary& ) = delete;
+    const WbWriterAvsBinary& operator=( const WbWriterAvsBinary& ) = delete;
 private:
-   WbWriterAvsBinary() : WbWriter() {}                             
-   WbWriterAvsBinary( const WbWriterAvsBinary& );                  //no copy allowed 
-   const WbWriterAvsBinary& operator=( const WbWriterAvsBinary& ); //no copy allowed
+   WbWriterAvsBinary() = default;
 
 public:
-   std::string getFileExtension() { return ".bin.inp"; }
+   std::string getFileExtension() override { return ".bin.inp"; }
 
    //////////////////////////////////////////////////////////////////////////
    //lines
    //     0 ---- 1
    //nodenumbering must start with 0!
-   std::string writeLines(const std::string& filename,std::vector<UbTupleFloat3 >& nodes, std::vector<UbTupleInt2 >& lines);
+   std::string writeLines(const std::string& filename,std::vector<UbTupleFloat3 >& nodes, std::vector<UbTupleInt2 >& lines) override;
 
    //////////////////////////////////////////////////////////////////////////
    //triangles
@@ -38,8 +39,8 @@ public:
    //                      
    //                  0---1
    //nodenumbering must start with 0!
-   std::string writeTriangles(const std::string& filename,std::vector<UbTupleFloat3 >& nodes, std::vector<UbTuple<int,int,int> >& triangles);
-   std::string writeTrianglesWithNodeData(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt3 >& cells, std::vector< std::string >& datanames, std::vector< std::vector< double > >& nodedata);
+   std::string writeTriangles(const std::string& filename,std::vector<UbTupleFloat3 >& nodes, std::vector<UbTuple<int,int,int> >& triangles) override;
+   std::string writeTrianglesWithNodeData(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt3 >& cells, std::vector< std::string >& datanames, std::vector< std::vector< double > >& nodedata) override;
    
    //////////////////////////////////////////////////////////////////////////
    //quads
@@ -48,10 +49,10 @@ public:
    //                  |   |
    //                  0---1
    //nodenumbering must start with 0!
-   std::string writeQuads(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt4 >& cells);
-   std::string writeQuadsWithNodeData(const std::string& filename, std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt4 >& cells, std::vector< std::string >& datanames, std::vector< std::vector< double > >& nodedata);
-   std::string writeQuadsWithCellData(const std::string& filename, std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt4 >& cells, std::vector< std::string >& datanames, std::vector< std::vector< double > >& celldata);
-   std::string writeQuadsWithNodeAndCellData(const std::string& filename, std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt4 >& cells, std::vector< std::string >& nodedatanames, std::vector< std::vector< double > >& nodedata, std::vector< std::string >& celldatanames, std::vector< std::vector< double > >& celldata);
+   std::string writeQuads(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt4 >& cells) override;
+   std::string writeQuadsWithNodeData(const std::string& filename, std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt4 >& cells, std::vector< std::string >& datanames, std::vector< std::vector< double > >& nodedata) override;
+   std::string writeQuadsWithCellData(const std::string& filename, std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt4 >& cells, std::vector< std::string >& datanames, std::vector< std::vector< double > >& celldata) override;
+   std::string writeQuadsWithNodeAndCellData(const std::string& filename, std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt4 >& cells, std::vector< std::string >& nodedatanames, std::vector< std::vector< double > >& nodedata, std::vector< std::string >& celldatanames, std::vector< std::vector< double > >& celldata) override;
 
    //////////////////////////////////////////////////////////////////////////
    //octs
@@ -62,7 +63,7 @@ public:
    //   | 3 ---+ 2
    //   |/     |/
    //   0 ---- 1
-   std::string writeOcts(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt8 >& cells);
+   std::string writeOcts(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt8 >& cells) override;
    std::string writeOctsWithCellData(const std::string& filename, std::vector<UbTupleFloat3 >& nodes, std::vector<UbTupleInt8 >& cells, std::vector<std::string >& datanames, std::vector< std::vector<double > >& celldata) override;
    std::string writeOctsWithNodeData(const std::string& filename, std::vector<UbTupleFloat3 >& nodes, std::vector<UbTupleUInt8 >& cells, std::vector<std::string >& datanames, std::vector< std::vector<double > >& nodedata) override;
 };
diff --git a/src/basics/basics/writer/WbWriterSunflow.h b/src/basics/basics/writer/WbWriterSunflow.h
index 726476009f41c4cd8652fc9ae25affb6fdaef0d3..39f71070ee6f41b7084ba902175331b257ebd030 100644
--- a/src/basics/basics/writer/WbWriterSunflow.h
+++ b/src/basics/basics/writer/WbWriterSunflow.h
@@ -13,6 +13,9 @@ public:
       static WbWriterSunflow instance;
       return &instance;
    }
+
+    WbWriterSunflow( const WbWriterSunflow& ) = delete;
+    const WbWriterSunflow& operator=( const WbWriterSunflow& ) = delete;
 private:
    WbWriterSunflow() : WbWriter() 
    {
@@ -20,15 +23,13 @@ private:
       if(sizeof(int)          !=4) throw UbException(UB_EXARGS,"error int   type mismatch");
       if(sizeof(float)        !=4) throw UbException(UB_EXARGS,"error float type mismatch");
    }
-   WbWriterSunflow( const WbWriterSunflow& );                  //no copy allowed 
-   const WbWriterSunflow& operator=( const WbWriterSunflow& ); //no copy allowed
 
    static std::string  pvdEndTag;
 
 public:
-   std::string getFileExtension()  { return "ascii.sunflow"; }
+   std::string getFileExtension() override  { return "ascii.sunflow"; }
 
-   std::string writeTriangles(const std::string& filename,std::vector<UbTupleFloat3 >& nodes, std::vector<UbTupleInt3 >& triangles);
+   std::string writeTriangles(const std::string& filename,std::vector<UbTupleFloat3 >& nodes, std::vector<UbTupleInt3 >& triangles) override;
 };
 
 #endif //WbWriterSunflow_H
diff --git a/src/basics/basics/writer/WbWriterTecPlotASCII.h b/src/basics/basics/writer/WbWriterTecPlotASCII.h
index 1866ca60b9546b7d731353d05cf810079a446fee..df0256765996ce6c553609eadf46bea94219dede 100644
--- a/src/basics/basics/writer/WbWriterTecPlotASCII.h
+++ b/src/basics/basics/writer/WbWriterTecPlotASCII.h
@@ -13,6 +13,10 @@ public:
       static WbWriterTecPlotASCII instance;
       return &instance;
    }
+
+    WbWriterTecPlotASCII( const WbWriterTecPlotASCII& ) = delete;
+    const WbWriterTecPlotASCII& operator=( const WbWriterTecPlotASCII& ) = delete;
+
 private:
    WbWriterTecPlotASCII() : WbWriter() 
    {
@@ -21,12 +25,9 @@ private:
       if(sizeof(float)        !=4) throw UbException(UB_EXARGS,"machine error float type mismatch");
    }
 
-   WbWriterTecPlotASCII( const WbWriterTecPlotASCII& );                  //no copy allowed 
-   const WbWriterTecPlotASCII& operator=( const WbWriterTecPlotASCII& ); //no copy allowed
-
    static std::string  pvdEndTag;
 public:
-   std::string getFileExtension() { return ".ascii.dat";   }
+   std::string getFileExtension() override { return ".ascii.dat";   }
 
    //write a metafile 
 //    std::string writeCollection(const std::string& filename, const std::vector<std::string>& filenames, const double& timestep, const bool& sepGroups);
diff --git a/src/basics/basics/writer/WbWriterVtkASCII.h b/src/basics/basics/writer/WbWriterVtkASCII.h
index c935c7d2c084ff3deae4b2f6754bb93d24bbef68..6d422ebd1d243a3df6e4b112bbc8788a486890a2 100644
--- a/src/basics/basics/writer/WbWriterVtkASCII.h
+++ b/src/basics/basics/writer/WbWriterVtkASCII.h
@@ -23,13 +23,13 @@ private:
    const WbWriterVtkASCII& operator=( const WbWriterVtkASCII& ); //no copy allowed
 
 public:
-   std::string getFileExtension()  { return ".ascii.vtk"; }
+   std::string getFileExtension() override  { return ".ascii.vtk"; }
 
    //////////////////////////////////////////////////////////////////////////
    //lines
    //     0 ---- 1
    //nodenumbering must start with 0!
-   std::string writeLines(const std::string& filename, std::vector<UbTupleFloat3 >& nodes, std::vector<UbTupleInt2 >& lines);
+   std::string writeLines(const std::string& filename, std::vector<UbTupleFloat3 >& nodes, std::vector<UbTupleInt2 >& lines) override;
 
    //////////////////////////////////////////////////////////////////////////
    //triangles
@@ -38,8 +38,8 @@ public:
    //                     
    //                  0---1
    //nodenumbering must start with 0!
-   std::string writeTriangles(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt3 >& cells);
-   std::string writeTrianglesWithNodeData(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt3 >& cells, std::vector< std::string >& datanames, std::vector< std::vector< double > >& nodedata);
+   std::string writeTriangles(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt3 >& cells) override;
+   std::string writeTrianglesWithNodeData(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt3 >& cells, std::vector< std::string >& datanames, std::vector< std::vector< double > >& nodedata) override;
 
    //////////////////////////////////////////////////////////////////////////
    //2D
@@ -48,12 +48,12 @@ public:
    //                  |   |
    //                  0---1
    //nodenumbering must start with 0!
-   std::string writeQuads(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt4 >& cells);
-   std::string writeQuadsWithNodeData(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt4 >& cells, std::vector< std::string >& datanames, std::vector< std::vector< double > >& nodedata);
-   std::string writeQuadsWithCellData(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt4 >& cells, std::vector< std::string >& datanames, std::vector< std::vector< double > >& celldata);
+   std::string writeQuads(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt4 >& cells) override;
+   std::string writeQuadsWithNodeData(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt4 >& cells, std::vector< std::string >& datanames, std::vector< std::vector< double > >& nodedata) override;
+   std::string writeQuadsWithCellData(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt4 >& cells, std::vector< std::string >& datanames, std::vector< std::vector< double > >& celldata) override;
    std::string writeQuadsWithNodeAndCellData(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt4 >& cells, 
                                              std::vector< std::string >& nodedatanames, std::vector< std::vector< double > >& nodedata, std::vector< std::string >& celldatanames,
-                                             std::vector< std::vector< double > >& celldata                                                                       );
+                                             std::vector< std::vector< double > >& celldata                                                                       ) override;
    
    //////////////////////////////////////////////////////////////////////////
    //octs
@@ -64,7 +64,7 @@ public:
    //   | 3 ---+ 2
    //   |/     |/
    //   0 ---- 1
-   std::string writeOcts(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt8 >& cells);
+   std::string writeOcts(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt8 >& cells) override;
    std::string writeOctsBinary(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt8 >& cells);
    std::string writeOctsWithCellData(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt8 >& cells, std::vector<std::string >& datanames, std::vector<std::vector<double > >& celldata) override;
    std::string writeOctsWithNodeData(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleUInt8 >& cells, std::vector<std::string >& datanames, std::vector<std::vector<double > >& nodedata) override;
diff --git a/src/basics/basics/writer/WbWriterVtkBinary.h b/src/basics/basics/writer/WbWriterVtkBinary.h
index 46c101a5aa09d64bbc7970e7018b6af71e54bf8a..d7dd65e6e072d79b740469a53fc21fb671495bbc 100644
--- a/src/basics/basics/writer/WbWriterVtkBinary.h
+++ b/src/basics/basics/writer/WbWriterVtkBinary.h
@@ -17,19 +17,20 @@ public:
       static WbWriterVtkBinary instance;
       return &instance;
    }
+
+    WbWriterVtkBinary( const WbWriterVtkBinary& ) = delete;
+    const WbWriterVtkBinary& operator=( const WbWriterVtkBinary& ) = delete;
 private:
-   WbWriterVtkBinary() : WbWriter() {}                             
-   WbWriterVtkBinary( const WbWriterVtkBinary& );                  //no copy allowed 
-   const WbWriterVtkBinary& operator=( const WbWriterVtkBinary& ); //no copy allowed
+   WbWriterVtkBinary() = default;
 
 public:
-   std::string getFileExtension() { return ".bin.vtk"; }
+   std::string getFileExtension() override { return ".bin.vtk"; }
 
    //////////////////////////////////////////////////////////////////////////
    //lines
    //     0 ---- 1
    //nodenumbering must start with 0!
-   std::string writeLines(const std::string& filename, std::vector<UbTupleFloat3 >& nodes, std::vector<UbTupleInt2 >& lines);
+   std::string writeLines(const std::string& filename, std::vector<UbTupleFloat3 >& nodes, std::vector<UbTupleInt2 >& lines) override;
 
    //////////////////////////////////////////////////////////////////////////
    //triangles
@@ -38,8 +39,8 @@ public:
    //                     
    //                  0---1
    //nodenumbering must start with 0!
-   std::string writeTriangles(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt3 >& cells);
-   std::string writeTrianglesWithNodeData(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt3 >& cells, std::vector< std::string >& datanames, std::vector< std::vector< double > >& nodedata);
+   std::string writeTriangles(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt3 >& cells) override;
+   std::string writeTrianglesWithNodeData(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt3 >& cells, std::vector< std::string >& datanames, std::vector< std::vector< double > >& nodedata) override;
 
    //////////////////////////////////////////////////////////////////////////
    //2D
@@ -48,12 +49,12 @@ public:
    //                  |   |
    //                  0---1
    //nodenumbering must start with 0!
-   std::string writeQuads(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt4 >& cells);
-   std::string writeQuadsWithNodeData(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt4 >& cells, std::vector< std::string >& datanames, std::vector< std::vector< double > >& nodedata);
-   std::string writeQuadsWithCellData(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt4 >& cells, std::vector< std::string >& datanames, std::vector< std::vector< double > >& celldata);
+   std::string writeQuads(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt4 >& cells) override;
+   std::string writeQuadsWithNodeData(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt4 >& cells, std::vector< std::string >& datanames, std::vector< std::vector< double > >& nodedata) override;
+   std::string writeQuadsWithCellData(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt4 >& cells, std::vector< std::string >& datanames, std::vector< std::vector< double > >& celldata) override;
    std::string writeQuadsWithNodeAndCellData(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt4 >& cells, 
                                              std::vector< std::string >& nodedatanames, std::vector< std::vector< double > >& nodedata, std::vector< std::string >& celldatanames,
-                                             std::vector< std::vector< double > >& celldata                                                                    );
+                                             std::vector< std::vector< double > >& celldata                                                                    ) override;
    
    //////////////////////////////////////////////////////////////////////////
    //octs
@@ -64,9 +65,9 @@ public:
    //   | 3 ---+ 2
    //   |/     |/
    //   0 ---- 1
-   std::string writeOcts(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt8 >& cells);
-   std::string writeOctsWithCellData(const std::string& filename,std::vector<UbTupleFloat3 >& nodes, std::vector<UbTupleInt8 >& cells, std::vector<std::string >& datanames, std::vector<std::vector<double > >& celldata);
-   std::string writeOctsWithNodeData(const std::string& filename,std::vector<UbTupleFloat3 >& nodes, std::vector<UbTupleUInt8 >& cells, std::vector<std::string >& datanames, std::vector<std::vector<double > >& nodedata);
+   std::string writeOcts(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt8 >& cells) override;
+   std::string writeOctsWithCellData(const std::string& filename,std::vector<UbTupleFloat3 >& nodes, std::vector<UbTupleInt8 >& cells, std::vector<std::string >& datanames, std::vector<std::vector<double > >& celldata) override;
+   std::string writeOctsWithNodeData(const std::string& filename,std::vector<UbTupleFloat3 >& nodes, std::vector<UbTupleUInt8 >& cells, std::vector<std::string >& datanames, std::vector<std::vector<double > >& nodedata) override;
 
 };
 
diff --git a/src/basics/basics/writer/WbWriterVtkXmlASCII.h b/src/basics/basics/writer/WbWriterVtkXmlASCII.h
index e43d976494d46cb045df4c53ca2ff5f4bdc11f7d..11b557287ba6f880c889c3a4082dfc6446cfeb66 100644
--- a/src/basics/basics/writer/WbWriterVtkXmlASCII.h
+++ b/src/basics/basics/writer/WbWriterVtkXmlASCII.h
@@ -45,6 +45,10 @@ public:
       static WbWriterVtkXmlASCII instance;
       return &instance;
    }
+
+   WbWriterVtkXmlASCII( const WbWriterVtkXmlASCII& ) = delete;
+   const WbWriterVtkXmlASCII& operator=( const WbWriterVtkXmlASCII& ) = delete;
+
 private:
    WbWriterVtkXmlASCII() : WbWriter() 
    {
@@ -52,8 +56,6 @@ private:
       if(sizeof(int)          !=4) throw UbException(UB_EXARGS,"error int   type mismatch");
       if(sizeof(float)        !=4) throw UbException(UB_EXARGS,"error float type mismatch");
    }
-   WbWriterVtkXmlASCII( const WbWriterVtkXmlASCII& );                  //no copy allowed 
-   const WbWriterVtkXmlASCII& operator=( const WbWriterVtkXmlASCII& ); //no copy allowed
 
    static std::string  pvdEndTag;
 
diff --git a/src/basics/basics/writer/WbWriterVtkXmlBinary.cpp b/src/basics/basics/writer/WbWriterVtkXmlBinary.cpp
index 448aeb91f0c67aa0352f01e5df01c2469666d22c..d88459eb5ed8c0ec90348618a4834def954f965e 100644
--- a/src/basics/basics/writer/WbWriterVtkXmlBinary.cpp
+++ b/src/basics/basics/writer/WbWriterVtkXmlBinary.cpp
@@ -38,7 +38,7 @@
 using namespace std;
 
 /*===============================================================================*/
-string WbWriterVtkXmlBinary::pvdEndTag ="   </Collection>\n</VTKFile>";
+const std::string WbWriterVtkXmlBinary::pvdEndTag ="   </Collection>\n</VTKFile>";
 /*===============================================================================*/
 string WbWriterVtkXmlBinary::writeCollection(const string& filename, const vector<string>& filenames, const double& timeStep, const bool& sepGroups)
 {
diff --git a/src/basics/basics/writer/WbWriterVtkXmlBinary.h b/src/basics/basics/writer/WbWriterVtkXmlBinary.h
index 6119fd2205c79c2f1db6cffff13f9e9a32985285..2beda26b7aa4830b30d47c8bc1c0cddc24c4c730 100644
--- a/src/basics/basics/writer/WbWriterVtkXmlBinary.h
+++ b/src/basics/basics/writer/WbWriterVtkXmlBinary.h
@@ -45,6 +45,10 @@ public:
       static WbWriterVtkXmlBinary instance;
       return &instance;
    }
+
+    WbWriterVtkXmlBinary( const WbWriterVtkXmlBinary& ) = delete;
+    const WbWriterVtkXmlBinary& operator=( const WbWriterVtkXmlBinary& ) = delete;
+
 private:
    WbWriterVtkXmlBinary() : WbWriter() 
    {
@@ -53,12 +57,9 @@ private:
       if(sizeof(float)        !=4) throw UbException(UB_EXARGS,"machine error float type mismatch");
    }
 
-   WbWriterVtkXmlBinary( const WbWriterVtkXmlBinary& );                  //no copy allowed 
-   const WbWriterVtkXmlBinary& operator=( const WbWriterVtkXmlBinary& ); //no copy allowed
-
-   static std::string  pvdEndTag;
+   static const std::string  pvdEndTag;
 public:
-   std::string getFileExtension() { return ".bin.vtu";   }
+   std::string getFileExtension() override { return ".bin.vtu";   }
 
    //write a metafile 
    std::string writeCollection(const std::string& filename, const std::vector<std::string>& filenames, const double& timestep, const bool& sepGroups);
@@ -67,14 +68,14 @@ public:
 
    //////////////////////////////////////////////////////////////////////////
    //nodes
-   std::string writeNodes(const std::string& filename,std::vector< UbTupleFloat3 >& nodes);
-   std::string writeNodesWithNodeData(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector<std::string >& datanames, std::vector<std::vector<double > >& nodedata);
+   std::string writeNodes(const std::string& filename,std::vector< UbTupleFloat3 >& nodes) override;
+   std::string writeNodesWithNodeData(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector<std::string >& datanames, std::vector<std::vector<double > >& nodedata) override;
 
    //////////////////////////////////////////////////////////////////////////
    //lines
    //     0 ---- 1
    //nodenumbering must start with 0!
-   std::string writeLines(const std::string& filename,std::vector<UbTupleFloat3 >& nodes, std::vector<UbTupleInt2 >& lines);
+   std::string writeLines(const std::string& filename,std::vector<UbTupleFloat3 >& nodes, std::vector<UbTupleInt2 >& lines) override;
     //std::string writeLinesWithNodeData(const std::string& filename,std::vector<UbTupleFloat3 >& nodes, std::vector<UbTupleInt2 >& lines, std::vector< std::string >& datanames, std::vector< std::vector< double > >& nodedata);
     // FIXME: hides function in base class
 
@@ -84,8 +85,8 @@ public:
    //                     
    //                  0---1
    //nodenumbering must start with 0!
-   std::string writeTriangles(const std::string& filename,std::vector<UbTupleFloat3 >& nodes, std::vector<UbTupleInt3 >& triangles);
-   std::string writeTrianglesWithNodeData(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt3 >& cells, std::vector<std::string >& datanames, std::vector<std::vector<double > >& nodedata);
+   std::string writeTriangles(const std::string& filename,std::vector<UbTupleFloat3 >& nodes, std::vector<UbTupleInt3 >& triangles) override;
+   std::string writeTrianglesWithNodeData(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt3 >& cells, std::vector<std::string >& datanames, std::vector<std::vector<double > >& nodedata) override;
 
    //////////////////////////////////////////////////////////////////////////
    //2D
@@ -95,12 +96,12 @@ public:
    //                  0---1
    //nodenumbering must start with 0!
 
-   std::string writeQuads(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt4 >& cells);
-   std::string writeQuadsWithNodeData(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt4 >& cells, std::vector< std::string >& datanames, std::vector< std::vector< double > >& nodedata);
-   std::string writeQuadsWithCellData(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt4 >& cells, std::vector< std::string >& datanames, std::vector< std::vector< double > >& celldata);
+   std::string writeQuads(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt4 >& cells) override;
+   std::string writeQuadsWithNodeData(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt4 >& cells, std::vector< std::string >& datanames, std::vector< std::vector< double > >& nodedata) override;
+   std::string writeQuadsWithCellData(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt4 >& cells, std::vector< std::string >& datanames, std::vector< std::vector< double > >& celldata) override;
    std::string writeQuadsWithNodeAndCellData(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt4 >& cells, 
                                              std::vector< std::string >& nodedatanames, std::vector< std::vector< double > >& nodedata, std::vector< std::string >& celldatanames,
-                                             std::vector< std::vector< double > >& celldata                                                                    );
+                                             std::vector< std::vector< double > >& celldata                                                                    ) override;
    
    //////////////////////////////////////////////////////////////////////////
    //octs
@@ -111,9 +112,9 @@ public:
    //   | 3 ---+ 2
    //   |/     |/
    //   0 ---- 1
-   std::string writeOcts(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt8 >& cells);
-   std::string writeOctsWithCellData(const std::string& filename,std::vector<UbTupleFloat3 >& nodes, std::vector<UbTupleInt8 >& cells, std::vector<std::string >& datanames, std::vector<std::vector<double > >& celldata);
-   std::string writeOctsWithNodeData(const std::string& filename,std::vector<UbTupleFloat3 >& nodes, std::vector<UbTupleUInt8 >& cells, std::vector<std::string >& datanames, std::vector<std::vector<double > >& nodedata);
+   std::string writeOcts(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt8 >& cells) override;
+   std::string writeOctsWithCellData(const std::string& filename,std::vector<UbTupleFloat3 >& nodes, std::vector<UbTupleInt8 >& cells, std::vector<std::string >& datanames, std::vector<std::vector<double > >& celldata) override;
+   std::string writeOctsWithNodeData(const std::string& filename,std::vector<UbTupleFloat3 >& nodes, std::vector<UbTupleUInt8 >& cells, std::vector<std::string >& datanames, std::vector<std::vector<double > >& nodedata) override;
    
 private:
 
diff --git a/src/basics/basics/writer/WbWriterX3D.h b/src/basics/basics/writer/WbWriterX3D.h
index 2cea1c46ddc537f080dc8e7081cd92bc406b147c..a6527ce6a08e28cd87d8c6e446e70000bba3e94d 100644
--- a/src/basics/basics/writer/WbWriterX3D.h
+++ b/src/basics/basics/writer/WbWriterX3D.h
@@ -13,6 +13,9 @@ public:
       static WbWriterX3D instance;
       return &instance;
    }
+
+    WbWriterX3D( const WbWriterX3D& ) = delete;
+    const WbWriterX3D& operator=( const WbWriterX3D& ) = delete;
 private:
    WbWriterX3D() : WbWriter() 
    {
@@ -20,15 +23,13 @@ private:
       if(sizeof(int)          !=4) throw UbException(UB_EXARGS,"error int   type mismatch");
       if(sizeof(float)        !=4) throw UbException(UB_EXARGS,"error float type mismatch");
    }
-   WbWriterX3D( const WbWriterX3D& );                  //no copy allowed 
-   const WbWriterX3D& operator=( const WbWriterX3D& ); //no copy allowed
 
    static std::string  pvdEndTag;
 
 public:
-   std::string getFileExtension()  { return "ascii.X3D"; }
+   std::string getFileExtension() override  { return "ascii.X3D"; }
 
-   std::string writeTriangles(const std::string& filename,std::vector<UbTupleFloat3 >& nodes, std::vector<UbTupleInt3 >& triangles);
+   std::string writeTriangles(const std::string& filename,std::vector<UbTupleFloat3 >& nodes, std::vector<UbTupleInt3 >& triangles) override;
 };
 
 #endif //WBWRITERX3D_H
diff --git a/src/basics/geometry3d/GbCuboid3D.cpp b/src/basics/geometry3d/GbCuboid3D.cpp
index f95e114285d77694c6bd26f6550cd26263af4e3f..55bb6331bdc3dba88a6089d64c9b760c61a2fb6c 100644
--- a/src/basics/geometry3d/GbCuboid3D.cpp
+++ b/src/basics/geometry3d/GbCuboid3D.cpp
@@ -405,7 +405,7 @@ string GbCuboid3D::toString()
    return ss.str();
 }
 /*=======================================================*/
-GbPoint3D* GbCuboid3D::calculateInterSectionPoint3D(GbPoint3D& point1, GbPoint3D& point2)
+GbPoint3D* GbCuboid3D::calculateInterSectionPoint3D(GbPoint3D&  /*point1*/, GbPoint3D&  /*point2*/)
 {
    throw UbException(UB_EXARGS,"not correct implemented");
 }
diff --git a/src/basics/geometry3d/GbCuboid3D.h b/src/basics/geometry3d/GbCuboid3D.h
index 992e423bca78e4eb0e1d8bc86d9387f26a13b2d0..9a099737bd2259a78fcf05e826b488214ef1cc64 100644
--- a/src/basics/geometry3d/GbCuboid3D.h
+++ b/src/basics/geometry3d/GbCuboid3D.h
@@ -45,7 +45,7 @@ class GbObject3DCreator;
 
 #include <PointerDefinitions.h>
 class GbCuboid3D;
-typedef SPtr<GbCuboid3D> GbCuboid3DPtr;
+using GbCuboid3DPtr = SPtr<GbCuboid3D>;
 
 //! \brief This Class provides basic 3D box objects.
 class GbCuboid3D : public GbObject3D, public UbObserver
@@ -55,10 +55,10 @@ public:
    GbCuboid3D(const double& minX1,const double& minX2, const double& minX3, const double& maxX1,const double& maxX2, const double& maxX3);
    GbCuboid3D(GbPoint3D *p1, GbPoint3D *p2);
    GbCuboid3D(GbCuboid3D *cuboid);
-   ~GbCuboid3D();   
+   ~GbCuboid3D() override;   
 
-   GbCuboid3D* clone()    { return new GbCuboid3D(this); }
-   void finalize();
+   GbCuboid3D* clone() override    { return new GbCuboid3D(this); }
+   void finalize() override;
 
    GbPoint3D* getPoint1() { return this->p1; }
    GbPoint3D* getPoint2() { return this->p2; }
@@ -67,42 +67,42 @@ public:
    void setPoint2(GbPoint3D* point2);
    void setPoints(GbPoint3D* point1, GbPoint3D* point2);
 
-   double getX1Centroid();
-   double getX1Minimum();
-   double getX1Maximum();
-   double getX2Centroid();
-   double getX2Minimum();
-   double getX2Maximum();
-   double getX3Centroid();
-   double getX3Minimum();
-   double getX3Maximum();
-   void setCenterCoordinates(const double& x1, const double& x2, const double& x3);
-
-   void translate(const double& x1, const double& x2, const double& x3);
-   void rotate(const double& rx1, const double& rx2, const double& rx3) {}
-   void scale(const double& sx1, const double& sx2, const double& sx3);
+   double getX1Centroid() override;
+   double getX1Minimum() override;
+   double getX1Maximum() override;
+   double getX2Centroid() override;
+   double getX2Minimum() override;
+   double getX2Maximum() override;
+   double getX3Centroid() override;
+   double getX3Minimum() override;
+   double getX3Maximum() override;
+   void setCenterCoordinates(const double& x1, const double& x2, const double& x3) override;
+
+   void translate(const double& x1, const double& x2, const double& x3) override;
+   void rotate(const double& rx1, const double& rx2, const double& rx3) override {}
+   void scale(const double& sx1, const double& sx2, const double& sx3) override;
 
    double getLengthX1();
    double getLengthX2();
    double getLengthX3();
 
-   bool isPointInGbObject3D(const double& x1p, const double& x2p, const double& x3p, bool& pointIsOnBoundary);
-   bool isPointInGbObject3D(const double& x1p, const double& x2p, const double& x3p); 
-   bool isCellInsideGbObject3D(const double& x1a,const double& x2a,const double& x3a,const double& x1b,const double& x2b,const double& x3b);
-   bool isCellCuttingGbObject3D(const double& x1a,const double& x2a,const double& x3a,const double& x1b,const double& x2b,const double& x3b);
-   bool isCellInsideOrCuttingGbObject3D(const double& x1a,const double& x2a,const double& x3a,const double& x1b,const double& x2b,const double& x3b);
-   double getCellVolumeInsideGbObject3D(const double& x1a,const double& x2a,const double& x3a,const double& x1b,const double& x2b,const double& x3b);
+   bool isPointInGbObject3D(const double& x1p, const double& x2p, const double& x3p, bool& pointIsOnBoundary) override;
+   bool isPointInGbObject3D(const double& x1p, const double& x2p, const double& x3p) override; 
+   bool isCellInsideGbObject3D(const double& x1a,const double& x2a,const double& x3a,const double& x1b,const double& x2b,const double& x3b) override;
+   bool isCellCuttingGbObject3D(const double& x1a,const double& x2a,const double& x3a,const double& x1b,const double& x2b,const double& x3b) override;
+   bool isCellInsideOrCuttingGbObject3D(const double& x1a,const double& x2a,const double& x3a,const double& x1b,const double& x2b,const double& x3b) override;
+   double getCellVolumeInsideGbObject3D(const double& x1a,const double& x2a,const double& x3a,const double& x1b,const double& x2b,const double& x3b) override;
 
    GbPoint3D*  calculateInterSectionPoint3D(GbPoint3D& point1, GbPoint3D &point2);
    //GbCuboid3D* createClippedRectangle3D(const double& x1a,const double& x2a,const double& x3a,const double& x1b,const double& x2b,const double& x3b);
-   GbLine3D*   createClippedLine3D(GbPoint3D& point1, GbPoint3D& point2);
+   GbLine3D*   createClippedLine3D(GbPoint3D& point1, GbPoint3D& point2) override;
 
-   std::vector<GbTriangle3D*> getSurfaceTriangleSet();
-   void addSurfaceTriangleSet(std::vector<UbTupleFloat3>& nodes, std::vector<UbTupleInt3>& triangles);
+   std::vector<GbTriangle3D*> getSurfaceTriangleSet() override;
+   void addSurfaceTriangleSet(std::vector<UbTupleFloat3>& nodes, std::vector<UbTupleInt3>& triangles) override;
 
-   bool hasRaytracing() { return true; }
+   bool hasRaytracing() override { return true; }
    /*|r| must be 1! einheitsvector!!*/
-   double getIntersectionRaytraceFactor(const double& x1, const double& x2, const double& x3, const double& rx1, const double& rx2, const double& rx3);
+   double getIntersectionRaytraceFactor(const double& x1, const double& x2, const double& x3, const double& rx1, const double& rx2, const double& rx3) override;
 
 
    double getDistance(GbPoint3D* p)
@@ -128,11 +128,11 @@ public:
       }
    }
 
-   std::string toString();
+   std::string toString() override;
 
    //virtuelle Methoden von UbObserver
-   void objectChanged(UbObservable* changedObject);
-   void objectWillBeDeleted(UbObservable* objectForDeletion);
+   void objectChanged(UbObservable* changedObject) override;
+   void objectWillBeDeleted(UbObservable* objectForDeletion) override;
 
 
    using GbObject3D::isPointInGbObject3D; //Grund: dadurch muss man hier  isPointInGbObject3D(GbPoint3D*) nicht ausprogrammieren, welche sonst hier "ueberdeckt" waere
diff --git a/src/basics/geometry3d/GbCylinder3D.cpp b/src/basics/geometry3d/GbCylinder3D.cpp
index 1bfae6b3461111e94f6fa2eb84f32ed3027dd67e..e2bb839dd0734cd4b7eb91160afe431d2beea756 100644
--- a/src/basics/geometry3d/GbCylinder3D.cpp
+++ b/src/basics/geometry3d/GbCylinder3D.cpp
@@ -9,9 +9,7 @@ using namespace std;
 // Konstruktor
 /*==========================================================*/
 GbCylinder3D::GbCylinder3D()
-   : minX1(0.0)   , minX2(0.0)   , minX3(0.0)
-   , maxX1(0.0)   , maxX2(0.0)   , maxX3(0.0)
-   , centerX1(0.0), centerX2(0.0), centerX3(0.0)
+    
 {
    this->setName("cylinder");
    GbPoint3D* p1 = new GbPoint3D();
@@ -25,9 +23,6 @@ GbCylinder3D::GbCylinder3D()
 }
 /*=======================================================*/
 GbCylinder3D::GbCylinder3D(GbCylinder3D* cylinder)
-   : minX1(0.0)   , minX2(0.0)   , minX3(0.0)
-   , maxX1(0.0)   , maxX2(0.0)   , maxX3(0.0)
-   , centerX1(0.0), centerX2(0.0), centerX3(0.0)
 {
    this->setName("cylinder");
    mRad         = cylinder->getRadius();
@@ -39,9 +34,6 @@ GbCylinder3D::GbCylinder3D(GbCylinder3D* cylinder)
 }
 /*==========================================================*/
 GbCylinder3D::GbCylinder3D(const double& x1a,const double& x2a, const double& x3a, const double& x1b,const double& x2b, const double& x3b, const double& rad)
-   : minX1(0.0)   , minX2(0.0)   , minX3(0.0)
-   , maxX1(0.0)   , maxX2(0.0)   , maxX3(0.0)
-   , centerX1(0.0), centerX2(0.0), centerX3(0.0)
 {
    this->setName("cylinder");
    mLine = new GbLine3D;
@@ -58,9 +50,6 @@ GbCylinder3D::GbCylinder3D(const double& x1a,const double& x2a, const double& x3
 }
 /*==========================================================*/
 GbCylinder3D::GbCylinder3D(GbPoint3D* p1, GbPoint3D* p2, const double& rad)
-   : minX1(0.0), minX2(0.0), minX3(0.0)
-   , maxX1(0.0), maxX2(0.0), maxX3(0.0)
-   , centerX1(0.0), centerX2(0.0), centerX3(0.0)
 {
    this->setName("cylinder");
    mRad = rad;
@@ -71,9 +60,6 @@ GbCylinder3D::GbCylinder3D(GbPoint3D* p1, GbPoint3D* p2, const double& rad)
 }
 /*==========================================================*/
 GbCylinder3D::GbCylinder3D(GbLine3D* line, const double& rad)
-   : minX1(0.0), minX2(0.0), minX3(0.0)
-   , maxX1(0.0), maxX2(0.0), maxX3(0.0)
-   , centerX1(0.0), centerX2(0.0), centerX3(0.0)
 {
    this->setName("cylinder");
    mRad = rad;
diff --git a/src/basics/geometry3d/GbCylinder3D.h b/src/basics/geometry3d/GbCylinder3D.h
index 04cdbb802ed4ce659097e258e341dd92e96c8766..bf8e19a2843837bb9b9ac7155771d5560c8bb8f5 100644
--- a/src/basics/geometry3d/GbCylinder3D.h
+++ b/src/basics/geometry3d/GbCylinder3D.h
@@ -23,7 +23,7 @@ class GbObject3DCreator;
 
 #include <PointerDefinitions.h>
 class GbCylinder3D;
-typedef SPtr<GbCylinder3D> GbCylinder3DPtr;
+using GbCylinder3DPtr = SPtr<GbCylinder3D>;
 
 
 class GbCylinder3D : public GbObject3D , public UbObserver 
@@ -34,10 +34,10 @@ public:
 	GbCylinder3D(GbPoint3D* p1, GbPoint3D* p2, const double& radius);
 	GbCylinder3D(GbLine3D* line, const double& rad);
 	GbCylinder3D(GbCylinder3D* cylinder);
-	~GbCylinder3D();    
+	~GbCylinder3D() override;    
 
-	GbCylinder3D* clone() { return new GbCylinder3D(this); }
-	void finalize();
+	GbCylinder3D* clone() override { return new GbCylinder3D(this); }
+	void finalize() override;
 
 	double     getRadius() { return this->mRad; };
 	GbLine3D*  getLine() {return mLine;}
@@ -56,51 +56,51 @@ public:
 
 	double getHeight(); 
 
-	void scale(const double& sx1, const double& sx2, const double& sx3);
+	void scale(const double& sx1, const double& sx2, const double& sx3) override;
 
-   void translate(const double& x1, const double& x2, const double& x3) 
+   void translate(const double& x1, const double& x2, const double& x3) override 
    {
       this->mLine->translate( x1, x2, x3 );
       this->calculateValues();
       //this->notifyObserversObjectChanged();
    }
 
-   double getX1Centroid() { return centerX1; }
-   double getX1Minimum()  { return minX1;    }
-	double getX1Maximum()  { return maxX1;    }
-	double getX2Centroid() { return centerX2; }
-	double getX2Minimum()  { return minX2;    }
-	double getX2Maximum()  { return maxX2;    }
-	double getX3Centroid() { return centerX3; }
-	double getX3Minimum()  { return minX3;    }
-	double getX3Maximum()  { return maxX3;    }
-
-	bool isPointInGbObject3D(const double& x1p, const double& x2p, const double& x3p); 
-	bool isPointInGbObject3D(const double& x1p, const double& x2p, const double& x3p, bool& pointIsOnBoundary); 
-   bool isCellInsideGbObject3D(const double& x1a,const double& x2a,const double& x3a,const double& x1b,const double& x2b,const double& x3b);
-   bool isCellCuttingGbObject3D(const double& x1a,const double& x2a,const double& x3a,const double& x1b,const double& x2b,const double& x3b);
-   bool isCellInsideOrCuttingGbObject3D(const double& x1a,const double& x2a,const double& x3a,const double& x1b,const double& x2b,const double& x3b);
-
-	GbLine3D* createClippedLine3D(GbPoint3D& point1, GbPoint3D& point2);
+   double getX1Centroid() override { return centerX1; }
+   double getX1Minimum() override  { return minX1;    }
+	double getX1Maximum() override  { return maxX1;    }
+	double getX2Centroid() override { return centerX2; }
+	double getX2Minimum() override  { return minX2;    }
+	double getX2Maximum() override  { return maxX2;    }
+	double getX3Centroid() override { return centerX3; }
+	double getX3Minimum() override  { return minX3;    }
+	double getX3Maximum() override  { return maxX3;    }
+
+	bool isPointInGbObject3D(const double& x1p, const double& x2p, const double& x3p) override; 
+	bool isPointInGbObject3D(const double& x1p, const double& x2p, const double& x3p, bool& pointIsOnBoundary) override; 
+   bool isCellInsideGbObject3D(const double& x1a,const double& x2a,const double& x3a,const double& x1b,const double& x2b,const double& x3b) override;
+   bool isCellCuttingGbObject3D(const double& x1a,const double& x2a,const double& x3a,const double& x1b,const double& x2b,const double& x3b) override;
+   bool isCellInsideOrCuttingGbObject3D(const double& x1a,const double& x2a,const double& x3a,const double& x1b,const double& x2b,const double& x3b) override;
+
+	GbLine3D* createClippedLine3D(GbPoint3D& point1, GbPoint3D& point2) override;
    
    //SG ausdokumentieren, da der nur unendlcihe Zylinder macht ...
    //bool hasRaytracing() { return true; }
-   bool hasRaytracing() { return false; }
-   bool raytracingSupportsPointsInside() { return true; }
+   bool hasRaytracing() override { return false; }
+   bool raytracingSupportsPointsInside() override { return true; }
    
    
    /*|r| must be 1! einheitsvector!!*/
-   double getIntersectionRaytraceFactor(const double& x1, const double& x2, const double& x3, const double& rx1, const double& rx2, const double& rx3);
+   double getIntersectionRaytraceFactor(const double& x1, const double& x2, const double& x3, const double& rx1, const double& rx2, const double& rx3) override;
 
-	std::vector<GbTriangle3D*> getSurfaceTriangleSet();
-   void addSurfaceTriangleSet(std::vector<UbTupleFloat3>& nodes, std::vector<UbTupleInt3>& triangles);
+	std::vector<GbTriangle3D*> getSurfaceTriangleSet() override;
+   void addSurfaceTriangleSet(std::vector<UbTupleFloat3>& nodes, std::vector<UbTupleInt3>& triangles) override;
    void addSurfaceTriangleSetSegments(std::vector<UbTupleFloat3>& nodes, std::vector<UbTupleInt3>& triangles, int segmentsRound, int segmentsHeight );
 
-	std::string toString();
+	std::string toString() override;
 
 	//virtuelle Methoden von UbObserver
-	void objectChanged(UbObservable* changedObject);
-	void objectWillBeDeleted(UbObservable* objectForDeletion);
+	void objectChanged(UbObservable* changedObject) override;
+	void objectWillBeDeleted(UbObservable* objectForDeletion) override;
 
    
    using GbObject3D::isPointInGbObject3D; //Grund: dadurch muss man hier  isPointInGbObject3D(GbPoint3D*) nicht ausprogrammieren, welche sonst hier "ueberdeckt" waere
@@ -112,9 +112,9 @@ protected:
    GbLine3D* mLine;
 	double    mRad;
 
-   double minX1, minX2, minX3;
-   double maxX1, maxX2, maxX3;
-   double centerX1, centerX2, centerX3;
+   double minX1{0.0}, minX2{0.0}, minX3{0.0};
+   double maxX1{0.0}, maxX2{0.0}, maxX3{0.0};
+   double centerX1{0.0}, centerX2{0.0}, centerX3{0.0};
 
 	int cylinderType;
 
diff --git a/src/basics/geometry3d/GbHalfSpaceKrischan3D.h b/src/basics/geometry3d/GbHalfSpaceKrischan3D.h
index b51849282b2e6a171b0036fbdac778ea79f58037..d3769a5f664ca060f2eeb51691fd81dd3bebc5ab 100644
--- a/src/basics/geometry3d/GbHalfSpaceKrischan3D.h
+++ b/src/basics/geometry3d/GbHalfSpaceKrischan3D.h
@@ -40,7 +40,7 @@ public:
                  , const double& p3x, const double& p3y, const double& p3z );
 
    /*=======================================================*/
-   virtual ~GbHalfSpaceKrischan3D() { }
+   ~GbHalfSpaceKrischan3D() override = default;
    /*=======================================================*/
    std::string getTypeID() {return "GbHalfSpaceKrischan3D"; }
    /*=============================================*/
@@ -62,31 +62,31 @@ public:
 
    /*=====================================================*/
    //true, wenn 'in Object' oder 'auf Boundary'!
-   bool isPointInGbObject3D(const double& x1p, const double& x2p, const double& x3p)
+   bool isPointInGbObject3D(const double& x1p, const double& x2p, const double& x3p) override
    {
       return (ptInside(x1p,x2p,x3p));
    }
    /*=====================================================*/
    //true, wenn 'in Object' oder 'auf Boundary'!
-   bool isPointInGbObject3D(const double& x1p, const double& x2p, const double& x3p, bool& pointIsOnBoundary)
+   bool isPointInGbObject3D(const double& x1p, const double& x2p, const double& x3p, bool&  /*pointIsOnBoundary*/) override
    {
       return (ptInside(x1p,x2p,x3p));
    }
 
-   void finalize(){}
+   void finalize() override{}
 
-   double getX1Centroid(){ return      0.0; }
-   double getX1Minimum() { return -99999.0; }
-   double getX1Maximum() { return  99999.0; }
-   double getX2Centroid(){ return      0.0; }
-   double getX2Minimum() { return -99999.0; }
-   double getX2Maximum() { return  99999.0; }
-   double getX3Centroid(){ return      0.0; }
-   double getX3Minimum() { return -99999.0; }
-   double getX3Maximum() { return  99999.0; }
+   double getX1Centroid() override{ return      0.0; }
+   double getX1Minimum() override { return -99999.0; }
+   double getX1Maximum() override { return  99999.0; }
+   double getX2Centroid() override{ return      0.0; }
+   double getX2Minimum() override { return -99999.0; }
+   double getX2Maximum() override { return  99999.0; }
+   double getX3Centroid() override{ return      0.0; }
+   double getX3Minimum() override { return -99999.0; }
+   double getX3Maximum() override { return  99999.0; }
 
 
-   GbLine3D* createClippedLine3D (GbPoint3D &point1, GbPoint3D &point2)
+   GbLine3D* createClippedLine3D (GbPoint3D &point1, GbPoint3D &point2) override
    {
 	   GbPoint3D *p1 = new GbPoint3D(point1);
 	   GbPoint3D *p2 = new GbPoint3D(point2);
@@ -127,7 +127,7 @@ public:
    }
  
 
-   double getCellVolumeInsideGbObject3D(const double& x1a,const double& x2a,const double& x3a,const double& x1b,const double& x2b,const double& x3b);
+   double getCellVolumeInsideGbObject3D(const double& x1a,const double& x2a,const double& x3a,const double& x1b,const double& x2b,const double& x3b) override;
 
    double getDistance(const double& x1p, const double& x2p, const double& x3p)
    {
@@ -141,12 +141,12 @@ public:
       n3 = this->Normal[2];
    }
 
-   void addSurfaceTriangleSet(std::vector<UbTupleFloat3>& nodes, std::vector<UbTupleInt3>& triangles)
+   void addSurfaceTriangleSet(std::vector<UbTupleFloat3>&  /*nodes*/, std::vector<UbTupleInt3>&  /*triangles*/) override
    {
 	   std::cout << " addSurfaceTriangleSet(): TO BE DONE AND CHECKED ... " << std::endl;
    }
 
-   std::vector<GbTriangle3D*> getSurfaceTriangleSet()
+   std::vector<GbTriangle3D*> getSurfaceTriangleSet() override
    {
       std::vector<GbTriangle3D*> triangles;
       GbPoint3D p1( 0.0,0.0,0.0 );
@@ -158,7 +158,7 @@ public:
       return triangles;
    }
 
-   void objectChanged(UbObservable* changedObject)
+   void objectChanged(UbObservable*  /*changedObject*/) override
    {
       return;
       
@@ -167,7 +167,7 @@ public:
       //this->notifyObserversObjectChanged();
    }
    /*==========================================================*/
-   void objectWillBeDeleted(UbObservable* objectForDeletion)
+   void objectWillBeDeleted(UbObservable*  /*objectForDeletion*/) override
    {
       return;
       //if(this->mLine)
@@ -177,9 +177,9 @@ public:
       //}
    }
 
-   ObObject*   clone(){ return NULL; };
+   ObObject*   clone() override{ return NULL; };
 
-   std::string toString()
+   std::string toString() override
    { 
 	   std::stringstream temp;
 
diff --git a/src/basics/geometry3d/GbLine3D.cpp b/src/basics/geometry3d/GbLine3D.cpp
index 9d4c5a6c4aaeb33535e276fc7a283bae35c1882e..752e3a421c982fd7606f5b4ed6f73218f0ca7014 100644
--- a/src/basics/geometry3d/GbLine3D.cpp
+++ b/src/basics/geometry3d/GbLine3D.cpp
@@ -139,7 +139,7 @@ string GbLine3D::toString()
    return(ss.str());
 }
 /*=======================================================*/
-GbPoint3D* GbLine3D::calculateIntersectionPoint3D(GbLine3D* line)
+GbPoint3D* GbLine3D::calculateIntersectionPoint3D(GbLine3D*  /*line*/)
 {
    throw UbException(UB_EXARGS," not implemented");
    //return(GbSystem::calculateIntersectionPoint3D(*this->p1, *this->p2, *line->p1, *line->p2));
diff --git a/src/basics/geometry3d/GbLine3D.h b/src/basics/geometry3d/GbLine3D.h
index 2990282f9509645bf3f841e9fcc296acafc395ad..25697f59b3cb04d61c3f5bcdbc16218315b9ef9b 100644
--- a/src/basics/geometry3d/GbLine3D.h
+++ b/src/basics/geometry3d/GbLine3D.h
@@ -60,10 +60,10 @@ public:
    GbLine3D();
 	GbLine3D(GbPoint3D* point1, GbPoint3D* point2);
 	GbLine3D(GbLine3D* line);
-   ~GbLine3D(); 
+   ~GbLine3D() override; 
 
-   GbLine3D* clone() { return new GbLine3D(this); }
-   void finalize();
+   GbLine3D* clone() override { return new GbLine3D(this); }
+   void finalize() override;
 
    void setPoint1(GbPoint3D* point1);
    void setPoint2(GbPoint3D* point2);
@@ -78,20 +78,20 @@ public:
    
    double getLength()     { return(this->length); }
 	
-   double getX1Centroid() { return((this->p1->x1+this->p2->x1)*0.5);}
-   double getX2Centroid() { return((this->p1->x2+this->p2->x2)*0.5); };
-   double getX3Centroid() { return((this->p1->x3+this->p2->x3)*0.5); }
+   double getX1Centroid() override { return((this->p1->x1+this->p2->x1)*0.5);}
+   double getX2Centroid() override { return((this->p1->x2+this->p2->x2)*0.5); };
+   double getX3Centroid() override { return((this->p1->x3+this->p2->x3)*0.5); }
    
-   double getX1Minimum()  { return(this->p1->x1 < this->p2->x1 ? this->p1->x1 : this->p2->x1); }
-   double getX2Minimum()  { return(this->p1->x2 < this->p2->x2 ? this->p1->x2 : this->p2->x2); }
-   double getX3Minimum()  { return(this->p1->x3 < this->p2->x3 ? this->p1->x3 : this->p2->x3); }
+   double getX1Minimum() override  { return(this->p1->x1 < this->p2->x1 ? this->p1->x1 : this->p2->x1); }
+   double getX2Minimum() override  { return(this->p1->x2 < this->p2->x2 ? this->p1->x2 : this->p2->x2); }
+   double getX3Minimum() override  { return(this->p1->x3 < this->p2->x3 ? this->p1->x3 : this->p2->x3); }
    
-   double getX1Maximum()  { return(this->p1->x1 > this->p2->x1 ? this->p1->x1 : this->p2->x1); }
-   double getX2Maximum()  { return(this->p1->x2 > this->p2->x2 ? this->p1->x2 : this->p2->x2); }
-   double getX3Maximum()  { return(this->p1->x3 > this->p2->x3 ? this->p1->x3 : this->p2->x3); }
+   double getX1Maximum() override  { return(this->p1->x1 > this->p2->x1 ? this->p1->x1 : this->p2->x1); }
+   double getX2Maximum() override  { return(this->p1->x2 > this->p2->x2 ? this->p1->x2 : this->p2->x2); }
+   double getX3Maximum() override  { return(this->p1->x3 > this->p2->x3 ? this->p1->x3 : this->p2->x3); }
 	                                               
-   void scale(const double& sx1, const double& sx2, const double& sx3);
-   void translate(const double& tx1, const double& tx2, const double& tx3);
+   void scale(const double& sx1, const double& sx2, const double& sx3) override;
+   void translate(const double& tx1, const double& tx2, const double& tx3) override;
 
    GbPoint3D* calculateIntersectionPoint3D(GbLine3D* line);
    GbLine3D*  createClippedLine3D(GbCuboid3D* cuboid);
@@ -100,27 +100,27 @@ public:
    double     getDistance(const GbPoint3D& point);
    double     getDistance(const double& x1,const double& x2,const double& x3);
 
-   std::vector<GbTriangle3D*> getSurfaceTriangleSet();
-   bool isPointInGbObject3D(const double& x1, const double& x2, const double& x3)
+   std::vector<GbTriangle3D*> getSurfaceTriangleSet() override;
+   bool isPointInGbObject3D(const double&  /*x1*/, const double&  /*x2*/, const double&  /*x3*/) override
    {
       throw UbException(UB_EXARGS,"not implemented");
    }
-   bool isPointInGbObject3D(const double& x1, const double& x2, const double& x3, bool& pointIsOnBoundary)
+   bool isPointInGbObject3D(const double&  /*x1*/, const double&  /*x2*/, const double&  /*x3*/, bool&  /*pointIsOnBoundary*/) override
    {
       throw UbException(UB_EXARGS,"not implemented");
    }
-   bool isCellInsideGbObject3D(const double& x11,const double& x21,const double& x31,const double& x12,const double& x22,const double& x32) { return false; }
+   bool isCellInsideGbObject3D(const double&  /*x11*/,const double&  /*x21*/,const double&  /*x31*/,const double&  /*x12*/,const double&  /*x22*/,const double&  /*x32*/) override { return false; }
 
-   GbLine3D* createClippedLine3D (GbPoint3D& point1, GbPoint3D& point2)
+   GbLine3D* createClippedLine3D (GbPoint3D&  /*point1*/, GbPoint3D&  /*point2*/) override
    {
       throw UbException(UB_EXARGS,"not implemented");
    }
 
    //virtuelle Methoden von UbObserver
-   void objectChanged(UbObservable* changedObject);
-   void objectWillBeDeleted(UbObservable* objectForDeletion);
+   void objectChanged(UbObservable* changedObject) override;
+   void objectWillBeDeleted(UbObservable* objectForDeletion) override;
 
-   std::string toString();
+   std::string toString() override;
 
    using GbObject3D::isPointInGbObject3D; //Grund: dadurch muss man hier  isPointInGbObject3D(GbPoint3D*) nicht ausprogrammieren, welche sonst hier "ueberdeckt" waere
 protected:
diff --git a/src/basics/geometry3d/GbObject3D.h b/src/basics/geometry3d/GbObject3D.h
index b0cca70e42ce8f9967f36f22b4dc69bb2edfe6b2..be2191811bbf99c54998699073e90563d584db77 100644
--- a/src/basics/geometry3d/GbObject3D.h
+++ b/src/basics/geometry3d/GbObject3D.h
@@ -111,17 +111,17 @@ public:
    double getLengthX2() { return (getX2Maximum()-getX2Minimum()); }
    double getLengthX3() { return (getX3Maximum()-getX3Minimum()); }
 
-   virtual void setCenterX1Coordinate(const double& value) { throw UbException(UB_EXARGS,"not implemented for "+(std::string)typeid(*this).name() ); }
-   virtual void setCenterX2Coordinate(const double& value) { throw UbException(UB_EXARGS,"not implemented for "+(std::string)typeid(*this).name() ); }
-   virtual void setCenterX3Coordinate(const double& value) { throw UbException(UB_EXARGS,"not implemented for "+(std::string)typeid(*this).name() ); }
-   virtual void setCenterCoordinates(const double& x1, const double& x2, const double& x3) { throw UbException(UB_EXARGS, "not implemented for " + (std::string)typeid(*this).name()); }
-   virtual void setCenterCoordinates(const UbTupleDouble3& position) { throw UbException(UB_EXARGS,"not implemented for "+(std::string)typeid(*this).name() ); }
+   virtual void setCenterX1Coordinate(const double&  /*value*/) { throw UbException(UB_EXARGS,"not implemented for "+(std::string)typeid(*this).name() ); }
+   virtual void setCenterX2Coordinate(const double&  /*value*/) { throw UbException(UB_EXARGS,"not implemented for "+(std::string)typeid(*this).name() ); }
+   virtual void setCenterX3Coordinate(const double&  /*value*/) { throw UbException(UB_EXARGS,"not implemented for "+(std::string)typeid(*this).name() ); }
+   virtual void setCenterCoordinates(const double&  /*x1*/, const double&  /*x2*/, const double&  /*x3*/) { throw UbException(UB_EXARGS, "not implemented for " + (std::string)typeid(*this).name()); }
+   virtual void setCenterCoordinates(const UbTupleDouble3&  /*position*/) { throw UbException(UB_EXARGS,"not implemented for "+(std::string)typeid(*this).name() ); }
 
    //Rotates the Point in relation to the origen.
    //Parameters must be radian measure.
-   virtual void rotate(const double& rx1, const double& rx2, const double& rx3) { throw UbException(UB_EXARGS,"not implemented for "+(std::string)typeid(*this).name() ); }
-   virtual void translate(const double& x1, const double& x2, const double& x3) { throw UbException(UB_EXARGS,"not implemented for "+(std::string)typeid(*this).name() ); }
-   virtual void scale(const double& sx1, const double& sx2, const double& sx3)  { throw UbException(UB_EXARGS,"not implemented for "+(std::string)typeid(*this).name() ); }
+   virtual void rotate(const double&  /*rx1*/, const double&  /*rx2*/, const double&  /*rx3*/) { throw UbException(UB_EXARGS,"not implemented for "+(std::string)typeid(*this).name() ); }
+   virtual void translate(const double&  /*x1*/, const double&  /*x2*/, const double&  /*x3*/) { throw UbException(UB_EXARGS,"not implemented for "+(std::string)typeid(*this).name() ); }
+   virtual void scale(const double&  /*sx1*/, const double&  /*sx2*/, const double&  /*sx3*/)  { throw UbException(UB_EXARGS,"not implemented for "+(std::string)typeid(*this).name() ); }
 
    virtual bool isPointInGbObject3D(GbPoint3D* p);
    virtual bool isPointInGbObject3D(const double& x1, const double& x2, const double& x3, bool& pointIsOnBoundary)=0;
@@ -130,20 +130,20 @@ public:
    virtual bool isCellInsideGbObject3D(const double& x1a,const double& x2a,const double& x3a,const double& x1b,const double& x2b,const double& x3b);
    virtual bool isCellCuttingGbObject3D(const double& x1a,const double& x2a,const double& x3a,const double& x1b,const double& x2b,const double& x3b);
    virtual bool isCellInsideOrCuttingGbObject3D(const double& x1a,const double& x2a,const double& x3a,const double& x1b,const double& x2b,const double& x3b);
-   virtual double getCellVolumeInsideGbObject3D(const double& x1a,const double& x2a,const double& x3a,const double& x1b,const double& x2b,const double& x3b){ return -1.0;};
+   virtual double getCellVolumeInsideGbObject3D(const double&  /*x1a*/,const double&  /*x2a*/,const double&  /*x3a*/,const double&  /*x1b*/,const double&  /*x2b*/,const double&  /*x3b*/){ return -1.0;};
 
    virtual bool isInsideCell(const double& minX1,const double& minX2,const double& minX3,const double& maxX1,const double& maxX2,const double& maxX3);
 
    virtual GbLine3D* createClippedLine3D (GbPoint3D &point1, GbPoint3D &point2) = 0;
    virtual std::vector<GbTriangle3D*> getSurfaceTriangleSet()=0;
 
-   virtual void addSurfaceTriangleSet(std::vector<UbTupleFloat3>& nodes, std::vector<UbTupleInt3>& triangles) { throw UbException("GbObject3D::addSurfaceTriangleSet - not implemented for "+(std::string)typeid(*this).name()); }
+   virtual void addSurfaceTriangleSet(std::vector<UbTupleFloat3>&  /*nodes*/, std::vector<UbTupleInt3>&  /*triangles*/) { throw UbException("GbObject3D::addSurfaceTriangleSet - not implemented for "+(std::string)typeid(*this).name()); }
 
    virtual bool hasRaytracing() { return false; }
    virtual bool raytracingSupportsPointsInside() { return false; }
    //|r| must be 1! einheitsvector!!
    //return negativ value oder zero if no intersection
-   virtual double getIntersectionRaytraceFactor(const double& x1, const double& x2, const double& x3, const double& rx1, const double& rx2, const double& rx3) { throw UbException("GbObject3D::getIntersectionRaytraceFactor - not implemented"); }
+   virtual double getIntersectionRaytraceFactor(const double&  /*x1*/, const double&  /*x2*/, const double&  /*x3*/, const double&  /*rx1*/, const double&  /*rx2*/, const double&  /*rx3*/) { throw UbException("GbObject3D::getIntersectionRaytraceFactor - not implemented"); }
 };
 /*=========================================================================*/
 
diff --git a/src/basics/geometry3d/GbObjectGroup3D.cpp b/src/basics/geometry3d/GbObjectGroup3D.cpp
index 54b40d5aed352b1daba03d94abdb35507f514dcc..f96b9246aa80a4a37b51077b9956aee08c9ba4f4 100644
--- a/src/basics/geometry3d/GbObjectGroup3D.cpp
+++ b/src/basics/geometry3d/GbObjectGroup3D.cpp
@@ -13,58 +13,57 @@ GbObjectGroup3D::GbObjectGroup3D()
 }
 /*=====================================================*/
 GbObjectGroup3D::~GbObjectGroup3D()
-{
-}
+= default;
 /*=====================================================*/
 void GbObjectGroup3D::finalize()
 {
    throw UbException(UB_EXARGS,"not implemented.");
 }
 /*=======================================================*/
-void GbObjectGroup3D::setCenterCoordinates(const double& x1, const double& x2, const double& x3)
+void GbObjectGroup3D::setCenterCoordinates(const double&  /*x1*/, const double&  /*x2*/, const double&  /*x3*/)
 {
    throw UbException(UB_EXARGS,"not implemented.");
 }
 /*=====================================================*/
-double GbObjectGroup3D::getDistance(GbPoint3D* p)
+double GbObjectGroup3D::getDistance(GbPoint3D*  /*p*/)
 {
    throw UbException(UB_EXARGS,"not implemented.");
 }
 /*=====================================================*/
 
-void GbObjectGroup3D::setCenterX1Coordinate(const double& value)
+void GbObjectGroup3D::setCenterX1Coordinate(const double&  /*value*/)
 {
    throw UbException(UB_EXARGS,"not implemented.");
 }
 /*=====================================================*/
-void GbObjectGroup3D::setCenterX2Coordinate(const double& value)
+void GbObjectGroup3D::setCenterX2Coordinate(const double&  /*value*/)
 {
    throw UbException(UB_EXARGS,"not implemented.");
 }
 /*=====================================================*/
-void GbObjectGroup3D::setCenterX3Coordinate(const double& value)
+void GbObjectGroup3D::setCenterX3Coordinate(const double&  /*value*/)
 {
    throw UbException(UB_EXARGS,"not implemented.");
 }
 /*=====================================================*/
-void GbObjectGroup3D::setRadius(const double& radius)
+void GbObjectGroup3D::setRadius(const double&  /*radius*/)
 {
    throw UbException(UB_EXARGS,"not implemented.");
 }
 /*=====================================================*/
-double GbObjectGroup3D::getDistance(const double& x1p, const double& x2p, const double& x3p)
+double GbObjectGroup3D::getDistance(const double&  /*x1p*/, const double&  /*x2p*/, const double&  /*x3p*/)
 {
    throw UbException(UB_EXARGS,"not implemented.");
 }
 /*=====================================================*/
 //true, wenn 'in Object' oder 'auf Boundary'!
-bool GbObjectGroup3D::isPointInGbObject3D(const double& x1p, const double& x2p, const double& x3p)
+bool GbObjectGroup3D::isPointInGbObject3D(const double&  /*x1p*/, const double&  /*x2p*/, const double&  /*x3p*/)
 {
    return false;
 }
 /*=====================================================*/
 //true, wenn 'in Object' oder 'auf Boundary'!
-bool GbObjectGroup3D::isPointInGbObject3D(const double& x1p, const double& x2p, const double& x3p, bool& pointIsOnBoundary)
+bool GbObjectGroup3D::isPointInGbObject3D(const double&  /*x1p*/, const double&  /*x2p*/, const double&  /*x3p*/, bool&  /*pointIsOnBoundary*/)
 {
    return false;
 }
@@ -77,7 +76,7 @@ string GbObjectGroup3D::toString()
 	return ss.str();
 }
 /*=====================================================*/
-GbLine3D* GbObjectGroup3D::createClippedLine3D(GbPoint3D& point1, GbPoint3D& point2)
+GbLine3D* GbObjectGroup3D::createClippedLine3D(GbPoint3D&  /*point1*/, GbPoint3D&  /*point2*/)
 {
    return NULL;
 }
@@ -107,27 +106,27 @@ void GbObjectGroup3D::addSurfaceTriangleSet(vector<UbTupleFloat3>& nodes, vector
 {
 }
 /*=======================================================*/
-bool GbObjectGroup3D::hasIntersectionWithDirectedLine(GbPoint3D origin, GbPoint3D direction)
+bool GbObjectGroup3D::hasIntersectionWithDirectedLine(GbPoint3D  /*origin*/, GbPoint3D  /*direction*/)
 {
    return false;
 }
 /*=======================================================*/
-bool GbObjectGroup3D::isCellCuttingGbObject3D(const double& x1a,const double& x2a,const double& x3a,const double& x1b,const double& x2b,const double& x3b)
+bool GbObjectGroup3D::isCellCuttingGbObject3D(const double&  /*x1a*/,const double&  /*x2a*/,const double&  /*x3a*/,const double&  /*x1b*/,const double&  /*x2b*/,const double&  /*x3b*/)
 {
    return false;
 }
 /*=======================================================*/
-bool GbObjectGroup3D::isCellInsideOrCuttingGbObject3D(const double& x1a,const double& x2a,const double& x3a,const double& x1b,const double& x2b,const double& x3b)
+bool GbObjectGroup3D::isCellInsideOrCuttingGbObject3D(const double&  /*x1a*/,const double&  /*x2a*/,const double&  /*x3a*/,const double&  /*x1b*/,const double&  /*x2b*/,const double&  /*x3b*/)
 {
    return false;
 }
 /*==========================================================*/
-double GbObjectGroup3D::getCellVolumeInsideGbObject3D(const double& x1a,const double& x2a,const double& x3a,const double& x1b,const double& x2b,const double& x3b)
+double GbObjectGroup3D::getCellVolumeInsideGbObject3D(const double&  /*x1a*/,const double&  /*x2a*/,const double&  /*x3a*/,const double&  /*x1b*/,const double&  /*x2b*/,const double&  /*x3b*/)
 {
    return 0.0;
 }
 /*==========================================================*/
-double GbObjectGroup3D::getIntersectionRaytraceFactor(const double& x1, const double& x2, const double& x3, const double& rx1, const double& rx2, const double& rx3)
+double GbObjectGroup3D::getIntersectionRaytraceFactor(const double&  /*x1*/, const double&  /*x2*/, const double&  /*x3*/, const double&  /*rx1*/, const double&  /*rx2*/, const double&  /*rx3*/)
 {
    return 0.0;
 }
diff --git a/src/basics/geometry3d/GbObjectGroup3D.h b/src/basics/geometry3d/GbObjectGroup3D.h
index fac78a728de7303a937ecb6db473f5357c7b7b3c..380174f4750acbfc296fc5338c640eb13cc1ae1d 100644
--- a/src/basics/geometry3d/GbObjectGroup3D.h
+++ b/src/basics/geometry3d/GbObjectGroup3D.h
@@ -32,11 +32,11 @@ public:
    //////////////////////////////////////////////////////////////////////////
    // Konstruktoren
    GbObjectGroup3D(); 
-   GbObjectGroup3D(GbObjectGroup3D *group){}; 
-   ~GbObjectGroup3D();
+   GbObjectGroup3D(GbObjectGroup3D * /*group*/){}; 
+   ~GbObjectGroup3D() override;
 
-   GbObjectGroup3D* clone() {return new GbObjectGroup3D(this);}
-   void finalize();
+   GbObjectGroup3D* clone() override {return new GbObjectGroup3D(this);}
+   void finalize() override;
 
    void addGbObject(GbObject3D* object)
    {
@@ -45,63 +45,63 @@ public:
 
    double getRadius() const	{	return this->radius;	}
 
-   double getX1Centroid()  { return midPoint->getX1Coordinate();}
-   double getX1Minimum()   { return midPoint->getX1Coordinate()-radius;}
-   double getX1Maximum()   { return midPoint->getX1Coordinate()+radius;}
-   double getX2Centroid()  { return midPoint->getX2Coordinate();}
-   double getX2Minimum()   { return midPoint->getX2Coordinate()-radius;}
-   double getX2Maximum()   { return midPoint->getX2Coordinate()+radius;}
-   double getX3Centroid()  { return midPoint->getX3Coordinate();}
-   double getX3Minimum()   { return midPoint->getX3Coordinate()-radius;}
-   double getX3Maximum()   { return midPoint->getX3Coordinate()+radius;}
-
-   void setCenterX1Coordinate(const double& value);
-   void setCenterX2Coordinate(const double& value);
-   void setCenterX3Coordinate(const double& value);
-   void setCenterCoordinates(const double& x1, const double& x2, const double& x3);
+   double getX1Centroid() override  { return midPoint->getX1Coordinate();}
+   double getX1Minimum() override   { return midPoint->getX1Coordinate()-radius;}
+   double getX1Maximum() override   { return midPoint->getX1Coordinate()+radius;}
+   double getX2Centroid() override  { return midPoint->getX2Coordinate();}
+   double getX2Minimum() override   { return midPoint->getX2Coordinate()-radius;}
+   double getX2Maximum() override   { return midPoint->getX2Coordinate()+radius;}
+   double getX3Centroid() override  { return midPoint->getX3Coordinate();}
+   double getX3Minimum() override   { return midPoint->getX3Coordinate()-radius;}
+   double getX3Maximum() override   { return midPoint->getX3Coordinate()+radius;}
+
+   void setCenterX1Coordinate(const double& value) override;
+   void setCenterX2Coordinate(const double& value) override;
+   void setCenterX3Coordinate(const double& value) override;
+   void setCenterCoordinates(const double& x1, const double& x2, const double& x3) override;
    void setRadius(const double& radius);
 
-   GbLine3D* createClippedLine3D(GbPoint3D& point1, GbPoint3D& point2);
+   GbLine3D* createClippedLine3D(GbPoint3D& point1, GbPoint3D& point2) override;
    double getDistance(GbPoint3D* p); 
    double getDistance(const double& x1p, const double& x2p, const double& x3p);
 
-   bool isPointInGbObject3D(const double& x1, const double& x2, const double& x3);
-   bool isPointInGbObject3D(const double& x1p, const double& x2p, const double& x3p, bool& pointIsOnBoundary);
+   bool isPointInGbObject3D(const double& x1, const double& x2, const double& x3) override;
+   bool isPointInGbObject3D(const double& x1p, const double& x2p, const double& x3p, bool& pointIsOnBoundary) override;
 
-   bool isCellCuttingGbObject3D(const double& x1a,const double& x2a,const double& x3a,const double& x1b,const double& x2b,const double& x3b);
-   bool isCellInsideOrCuttingGbObject3D(const double& x1a,const double& x2a,const double& x3a,const double& x1b,const double& x2b,const double& x3b);
-   double getCellVolumeInsideGbObject3D(const double& x1a,const double& x2a,const double& x3a,const double& x1b,const double& x2b,const double& x3b);
+   bool isCellCuttingGbObject3D(const double& x1a,const double& x2a,const double& x3a,const double& x1b,const double& x2b,const double& x3b) override;
+   bool isCellInsideOrCuttingGbObject3D(const double& x1a,const double& x2a,const double& x3a,const double& x1b,const double& x2b,const double& x3b) override;
+   double getCellVolumeInsideGbObject3D(const double& x1a,const double& x2a,const double& x3a,const double& x1b,const double& x2b,const double& x3b) override;
    
-   std::vector<GbTriangle3D*> getSurfaceTriangleSet();
-   void addSurfaceTriangleSet(std::vector<UbTupleFloat3>& nodes, std::vector<UbTupleInt3>& triangles);
+   std::vector<GbTriangle3D*> getSurfaceTriangleSet() override;
+   void addSurfaceTriangleSet(std::vector<UbTupleFloat3>& nodes, std::vector<UbTupleInt3>& triangles) override;
                                 
-   bool hasRaytracing() { return true; }
+   bool hasRaytracing() override { return true; }
    /*|r| must be 1! einheitsvector!!*/
-   double getIntersectionRaytraceFactor(const double& x1, const double& x2, const double& x3, const double& rx1, const double& rx2, const double& rx3);
+   double getIntersectionRaytraceFactor(const double& x1, const double& x2, const double& x3, const double& rx1, const double& rx2, const double& rx3) override;
 
    bool hasIntersectionWithDirectedLine(GbPoint3D origin, GbPoint3D direction);
 
-	std::string toString();
+	std::string toString() override;
 
 
-   void translate(const double& x1, const double& x2, const double& x3) 
+   void translate(const double& x1, const double& x2, const double& x3) override 
    {
       this->midPoint->translate(x1, x2, x3); 
       this->notifyObserversObjectChanged();
    }
-   void rotate(const double& rx1, const double& rx2, const double& rx3) {/* rotation makes no sense*/ }
-   void scale(const double& sx1, const double& sx2, const double& sx3) { this->radius *= sx1; }
+   void rotate(const double& rx1, const double& rx2, const double& rx3) override {/* rotation makes no sense*/ }
+   void scale(const double& sx1, const double&  /*sx2*/, const double&  /*sx3*/) override { this->radius *= sx1; }
 
    TRIANGULATIONMODE getTriangulationMode() {return triangulationMode;}
    void setTriangulationMode(TRIANGULATIONMODE mode) { this->triangulationMode = mode; }
    
    //virtuelle Methoden von UbObserver
-   void objectChanged(UbObservable* changedObject)
+   void objectChanged(UbObservable*  /*changedObject*/) override
    {
       this->notifyObserversObjectChanged();
       //std::cout<<"GbSphere:objectChanged() - toDo-);";
    }
-   void objectWillBeDeleted(UbObservable* objectForDeletion)
+   void objectWillBeDeleted(UbObservable*  /*objectForDeletion*/) override
    {
 	   std::cout<<"throw UbException(-GbObjectGroup3D::finalize() - toDo-);";
    }
diff --git a/src/basics/geometry3d/GbPoint3D.cpp b/src/basics/geometry3d/GbPoint3D.cpp
index 6bbc180110c853fb4f70e4c5e4024b4e40f98a90..ff6852e78ee176fb02633aa684dd3b7626e05930 100644
--- a/src/basics/geometry3d/GbPoint3D.cpp
+++ b/src/basics/geometry3d/GbPoint3D.cpp
@@ -107,7 +107,7 @@ vector<GbTriangle3D*> GbPoint3D::getSurfaceTriangleSet()
    //triangles.push_back(new GbTriangle3D(new GbPoint3D(p1),new GbPoint3D(p1),new GbPoint3D(p1)));
 }
 /*=======================================================*/
-GbLine3D* GbPoint3D::createClippedLine3D (GbPoint3D& point1, GbPoint3D& point2)
+GbLine3D* GbPoint3D::createClippedLine3D (GbPoint3D&  /*point1*/, GbPoint3D&  /*point2*/)
 {
    throw UbException(UB_EXARGS,"not implemented");
 } 
diff --git a/src/basics/geometry3d/GbPoint3D.h b/src/basics/geometry3d/GbPoint3D.h
index 74b8cafaa51b8b2ef2fe8094b6050ce8fafac792..68760d789b2271e999a94997f8557bab65c8adc5 100644
--- a/src/basics/geometry3d/GbPoint3D.h
+++ b/src/basics/geometry3d/GbPoint3D.h
@@ -50,10 +50,10 @@ public:
    GbPoint3D();
    GbPoint3D(const double& x1, const double& x2, const double& x3);
    GbPoint3D(GbPoint3D *point);                
-   ~GbPoint3D() {}
+   ~GbPoint3D() override = default;
 
-   GbPoint3D* clone() {return new GbPoint3D(this);}
-   void finalize() {}
+   GbPoint3D* clone() override {return new GbPoint3D(this);}
+   void finalize() override {}
 
    void setCoordinates(const double& x1, const double& x2, const double& x3)
    {
@@ -72,29 +72,29 @@ public:
 
    void transform(const double matrix[4][4]);
  
-   double getX1Centroid()  { return this->x1; }
-   double getX1Minimum()   { return this->x1; }
-   double getX1Maximum()   { return this->x1; }
-   double getX2Centroid()  { return this->x2; }
-   double getX2Minimum()   { return this->x2; }
-   double getX2Maximum()   { return this->x2; }
-   double getX3Centroid()  { return this->x3; }
-   double getX3Minimum()   { return this->x3; }
-   double getX3Maximum()   { return this->x3; }        
+   double getX1Centroid() override  { return this->x1; }
+   double getX1Minimum() override   { return this->x1; }
+   double getX1Maximum() override   { return this->x1; }
+   double getX2Centroid() override  { return this->x2; }
+   double getX2Minimum() override   { return this->x2; }
+   double getX2Maximum() override   { return this->x2; }
+   double getX3Centroid() override  { return this->x3; }
+   double getX3Minimum() override   { return this->x3; }
+   double getX3Maximum() override   { return this->x3; }        
  
-   void translate(const double& x1, const double& x2, const double& x3);
-   void rotate(const double& rx1, const double& rx2, const double& rx3);
-   void scale(const double& sx1, const double& sx2, const double& sx3);
+   void translate(const double& x1, const double& x2, const double& x3) override;
+   void rotate(const double& rx1, const double& rx2, const double& rx3) override;
+   void scale(const double& sx1, const double& sx2, const double& sx3) override;
 
    double getDistance(GbPoint3D *p);
    bool equals(const GbPoint3D* point) const;
-   bool isPointInGbObject3D(const double& x1, const double& x2, const double& x3, bool& pointIsOnBoundary);
-   bool isPointInGbObject3D(const double& x1, const double& x2, const double& x3);
-   bool isCellInsideGbObject3D(const double& x11,const double& x21,const double& x31,const double& x12,const double& x22,const double& x23) { return false; }
+   bool isPointInGbObject3D(const double& x1, const double& x2, const double& x3, bool& pointIsOnBoundary) override;
+   bool isPointInGbObject3D(const double& x1, const double& x2, const double& x3) override;
+   bool isCellInsideGbObject3D(const double&  /*x11*/,const double&  /*x21*/,const double&  /*x31*/,const double&  /*x12*/,const double&  /*x22*/,const double&  /*x23*/) override { return false; }
 
-   std::vector<GbTriangle3D*> getSurfaceTriangleSet();
-   GbLine3D* createClippedLine3D(GbPoint3D &point1, GbPoint3D &point2);
-   virtual std::string toString();
+   std::vector<GbTriangle3D*> getSurfaceTriangleSet() override;
+   GbLine3D* createClippedLine3D(GbPoint3D &point1, GbPoint3D &point2) override;
+   std::string toString() override;
 
    using GbObject3D::isPointInGbObject3D; //Grund: dadurch muss man hier  isPointInGbObject3D(GbPoint3D*) nicht ausprogrammieren
                                           //, welche sonst hier "ueberdeckt" waere,da es dieselbe methode mit anderen args gibt!
diff --git a/src/basics/geometry3d/GbPolygon3D.h b/src/basics/geometry3d/GbPolygon3D.h
index 96b96a3acf08f9296f4584834a1390cec6d823e9..279b8bdb81c9460b9c3f35291652e1fc4900ff89 100644
--- a/src/basics/geometry3d/GbPolygon3D.h
+++ b/src/basics/geometry3d/GbPolygon3D.h
@@ -102,7 +102,7 @@ public:
    */
    GbPolygon3D(GbPolygon3D *polygon);
 
-   ~GbPolygon3D();
+   ~GbPolygon3D() override;
 
    /*======================================================================*/
 
@@ -249,17 +249,17 @@ public:
       std::vector<GbTriangle3D*> tmp;
       return tmp;
    }
-   bool isPointInGbObject3D(const double& x1, const double& x2, const double& x3) override
+   bool isPointInGbObject3D(const double&  /*x1*/, const double&  /*x2*/, const double&  /*x3*/) override
    {
       throw UbException(__FILE__, __LINE__, "GbPolygon3D::isPointInObject3D- not implemented");
    }
-   bool isPointInGbObject3D(const double& x1, const double& x2, const double& x3, bool& pointIsOnBoundary) override
+   bool isPointInGbObject3D(const double&  /*x1*/, const double&  /*x2*/, const double&  /*x3*/, bool&  /*pointIsOnBoundary*/) override
    {
       throw UbException(__FILE__, __LINE__, "GbPolygon3D::isPointInObject3D- not implemented");
    }
-   bool isCellInsideGbObject3D(const double& x1a,const double& x2a,const double& x3a,const double& x1b,const double& x2b,const double& x3b) override { return false; }
+   bool isCellInsideGbObject3D(const double&  /*x1a*/,const double&  /*x2a*/,const double&  /*x3a*/,const double&  /*x1b*/,const double&  /*x2b*/,const double&  /*x3b*/) override { return false; }
 
-   GbLine3D* createClippedLine3D (GbPoint3D& point1, GbPoint3D &point2) override
+   GbLine3D* createClippedLine3D (GbPoint3D&  /*point1*/, GbPoint3D & /*point2*/) override
    {
       throw UbException(__FILE__, __LINE__, "GbPolygon3D::createClippedLine3D - not implemented");
    }
diff --git a/src/basics/geometry3d/GbQuadFaceMesh3D.cpp b/src/basics/geometry3d/GbQuadFaceMesh3D.cpp
index 3211811370d466a32345772c1fecc6c13bb51e8e..8c7ccb1a076555732e147b150afd7c3c93f9d3f6 100644
--- a/src/basics/geometry3d/GbQuadFaceMesh3D.cpp
+++ b/src/basics/geometry3d/GbQuadFaceMesh3D.cpp
@@ -233,7 +233,7 @@ vector<GbTriangle3D*> GbQuadFaceMesh3D::getSurfaceTriangleSet()
 * @param zp the z-coordinate of the point
 * @return true if point is inside else return false
 */
-bool GbQuadFaceMesh3D::isPointInObject3DHalfSpace(const double& xp, const double& yp, const double& zp)
+bool GbQuadFaceMesh3D::isPointInObject3DHalfSpace(const double&  /*xp*/, const double&  /*yp*/, const double&  /*zp*/)
 { 
    throw UbException(UB_EXARGS,"not implemented"); 
    //vector<GbQuadangle3D*> *Quadangles = this->quads;
@@ -283,12 +283,12 @@ bool GbQuadFaceMesh3D::isPointInGbObject3D(const double& x1, const double& x2, c
       return false;
 }
 /*======================================================================*/
-bool GbQuadFaceMesh3D::isPointInGbObject3D(const double& x1, const double& x2, const double& x3, bool& pointIsOnBoundary)
+bool GbQuadFaceMesh3D::isPointInGbObject3D(const double&  /*x1*/, const double&  /*x2*/, const double&  /*x3*/, bool&  /*pointIsOnBoundary*/)
 {
     throw UbException(UB_EXARGS,"not implemented");
 }
 /*======================================================================*/
-GbLine3D* GbQuadFaceMesh3D::createClippedLine3D (GbPoint3D& point1, GbPoint3D& point2)
+GbLine3D* GbQuadFaceMesh3D::createClippedLine3D (GbPoint3D&  /*point1*/, GbPoint3D&  /*point2*/)
 {
    throw UbException(UB_EXARGS,"not implemented");
 }
diff --git a/src/basics/geometry3d/GbQuadFaceMesh3D.h b/src/basics/geometry3d/GbQuadFaceMesh3D.h
index d04c84e1f6a83bf7b4de05e57698fe9835b9ec1b..4a623b0f767d36a01568d489c745d606449d790d 100644
--- a/src/basics/geometry3d/GbQuadFaceMesh3D.h
+++ b/src/basics/geometry3d/GbQuadFaceMesh3D.h
@@ -33,7 +33,7 @@ public:
    class Vertex
    {
    public:
-      Vertex(){}
+      Vertex()= default;
       Vertex(float x, float y, float z)
       {
          this->x=x;
@@ -46,7 +46,7 @@ public:
    class QuadFace
    {
    public:
-      QuadFace() {}
+      QuadFace() = default;
       QuadFace(int v1, int v2, int v3, int v4)
       {
          this->vertex1=v1;
@@ -62,27 +62,27 @@ public:
 public:
    GbQuadFaceMesh3D();
 	GbQuadFaceMesh3D(std::string name, std::vector<Vertex> *nodes, std::vector<QuadFace> *quads);
-	virtual ~GbQuadFaceMesh3D();   
-   GbQuadFaceMesh3D* clone() { throw UbException(UB_EXARGS,"clone() - not implemented"); }
-   void finalize()           { throw UbException(UB_EXARGS,"finalize() - not implemented");}
+	~GbQuadFaceMesh3D() override;   
+   GbQuadFaceMesh3D* clone() override { throw UbException(UB_EXARGS,"clone() - not implemented"); }
+   void finalize() override           { throw UbException(UB_EXARGS,"finalize() - not implemented");}
 
-   std::string toString();
-   std::string getName();
+   std::string toString() override;
+   std::string getName() override;
    std::vector<Vertex>*  getNodes();
    std::vector<QuadFace>* getQuads();
-   double getX1Centroid();
-   double getX2Centroid();
-   double getX3Centroid();
-   double getX1Minimum();
-   double getX1Maximum();
-   double getX2Minimum();
-   double getX2Maximum();
-   double getX3Minimum();
-   double getX3Maximum();
+   double getX1Centroid() override;
+   double getX2Centroid() override;
+   double getX3Centroid() override;
+   double getX1Minimum() override;
+   double getX1Maximum() override;
+   double getX2Minimum() override;
+   double getX2Maximum() override;
+   double getX3Minimum() override;
+   double getX3Maximum() override;
    void calculateValues();
 
-   bool isPointInGbObject3D(const double& x1, const double& x2, const double& x3);
-   bool isPointInGbObject3D(const double& x1, const double& x2, const double& x3, bool& pointIsOnBoundary);
+   bool isPointInGbObject3D(const double& x1, const double& x2, const double& x3) override;
+   bool isPointInGbObject3D(const double& x1, const double& x2, const double& x3, bool& pointIsOnBoundary) override;
 
    bool isPointInObject3DHalfSpace(const double& xp, const double& yp, const double& zp);    //based on Halfspace algorithm
    //bool isPointInObject3DSpherical(const double& xp, const double& yp, const double& zp, int numQuads);    //based on Spherical polygon area method        
@@ -92,12 +92,12 @@ public:
    //char SegQuadCross(GbQuad3D *quad, GbVector3D  &PointQ, GbVector3D &PointR);
    //till here !!!
 
-   virtual GbLine3D* createClippedLine3D (GbPoint3D &point1,GbPoint3D &point2);
+   GbLine3D* createClippedLine3D (GbPoint3D &point1,GbPoint3D &point2) override;
    //virtual std::vector<GbQuad3D*> getSurfaceQuadSet();
-	virtual std::vector<GbTriangle3D*> getSurfaceTriangleSet();
+	std::vector<GbTriangle3D*> getSurfaceTriangleSet() override;
 
-   virtual void write(UbFileOutput* out) { std::cout<<"GbQuadFaceMesh3D::write - sorry not implemented\n"; }
-   virtual void read(UbFileInput* in)    { std::cout<<"GbQuadFaceMesh3D::read  - sorry not implemented\n"; }
+   virtual void write(UbFileOutput*  /*out*/) { std::cout<<"GbQuadFaceMesh3D::write - sorry not implemented\n"; }
+   virtual void read(UbFileInput*  /*in*/)    { std::cout<<"GbQuadFaceMesh3D::read  - sorry not implemented\n"; }
 
    void writeAVSMesh(UbFileOutput *out, bool normals=false);
 
diff --git a/src/basics/geometry3d/GbSphere3D.cpp b/src/basics/geometry3d/GbSphere3D.cpp
index c6614534e8b0531b5feecbf1defdd41e4818d6ec..670b37f5a30f3b954c53a093d324f2b4b7301382 100644
--- a/src/basics/geometry3d/GbSphere3D.cpp
+++ b/src/basics/geometry3d/GbSphere3D.cpp
@@ -28,7 +28,7 @@ GbSphere3D::GbSphere3D(const double& x1,const double& x2, const double& x3, cons
 }
 /*=====================================================*/
 GbSphere3D::GbSphere3D(const GbSphere3D& sphere)
-  : GbObject3D(), UbObserver()
+  : GbObject3D(sphere), UbObserver()
 {
    this->setName("sphere");
 
diff --git a/src/basics/geometry3d/GbSphere3D.h b/src/basics/geometry3d/GbSphere3D.h
index 694225a68df684cc5fc60e569a17322a1b335981..9fb4ae98aa278ea5256d3695c8a4feb04e876e9c 100644
--- a/src/basics/geometry3d/GbSphere3D.h
+++ b/src/basics/geometry3d/GbSphere3D.h
@@ -37,63 +37,63 @@ public:
    GbSphere3D(const GbSphere3D& sphere);            
    GbSphere3D(GbSphere3D* sphere); //<-unschoen!
    
-   ~GbSphere3D();
+   ~GbSphere3D() override;
 
-   GbSphere3D* clone() { return new GbSphere3D(*this);}
-   void finalize();
+   GbSphere3D* clone() override { return new GbSphere3D(*this);}
+   void finalize() override;
 
 
    bool intersects(SPtr<GbSphere3D> sphere);
 
    double getRadius() const	{	return this->radius;	}
 
-   double getX1Centroid()  { return midPoint->getX1Coordinate();}
-   double getX1Minimum()   { return midPoint->getX1Coordinate()-radius;}
-   double getX1Maximum()   { return midPoint->getX1Coordinate()+radius;}
-   double getX2Centroid()  { return midPoint->getX2Coordinate();}
-   double getX2Minimum()   { return midPoint->getX2Coordinate()-radius;}
-   double getX2Maximum()   { return midPoint->getX2Coordinate()+radius;}
-   double getX3Centroid()  { return midPoint->getX3Coordinate();}
-   double getX3Minimum()   { return midPoint->getX3Coordinate()-radius;}
-   double getX3Maximum()   { return midPoint->getX3Coordinate()+radius;}
-
-   void setCenterX1Coordinate(const double& value);
-   void setCenterX2Coordinate(const double& value);
-   void setCenterX3Coordinate(const double& value);
-   void setCenterCoordinates(const double& x1, const double& x2, const double& x3);
-   virtual void setCenterCoordinates(const UbTupleDouble3& position);
+   double getX1Centroid() override  { return midPoint->getX1Coordinate();}
+   double getX1Minimum() override   { return midPoint->getX1Coordinate()-radius;}
+   double getX1Maximum() override   { return midPoint->getX1Coordinate()+radius;}
+   double getX2Centroid() override  { return midPoint->getX2Coordinate();}
+   double getX2Minimum() override   { return midPoint->getX2Coordinate()-radius;}
+   double getX2Maximum() override   { return midPoint->getX2Coordinate()+radius;}
+   double getX3Centroid() override  { return midPoint->getX3Coordinate();}
+   double getX3Minimum() override   { return midPoint->getX3Coordinate()-radius;}
+   double getX3Maximum() override   { return midPoint->getX3Coordinate()+radius;}
+
+   void setCenterX1Coordinate(const double& value) override;
+   void setCenterX2Coordinate(const double& value) override;
+   void setCenterX3Coordinate(const double& value) override;
+   void setCenterCoordinates(const double& x1, const double& x2, const double& x3) override;
+   void setCenterCoordinates(const UbTupleDouble3& position) override;
    void setRadius(const double& radius);
 
-   GbLine3D* createClippedLine3D(GbPoint3D& point1, GbPoint3D& point2);
+   GbLine3D* createClippedLine3D(GbPoint3D& point1, GbPoint3D& point2) override;
    double getDistance(GbPoint3D* p); 
    double getDistance(const double& x1p, const double& x2p, const double& x3p);
 
-   bool isPointInGbObject3D(const double& x1, const double& x2, const double& x3);
-   bool isPointInGbObject3D(const double& x1p, const double& x2p, const double& x3p, bool& pointIsOnBoundary);
+   bool isPointInGbObject3D(const double& x1, const double& x2, const double& x3) override;
+   bool isPointInGbObject3D(const double& x1p, const double& x2p, const double& x3p, bool& pointIsOnBoundary) override;
 
-   bool isCellCuttingGbObject3D(const double& x1a,const double& x2a,const double& x3a,const double& x1b,const double& x2b,const double& x3b);
-   bool isCellInsideOrCuttingGbObject3D(const double& x1a,const double& x2a,const double& x3a,const double& x1b,const double& x2b,const double& x3b);
-   double getCellVolumeInsideGbObject3D(const double& x1a,const double& x2a,const double& x3a,const double& x1b,const double& x2b,const double& x3b);
+   bool isCellCuttingGbObject3D(const double& x1a,const double& x2a,const double& x3a,const double& x1b,const double& x2b,const double& x3b) override;
+   bool isCellInsideOrCuttingGbObject3D(const double& x1a,const double& x2a,const double& x3a,const double& x1b,const double& x2b,const double& x3b) override;
+   double getCellVolumeInsideGbObject3D(const double& x1a,const double& x2a,const double& x3a,const double& x1b,const double& x2b,const double& x3b) override;
    double getCellVolumeInsideGbObject3DHelperFunction(const double& x1a,const double& x2a,const double& x3a,const double& x1b,const double& x2b,const double& x3b);
 
-   std::vector<GbTriangle3D*> getSurfaceTriangleSet();
-   void addSurfaceTriangleSet(std::vector<UbTupleFloat3>& nodes, std::vector<UbTupleInt3>& triangles);
+   std::vector<GbTriangle3D*> getSurfaceTriangleSet() override;
+   void addSurfaceTriangleSet(std::vector<UbTupleFloat3>& nodes, std::vector<UbTupleInt3>& triangles) override;
 
-   bool hasRaytracing() { return true; }
+   bool hasRaytracing() override { return true; }
    /*|r| must be 1! einheitsvector!!*/
-   double getIntersectionRaytraceFactor(const double& x1, const double& x2, const double& x3, const double& rx1, const double& rx2, const double& rx3);
+   double getIntersectionRaytraceFactor(const double& x1, const double& x2, const double& x3, const double& rx1, const double& rx2, const double& rx3) override;
 
    bool hasIntersectionWithDirectedLine(GbPoint3D origin, GbPoint3D direction);
 
-	std::string toString();
+	std::string toString() override;
 
-   void translate(const double& x1, const double& x2, const double& x3) 
+   void translate(const double& x1, const double& x2, const double& x3) override 
    {
       this->midPoint->translate(x1, x2, x3); 
       this->notifyObserversObjectChanged();
    }
-   void rotate(const double& rx1, const double& rx2, const double& rx3) {/* rotation makes no sense*/ }
-   void scale(const double& sx1, const double& sx2, const double& sx3) 
+   void rotate(const double& rx1, const double& rx2, const double& rx3) override {/* rotation makes no sense*/ }
+   void scale(const double& sx1, const double&  /*sx2*/, const double&  /*sx3*/) override 
    { 
       this->radius *= sx1; 
       this->notifyObserversObjectChanged();
@@ -105,12 +105,12 @@ public:
    void setTriangulationMode(TRIANGULATIONMODE mode) { this->triangulationMode = mode; }
    
    //virtuelle Methoden von UbObserver
-   void objectChanged(UbObservable* changedObject)
+   void objectChanged(UbObservable*  /*changedObject*/) override
    {
       this->notifyObserversObjectChanged();
       //std::cout<<"GbSphere:objectChanged() - toDo-);";
    }
-   void objectWillBeDeleted(UbObservable* objectForDeletion)
+   void objectWillBeDeleted(UbObservable*  /*objectForDeletion*/) override
    {
 	   throw UbException(UB_EXARGS,"not implemented");
    }
diff --git a/src/basics/geometry3d/GbSystem3D.h b/src/basics/geometry3d/GbSystem3D.h
index bfe97c3d0b536c0c650934f8d532d57c5a3dad63..b448335caafc372bdca7ab103b213a631afa8442 100644
--- a/src/basics/geometry3d/GbSystem3D.h
+++ b/src/basics/geometry3d/GbSystem3D.h
@@ -112,7 +112,7 @@ namespace GbSystem3D
    public:
       PointSet3(int n);
       PointSet3(const std::vector<GbPoint3D>& points);
-      ~PointSet3(){}
+      ~PointSet3()= default;
       void   add(const GbPoint3D& point);
       void   addUnequal(const GbPoint3D& point);
       void   add(const std::vector<GbPoint3D>& p);
@@ -192,10 +192,7 @@ namespace GbSystem3D
          this->points.resize(0);//, NULL);
          this->add(points);
       };
-      ~OldPointSet3()
-      {
-         //			delete points;
-      };
+      ~OldPointSet3() = default;
       void add(GbPoint3D point)
          {
             if(this->sizet>0 && point.equals(&(this->points)[this->sizet-1])) return;
diff --git a/src/basics/geometry3d/GbTriFaceMesh3D.cpp b/src/basics/geometry3d/GbTriFaceMesh3D.cpp
index cfeeffc8e1d87f4afd573e0d31e433e3a1e2feeb..e883f59564efb02bfc9729e04d7652da55eb2002 100644
--- a/src/basics/geometry3d/GbTriFaceMesh3D.cpp
+++ b/src/basics/geometry3d/GbTriFaceMesh3D.cpp
@@ -22,13 +22,6 @@ using namespace std;
 
 GbTriFaceMesh3D::GbTriFaceMesh3D() 
    :   GbObject3D()
-     , buildVertTriRelationMap(false)
-     , kdTree(NULL)
-     , transX1(0.0)
-     , transX2(0.0)
-     , transX3(0.0)
-     , transferViaFilename(false)
-
 {
    this->setName("CAB_GbTriFaceMesh3D");
    this->nodes          = new vector<Vertex>;
@@ -41,14 +34,7 @@ GbTriFaceMesh3D::GbTriFaceMesh3D(string name, vector<Vertex>* nodes, vector<TriF
    :  GbObject3D()
     , nodes(nodes)
     , triangles(triangles)
-    , buildVertTriRelationMap(false)
-    , consistent(false)
-    , kdTree(NULL)
     , kdtreeSplitAlg(splitAlg)
-    , transX1(0.0)
-    , transX2(0.0)
-    , transX3(0.0)
-    , transferViaFilename(false)
 {
    if( name.empty() ) throw UbException(UB_EXARGS,"no name specified");
    if( !nodes       ) throw UbException(UB_EXARGS,"no nodes specified");
@@ -333,7 +319,7 @@ UbTupleDouble3 GbTriFaceMesh3D::calculateCenterOfGravity()
    rSP2 = rSP2/(24.0*volume);
    rSP3 = rSP3/(24.0*volume);
 
-   return UbTupleDouble3(rSP1, rSP2, rSP3);
+   return  {rSP1, rSP2, rSP3};
 }
 /*===============================================*/
 UbTupleDouble6 GbTriFaceMesh3D::calculateMomentOfInertia(double rhoP)
@@ -409,7 +395,7 @@ UbTupleDouble6 GbTriFaceMesh3D::calculateMomentOfInertia(double rhoP)
    cout<<" top11:"<<top11<<" top22:"<<top22<<" top33:"<<top33<<endl;
    cout<<" top12:"<<top12<<" top23:"<<top23<<" top13:"<<top13<<endl;
 
-   return UbTupleDouble6(top11,top22,top33,top12,top23,top13);
+   return {top11,top22,top33,top12,top23,top13};
 }
 /*==============================================================*/
 void GbTriFaceMesh3D::calculateValues()
@@ -948,7 +934,7 @@ bool GbTriFaceMesh3D::intersectLine(const double& p1_x1, const double& p1_x2, co
     return (iSec != Kd::Intersection::NO_INTERSECTION);
 }
 /*======================================================================*/
-GbLine3D* GbTriFaceMesh3D::createClippedLine3D (GbPoint3D& point1, GbPoint3D& point2)
+GbLine3D* GbTriFaceMesh3D::createClippedLine3D (GbPoint3D&  /*point1*/, GbPoint3D&  /*point2*/)
 {
    throw UbException(UB_EXARGS,"not implemented");
 }
diff --git a/src/basics/geometry3d/GbTriFaceMesh3D.h b/src/basics/geometry3d/GbTriFaceMesh3D.h
index 146c8c2200da8ec73fe9a6b5b87684a571d02604..ec69a7b375b451de3ead1ef99bfbaaffd9226767 100644
--- a/src/basics/geometry3d/GbTriFaceMesh3D.h
+++ b/src/basics/geometry3d/GbTriFaceMesh3D.h
@@ -46,7 +46,7 @@ public:
    class Vertex
    {
    public:
-      Vertex() : x(0.0), y(0.0), z(0.0) { }
+      Vertex()  = default;
       Vertex(const float& x, const float& y, const float& z) : x(x), y(y),z(z) { }
       Vertex(Vertex* vert)
       {
@@ -94,19 +94,17 @@ public:
       }
 
    public:
-      float x, y, z;
+      float x{0.0}, y{0.0}, z{0.0};
    };
    //////////////////////////////////////////////////////////////////////////
    class TriFace
    {
    public:
       TriFace()
-         : v1(-1), v2(-1), v3(-1), nx(0.0), ny(0.0), nz(0.0)
-      {
-
-      }
+          
+      = default;
       TriFace(const int& v1, const int& v2, const int& v3)
-         : v1(v1), v2(v2), v3(v3), nx(0.0), ny(0.0), nz(0.0)
+         : v1(v1), v2(v2), v3(v3)
       {
       }
 
@@ -207,8 +205,8 @@ public:
       }
 
    public:
-      int   v1, v2, v3;
-      float nx, ny, nz;
+      int   v1{-1}, v2{-1}, v3{-1};
+      float nx{0.0}, ny{0.0}, nz{0.0};
    };
 
 public:
@@ -217,14 +215,14 @@ public:
 public:
    GbTriFaceMesh3D();
    GbTriFaceMesh3D(std::string name, std::vector<Vertex>* nodes, std::vector<TriFace>* triangles, KDTREE_SPLITAGORITHM splitAlg = KDTREE_SAHPLIT, bool removeRedundantNodes=true);
-	~GbTriFaceMesh3D();
+	~GbTriFaceMesh3D() override;
 
-   GbTriFaceMesh3D* clone();// { throw UbException(UB_EXARGS,"not implemented"); }
-   void finalize() {}
+   GbTriFaceMesh3D* clone() override;// { throw UbException(UB_EXARGS,"not implemented"); }
+   void finalize() override {}
 
    //void setRegardPointInPolyhedronTest(bool value) { this->regardPiO=value; }
 
-   std::string toString();
+   std::string toString() override;
 
    //std::string getName();
    std::vector<Vertex>*  getNodes();
@@ -240,17 +238,17 @@ public:
    }
    void readMeshFromSTLFile(std::string filename, bool removeRedundantNodes);
 
-   double getX1Minimum()  { if(!this->consistent) this->calculateValues(); return this->x1min;    }
-   double getX1Maximum()  { if(!this->consistent) this->calculateValues(); return this->x1max;    }
-   double getX1Centroid() { if(!this->consistent) this->calculateValues(); return this->x1center; }
+   double getX1Minimum() override  { if(!this->consistent) this->calculateValues(); return this->x1min;    }
+   double getX1Maximum() override  { if(!this->consistent) this->calculateValues(); return this->x1max;    }
+   double getX1Centroid() override { if(!this->consistent) this->calculateValues(); return this->x1center; }
 
-   double getX2Minimum()  { if(!this->consistent) this->calculateValues(); return this->x2min;    }
-   double getX2Maximum()  { if(!this->consistent) this->calculateValues(); return this->x2max;    }
-   double getX2Centroid() { if(!this->consistent) this->calculateValues(); return this->x2center; }
+   double getX2Minimum() override  { if(!this->consistent) this->calculateValues(); return this->x2min;    }
+   double getX2Maximum() override  { if(!this->consistent) this->calculateValues(); return this->x2max;    }
+   double getX2Centroid() override { if(!this->consistent) this->calculateValues(); return this->x2center; }
    
-   double getX3Minimum()  { if(!this->consistent) this->calculateValues(); return this->x3min;    }
-   double getX3Centroid() { if(!this->consistent) this->calculateValues(); return this->x3center; }
-   double getX3Maximum()  { if(!this->consistent) this->calculateValues(); return this->x3max;    }
+   double getX3Minimum() override  { if(!this->consistent) this->calculateValues(); return this->x3min;    }
+   double getX3Centroid() override { if(!this->consistent) this->calculateValues(); return this->x3center; }
+   double getX3Maximum() override  { if(!this->consistent) this->calculateValues(); return this->x3max;    }
 
    void   calculateValues();
 
@@ -260,23 +258,23 @@ public:
    UbTupleDouble6 calculateMomentOfInertia(double rhoP);
    UbTupleDouble3 calculateCenterOfGravity();
 
-   void setCenterCoordinates(const double& x1, const double& x2, const double& x3);
+   void setCenterCoordinates(const double& x1, const double& x2, const double& x3) override;
 
 
-   void scale(const double& sx1, const double& sx2, const double& sx3);
-   void rotate(const double& alpha, const double& beta, const double& gamma);
+   void scale(const double& sx1, const double& sx2, const double& sx3) override;
+   void rotate(const double& alpha, const double& beta, const double& gamma) override;
    void rotateAroundPoint(const double& px1, const double& px2, const double& px3, const double& alpha, const double& beta, const double& gamma);
-   void translate(const double& x1, const double& x2, const double& x3);
+   void translate(const double& x1, const double& x2, const double& x3) override;
    void reflectAcrossXYLine(const double& alpha);
 
-   bool isPointInGbObject3D(const double& x1, const double& x2, const double& x3);
+   bool isPointInGbObject3D(const double& x1, const double& x2, const double& x3) override;
    bool isPointInGbObject3D(const double& x1, const double& x2, const double& x3, int counter);
-   bool isPointInGbObject3D(const double& x1, const double& x2, const double& x3, bool& pointIsOnBoundary);
+   bool isPointInGbObject3D(const double& x1, const double& x2, const double& x3, bool& pointIsOnBoundary) override;
 
-   virtual GbLine3D* createClippedLine3D (GbPoint3D &point1,GbPoint3D &point2);
+   GbLine3D* createClippedLine3D (GbPoint3D &point1,GbPoint3D &point2) override;
 
-   virtual std::vector<GbTriangle3D*> getSurfaceTriangleSet();
-   void addSurfaceTriangleSet(std::vector<UbTupleFloat3>& nodes, std::vector<UbTupleInt3>& triangles);
+   std::vector<GbTriangle3D*> getSurfaceTriangleSet() override;
+   void addSurfaceTriangleSet(std::vector<UbTupleFloat3>& nodes, std::vector<UbTupleInt3>& triangles) override;
 
    std::vector<GbTriFaceMesh3D::TriFace*> getTrianglesForVertex(Vertex* vertex);
 
@@ -301,10 +299,10 @@ protected:
    std::vector<TriFace>* triangles;
    //for transfer
    std::string filename;
-   bool transferViaFilename;
-   double transX1;
-   double transX2;
-   double transX3;
+   bool transferViaFilename{false};
+   double transX1{0.0};
+   double transX2{0.0};
+   double transX3{0.0};
 
    double x1min;
    double x1max;
@@ -316,12 +314,12 @@ protected:
    double x2center;
    double x3center;
 
-   bool   consistent;
+   bool consistent {false};
 
-   bool buildVertTriRelationMap;
+   bool buildVertTriRelationMap{false};
    std::multimap<Vertex*,TriFace*> relationVertTris;
 
-   Kd::Tree< double >* kdTree;
+   Kd::Tree< double >* kdTree = nullptr;
 };
 
 
diff --git a/src/basics/geometry3d/GbTriangle3D.h b/src/basics/geometry3d/GbTriangle3D.h
index 7b931c1cc63584c5fa2fa7a3852d908bbdb9aac1..ae20245f03bb09dcd5982efcb37d4874003533df 100644
--- a/src/basics/geometry3d/GbTriangle3D.h
+++ b/src/basics/geometry3d/GbTriangle3D.h
@@ -63,12 +63,12 @@ public:
    GbTriangle3D();
    GbTriangle3D(GbPoint3D* point1, GbPoint3D* point2, GbPoint3D* point3);
    GbTriangle3D(GbTriangle3D* triangle);
-   ~GbTriangle3D();
+   ~GbTriangle3D() override;
    /*======================================================================*/
    /*  Methoden                                                            */
    /*                                                                      */
-   GbTriangle3D* clone();
-   void finalize()
+   GbTriangle3D* clone() override;
+   void finalize() override
    {
       this->deletePoints();
    }
@@ -87,51 +87,51 @@ public:
    GbPoint3D* getPoint(const int& index);
    std::vector<GbPoint3D> getPoints();
    double getArea();
-   double getX1Centroid();
-   double getX1Minimum();
-   double getX1Maximum();           
-   double getX2Centroid();
-   double getX2Minimum();
-   double getX2Maximum();
-   double getX3Centroid();
-   double getX3Minimum();
-   double getX3Maximum();
+   double getX1Centroid() override;
+   double getX1Minimum() override;
+   double getX1Maximum() override;           
+   double getX2Centroid() override;
+   double getX2Minimum() override;
+   double getX2Maximum() override;
+   double getX3Centroid() override;
+   double getX3Minimum() override;
+   double getX3Maximum() override;
 
    void setInconsistent() { this->consistent = false;}
 
    void setPoint(GbPoint3D *point, int index);
 
    //bool equals(GbObject3D *object)
-   std::vector<GbTriangle3D*> getSurfaceTriangleSet();
-   bool isPointInGbObject3D(const double& x1, const double& x2, const double& x3)   
+   std::vector<GbTriangle3D*> getSurfaceTriangleSet() override;
+   bool isPointInGbObject3D(const double&  /*x1*/, const double&  /*x2*/, const double&  /*x3*/) override   
    {
       //der einfachheit halber ... 
       return false;
       //throw UbException(__FILE__, __LINE__, "GbTriangle3D::isPointInObject3D- not implemented");
    }
-   bool isPointInGbObject3D(const double& x1, const double& x2, const double& x3, bool& pointIsOnBoundary)   
+   bool isPointInGbObject3D(const double&  /*x1*/, const double&  /*x2*/, const double&  /*x3*/, bool& pointIsOnBoundary) override   
    {
       //der einfachheit halber ... 
       pointIsOnBoundary = false;
       return false;
       //throw UbException(__FILE__, __LINE__, "GbTriangle3D::isPointInObject3D- not implemented");
    }
-   bool isCellInsideGbObject3D(const double& x11,const double& x21,const double& x31,const double& x12,const double& x22,const double& x23) { return false; }
+   bool isCellInsideGbObject3D(const double&  /*x11*/,const double&  /*x21*/,const double&  /*x31*/,const double&  /*x12*/,const double&  /*x22*/,const double&  /*x23*/) override { return false; }
 
 
    // get distance from a point to the triangle
    //todo CHANGE...
    double getDistanceFromPoint(GbVector3D punct);
 
-   std::string toString();
+   std::string toString() override;
 
    /*======================================================================*/
    /*  Calculation                                                         */
    /*                                                                      */
 //   std::vector<GbPoint3D> calculateIntersectionPoints3D(GbLine3D *line);
-   bool hasRaytracing() { return true; }
+   bool hasRaytracing() override { return true; }
    /*|r| must be 1! einheitsvector!!*/
-   double getIntersectionRaytraceFactor(const double& x1, const double& x2, const double& x3, const double& rx1, const double& rx2, const double& rx3);
+   double getIntersectionRaytraceFactor(const double& x1, const double& x2, const double& x3, const double& rx1, const double& rx2, const double& rx3) override;
 //   bool isPointOnEdge(GbVector3D& q);
    
    GbPoint3D* calculateIntersectionPoints3D(GbLine3D* line);
@@ -142,7 +142,7 @@ public:
 
    bool enclosesPoint2D(double x1, double x2);
    GbPolygon3D* createClippedPolygon3D(GbCuboid3D* cube);   
-   GbLine3D* createClippedLine3D (GbPoint3D& point1, GbPoint3D& point2);
+   GbLine3D* createClippedLine3D (GbPoint3D& point1, GbPoint3D& point2) override;
    //public GbPolygon2D createClippedPolygon2D(GbPoint2D p1, GbPoint2D p2);
    GbPolygon3D* createClippedPolygon3D(const double& p1x1, const double& p1x2, const double& p1x3, const double& p2x1, const double& p2x2, const double& p2x3);
    //bool enclosesRectangle2D(GbRectangle2D *rectangle);
@@ -163,7 +163,7 @@ public:
 
    //virtuelle Methoden von UbObserver
    //!! quick and dirty von sirann !!
-   void objectChanged(UbObservable* changedObject)
+   void objectChanged(UbObservable* changedObject) override
    {
       GbPoint3D* point = dynamic_cast<GbPoint3D*>(changedObject);
       if(!point || (  this->points[0]!=point && this->points[1]!=point && this->points[2]!=point) ) 
@@ -171,7 +171,7 @@ public:
       
       this->consistent = false;
    }
-   void objectWillBeDeleted(UbObservable* objectForDeletion)
+   void objectWillBeDeleted(UbObservable* objectForDeletion) override
    {
       if(this->points[0])
       {
diff --git a/src/basics/geometry3d/GbTriangularMesh3D.cpp b/src/basics/geometry3d/GbTriangularMesh3D.cpp
index 8c1cd4905880d37a4f89d3b79baef22bc1e1a384..de781b33886f41a8244aaec495ad0a2b76dc676b 100644
--- a/src/basics/geometry3d/GbTriangularMesh3D.cpp
+++ b/src/basics/geometry3d/GbTriangularMesh3D.cpp
@@ -462,7 +462,7 @@ UbTupleDouble3 GbTriangularMesh3D::calculateCenterOfGravity()
    rSP2 = rSP2/(24.0*volume);
    rSP3 = rSP3/(24.0*volume);
 
-   return UbTupleDouble3(rSP1, rSP2, rSP3);
+   return {rSP1, rSP2, rSP3};
 }
 /*===============================================*/
 UbTupleDouble6 GbTriangularMesh3D::calculateMomentOfInertia(double rhoP)
@@ -547,7 +547,7 @@ UbTupleDouble6 GbTriangularMesh3D::calculateMomentOfInertia(double rhoP)
    cout<<" top11:"<<top11<<" top22:"<<top22<<" top33:"<<top33<<endl;
    cout<<" top12:"<<top12<<" top23:"<<top23<<" top13:"<<top13<<endl;
 
-   return UbTupleDouble6(top11,top22,top33,top12,top23,top13);
+   return {top11,top22,top33,top12,top23,top13};
 }
 
  /**
@@ -559,7 +559,7 @@ UbTupleDouble6 GbTriangularMesh3D::calculateMomentOfInertia(double rhoP)
   * @return the volume of this triangular mesh within the specified rectangle
   * @exception NullPointerException if no triangles are found within the specified rectangle
   */
-double GbTriangularMesh3D::getVolumeForRectangle(const double& p1x1, const double& p1x2, const double& p2x1, const double& p2x2) 
+double GbTriangularMesh3D::getVolumeForRectangle(const double&  /*p1x1*/, const double&  /*p1x2*/, const double&  /*p2x1*/, const double&  /*p2x2*/) 
 {
 	throw UbException(UB_EXARGS,"not yet implemented");
   //    GbPolygon2D polygon;
@@ -620,7 +620,7 @@ double GbTriangularMesh3D::getVolumeForRectangle(const double& p1x1, const doubl
  * @param p2x2 the 2nd x2 coordinate of the rectangle
  * @return the triangles of this triangular mesh located within the specified rectangle
  */
-vector<GbTriangle3D*>* GbTriangularMesh3D::getTrianglesForRectangle(const double& p1x1, const double& p1x2, const double& p2x1, const double& p2x2)
+vector<GbTriangle3D*>* GbTriangularMesh3D::getTrianglesForRectangle(const double&  /*p1x1*/, const double&  /*p1x2*/, const double&  /*p2x1*/, const double&  /*p2x2*/)
 {
 	throw UbException(UB_EXARGS,"not yet implemented");
   //    QbList      triangleList = new QbList(GbTriangle3D.class);
@@ -668,7 +668,7 @@ vector<GbTriangle3D*>* GbTriangularMesh3D::getTrianglesForRectangle(const double
  * @param p2x2 the 2nd x2 coordinate of the rectangle
  * @return the nodes of this triangular mesh located within the specified rectangle
  */
-vector<GbPoint3D*>* GbTriangularMesh3D::getNodesForRectangle(const double& p1x1, const double& p1x2, const double& p2x1, const double& p2x2)
+vector<GbPoint3D*>* GbTriangularMesh3D::getNodesForRectangle(const double&  /*p1x1*/, const double&  /*p1x2*/, const double&  /*p2x1*/, const double&  /*p2x2*/)
 {
 	throw UbException(UB_EXARGS,"not implemented");
 //   QbList nodeList = new QbList(GbPoint3D.class);
@@ -693,7 +693,7 @@ vector<GbPoint3D*>* GbTriangularMesh3D::getNodesForRectangle(const double& p1x1,
  * @return the difference of maximum and minimum x3 coordinates of this triangular mesh within the specified rectangle
  * @exception NullPointerException if no triangles are found within the specified rectangle
  */
-double GbTriangularMesh3D::getX3RangeForRectangle(const double& p1x1, const double& p1x2, const double& p2x1, const double& p2x2) 
+double GbTriangularMesh3D::getX3RangeForRectangle(const double&  /*p1x1*/, const double&  /*p1x2*/, const double&  /*p2x1*/, const double&  /*p2x2*/) 
 {
 	throw UbException(UB_EXARGS,"not implemented");
  //     GbPolygon3D polygon;
@@ -766,7 +766,7 @@ double GbTriangularMesh3D::getX3RangeForRectangle(const double& p1x1, const doub
  * @return the minimum x3 coordinates of this triangular mesh within the specified rectangle
  * @exception NullPointerException if no triangles are found within the specified rectangle
  */
-double GbTriangularMesh3D::getX3MinimumForRectangle(const double& p1x1, const double& p1x2, const double& p2x1, const double& p2x2) 
+double GbTriangularMesh3D::getX3MinimumForRectangle(const double&  /*p1x1*/, const double&  /*p1x2*/, const double&  /*p2x1*/, const double&  /*p2x2*/) 
 {
 	throw UbException(UB_EXARGS,"not implemented");
   //    GbPolygon3D polygon;
@@ -834,7 +834,7 @@ double GbTriangularMesh3D::getX3MinimumForRectangle(const double& p1x1, const do
  * @return the maximum x3 coordinates of this triangular mesh within the specified rectangle
  * @exception NullPointerException if no triangles are found within the specified rectangle
  */
-double GbTriangularMesh3D::getX3MaximumForRectangle(const double& p1x1, const double& p1x2, const double& p2x1, const double& p2x2) 
+double GbTriangularMesh3D::getX3MaximumForRectangle(const double&  /*p1x1*/, const double&  /*p1x2*/, const double&  /*p2x1*/, const double&  /*p2x2*/) 
 {
    throw UbException(UB_EXARGS,"not implemented");
   //    GbPolygon3D polygon;
@@ -939,7 +939,7 @@ bool GbTriangularMesh3D::isPointInObject3DHalfSpace(const double& xp, const doub
    return true;
 }
 /*======================================================================*/
-bool GbTriangularMesh3D::isPointInObject3DRayCrossing(const double& xp, const double& yp, const double& zp, int radius, int numVertices, int numTriangles)
+bool GbTriangularMesh3D::isPointInObject3DRayCrossing(const double& xp, const double& yp, const double& zp, int radius, int  /*numVertices*/, int numTriangles)
 {
    GbVector3D point(xp,yp,zp);
 
@@ -973,12 +973,12 @@ bool GbTriangularMesh3D::isPointInGbObject3D(const double& x1, const double& x2,
    else throw UbException(UB_EXARGS,"no ptInObjTest");
 }
 /*======================================================================*/
-bool GbTriangularMesh3D::isPointInGbObject3D(const double& x1, const double& x2, const double& x3, bool& pointIsOnBoundary)
+bool GbTriangularMesh3D::isPointInGbObject3D(const double&  /*x1*/, const double&  /*x2*/, const double&  /*x3*/, bool&  /*pointIsOnBoundary*/)
 {
     throw UbException(UB_EXARGS,"not implemented");
 }
 /*======================================================================*/
-GbLine3D* GbTriangularMesh3D::createClippedLine3D(GbPoint3D& point1, GbPoint3D& point2)
+GbLine3D* GbTriangularMesh3D::createClippedLine3D(GbPoint3D&  /*point1*/, GbPoint3D&  /*point2*/)
 {
    throw UbException(UB_EXARGS,"not implemented");
 }
@@ -1193,7 +1193,7 @@ Returns a char:
 '0': the query point p does not intersect (misses) triangle T.
 */
 
-char 	GbTriangularMesh3D::InTri3D( GbTriangle3D* T, int m, GbVector3D& p )
+char 	GbTriangularMesh3D::InTri3D( GbTriangle3D* T, int m, GbVector3D&  /*p*/ )
 {
 //   int i;           /* Index for X,Y,Z           */
    int j;           /* Index for X,Y             */
@@ -1294,7 +1294,7 @@ char    GbTriangularMesh3D::SegTriInt( GbTriangle3D* T, GbVector3D& q, GbVector3
    int code = '?';
    int m = -1;
 
-   code = SegPlaneInt( T, q, r, p, &m );
+   code = (unsigned char)SegPlaneInt( T, q, r, p, &m );
    //  printf("SegPlaneInt code=%c, m=%d; p=(%lf,%lf,%lf)\n", code,m,p[0],p[1],p[2]);
 
    if      ( code == '0')  return '0';
@@ -1305,7 +1305,7 @@ char    GbTriangularMesh3D::SegTriInt( GbTriangle3D* T, GbVector3D& q, GbVector3
    else /* Error */        return code;
 }
 
-char	GbTriangularMesh3D::InPlane( GbTriangle3D* T, int m, GbVector3D& q, GbVector3D& r, GbVector3D& p)
+char	GbTriangularMesh3D::InPlane( GbTriangle3D*  /*T*/, int  /*m*/, GbVector3D&  /*q*/, GbVector3D&  /*r*/, GbVector3D&  /*p*/)
 {
   // cout<<"inplane\n";
    /* NOT IMPLEMENTED */
diff --git a/src/basics/geometry3d/GbTriangularMesh3D.h b/src/basics/geometry3d/GbTriangularMesh3D.h
index d0b71589dd08b7332fc6293417d682c9c25f51ef..2691a95c1b3a404ca9c27e005964a5fe1273d1d3 100644
--- a/src/basics/geometry3d/GbTriangularMesh3D.h
+++ b/src/basics/geometry3d/GbTriangularMesh3D.h
@@ -41,9 +41,9 @@ public:
 	GbTriangularMesh3D(std::string name, std::vector<GbPoint3D*> *nodes, std::vector<GbTriangle3D*> *triangles);
    GbTriangularMesh3D(std::string name, std::vector<GbTriangle3D*> *triangles);
    GbTriangularMesh3D(std::string name, std::vector<GbPoint3D*> *nodes, std::vector<GbLine3D*> *edges, std::vector<GbTriangle3D*> *triangles);
-	~GbTriangularMesh3D();   
-   GbTriangularMesh3D* clone() { throw UbException(UB_EXARGS,"not implemented"); }
-   void finalize()
+	~GbTriangularMesh3D() override;   
+   GbTriangularMesh3D* clone() override { throw UbException(UB_EXARGS,"not implemented"); }
+   void finalize() override
    {
       throw UbException("GbTriangularMesh3D::finalize() - toDo");
    }
@@ -51,22 +51,22 @@ public:
 
    std::string getClassName() {return "GbTriangularMesh3D"; }
 
-   std::string toString();
+   std::string toString() override;
    //std::string getName();
    std::vector<GbPoint3D*>*    getNodes();
    std::vector<GbTriangle3D*>* getTriangles();
-   double getX1Centroid();
-   double getX2Centroid();
-	double getX3Centroid();
-   double getX1Minimum();
-   double getX1Maximum();
-   double getX2Minimum();
-   double getX2Maximum();
-   double getX3Minimum();
-   double getX3Maximum();
-
-   void rotate(const double& alpha, const double& beta, const double& gamma);
-   void translate(const double& x1, const double& x2, const double& x3);
+   double getX1Centroid() override;
+   double getX2Centroid() override;
+	double getX3Centroid() override;
+   double getX1Minimum() override;
+   double getX1Maximum() override;
+   double getX2Minimum() override;
+   double getX2Maximum() override;
+   double getX3Minimum() override;
+   double getX3Maximum() override;
+
+   void rotate(const double& alpha, const double& beta, const double& gamma) override;
+   void translate(const double& x1, const double& x2, const double& x3) override;
 
    void calculateValues();
    void deleteRedundantNodes();
@@ -83,9 +83,9 @@ public:
    double getX3MinimumForRectangle(const double& p1x1, const double& p1x2, const double& p2x1, const double& p2x2);
    double getX3MaximumForRectangle(const double& p1x1, const double& p1x2, const double& p2x1, const double& p2x2); 
 
-   virtual bool isPointInGbObject3D(const double& x1, const double& x2, const double& x3);
+   bool isPointInGbObject3D(const double& x1, const double& x2, const double& x3) override;
 
-   bool isPointInGbObject3D(const double& x1, const double& x2, const double& x3, bool& pointIsOnBoundary);
+   bool isPointInGbObject3D(const double& x1, const double& x2, const double& x3, bool& pointIsOnBoundary) override;
 
    bool isPointInObject3DHalfSpace(const double& xp, const double& yp, const double& zp);    //based on Halfspace algorithm
    bool isPointInObject3DSpherical(const double& xp, const double& yp, const double& zp, int numTriangles);    //based on Spherical polygon area method        
@@ -108,8 +108,8 @@ public:
    //till here !!!
 
 
-   virtual GbLine3D* createClippedLine3D (GbPoint3D &point1,GbPoint3D &point2);
-   virtual std::vector<GbTriangle3D*> getSurfaceTriangleSet();     
+   GbLine3D* createClippedLine3D (GbPoint3D &point1,GbPoint3D &point2) override;
+   std::vector<GbTriangle3D*> getSurfaceTriangleSet() override;     
 
    void writeMesh(std::string filename, WbWriter* writer, bool writeNormals=false);
    /*======================================================================*/
diff --git a/src/basics/geometry3d/GbVector3D.cpp b/src/basics/geometry3d/GbVector3D.cpp
index 94e6e7f670e1c9a8f0fafab6dfc387c8eb0885e5..e763e425a6677ceeed5b9e23355b311e2a71e8a3 100644
--- a/src/basics/geometry3d/GbVector3D.cpp
+++ b/src/basics/geometry3d/GbVector3D.cpp
@@ -147,7 +147,10 @@ double& GbVector3D::X3 ()
 //----------------------------------------------------------------------------
 GbVector3D& GbVector3D::operator= (const GbVector3D& rkV)
 {
-   m_afTuple[0] = rkV.m_afTuple[0];
+    if(this == &rkV)
+        return *this;
+
+    m_afTuple[0] = rkV.m_afTuple[0];
    m_afTuple[1] = rkV.m_afTuple[1];
    m_afTuple[2] = rkV.m_afTuple[2];
    return *this;
diff --git a/src/basics/geometry3d/GbVoxelMatrix3D.cpp b/src/basics/geometry3d/GbVoxelMatrix3D.cpp
index 5d4bdf2d540d538c4c200e94cd5a13a161ae68f2..11c0f9d0d21485b8e24fd6568f90e451fc2e598d 100644
--- a/src/basics/geometry3d/GbVoxelMatrix3D.cpp
+++ b/src/basics/geometry3d/GbVoxelMatrix3D.cpp
@@ -22,19 +22,11 @@ const float GbVoxelMatrix3D::FLUID = 0.0f;
 // Konstruktor
 GbVoxelMatrix3D::GbVoxelMatrix3D(int nx1, int nx2, int nx3, float initVal, double lowerThreshold, double upperThreshold)
    : GbObject3D()
-   , minX1(0.0)
-   , minX2(0.0)
-   , minX3(0.0)
    , lowerThreshold(lowerThreshold)
    , upperThreshold(upperThreshold)
    , nodesX1(nx1)
    , nodesX2(nx2)
    , nodesX3(nx3)
-   , deltaX1(1.0)
-   , deltaX2(1.0)
-   , deltaX3(1.0)
-   , transferViaFilename(false)
-   , addSurfaceTriangleSetFlag(true)
    , voxelMatrix(Matrix3D(nx1, nx2, nx3, initVal))
 {
    this->setName("VoxelMatrix3D");
@@ -42,49 +34,29 @@ GbVoxelMatrix3D::GbVoxelMatrix3D(int nx1, int nx2, int nx3, float initVal, doubl
 /*=======================================================*/
 GbVoxelMatrix3D::GbVoxelMatrix3D()
    : GbObject3D()
-   , minX1(0.0)
-   , minX2(0.0)
-   , minX3(0.0)
-   , nodesX1(0)
-   , nodesX2(0)
-   , nodesX3(0)
-   , lowerThreshold(0.0)
-   , upperThreshold(0.0)
-   , deltaX1(1.0)
-   , deltaX2(1.0)
-   , deltaX3(1.0)
-   , transferViaFilename(false)
-   , addSurfaceTriangleSetFlag(true)
+    
 {
    this->setName("VoxelMatrix3D");
 }
 /*=======================================================*/
 GbVoxelMatrix3D::GbVoxelMatrix3D(const Matrix3D& voxelMatrix, double lowerThreshold, double upperThreshold)
    : GbObject3D()
-   , minX1(0.0)
-   , minX2(0.0)
-   , minX3(0.0)
    , nodesX1((int)voxelMatrix.getNX1())
    , nodesX2((int)voxelMatrix.getNX2())
    , nodesX3((int)voxelMatrix.getNX3())
    , lowerThreshold(lowerThreshold)
    , upperThreshold(upperThreshold)
-   , deltaX1(1.0)
-   , deltaX2(1.0)
-   , deltaX3(1.0)
-   , transferViaFilename(false)
-   , addSurfaceTriangleSetFlag(true)
    , voxelMatrix(voxelMatrix)
 {
    this->setName("VoxelMatrix3D");
 }
 /*=======================================================*/
-GbVoxelMatrix3D*  GbVoxelMatrix3D::clone()
+GbVoxelMatrix3D* GbVoxelMatrix3D::clone()
 {
-   GbVoxelMatrix3D* vm = new GbVoxelMatrix3D(this->voxelMatrix, lowerThreshold, upperThreshold);
+   GbVoxelMatrix3D* vm = new GbVoxelMatrix3D(voxelMatrix, lowerThreshold, upperThreshold);
    vm->setVoxelMatrixMininum(minX1, minX2, minX3);
    vm->setVoxelMatrixDelta(deltaX1, deltaX2, deltaX3);
-   return  vm;
+   return vm;
 }
 /*=======================================================*/
 void GbVoxelMatrix3D::setCenterCoordinates(const double& x1, const double& x2, const double& x3)
@@ -270,7 +242,7 @@ bool GbVoxelMatrix3D::isPointInGbObject3D(const double& x1p, const double& x2p,
    return isPointInGbObject3D(x1p, x2p, x3p);
 }
 /*=======================================================*/
-bool GbVoxelMatrix3D::isCellInsideGbObject3D(const double& x1p1, const double& x2p1, const double& x3p1, const double& x1p2, const double& x2p2, const double& x3p2)
+bool GbVoxelMatrix3D::isCellInsideGbObject3D(const double&  /*x1p1*/, const double&  /*x2p1*/, const double&  /*x3p1*/, const double&  /*x1p2*/, const double&  /*x2p2*/, const double&  /*x3p2*/)
 {
    return false;
    //FIXME: unreachable cide
@@ -395,7 +367,7 @@ vector<GbTriangle3D*> GbVoxelMatrix3D::getSurfaceTriangleSet()
    return triangles;
 }
 /*=======================================================*/
-void GbVoxelMatrix3D::addSurfaceTriangleSet(vector<UbTupleFloat3>& nodes, vector<UbTupleInt3>& triangles)
+void GbVoxelMatrix3D::addSurfaceTriangleSet(vector<UbTupleFloat3>&  /*nodes*/, vector<UbTupleInt3>&  /*triangles*/)
 {
    UBLOG(logINFO, " GbVoxelMatrix3D addSurfaceTriangleSet start")
       if (!this->addSurfaceTriangleSetFlag)
@@ -548,7 +520,7 @@ void GbVoxelMatrix3D::readMatrixFromVtiASCIIFile(std::string filename)
 }
 
 //////////////////////////////////////////////////////////////////////////
-void GbVoxelMatrix3D::rotate90aroundX(double cX1, double cX2, double cX3)
+void GbVoxelMatrix3D::rotate90aroundX(double  /*cX1*/, double cX2, double cX3)
 {
 //   double tempMinPunktX1 = minX1-cX1;
    double tempMinPunktX2 = minX2-cX2;
@@ -599,7 +571,7 @@ void GbVoxelMatrix3D::rotate90aroundX()
    rotate90aroundX(cX1, cX2, cX3);
 }
 //////////////////////////////////////////////////////////////////////////
-void GbVoxelMatrix3D::rotate90aroundY(double cX1, double cX2, double cX3)
+void GbVoxelMatrix3D::rotate90aroundY(double cX1, double  /*cX2*/, double cX3)
 {
    double tempMinPunktX1 = getX1Maximum()-cX1;
 //   double tempMinPunktX2 = minX2-cX2;
@@ -650,7 +622,7 @@ void GbVoxelMatrix3D::rotate90aroundY()
    rotate90aroundY(cX1, cX2, cX3);
 }
 //////////////////////////////////////////////////////////////////////////
-void GbVoxelMatrix3D::rotate90aroundZ(double cX1, double cX2, double cX3)
+void GbVoxelMatrix3D::rotate90aroundZ(double cX1, double cX2, double  /*cX3*/)
 {
    double tempMinPunktX1 = minX1-cX1;
    double tempMinPunktX2 = getX2Maximum()-cX2;
diff --git a/src/basics/geometry3d/GbVoxelMatrix3D.h b/src/basics/geometry3d/GbVoxelMatrix3D.h
index 4cc0925e065e05a3b66b5ec94b1dcaaa1759b878..69af1e54795606f2251063370f8b2f75908d8ffa 100644
--- a/src/basics/geometry3d/GbVoxelMatrix3D.h
+++ b/src/basics/geometry3d/GbVoxelMatrix3D.h
@@ -24,7 +24,7 @@ class GbObject3DCreator;
 class GbVoxelMatrix3D : public GbObject3D, public UbObserver
 {
 public:
-   typedef CbArray3D<float> Matrix3D;
+   using Matrix3D = CbArray3D<float>;
    static const float SOLID;
    static const float FLUID;
    enum  Endian { BigEndian, LittleEndian };
@@ -32,10 +32,10 @@ public:
    GbVoxelMatrix3D();
    GbVoxelMatrix3D(int nx1, int nx2, int nx3, float initVal, double lowerThreshold = 0, double upperThreshold = 0);
    GbVoxelMatrix3D(const Matrix3D& voxelMatrix, double lowerThreshold = 0, double upperThreshold = 0);
-   ~GbVoxelMatrix3D() {}
+   ~GbVoxelMatrix3D() override = default;
 
-   void finalize() {};
-   GbVoxelMatrix3D* clone();
+   void finalize() override {};
+   GbVoxelMatrix3D* clone() override;
 
    /*=======================================================================*/
    Matrix3D::reference operator() (const Matrix3D::size_type& x1, const Matrix3D::size_type& x2, const Matrix3D::size_type& x3)
@@ -69,47 +69,47 @@ public:
    void setVoxelMatrixDeltaX3(double deltaX3) { this->deltaX3 = deltaX3; }
 
    /*=======================================================================*/
-   double getX1Centroid() { return 0.5 * (minX1+this->getX1Maximum()); }
-   double getX1Minimum() { return minX1; }
-   double getX1Maximum() { return minX1+deltaX1*voxelMatrix.getNX1(); }
+   double getX1Centroid() override { return 0.5 * (minX1+this->getX1Maximum()); }
+   double getX1Minimum() override { return minX1; }
+   double getX1Maximum() override { return minX1+deltaX1*voxelMatrix.getNX1(); }
 
-   double getX2Centroid() { return 0.5 * (minX2+this->getX2Maximum()); }
-   double getX2Minimum() { return minX2; }
-   double getX2Maximum() { return minX2+deltaX2*voxelMatrix.getNX2(); }
+   double getX2Centroid() override { return 0.5 * (minX2+this->getX2Maximum()); }
+   double getX2Minimum() override { return minX2; }
+   double getX2Maximum() override { return minX2+deltaX2*voxelMatrix.getNX2(); }
 
-   double getX3Centroid() { return 0.5 * (this->getX3Minimum()+this->getX3Maximum()); }
-   double getX3Minimum() { return minX3; }
-   double getX3Maximum() { return minX3+deltaX3*voxelMatrix.getNX3(); }
+   double getX3Centroid() override { return 0.5 * (this->getX3Minimum()+this->getX3Maximum()); }
+   double getX3Minimum() override { return minX3; }
+   double getX3Maximum() override { return minX3+deltaX3*voxelMatrix.getNX3(); }
 
    double getLengthX1() { return this->getX1Maximum()-minX1; }
    double getLengthX2() { return this->getX2Maximum()-minX2; }
    double getLengthX3() { return this->getX3Maximum()-minX3; }
 
-   void setCenterCoordinates(const double& x1, const double& x2, const double& x3);
-   void translate(const double& tx1, const double& tx2, const double& tx3);
+   void setCenterCoordinates(const double& x1, const double& x2, const double& x3) override;
+   void translate(const double& tx1, const double& tx2, const double& tx3) override;
 
-   bool isPointInGbObject3D(const double& x1p, const double& x2p, const double& x3p, bool& pointIsOnBoundary);
-   bool isPointInGbObject3D(const double& x1p, const double& x2p, const double& x3p);
-   bool isCellInsideGbObject3D(const double& x1a, const double& x2a, const double& x3a, const double& x1b, const double& x2b, const double& x3b);
-   bool isCellCuttingGbObject3D(const double& x1a, const double& x2a, const double& x3a, const double& x1b, const double& x2b, const double& x3b);
-   bool isCellInsideOrCuttingGbObject3D(const double& x1a, const double& x2a, const double& x3a, const double& x1b, const double& x2b, const double& x3b);
+   bool isPointInGbObject3D(const double& x1p, const double& x2p, const double& x3p, bool& pointIsOnBoundary) override;
+   bool isPointInGbObject3D(const double& x1p, const double& x2p, const double& x3p) override;
+   bool isCellInsideGbObject3D(const double& x1a, const double& x2a, const double& x3a, const double& x1b, const double& x2b, const double& x3b) override;
+   bool isCellCuttingGbObject3D(const double& x1a, const double& x2a, const double& x3a, const double& x1b, const double& x2b, const double& x3b) override;
+   bool isCellInsideOrCuttingGbObject3D(const double& x1a, const double& x2a, const double& x3a, const double& x1b, const double& x2b, const double& x3b) override;
    //double getCellVolumeInsideGbObject3D(const double& x1a,const double& x2a,const double& x3a,const double& x1b,const double& x2b,const double& x3b);
 
-   GbPoint3D*  calculateInterSectionPoint3D(GbPoint3D& point1, GbPoint3D &point2) { throw UbException(__FILE__, __LINE__, UB_FUNCTION, "not implemented"); }
-   GbLine3D*   createClippedLine3D(GbPoint3D& point1, GbPoint3D& point2) { throw UbException(__FILE__, __LINE__, UB_FUNCTION, "not implemented"); }
+   GbPoint3D*  calculateInterSectionPoint3D(GbPoint3D&  /*point1*/, GbPoint3D & /*point2*/) { throw UbException(__FILE__, __LINE__, UB_FUNCTION, "not implemented"); }
+   GbLine3D*   createClippedLine3D(GbPoint3D&  /*point1*/, GbPoint3D&  /*point2*/) override { throw UbException(__FILE__, __LINE__, UB_FUNCTION, "not implemented"); }
 
-   std::vector<GbTriangle3D*> getSurfaceTriangleSet();
-   void addSurfaceTriangleSet(std::vector<UbTupleFloat3>& nodes, std::vector<UbTupleInt3>& triangles);
+   std::vector<GbTriangle3D*> getSurfaceTriangleSet() override;
+   void addSurfaceTriangleSet(std::vector<UbTupleFloat3>& nodes, std::vector<UbTupleInt3>& triangles) override;
 
-   bool hasRaytracing() { return true; }
+   bool hasRaytracing() override { return true; }
    /*|r| must be 1! einheitsvector!!*/
-   double getIntersectionRaytraceFactor(const double& x1, const double& x2, const double& x3, const double& rx1, const double& rx2, const double& rx3);
+   double getIntersectionRaytraceFactor(const double& x1, const double& x2, const double& x3, const double& rx1, const double& rx2, const double& rx3) override;
 
-   std::string toString();
+   std::string toString() override;
 
    //virtuelle Methoden von UbObserver
-   void objectChanged(UbObservable* changedObject) {}
-   void objectWillBeDeleted(UbObservable* objectForDeletion) {}
+   void objectChanged(UbObservable* changedObject) override {}
+   void objectWillBeDeleted(UbObservable* objectForDeletion) override {}
 
    template <class T>
    void readMatrixFromRawFile(std::string filename, GbVoxelMatrix3D::Endian endian);
@@ -159,21 +159,21 @@ protected:
 protected:
    //for transfer
    std::string filename;
-   bool transferViaFilename;
+   bool transferViaFilename{false};
 
-   bool addSurfaceTriangleSetFlag;
+   bool addSurfaceTriangleSetFlag{true};
 
-   int nodesX1;
-   int nodesX2;
-   int nodesX3;
-   double lowerThreshold, upperThreshold;
+   int nodesX1{0};
+   int nodesX2{0};
+   int nodesX3{0};
+   double lowerThreshold{0.0}, upperThreshold{0.0};
 
-   double minX1;
-   double minX2;
-   double minX3;
-   double deltaX1;
-   double deltaX2;
-   double deltaX3;
+   double minX1{0.0};
+   double minX2{0.0};
+   double minX3{0.0};
+   double deltaX1{1.0};
+   double deltaX2{1.0};
+   double deltaX3{1.0};
 
    Matrix3D voxelMatrix;
 
diff --git a/src/basics/geometry3d/KdTree/KdSplitCandidate.h b/src/basics/geometry3d/KdTree/KdSplitCandidate.h
index 9fe19c0657d01b4867020c99e0f16cdc7b453bc6..b7719ebf388cb1359653887ee9e409677d3886d4 100644
--- a/src/basics/geometry3d/KdTree/KdSplitCandidate.h
+++ b/src/basics/geometry3d/KdTree/KdSplitCandidate.h
@@ -9,33 +9,15 @@ namespace Kd
    class SplitCandidate   
    {
    public:
-      SplitCandidate() 
-         :  axis(0)
-          , position(0.0)
-          , starting(0)
-          , ending(0)
-          , np_left(false)
-          , np_right(false)
-          , Cn(0.0)
-          , nr(0)
-          , nl(0)  
-          , isValid(false)
-      {
-
-      }
+      SplitCandidate() = default;
       /* ======================================================================================= */
-      SplitCandidate(const int& axis, const T& position, const int& starting, const int& ending, const int& insidePlane)
-         : np_left(false)
-         , np_right(false)
-         , axis(axis)
+      SplitCandidate(const int& axis, const T& position, const int& starting, const int& ending, const int& insidePlane) :
+           axis(axis)
          , position(position)
          , starting(starting)
          , ending(ending)
          , np(insidePlane)
-         , Cn(0.0) 
-         , nr(0)  
-         , nl(0)  
-         , isValid(true)
+         , isValid(true) //FIXME: isValid default false is correct?
       {
       }
       /* ======================================================================================= */
@@ -51,17 +33,17 @@ namespace Kd
       /* ======================================================================================= */
 
    public:
-      int     axis;
-      T       Cn;
-      T       position;
-      int     nl;
-      int     nr;
+      int     axis{0};
+      T       Cn {0.0};
+      T       position {0.0};
+      int     nl{0};
+      int     nr{0};
       int     np;
-      int     starting;
-      int     ending;
-      bool    np_left;
-      bool    np_right;
-      bool    isValid;
+      int     starting{0};
+      int     ending{0};
+      bool    np_left{false};
+      bool    np_right{false};
+      bool    isValid{false};
    };
 }
 
diff --git a/src/basics/geometry3d/KdTree/KdSplitCandidateManager.h b/src/basics/geometry3d/KdTree/KdSplitCandidateManager.h
index 0139434ebde3bf91fee160a9c7b53ecbcf4bd3bc..f107bac602c658527f943c13c1dacd64a9cc506c 100644
--- a/src/basics/geometry3d/KdTree/KdSplitCandidateManager.h
+++ b/src/basics/geometry3d/KdTree/KdSplitCandidateManager.h
@@ -15,11 +15,8 @@ namespace Kd
    {
    public:
       SplitCandidateManager()
-         : objects_starting_outside_left(0)
-         , objects_fully_outside_node(0)
-      {
-
-      }
+          
+      = default;
       /* ======================================================================================= */
       SplitCandidate<T>& operator[] (const std::size_t& i)
       { 
@@ -63,8 +60,8 @@ namespace Kd
       /* ======================================================================================= */
 
    public:
-      int objects_starting_outside_left;
-      int objects_fully_outside_node;
+      int objects_starting_outside_left{0};
+      int objects_fully_outside_node{0};
 
    private:
       std::map<T, SplitCandidate<T> > splitCandidates;
diff --git a/src/basics/geometry3d/KdTree/KdTree.h b/src/basics/geometry3d/KdTree/KdTree.h
index 03e461216cbfd7367b872713b77c21bd3e5bae5e..c3f76d22bcff4f5b04d5032a4f72037d0091a733 100644
--- a/src/basics/geometry3d/KdTree/KdTree.h
+++ b/src/basics/geometry3d/KdTree/KdTree.h
@@ -11,6 +11,7 @@
 #include <geometry3d/KdTree/splitalgorithms/KdSplitAlgorithm.h>
 
 #include <string>
+#include <cmath>
 
 namespace Kd
 {
@@ -66,8 +67,8 @@ namespace Kd
           
          // create a copy of triangles 
          MbSmartPtr< std::vector<GbTriFaceMesh3D::TriFace> > triFaces(new std::vector<GbTriFaceMesh3D::TriFace>(*mesh.getTriangles() ) );
-         
-         int maxLevel = (int)(8.0 + 1.3 * std::log( (double)triFaces->size() ) + 0.5);
+
+         const int maxLevel = static_cast<int>(lround(8.0 + 1.3 * std::log( (double)triFaces->size() ))); //TODO: remove magic numbers
 
          rootNode = new Node<T>(   T( mesh.getX1Minimum() )
                                  , T( mesh.getX2Minimum() )
diff --git a/src/basics/geometry3d/KdTree/KdUtilities.h b/src/basics/geometry3d/KdTree/KdUtilities.h
index 13449754384d819d3301a1e5aeceb343bb8c489b..2c56652d2be8c30afb481834b9fe84e4f815d088 100644
--- a/src/basics/geometry3d/KdTree/KdUtilities.h
+++ b/src/basics/geometry3d/KdTree/KdUtilities.h
@@ -52,7 +52,7 @@ namespace Kd
       }
       else throw UbException(UB_EXARGS,"unknown axis");
       
-      std::sort( projection.begin(), projection.end(), std::less<double>() );
+      std::sort( projection.begin(), projection.end(), std::less<>() );
    }
    /* ======================================================================================= */
    template< typename T>
diff --git a/src/basics/geometry3d/KdTree/intersectionhandler/KdCountLineIntersectionHandler.h b/src/basics/geometry3d/KdTree/intersectionhandler/KdCountLineIntersectionHandler.h
index 4c815cfaf7c48e2f4cfdeb5f4cb6570962014ede..89501b60ef3dee57446ea58aeef26e9544be1138 100644
--- a/src/basics/geometry3d/KdTree/intersectionhandler/KdCountLineIntersectionHandler.h
+++ b/src/basics/geometry3d/KdTree/intersectionhandler/KdCountLineIntersectionHandler.h
@@ -18,7 +18,7 @@ namespace Kd
    class CountLineIntersectionHandler : public LineIntersectionHandler<T> 
    {
    public:
-      bool intersectLine(const UbTuple<T,T,T>& n1, const UbTuple<T,T,T>& n2, Node<T>& parent, Node<T>*& child1, Node<T>*& child2) const
+      bool intersectLine(const UbTuple<T,T,T>& n1, const UbTuple<T,T,T>& n2, Node<T>& parent, Node<T>*& child1, Node<T>*& child2) const override
       {
          if( parent.intersectLineBoundingBox(n1, n2)  == Intersection::INTERSECTION)
          {
diff --git a/src/basics/geometry3d/KdTree/intersectionhandler/KdCountRayIntersectionHandler.h b/src/basics/geometry3d/KdTree/intersectionhandler/KdCountRayIntersectionHandler.h
index d72ed7ac76ccc5c6b9a49c3925ef17af7394b5bb..460ec2174e592950157c04b5d9c6632fe2079975 100644
--- a/src/basics/geometry3d/KdTree/intersectionhandler/KdCountRayIntersectionHandler.h
+++ b/src/basics/geometry3d/KdTree/intersectionhandler/KdCountRayIntersectionHandler.h
@@ -18,7 +18,7 @@ namespace Kd
    class CountRayIntersectionHandler : public RayIntersectionHandler<T> 
    {
    public:
-      int intersectRay(const Ray<T>& ray, Node<T>& parent, Node<T>*& child1, Node<T>*& child2, std::set< UbKeys::Key3<int> >& mailbox) const
+      int intersectRay(const Ray<T>& ray, Node<T>& parent, Node<T>*& child1, Node<T>*& child2, std::set< UbKeys::Key3<int> >& mailbox) const override
       {
          if( parent.intersectRayBoundingBox(ray)  == Intersection::INTERSECTION)
          {
diff --git a/src/basics/geometry3d/KdTree/intersectionhandler/KdLineIntersectionHandler.h b/src/basics/geometry3d/KdTree/intersectionhandler/KdLineIntersectionHandler.h
index d52e2905cc30777326bf2ca04ed12366f3a9679b..156dd720b4719a62423efc50bd616a249fe2a516 100644
--- a/src/basics/geometry3d/KdTree/intersectionhandler/KdLineIntersectionHandler.h
+++ b/src/basics/geometry3d/KdTree/intersectionhandler/KdLineIntersectionHandler.h
@@ -19,7 +19,7 @@ namespace Kd
    {
    public:
       virtual bool intersectLine(const UbTuple<T,T,T>& n1, const UbTuple<T,T,T>& n2, Node<T>& parent, Node<T>*& child1, Node<T>*& child2) const = 0;
-      virtual ~LineIntersectionHandler() {}
+      virtual ~LineIntersectionHandler() = default;
    };
 }
 
diff --git a/src/basics/geometry3d/KdTree/intersectionhandler/KdRayIntersectionHandler.h b/src/basics/geometry3d/KdTree/intersectionhandler/KdRayIntersectionHandler.h
index 2e0740ce8633e3a7b2410411234fa5dcb9149fea..99803aa152b41033c638b84500f1f2911c6b142d 100644
--- a/src/basics/geometry3d/KdTree/intersectionhandler/KdRayIntersectionHandler.h
+++ b/src/basics/geometry3d/KdTree/intersectionhandler/KdRayIntersectionHandler.h
@@ -13,7 +13,7 @@ namespace Kd
    {
    public:
       virtual int intersectRay(const Ray<T>& ray, Node<T>& parent, Node<T>*& child1, Node<T>*& child2, std::set< UbKeys::Key3<int> >& mailbox) const = 0;
-      virtual ~RayIntersectionHandler() {}
+      virtual ~RayIntersectionHandler() = default;
    };
 }
 
diff --git a/src/basics/geometry3d/KdTree/splitalgorithms/KdSAHSplit.h b/src/basics/geometry3d/KdTree/splitalgorithms/KdSAHSplit.h
index 686ff1c9aeccee959178599671ac1c913a20c908..07e9013cbe3e318f702f739825f41ec448778cba 100644
--- a/src/basics/geometry3d/KdTree/splitalgorithms/KdSAHSplit.h
+++ b/src/basics/geometry3d/KdTree/splitalgorithms/KdSAHSplit.h
@@ -21,7 +21,7 @@ namespace Kd
    {
    public:
       /* ======================================================================================= */
-      SplitCandidate<T> findBestSplitCandidate(const int& level, const int& maxLevel, Node<T>& node ) const
+      SplitCandidate<T> findBestSplitCandidate(const int& level, const int& maxLevel, Node<T>& node ) const override
       {
          if( !node.getTriFaces() )  throw UbException(UB_EXARGS, "triFace NULL pointer");
 
@@ -72,7 +72,7 @@ namespace Kd
          return bestSplitCandidate;
       }
       /* ======================================================================================= */
-      void distributeTriFaces(const SplitCandidate<T>& candidate, std::vector<GbTriFaceMesh3D::TriFace>& triFacesForChild1, std::vector<GbTriFaceMesh3D::TriFace>& triFacesForChild2, Node<T>& node) const
+      void distributeTriFaces(const SplitCandidate<T>& candidate, std::vector<GbTriFaceMesh3D::TriFace>& triFacesForChild1, std::vector<GbTriFaceMesh3D::TriFace>& triFacesForChild2, Node<T>& node) const override
       {  
          if( !node.getTriFaces() )  throw UbException(UB_EXARGS, "null pointer at triface list");
 
diff --git a/src/basics/geometry3d/KdTree/splitalgorithms/KdSpatiallMedianSplit.h b/src/basics/geometry3d/KdTree/splitalgorithms/KdSpatiallMedianSplit.h
index 9cc835601a81b4596eaa42314f2143594dd63287..a2c32fdf9b798280778885853de70abf8aca9064 100644
--- a/src/basics/geometry3d/KdTree/splitalgorithms/KdSpatiallMedianSplit.h
+++ b/src/basics/geometry3d/KdTree/splitalgorithms/KdSpatiallMedianSplit.h
@@ -12,7 +12,7 @@ namespace Kd
    class SpatialMedianSplit : public SplitAlgorithm<T> 
    {
       /* ======================================================================================= */
-      SplitCandidate<T> findBestSplitCandidate(const int& level, const int& maxLevel, Node<T>& node )  const
+      SplitCandidate<T> findBestSplitCandidate(const int& level, const int& maxLevel, Node<T>& node )  const override
       {
          if(   node.getTriFaces()->size() <= 24 //max triangles in node 
             || level >= maxLevel        )
@@ -31,7 +31,7 @@ namespace Kd
 
       }
       /* ======================================================================================= */
-      void distributeTriFaces(const SplitCandidate<T>& candidate, std::vector<GbTriFaceMesh3D::TriFace>& primitives_child1, std::vector<GbTriFaceMesh3D::TriFace>& primitives_child2, Node<T>& node) const
+      void distributeTriFaces(const SplitCandidate<T>& candidate, std::vector<GbTriFaceMesh3D::TriFace>& primitives_child1, std::vector<GbTriFaceMesh3D::TriFace>& primitives_child2, Node<T>& node) const override
       {
          if( !node.getTriFaces() )  throw UbException(UB_EXARGS, "null pointer");
 
diff --git a/src/basics/geometry3d/KdTree/splitalgorithms/KdSplitAlgorithm.h b/src/basics/geometry3d/KdTree/splitalgorithms/KdSplitAlgorithm.h
index d50d972ff2b5582d0ec3963763d2bd68d2fa24ed..4a8caa6975e1e3d007c9df25f6e6d65788503629 100644
--- a/src/basics/geometry3d/KdTree/splitalgorithms/KdSplitAlgorithm.h
+++ b/src/basics/geometry3d/KdTree/splitalgorithms/KdSplitAlgorithm.h
@@ -18,7 +18,7 @@ namespace Kd
    public:
       virtual SplitCandidate<T> findBestSplitCandidate(const int& level, const int& maxLevel, Node<T>& node ) const = 0;
       virtual void distributeTriFaces(const SplitCandidate<T>& candidate, std::vector<GbTriFaceMesh3D::TriFace>& triFacesForChild1, std::vector<GbTriFaceMesh3D::TriFace>& triFacesForChild2, Node<T>& node) const=0;
-      virtual ~SplitAlgorithm() {}
+      virtual ~SplitAlgorithm() = default;
    };
 }
 
diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/BCAdapter.h b/src/cpu/VirtualFluidsCore/BoundaryConditions/BCAdapter.h
index a34f899ae53df3fe4f48cd9b252a9c63bc4ff9a7..b4f08b2002670e8076f6bd19fb1577404f5af0f5 100644
--- a/src/cpu/VirtualFluidsCore/BoundaryConditions/BCAdapter.h
+++ b/src/cpu/VirtualFluidsCore/BoundaryConditions/BCAdapter.h
@@ -45,20 +45,14 @@ class D3Q27Interactor;
 class BCAdapter
 {
 public:
-   BCAdapter() 
-      :  secondaryBcOption(0)
-       , type(0)
-       , algorithmType(-1)
-   {
-   }
+   BCAdapter() = default;
+
    //! \param secondaryBcOption additional option of boundary conditions
    BCAdapter(const short& secondaryBcOption) 
-      :  secondaryBcOption(secondaryBcOption) 
-       , type(0)
-       , algorithmType(-1)
+      :  secondaryBcOption(secondaryBcOption)
    {
    }
-   virtual ~BCAdapter() {}
+   virtual ~BCAdapter() = default;
 
    //methods
    bool isTimeDependent() { return((this->type & TIMEDEPENDENT) ==  TIMEDEPENDENT); }
@@ -77,12 +71,12 @@ public:
    char getBcAlgorithmType() {return algorithmType;}
 
 protected:
-   short secondaryBcOption;
+   short secondaryBcOption{0};
 
-   char  type;
+   char  type{0};
 
    SPtr<BCAlgorithm> algorithm;
-   char algorithmType;
+   char algorithmType{-1};
 
    static const char   TIMEDEPENDENT = 1<<0;//'1';
    static const char   TIMEPERIODIC  = 1<<1;//'2';
diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/BCAlgorithm.cpp b/src/cpu/VirtualFluidsCore/BoundaryConditions/BCAlgorithm.cpp
index 7ec1efcc307e9cd288853faf72601306d9b89bd6..ffc8679ac08323fb4f1b0cde851dd04e352c4130 100644
--- a/src/cpu/VirtualFluidsCore/BoundaryConditions/BCAlgorithm.cpp
+++ b/src/cpu/VirtualFluidsCore/BoundaryConditions/BCAlgorithm.cpp
@@ -38,10 +38,6 @@
 #include "BCArray3D.h"
 
 
-BCAlgorithm::BCAlgorithm() : compressible(false)
-{
-
-}
 //////////////////////////////////////////////////////////////////////////
 void BCAlgorithm::setNodeIndex(int x1, int x2, int x3)
 {
diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/BCAlgorithm.h b/src/cpu/VirtualFluidsCore/BoundaryConditions/BCAlgorithm.h
index 45a06b56b72786dee4506b74421008f91ec536be..0b4110fe9147f8e081096e2cded21a0c0953cd53 100644
--- a/src/cpu/VirtualFluidsCore/BoundaryConditions/BCAlgorithm.h
+++ b/src/cpu/VirtualFluidsCore/BoundaryConditions/BCAlgorithm.h
@@ -58,7 +58,7 @@ public:
    static const char NonReflectingOutflowBCAlgorithm = 8;
 
 public:
-   BCAlgorithm();
+   BCAlgorithm() = default;
    virtual ~BCAlgorithm() = default;
    
    virtual void addDistributions(SPtr<DistributionArray3D> distributions) = 0;
@@ -74,7 +74,7 @@ public:
    virtual void applyBC() = 0;
 
 protected:
-   bool compressible;
+   bool compressible{false};
    char type;
    bool preCollision;
 
@@ -87,9 +87,9 @@ protected:
 
    LBMReal compressibleFactor;
 
-   typedef void(*CalcMacrosFct)(const LBMReal* const& /*f[27]*/, LBMReal& /*rho*/, LBMReal& /*vx1*/, LBMReal& /*vx2*/, LBMReal& /*vx3*/);
-   typedef LBMReal(*CalcFeqForDirFct)(const int& /*direction*/, const LBMReal& /*(d)rho*/, const LBMReal& /*vx1*/, const LBMReal& /*vx2*/, const LBMReal& /*vx3*/);
-   typedef  void(*CalcFeqFct)(LBMReal* const& /*feq[27]*/, const LBMReal& /*rho*/, const LBMReal& /*vx1*/, const LBMReal& /*vx2*/, const LBMReal& /*vx3*/);
+    using CalcMacrosFct = void (*)(const LBMReal *const &, LBMReal &, LBMReal &, LBMReal &, LBMReal &);
+    using CalcFeqForDirFct = LBMReal (*)(const int &, const LBMReal &, const LBMReal &, const LBMReal &, const LBMReal &);
+    using CalcFeqFct = void (*)(LBMReal *const &, const LBMReal &, const LBMReal &, const LBMReal &, const LBMReal &);
    
    CalcFeqForDirFct calcFeqsForDirFct ;
    CalcMacrosFct    calcMacrosFct;
diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/BCArray3D.cpp b/src/cpu/VirtualFluidsCore/BoundaryConditions/BCArray3D.cpp
index 76094ba5bbc4c1abc1c6d602eedd5acaf55ae88c..913967fabf3795223389498886732999de55adaf 100644
--- a/src/cpu/VirtualFluidsCore/BoundaryConditions/BCArray3D.cpp
+++ b/src/cpu/VirtualFluidsCore/BoundaryConditions/BCArray3D.cpp
@@ -40,7 +40,7 @@ const int BCArray3D::INTERFACEFC = -4;
 const int BCArray3D::UNDEFINED = -5;
 
 //////////////////////////////////////////////////////////////////////////
-BCArray3D::BCArray3D() {}
+BCArray3D::BCArray3D() = default;
 //////////////////////////////////////////////////////////////////////////
 BCArray3D::BCArray3D(std::size_t nx1, std::size_t nx2, std::size_t nx3)
 {
@@ -52,7 +52,7 @@ BCArray3D::BCArray3D(std::size_t nx1, std::size_t nx2, std::size_t nx3, int val)
    bcindexmatrix.resize(nx1, nx2, nx3, val);
 }
 //////////////////////////////////////////////////////////////////////////
-BCArray3D::~BCArray3D() {}
+BCArray3D::~BCArray3D() = default;
 //////////////////////////////////////////////////////////////////////////
 void BCArray3D::resize(std::size_t nx1, std::size_t nx2, std::size_t nx3)
 {
@@ -173,11 +173,11 @@ std::string BCArray3D::toString() const
    std::size_t bcCounter = 0;
    std::size_t undefCounter = 0;
 
-   for (int x1 = 0; x1 < bcindexmatrix.getNX1(); x1++)
+   for (size_t x1 = 0; x1 < bcindexmatrix.getNX1(); x1++)
    {
-      for (int x2 = 0; x2 < bcindexmatrix.getNX2(); x2++)
+      for (size_t x2 = 0; x2 < bcindexmatrix.getNX2(); x2++)
       {
-         for (int x3 = 0; x3 < bcindexmatrix.getNX3(); x3++)
+         for (size_t x3 = 0; x3 < bcindexmatrix.getNX3(); x3++)
          {
             if (bcindexmatrix(x1, x2, x3) >= 0) bcCounter++;
             else if (bcindexmatrix(x1, x2, x3) == FLUID) fluidCounter++;
diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/BCProcessor.cpp b/src/cpu/VirtualFluidsCore/BoundaryConditions/BCProcessor.cpp
index 9f4d9eab15320e28edbbf6dad2a47dcbfa2af118..020f4d60d091c4cb26beb7556b51f9edf94cc904 100644
--- a/src/cpu/VirtualFluidsCore/BoundaryConditions/BCProcessor.cpp
+++ b/src/cpu/VirtualFluidsCore/BoundaryConditions/BCProcessor.cpp
@@ -39,20 +39,16 @@
 #include "BCAlgorithm.h"
 
 BCProcessor::BCProcessor()
-{
-   
-}
+= default;
 //////////////////////////////////////////////////////////////////////////
 BCProcessor::BCProcessor(SPtr<ILBMKernel> kernel)
 {
    SPtr<DistributionArray3D> distributions = std::dynamic_pointer_cast<EsoTwist3D>(kernel->getDataSet()->getFdistributions());
-   bcArray = SPtr<BCArray3D>(new BCArray3D( distributions->getNX1(), distributions->getNX2(), distributions->getNX3(), BCArray3D::FLUID));
+   bcArray = std::make_shared<BCArray3D>(distributions->getNX1(), distributions->getNX2(), distributions->getNX3(), BCArray3D::FLUID);
 }
 //////////////////////////////////////////////////////////////////////////
 BCProcessor::~BCProcessor()
-{
-
-}
+= default;
 //////////////////////////////////////////////////////////////////////////
 SPtr<BCProcessor> BCProcessor::clone(SPtr<ILBMKernel> kernel)
 {
diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/BoundaryConditions.h b/src/cpu/VirtualFluidsCore/BoundaryConditions/BoundaryConditions.h
index 2c138e437aa8392ff851ce2852357090131b728f..1f740776ea4ef75d49e825c73f354357464145a7 100644
--- a/src/cpu/VirtualFluidsCore/BoundaryConditions/BoundaryConditions.h
+++ b/src/cpu/VirtualFluidsCore/BoundaryConditions/BoundaryConditions.h
@@ -48,24 +48,7 @@ class BoundaryConditions
 {
 public:
    BoundaryConditions() 
-      : noslipBoundaryFlags(0)		
-      , slipBoundaryFlags(0)		
-      , velocityBoundaryFlags(0)		
-      , densityBoundaryFlags(0)		
-      , wallModelBoundaryFlags(0)
-      , bcVelocityX1(0.0f)
-      , bcVelocityX2(0.0f)
-      , bcVelocityX3(0.0f)
-      , bcDensity(0.0f)
-      , bcLodiDensity(0.0f)
-      , bcLodiVelocityX1(0.0f)
-      , bcLodiVelocityX2(0.0f)
-      , bcLodiVelocityX3(0.0f)
-      , bcLodiLentgh(0.0f)
-      , nx1(0.0f)
-      , nx2(0.0f)
-      , nx3(0.0f)
-      , algorithmType(-1)
+       
    {
       UB_STATIC_ASSERT( sizeof(long long) >= 8);
       UB_STATIC_ASSERT( (sizeof(long long)*8) >= (D3Q27System::FENDDIR+1)*BoundaryConditions::optionDigits );
@@ -73,7 +56,7 @@ public:
       for(int fdir=D3Q27System::FSTARTDIR; fdir<=D3Q27System::FENDDIR; fdir++) 
          q[fdir] = -999.; 
    }
-   virtual ~BoundaryConditions() {}
+   virtual ~BoundaryConditions() = default;
 
    virtual bool isEmpty() { return (noslipBoundaryFlags&slipBoundaryFlags&velocityBoundaryFlags&densityBoundaryFlags)==0;}
    virtual bool hasBoundaryCondition()
@@ -227,10 +210,10 @@ public:
    virtual std::vector< std::string > getBCNames()
    {
       std::vector< std::string > tmp;
-      tmp.push_back( "NoSlipBC"   );
-      tmp.push_back( "SlipBC"     );
-      tmp.push_back( "VelocityBC" );
-      tmp.push_back( "DensityBC"  );
+      tmp.emplace_back("NoSlipBC"   );
+      tmp.emplace_back("SlipBC"     );
+      tmp.emplace_back("VelocityBC" );
+      tmp.emplace_back("DensityBC"  );
       return tmp;
    }
    virtual std::vector< long long > getBCFlags()
@@ -258,26 +241,26 @@ public:
 protected:
    LBMReal q[D3Q27System::FENDDIR+1];
 
-   long long noslipBoundaryFlags;		
-   long long slipBoundaryFlags;		
-   long long velocityBoundaryFlags;		
-   long long densityBoundaryFlags;		
-   long long wallModelBoundaryFlags;
+   long long noslipBoundaryFlags{0};		
+   long long slipBoundaryFlags{0};		
+   long long velocityBoundaryFlags{0};		
+   long long densityBoundaryFlags{0};		
+   long long wallModelBoundaryFlags{0};
 
-   LBMReal  bcVelocityX1;
-   LBMReal  bcVelocityX2;
-   LBMReal  bcVelocityX3;
-   LBMReal  bcDensity;
+   LBMReal  bcVelocityX1{0.0f};
+   LBMReal  bcVelocityX2{0.0f};
+   LBMReal  bcVelocityX3{0.0f};
+   LBMReal  bcDensity{0.0f};
 
-   LBMReal  bcLodiDensity;
-   LBMReal  bcLodiVelocityX1;
-   LBMReal  bcLodiVelocityX2;
-   LBMReal  bcLodiVelocityX3;
-   LBMReal  bcLodiLentgh;
+   LBMReal  bcLodiDensity{0.0f};
+   LBMReal  bcLodiVelocityX1{0.0f};
+   LBMReal  bcLodiVelocityX2{0.0f};
+   LBMReal  bcLodiVelocityX3{0.0f};
+   LBMReal  bcLodiLentgh{0.0f};
 
-   LBMReal  nx1,nx2,nx3;
+   LBMReal  nx1{0.0f},nx2{0.0f},nx3{0.0f};
 
-   char algorithmType;
+   char algorithmType{-1};
 
   private:
    friend class MPIIORestartCoProcessor;
diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/DensityBCAdapter.cpp b/src/cpu/VirtualFluidsCore/BoundaryConditions/DensityBCAdapter.cpp
index 4d510601c4053b7f5cffccddb59785e3e226cae6..dcdfd989d1dbd1c011769e1d573d282de9a80511 100644
--- a/src/cpu/VirtualFluidsCore/BoundaryConditions/DensityBCAdapter.cpp
+++ b/src/cpu/VirtualFluidsCore/BoundaryConditions/DensityBCAdapter.cpp
@@ -6,7 +6,7 @@ using namespace std;
 /*==========================================================*/
 DensityBCAdapter::DensityBCAdapter(const double& dens, const double& startTime, const double& endTime )
 {
-   this->densBCs.push_back( BCFunction(dens,startTime,endTime) );
+   this->densBCs.emplace_back(dens,startTime,endTime );
    this->init();
 }
 /*==========================================================*/
@@ -24,7 +24,7 @@ DensityBCAdapter::DensityBCAdapter(const std::vector< BCFunction >& densBCs)
 /*==========================================================*/
 DensityBCAdapter::DensityBCAdapter(const mu::Parser& function, const double& startTime, const double& endTime )
 {
-   this->densBCs.push_back(BCFunction(function,startTime,endTime));
+   this->densBCs.emplace_back(function,startTime,endTime);
    this->init();
 }
 /*==========================================================*/
@@ -61,7 +61,7 @@ void DensityBCAdapter::init()
    catch(...)                          { throw UbException(UB_EXARGS,"unknown exception" );                       }
 }
 /*==========================================================*/
-void DensityBCAdapter::init(const D3Q27Interactor* const& interactor, const double& time)
+void DensityBCAdapter::init(const D3Q27Interactor* const&  /*interactor*/, const double& time)
 {
    this->timeStep           = time;
    this->tmpDensityFunction = NULL;
@@ -99,7 +99,7 @@ void DensityBCAdapter::update( const D3Q27Interactor* const& interactor, const d
    this->init(interactor,time);
 }
 /*==========================================================*/
-void DensityBCAdapter::adaptBCForDirection( const D3Q27Interactor& interactor, SPtr<BoundaryConditions> bc, const double& worldX1, const double& worldX2, const double& worldX3, const double& q, const int& fdirection, const double& time )
+void DensityBCAdapter::adaptBCForDirection( const D3Q27Interactor&  /*interactor*/, SPtr<BoundaryConditions> bc, const double&  /*worldX1*/, const double&  /*worldX2*/, const double&  /*worldX3*/, const double& q, const int& fdirection, const double&  /*time*/ )
 {
    bc->setDensityBoundaryFlag(D3Q27System::INVDIR[fdirection],secondaryBcOption);
    bc->setQ((float)q,fdirection);
@@ -111,7 +111,7 @@ void DensityBCAdapter::adaptBC( const D3Q27Interactor& interactor, SPtr<Boundary
    bc->setBcAlgorithmType(algorithmType);
 }
 /*==========================================================*/
-void DensityBCAdapter::setNodeDensity( const D3Q27Interactor& interactor, SPtr<BoundaryConditions> bc, const double& worldX1, const double& worldX2, const double& worldX3, const double& timestep) 
+void DensityBCAdapter::setNodeDensity( const D3Q27Interactor&  /*interactor*/, SPtr<BoundaryConditions> bc, const double& worldX1, const double& worldX2, const double& worldX3, const double& timestep) 
 {
    //Geschwindigkeiten setzen
    try
diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/DensityBCAdapter.h b/src/cpu/VirtualFluidsCore/BoundaryConditions/DensityBCAdapter.h
index 0dce4863e94f53e7086f331dca85a985c426b323..02bf08a456832142e3bcae3ef6167e4ce7284b2c 100644
--- a/src/cpu/VirtualFluidsCore/BoundaryConditions/DensityBCAdapter.h
+++ b/src/cpu/VirtualFluidsCore/BoundaryConditions/DensityBCAdapter.h
@@ -38,11 +38,11 @@ public:
    //------------- implements D3Q27BoundaryConditionAdapter ----- start
    std::string toString();
 
-   void init(const D3Q27Interactor* const& interactor, const double& time=0);
-   void update(const D3Q27Interactor* const& interactor, const double& time=0);
+   void init(const D3Q27Interactor* const& interactor, const double& time=0) override;
+   void update(const D3Q27Interactor* const& interactor, const double& time=0) override;
 
-   void adaptBCForDirection( const D3Q27Interactor& interactor, SPtr<BoundaryConditions> bc, const double& worldX1, const double& worldX2, const double& worldX3, const double& q, const int& fdirection, const double& time=0 );
-   void adaptBC( const D3Q27Interactor& interactor, SPtr<BoundaryConditions> bc, const double& worldX1, const double& worldX2, const double& worldX3, const double& time=0 );
+   void adaptBCForDirection( const D3Q27Interactor& interactor, SPtr<BoundaryConditions> bc, const double& worldX1, const double& worldX2, const double& worldX3, const double& q, const int& fdirection, const double& time=0 ) override;
+   void adaptBC( const D3Q27Interactor& interactor, SPtr<BoundaryConditions> bc, const double& worldX1, const double& worldX2, const double& worldX3, const double& time=0 ) override;
 
    double getDensity(const double& x1, const double& x2, const double& x3, const double& timeStep);
 
diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/EqDensityBCAlgorithm.cpp b/src/cpu/VirtualFluidsCore/BoundaryConditions/EqDensityBCAlgorithm.cpp
index ce59be23325566d36823b4c6c55d4efc203a640a..05d31244a6c568596a47d00d2bf660230855c2c5 100644
--- a/src/cpu/VirtualFluidsCore/BoundaryConditions/EqDensityBCAlgorithm.cpp
+++ b/src/cpu/VirtualFluidsCore/BoundaryConditions/EqDensityBCAlgorithm.cpp
@@ -10,8 +10,7 @@ EqDensityBCAlgorithm::EqDensityBCAlgorithm()
 }
 //////////////////////////////////////////////////////////////////////////
 EqDensityBCAlgorithm::~EqDensityBCAlgorithm()
-{
-}
+= default;
 //////////////////////////////////////////////////////////////////////////
 SPtr<BCAlgorithm> EqDensityBCAlgorithm::clone()
 {
diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/EqDensityBCAlgorithm.h b/src/cpu/VirtualFluidsCore/BoundaryConditions/EqDensityBCAlgorithm.h
index 8c4f472bf1a8880bb4731006d9687dd13a2e3046..57686417075f4291d9db8c507f151dd52f626cab 100644
--- a/src/cpu/VirtualFluidsCore/BoundaryConditions/EqDensityBCAlgorithm.h
+++ b/src/cpu/VirtualFluidsCore/BoundaryConditions/EqDensityBCAlgorithm.h
@@ -10,9 +10,9 @@ class EqDensityBCAlgorithm : public BCAlgorithm
 {
 public:
    EqDensityBCAlgorithm();
-   ~EqDensityBCAlgorithm();
-   SPtr<BCAlgorithm> clone();
-   void addDistributions(SPtr<DistributionArray3D> distributions);
+   ~EqDensityBCAlgorithm() override;
+   SPtr<BCAlgorithm> clone() override;
+   void addDistributions(SPtr<DistributionArray3D> distributions) override;
    void applyBC() override;
 };
 #endif // EqDensityBCAlgorithm_h__
diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/HighViscosityNoSlipBCAlgorithm.cpp b/src/cpu/VirtualFluidsCore/BoundaryConditions/HighViscosityNoSlipBCAlgorithm.cpp
index 5dcd1b7272fb7e0f604f3d8434350dd1b9c049cc..d8e86690449a935c26d410def675e9a08416f114 100644
--- a/src/cpu/VirtualFluidsCore/BoundaryConditions/HighViscosityNoSlipBCAlgorithm.cpp
+++ b/src/cpu/VirtualFluidsCore/BoundaryConditions/HighViscosityNoSlipBCAlgorithm.cpp
@@ -9,8 +9,7 @@ HighViscosityNoSlipBCAlgorithm::HighViscosityNoSlipBCAlgorithm()
 }
 //////////////////////////////////////////////////////////////////////////
 HighViscosityNoSlipBCAlgorithm::~HighViscosityNoSlipBCAlgorithm()
-{
-}
+= default;
 //////////////////////////////////////////////////////////////////////////
 SPtr<BCAlgorithm> HighViscosityNoSlipBCAlgorithm::clone()
 {
diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/HighViscosityNoSlipBCAlgorithm.h b/src/cpu/VirtualFluidsCore/BoundaryConditions/HighViscosityNoSlipBCAlgorithm.h
index aacc41a5a6aafb0bdd9312bc6ccf0e8fc618a874..78b27969b8fc04ec10a6a523220c8cd2c1f7cad7 100644
--- a/src/cpu/VirtualFluidsCore/BoundaryConditions/HighViscosityNoSlipBCAlgorithm.h
+++ b/src/cpu/VirtualFluidsCore/BoundaryConditions/HighViscosityNoSlipBCAlgorithm.h
@@ -10,9 +10,9 @@ class HighViscosityNoSlipBCAlgorithm : public BCAlgorithm
 {
 public:
    HighViscosityNoSlipBCAlgorithm();
-   ~HighViscosityNoSlipBCAlgorithm();
-   SPtr<BCAlgorithm> clone();
-   void addDistributions(SPtr<DistributionArray3D> distributions);
+   ~HighViscosityNoSlipBCAlgorithm() override;
+   SPtr<BCAlgorithm> clone() override;
+   void addDistributions(SPtr<DistributionArray3D> distributions) override;
    void applyBC() override;
 };
 #endif // HighViscosityNoSlipBCAlgorithm_h__
diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/NoSlipBCAdapter.h b/src/cpu/VirtualFluidsCore/BoundaryConditions/NoSlipBCAdapter.h
index 34ea8751f4bf60966527ec82f77a2e75fe945c01..53dfd8d5848accf50593be266901707943821b1d 100644
--- a/src/cpu/VirtualFluidsCore/BoundaryConditions/NoSlipBCAdapter.h
+++ b/src/cpu/VirtualFluidsCore/BoundaryConditions/NoSlipBCAdapter.h
@@ -49,15 +49,15 @@ public:
    {
    }
 
-   void init(const D3Q27Interactor* const& interactor, const double& time=0) {}
-   void update(const D3Q27Interactor* const& interactor, const double& time=0) {}
+   void init(const D3Q27Interactor* const& interactor, const double& time=0) override {}
+   void update(const D3Q27Interactor* const& interactor, const double& time=0) override {}
 
-   void adaptBCForDirection( const D3Q27Interactor& interactor, SPtr<BoundaryConditions> bc, const double& worldX1, const double& worldX2, const double& worldX3, const double& q, const int& fdirection, const double& time=0 )
+   void adaptBCForDirection( const D3Q27Interactor&  /*interactor*/, SPtr<BoundaryConditions> bc, const double&  /*worldX1*/, const double&  /*worldX2*/, const double&  /*worldX3*/, const double& q, const int& fdirection, const double&  /*time*/=0 ) override
    {
       bc->setNoSlipBoundaryFlag(D3Q27System::INVDIR[fdirection],secondaryBcOption);
       bc->setQ((float)q,fdirection);
    }
-   void adaptBC( const D3Q27Interactor& interactor, SPtr<BoundaryConditions> bc, const double& worldX1, const double& worldX2, const double& worldX3, const double& time=0 ) 
+   void adaptBC( const D3Q27Interactor&  /*interactor*/, SPtr<BoundaryConditions> bc, const double&  /*worldX1*/, const double&  /*worldX2*/, const double&  /*worldX3*/, const double&  /*time*/=0 ) override 
    {
       bc->setBcAlgorithmType(algorithmType);
    }
diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/NonEqDensityBCAlgorithm.cpp b/src/cpu/VirtualFluidsCore/BoundaryConditions/NonEqDensityBCAlgorithm.cpp
index 305aecd100d3e0d711dc81612d93891733f429c5..87994c7368916679adafa7ed80ade42c87ce0838 100644
--- a/src/cpu/VirtualFluidsCore/BoundaryConditions/NonEqDensityBCAlgorithm.cpp
+++ b/src/cpu/VirtualFluidsCore/BoundaryConditions/NonEqDensityBCAlgorithm.cpp
@@ -10,8 +10,7 @@ NonEqDensityBCAlgorithm::NonEqDensityBCAlgorithm()
 }
 //////////////////////////////////////////////////////////////////////////
 NonEqDensityBCAlgorithm::~NonEqDensityBCAlgorithm()
-{
-}
+= default;
 //////////////////////////////////////////////////////////////////////////
 SPtr<BCAlgorithm> NonEqDensityBCAlgorithm::clone()
 {
diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/NonEqDensityBCAlgorithm.h b/src/cpu/VirtualFluidsCore/BoundaryConditions/NonEqDensityBCAlgorithm.h
index 8cec91d6ec2e709dd23d0190c7422775b80319d0..12ffa4fdc4e803b1ab4bbbb7052cd1e31c120cf1 100644
--- a/src/cpu/VirtualFluidsCore/BoundaryConditions/NonEqDensityBCAlgorithm.h
+++ b/src/cpu/VirtualFluidsCore/BoundaryConditions/NonEqDensityBCAlgorithm.h
@@ -10,9 +10,9 @@ class NonEqDensityBCAlgorithm : public BCAlgorithm
 {
 public:
    NonEqDensityBCAlgorithm();
-   ~NonEqDensityBCAlgorithm();
-   SPtr<BCAlgorithm> clone();
-   void addDistributions(SPtr<DistributionArray3D> distributions);
+   ~NonEqDensityBCAlgorithm() override;
+   SPtr<BCAlgorithm> clone() override;
+   void addDistributions(SPtr<DistributionArray3D> distributions) override;
    void applyBC() override;
 };
 #endif // NonEqDensityBCAlgorithm_h__
diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/NonReflectingOutflowBCAlgorithm.cpp b/src/cpu/VirtualFluidsCore/BoundaryConditions/NonReflectingOutflowBCAlgorithm.cpp
index d02daf91e9c9c967a08b4d7839a781f828b55d81..6cf262bd638900b14368011fc37f14aa8a5f5ab7 100644
--- a/src/cpu/VirtualFluidsCore/BoundaryConditions/NonReflectingOutflowBCAlgorithm.cpp
+++ b/src/cpu/VirtualFluidsCore/BoundaryConditions/NonReflectingOutflowBCAlgorithm.cpp
@@ -12,8 +12,7 @@ NonReflectingOutflowBCAlgorithm::NonReflectingOutflowBCAlgorithm()
 }
 //////////////////////////////////////////////////////////////////////////
 NonReflectingOutflowBCAlgorithm::~NonReflectingOutflowBCAlgorithm()
-{
-}
+= default;
 //////////////////////////////////////////////////////////////////////////
 SPtr<BCAlgorithm> NonReflectingOutflowBCAlgorithm::clone()
 {
diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/NonReflectingOutflowBCAlgorithm.h b/src/cpu/VirtualFluidsCore/BoundaryConditions/NonReflectingOutflowBCAlgorithm.h
index 4effed280e073389eb1804983d6f7e10eb92aee0..d41cdc05aeeecc67dfe4c44c7371be2095eeb7d6 100644
--- a/src/cpu/VirtualFluidsCore/BoundaryConditions/NonReflectingOutflowBCAlgorithm.h
+++ b/src/cpu/VirtualFluidsCore/BoundaryConditions/NonReflectingOutflowBCAlgorithm.h
@@ -10,9 +10,9 @@ class NonReflectingOutflowBCAlgorithm : public BCAlgorithm
 {
 public:
    NonReflectingOutflowBCAlgorithm();
-   ~NonReflectingOutflowBCAlgorithm();
-   SPtr<BCAlgorithm> clone();
-   void addDistributions(SPtr<DistributionArray3D> distributions);
+   ~NonReflectingOutflowBCAlgorithm() override;
+   SPtr<BCAlgorithm> clone() override;
+   void addDistributions(SPtr<DistributionArray3D> distributions) override;
    void applyBC() override;
 };
 #endif // NonReflectingDensityBCAlgorithm_h__
diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/SlipBCAdapter.cpp b/src/cpu/VirtualFluidsCore/BoundaryConditions/SlipBCAdapter.cpp
index 53e462f67822b82f8a303b65ed54f24d1715974e..1cb54321d4faa232c15e3d1cfd18595316bc35f0 100644
--- a/src/cpu/VirtualFluidsCore/BoundaryConditions/SlipBCAdapter.cpp
+++ b/src/cpu/VirtualFluidsCore/BoundaryConditions/SlipBCAdapter.cpp
@@ -15,7 +15,7 @@
 //   return D3Q27SlipBCAdapterCreator::getInstance();
 //}
 //*==========================================================*/
-void SlipBCAdapter::adaptBC(const D3Q27Interactor& interactor, SPtr<BoundaryConditions> bc, const double& worldX1, const double& worldX2, const double& worldX3, const double& time)
+void SlipBCAdapter::adaptBC(const D3Q27Interactor& interactor, SPtr<BoundaryConditions> bc, const double&  /*worldX1*/, const double&  /*worldX2*/, const double&  /*worldX3*/, const double&  /*time*/)
 {
    //////////////////////////////////////////////////////////////////////////
    //>>> nur workaround! -> Hendrick nach normalen berechnung aus qs fragen
diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/SlipBCAdapter.h b/src/cpu/VirtualFluidsCore/BoundaryConditions/SlipBCAdapter.h
index 2112e8e445d47dfac60fb9d2f4458d35e14d56ca..18bda019003bdecd6cd0bf8beeeeb7a8c56448ab 100644
--- a/src/cpu/VirtualFluidsCore/BoundaryConditions/SlipBCAdapter.h
+++ b/src/cpu/VirtualFluidsCore/BoundaryConditions/SlipBCAdapter.h
@@ -67,15 +67,15 @@ public:
 
    //------------- implements D3Q27BoundaryConditionAdapter ----- start
 
-   void init(const D3Q27Interactor* const& interactor, const double& timestep=0) {}
-   void update(const D3Q27Interactor* const& interactor, const double& timestep=0) {}
+   void init(const D3Q27Interactor* const& interactor, const double& timestep=0) override {}
+   void update(const D3Q27Interactor* const& interactor, const double& timestep=0) override {}
 
-   void adaptBCForDirection( const D3Q27Interactor& interactor, SPtr<BoundaryConditions> bc, const double& worldX1, const double& worldX2, const double& worldX3, const double& q, const int& fdirection, const double& time=0 )
+   void adaptBCForDirection( const D3Q27Interactor&  /*interactor*/, SPtr<BoundaryConditions> bc, const double&  /*worldX1*/, const double&  /*worldX2*/, const double&  /*worldX3*/, const double& q, const int& fdirection, const double&  /*time*/=0 ) override
    {
       bc->setSlipBoundaryFlag(D3Q27System::INVDIR[fdirection],secondaryBcOption);
       bc->setQ((float)q,fdirection);
    }
-   void adaptBC(const D3Q27Interactor& interactor, SPtr<BoundaryConditions> bc, const double& worldX1, const double& worldX2, const double& worldX3, const double& time=0);
+   void adaptBC(const D3Q27Interactor& interactor, SPtr<BoundaryConditions> bc, const double& worldX1, const double& worldX2, const double& worldX3, const double& time=0) override;
    
    //------------- implements D3Q27BoundaryConditionAdapter ----- end
 
diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/SlipBCAlgorithm.cpp b/src/cpu/VirtualFluidsCore/BoundaryConditions/SlipBCAlgorithm.cpp
index 08ad53dadd8f2446cc08f946e1f5e18ee7fea013..f61b1fcfb37e526d377869f31567dd9c7668e321 100644
--- a/src/cpu/VirtualFluidsCore/BoundaryConditions/SlipBCAlgorithm.cpp
+++ b/src/cpu/VirtualFluidsCore/BoundaryConditions/SlipBCAlgorithm.cpp
@@ -9,9 +9,7 @@ SlipBCAlgorithm::SlipBCAlgorithm()
 }
 //////////////////////////////////////////////////////////////////////////
 SlipBCAlgorithm::~SlipBCAlgorithm()
-{
-
-}
+= default;
 //////////////////////////////////////////////////////////////////////////
 SPtr<BCAlgorithm> SlipBCAlgorithm::clone()
 {
diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/SlipBCAlgorithm.h b/src/cpu/VirtualFluidsCore/BoundaryConditions/SlipBCAlgorithm.h
index 423cde915386649f63ac259bf76afc1b02381109..7f4e39c73756a73db3384497dceb3274b2c26fc3 100644
--- a/src/cpu/VirtualFluidsCore/BoundaryConditions/SlipBCAlgorithm.h
+++ b/src/cpu/VirtualFluidsCore/BoundaryConditions/SlipBCAlgorithm.h
@@ -10,9 +10,9 @@ class SlipBCAlgorithm : public BCAlgorithm
 {
 public:
    SlipBCAlgorithm();
-   virtual ~SlipBCAlgorithm();
-   SPtr<BCAlgorithm> clone();
-   void addDistributions(SPtr<DistributionArray3D> distributions);
+   ~SlipBCAlgorithm() override;
+   SPtr<BCAlgorithm> clone() override;
+   void addDistributions(SPtr<DistributionArray3D> distributions) override;
    void applyBC() override;
 };
 #endif // SlipBCAlgorithm_h__
diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/ThinWallNoSlipBCAlgorithm.cpp b/src/cpu/VirtualFluidsCore/BoundaryConditions/ThinWallNoSlipBCAlgorithm.cpp
index ba8b1323bb6c661f81acc2dd0fa85f22deefcb11..39c427a53e91368c9e490a183ae6c70173e0a9fd 100644
--- a/src/cpu/VirtualFluidsCore/BoundaryConditions/ThinWallNoSlipBCAlgorithm.cpp
+++ b/src/cpu/VirtualFluidsCore/BoundaryConditions/ThinWallNoSlipBCAlgorithm.cpp
@@ -11,9 +11,7 @@ ThinWallNoSlipBCAlgorithm::ThinWallNoSlipBCAlgorithm()
 }
 //////////////////////////////////////////////////////////////////////////
 ThinWallNoSlipBCAlgorithm::~ThinWallNoSlipBCAlgorithm()
-{
-
-}
+= default;
 //////////////////////////////////////////////////////////////////////////
 SPtr<BCAlgorithm> ThinWallNoSlipBCAlgorithm::clone()
 {
diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/ThinWallNoSlipBCAlgorithm.h b/src/cpu/VirtualFluidsCore/BoundaryConditions/ThinWallNoSlipBCAlgorithm.h
index 6f54bc7666ebd96bd9df5b3b07c698f29ff945fe..db9244d10cc710f260c59471bd373e990fa5b42c 100644
--- a/src/cpu/VirtualFluidsCore/BoundaryConditions/ThinWallNoSlipBCAlgorithm.h
+++ b/src/cpu/VirtualFluidsCore/BoundaryConditions/ThinWallNoSlipBCAlgorithm.h
@@ -10,9 +10,9 @@ class ThinWallNoSlipBCAlgorithm : public BCAlgorithm
 {
 public:
    ThinWallNoSlipBCAlgorithm();
-   virtual ~ThinWallNoSlipBCAlgorithm();
-   SPtr<BCAlgorithm> clone();
-   void addDistributions(SPtr<DistributionArray3D> distributions);
+   ~ThinWallNoSlipBCAlgorithm() override;
+   SPtr<BCAlgorithm> clone() override;
+   void addDistributions(SPtr<DistributionArray3D> distributions) override;
    void setPass(int pass);
    void applyBC() override;
 
diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/VelocityBCAdapter.cpp b/src/cpu/VirtualFluidsCore/BoundaryConditions/VelocityBCAdapter.cpp
index 69759b7270f861acb9a2fd5483efc3e10119047d..f80cb1e2b32afd63b6fd722fcd98726d421a1d9a 100644
--- a/src/cpu/VirtualFluidsCore/BoundaryConditions/VelocityBCAdapter.cpp
+++ b/src/cpu/VirtualFluidsCore/BoundaryConditions/VelocityBCAdapter.cpp
@@ -49,25 +49,25 @@ VelocityBCAdapter::VelocityBCAdapter(const bool& vx1, const bool& vx2, const boo
 /*==========================================================*/
 VelocityBCAdapter::VelocityBCAdapter(const bool& vx1, const bool& vx2, const bool& vx3, const mu::Parser& function, const double& startTime, const double& endTime )
 {
-   if(vx1) this->vx1BCs.push_back(BCFunction(function,startTime,endTime));
-   if(vx2) this->vx2BCs.push_back(BCFunction(function,startTime,endTime));
-   if(vx3) this->vx3BCs.push_back(BCFunction(function,startTime,endTime));
+   if(vx1) this->vx1BCs.emplace_back(function,startTime,endTime);
+   if(vx2) this->vx2BCs.emplace_back(function,startTime,endTime);
+   if(vx3) this->vx3BCs.emplace_back(function,startTime,endTime);
    this->init();
 }
 /*==========================================================*/
 VelocityBCAdapter::VelocityBCAdapter(const bool& vx1, const bool& vx2, const bool& vx3, const mu::Parser& function1, const mu::Parser& function2, const mu::Parser& function3, const double& startTime, const double& endTime )
 {
-   if(vx1) this->vx1BCs.push_back(BCFunction(function1,startTime,endTime));
-   if(vx2) this->vx2BCs.push_back(BCFunction(function2,startTime,endTime));
-   if(vx3) this->vx3BCs.push_back(BCFunction(function3,startTime,endTime));
+   if(vx1) this->vx1BCs.emplace_back(function1,startTime,endTime);
+   if(vx2) this->vx2BCs.emplace_back(function2,startTime,endTime);
+   if(vx3) this->vx3BCs.emplace_back(function3,startTime,endTime);
    this->init();
 }
 /*==========================================================*/
 VelocityBCAdapter::VelocityBCAdapter(const bool& vx1, const bool& vx2, const bool& vx3, const string& functionstring, const double& startTime, const double& endTime )
 {
-   if(vx1) this->vx1BCs.push_back(BCFunction(functionstring,startTime,endTime));
-   if(vx2) this->vx2BCs.push_back(BCFunction(functionstring,startTime,endTime));
-   if(vx3) this->vx3BCs.push_back(BCFunction(functionstring,startTime,endTime));
+   if(vx1) this->vx1BCs.emplace_back(functionstring,startTime,endTime);
+   if(vx2) this->vx2BCs.emplace_back(functionstring,startTime,endTime);
+   if(vx3) this->vx3BCs.emplace_back(functionstring,startTime,endTime);
    this->init();
 }
 /*==========================================================*/
@@ -99,9 +99,9 @@ VelocityBCAdapter::VelocityBCAdapter(const double& vx1, const double& vx1StartTi
                                                const double& vx2, const double& vx2StartTime, const double& vx2EndTime,
                                                const double& vx3, const double& vx3StartTime, const double& vx3EndTime )
 {
-   this->vx1BCs.push_back(BCFunction(vx1,vx1StartTime,vx1EndTime));
-   this->vx2BCs.push_back(BCFunction(vx2,vx2StartTime,vx2EndTime));
-   this->vx3BCs.push_back(BCFunction(vx3,vx3StartTime,vx3EndTime));
+   this->vx1BCs.emplace_back(vx1,vx1StartTime,vx1EndTime);
+   this->vx2BCs.emplace_back(vx2,vx2StartTime,vx2EndTime);
+   this->vx3BCs.emplace_back(vx3,vx3StartTime,vx3EndTime);
    this->init();
 }
 /*==========================================================*/
@@ -109,9 +109,9 @@ VelocityBCAdapter::VelocityBCAdapter(const string& vx1Function, const double& vx
                                                const string& vx2Function, const double& vx2StartTime, const double& vx2EndTime,
                                                const string& vx3Function, const double& vx3StartTime, const double& vx3EndTime ) 
 {
-   if(vx1Function.size()) this->vx1BCs.push_back(BCFunction(vx1Function,vx1StartTime,vx1EndTime));
-   if(vx2Function.size()) this->vx2BCs.push_back(BCFunction(vx2Function,vx2StartTime,vx2EndTime));
-   if(vx3Function.size()) this->vx3BCs.push_back(BCFunction(vx3Function,vx3StartTime,vx3EndTime));
+   if(vx1Function.size()) this->vx1BCs.emplace_back(vx1Function,vx1StartTime,vx1EndTime);
+   if(vx2Function.size()) this->vx2BCs.emplace_back(vx2Function,vx2StartTime,vx2EndTime);
+   if(vx3Function.size()) this->vx3BCs.emplace_back(vx3Function,vx3StartTime,vx3EndTime);
    this->init();
 }
 /*==========================================================*/
@@ -120,9 +120,9 @@ void VelocityBCAdapter::setNewVelocities(const double& vx1, const double& vx1Sta
                                               const double& vx3, const double& vx3StartTime, const double& vx3EndTime )
 {
    this->clear();
-   this->vx1BCs.push_back(BCFunction(vx1,vx1StartTime,vx1EndTime));
-   this->vx2BCs.push_back(BCFunction(vx2,vx2StartTime,vx2EndTime));
-   this->vx3BCs.push_back(BCFunction(vx3,vx3StartTime,vx3EndTime));
+   this->vx1BCs.emplace_back(vx1,vx1StartTime,vx1EndTime);
+   this->vx2BCs.emplace_back(vx2,vx2StartTime,vx2EndTime);
+   this->vx3BCs.emplace_back(vx3,vx3StartTime,vx3EndTime);
    this->init();
 }
 /*==========================================================*/
@@ -266,7 +266,7 @@ void VelocityBCAdapter::update( const D3Q27Interactor* const& interactor, const
    this->init(interactor,time);
 }
 /*==========================================================*/
-void VelocityBCAdapter::adaptBCForDirection( const D3Q27Interactor& interactor, SPtr<BoundaryConditions> bc, const double& worldX1, const double& worldX2, const double& worldX3, const double& q, const int& fdirection, const double& time )
+void VelocityBCAdapter::adaptBCForDirection( const D3Q27Interactor&  /*interactor*/, SPtr<BoundaryConditions> bc, const double&  /*worldX1*/, const double&  /*worldX2*/, const double&  /*worldX3*/, const double& q, const int& fdirection, const double&  /*time*/ )
 {
    bc->setVelocityBoundaryFlag(D3Q27System::INVDIR[fdirection],secondaryBcOption);
    bc->setQ((float)q,fdirection);
@@ -278,7 +278,7 @@ void VelocityBCAdapter::adaptBC( const D3Q27Interactor& interactor, SPtr<Boundar
    bc->setBcAlgorithmType(algorithmType);
 }
 /*==========================================================*/
-void VelocityBCAdapter::setNodeVelocity( const D3Q27Interactor& interactor, SPtr<BoundaryConditions> bc, const double& worldX1, const double& worldX2, const double& worldX3, const double& timestep) 
+void VelocityBCAdapter::setNodeVelocity( const D3Q27Interactor&  /*interactor*/, SPtr<BoundaryConditions> bc, const double& worldX1, const double& worldX2, const double& worldX3, const double& timestep) 
 {
    //Geschwindigkeiten setzen
    try
@@ -312,7 +312,7 @@ UbTupleDouble3 VelocityBCAdapter::getVelocity(const double& x1, const double& x2
    if(tmpVx2Function) vx2 = tmpVx2Function->Eval();
    if(tmpVx3Function) vx3 = tmpVx3Function->Eval();
     
-   return UbTupleDouble3(vx1,vx2,vx3);
+   return { vx1,vx2,vx3 };
 }
 /*==========================================================*/
 string VelocityBCAdapter::toString()
diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/VelocityBCAdapter.h b/src/cpu/VirtualFluidsCore/BoundaryConditions/VelocityBCAdapter.h
index 723b9de387e4f9a6869fc64a0e2ce7e2d2df5435..4c2b666fcbe6589b0102942842661a9fb68ad009 100644
--- a/src/cpu/VirtualFluidsCore/BoundaryConditions/VelocityBCAdapter.h
+++ b/src/cpu/VirtualFluidsCore/BoundaryConditions/VelocityBCAdapter.h
@@ -123,11 +123,11 @@ public:
    //------------- implements BCAdapter ----- start
    std::string toString();
    
-   void init(const D3Q27Interactor* const& interactor, const double& time=0);
-   void update(const D3Q27Interactor* const& interactor, const double& time=0);
+   void init(const D3Q27Interactor* const& interactor, const double& time=0) override;
+   void update(const D3Q27Interactor* const& interactor, const double& time=0) override;
 
-   void adaptBCForDirection( const D3Q27Interactor& interactor, SPtr<BoundaryConditions> bc, const double& worldX1, const double& worldX2, const double& worldX3, const double& q, const int& fdirection, const double& time=0 );
-   void adaptBC( const D3Q27Interactor& interactor, SPtr<BoundaryConditions> bc, const double& worldX1, const double& worldX2, const double& worldX3, const double& time=0 );
+   void adaptBCForDirection( const D3Q27Interactor& interactor, SPtr<BoundaryConditions> bc, const double& worldX1, const double& worldX2, const double& worldX3, const double& q, const int& fdirection, const double& time=0 ) override;
+   void adaptBC( const D3Q27Interactor& interactor, SPtr<BoundaryConditions> bc, const double& worldX1, const double& worldX2, const double& worldX3, const double& time=0 ) override;
 
    //------------- implements BCAdapter ----- end
 
diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/VelocityWithDensityBCAlgorithm.cpp b/src/cpu/VirtualFluidsCore/BoundaryConditions/VelocityWithDensityBCAlgorithm.cpp
index 0655f1d49de773fd7eb68f3e32ebac991946f62e..7ebad4fa02b71f657a7b509759ac9cafae5b6244 100644
--- a/src/cpu/VirtualFluidsCore/BoundaryConditions/VelocityWithDensityBCAlgorithm.cpp
+++ b/src/cpu/VirtualFluidsCore/BoundaryConditions/VelocityWithDensityBCAlgorithm.cpp
@@ -9,9 +9,7 @@ VelocityWithDensityBCAlgorithm::VelocityWithDensityBCAlgorithm()
 }
 //////////////////////////////////////////////////////////////////////////
 VelocityWithDensityBCAlgorithm::~VelocityWithDensityBCAlgorithm()
-{
-
-}
+= default;
 //////////////////////////////////////////////////////////////////////////
 SPtr<BCAlgorithm> VelocityWithDensityBCAlgorithm::clone()
 {
diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/VelocityWithDensityBCAlgorithm.h b/src/cpu/VirtualFluidsCore/BoundaryConditions/VelocityWithDensityBCAlgorithm.h
index 25ec70608c1b8e54bc443207183b450e337b6884..2216501db041d68b815c0f37b8a3cd0308ca3cba 100644
--- a/src/cpu/VirtualFluidsCore/BoundaryConditions/VelocityWithDensityBCAlgorithm.h
+++ b/src/cpu/VirtualFluidsCore/BoundaryConditions/VelocityWithDensityBCAlgorithm.h
@@ -16,9 +16,9 @@ class VelocityWithDensityBCAlgorithm : public BCAlgorithm
 {
 public:
    VelocityWithDensityBCAlgorithm();
-   ~VelocityWithDensityBCAlgorithm();
-   SPtr<BCAlgorithm> clone();
-   void addDistributions(SPtr<DistributionArray3D> distributions);
-   void applyBC();
+   ~VelocityWithDensityBCAlgorithm() override;
+   SPtr<BCAlgorithm> clone() override;
+   void addDistributions(SPtr<DistributionArray3D> distributions) override;
+   void applyBC() override;
 };
 #endif // NonReflectingVelocityBCAlgorithm_h__
diff --git a/src/cpu/VirtualFluidsCore/CoProcessors/AverageValuesCoProcessor.cpp b/src/cpu/VirtualFluidsCore/CoProcessors/AverageValuesCoProcessor.cpp
index bf52598b05a588edb9609a100637924828f9b609..3cc990b9683de12169d1af26b2d5defd9e10f67c 100644
--- a/src/cpu/VirtualFluidsCore/CoProcessors/AverageValuesCoProcessor.cpp
+++ b/src/cpu/VirtualFluidsCore/CoProcessors/AverageValuesCoProcessor.cpp
@@ -16,9 +16,7 @@
 using namespace std;
 
 AverageValuesCoProcessor::AverageValuesCoProcessor()
-{
-
-}
+= default;
 //////////////////////////////////////////////////////////////////////////
 AverageValuesCoProcessor::AverageValuesCoProcessor(SPtr<Grid3D> grid, const std::string& path,	WbWriter* const writer, 
    SPtr<UbScheduler> s, SPtr<UbScheduler> Avs, SPtr<UbScheduler> rsMeans, SPtr<UbScheduler> rsRMS, bool restart)
@@ -252,17 +250,17 @@ void AverageValuesCoProcessor::addData(const SPtr<Block3D> block)
 
 	//Diese Daten werden geschrieben:
 	datanames.resize(0);
-	datanames.push_back("AvVx");
-   datanames.push_back("AvVy");
-   datanames.push_back("AvVz");
-	datanames.push_back("AvVxx");
-	datanames.push_back("AvVyy");
-	datanames.push_back("AvVzz");
-   datanames.push_back("AvVxy");
-   datanames.push_back("AvVxz");
-   datanames.push_back("AvVyz");
-   datanames.push_back("AvP");
-   datanames.push_back("AvPrms");
+	datanames.emplace_back("AvVx");
+   datanames.emplace_back("AvVy");
+   datanames.emplace_back("AvVz");
+	datanames.emplace_back("AvVxx");
+	datanames.emplace_back("AvVyy");
+	datanames.emplace_back("AvVzz");
+   datanames.emplace_back("AvVxy");
+   datanames.emplace_back("AvVxz");
+   datanames.emplace_back("AvVyz");
+   datanames.emplace_back("AvP");
+   datanames.emplace_back("AvPrms");
 
 
 	data.resize(datanames.size());
diff --git a/src/cpu/VirtualFluidsCore/CoProcessors/AverageValuesCoProcessor.h b/src/cpu/VirtualFluidsCore/CoProcessors/AverageValuesCoProcessor.h
index e45a52202d78c7798d64eb48305f70d60011c541..8fadba91aae54209e4a5b0b7e6438dd9771eb397 100644
--- a/src/cpu/VirtualFluidsCore/CoProcessors/AverageValuesCoProcessor.h
+++ b/src/cpu/VirtualFluidsCore/CoProcessors/AverageValuesCoProcessor.h
@@ -27,7 +27,7 @@ public:
    AverageValuesCoProcessor(SPtr<Grid3D> grid, const std::string& path, WbWriter* const writer,
        SPtr<UbScheduler> s, SPtr<UbScheduler> Avs, SPtr<UbScheduler> rsMeans, SPtr<UbScheduler> rsRMS, bool restart);
 	//! Make update
-	void process(double step); 
+	void process(double step) override; 
 	//! Resets averaged velocity and RMS-values according to ResetSceduler
 	void reset(double step); 
 protected:
@@ -68,7 +68,7 @@ private:
    //you need to calculate a square root before plotting RMS
 	enum Values{AvVx = 0, AvVy = 1, AvVz = 2, AvVxx = 3, AvVyy = 4, AvVzz = 5, AvVxy = 6, AvVxz = 7, AvVyz = 8, AvP = 9, AvPrms = 10}; 
 
-   typedef void (*CalcMacrosFct)(const LBMReal* const& /*feq[27]*/,LBMReal& /*(d)rho*/, LBMReal& /*vx1*/, LBMReal& /*vx2*/, LBMReal& /*vx3*/);
+   using CalcMacrosFct = void (*)(const LBMReal *const &, LBMReal &, LBMReal &, LBMReal &, LBMReal &);
    CalcMacrosFct calcMacros;
 };
 #endif
diff --git a/src/cpu/VirtualFluidsCore/CoProcessors/CalculateForcesCoProcessor.cpp b/src/cpu/VirtualFluidsCore/CoProcessors/CalculateForcesCoProcessor.cpp
index 97a74583056ef3548e9550e0f1d76df93b7596a0..d66562b2d48b5033247433125f7855d43b24c60b 100644
--- a/src/cpu/VirtualFluidsCore/CoProcessors/CalculateForcesCoProcessor.cpp
+++ b/src/cpu/VirtualFluidsCore/CoProcessors/CalculateForcesCoProcessor.cpp
@@ -53,9 +53,7 @@ CalculateForcesCoProcessor::CalculateForcesCoProcessor( SPtr<Grid3D> grid, SPtr<
 }
 //////////////////////////////////////////////////////////////////////////
 CalculateForcesCoProcessor::~CalculateForcesCoProcessor()
-{
-
-}
+= default;
 //////////////////////////////////////////////////////////////////////////
 void CalculateForcesCoProcessor::process( double step )
 {
diff --git a/src/cpu/VirtualFluidsCore/CoProcessors/CalculateForcesCoProcessor.h b/src/cpu/VirtualFluidsCore/CoProcessors/CalculateForcesCoProcessor.h
index 165f42402a2bad234d2c0d98ed40d4bfc64c787a..6c2288dc50263ca897671efd638b3d0aea3b9d5b 100644
--- a/src/cpu/VirtualFluidsCore/CoProcessors/CalculateForcesCoProcessor.h
+++ b/src/cpu/VirtualFluidsCore/CoProcessors/CalculateForcesCoProcessor.h
@@ -31,8 +31,8 @@ public:
    //! \param a - area of object in LB units
    CalculateForcesCoProcessor(SPtr<Grid3D> grid, SPtr<UbScheduler> s, const std::string &path,
        SPtr<Communicator> comm, double v, double a);
-	virtual ~CalculateForcesCoProcessor();             
-	void process(double step); 
+	~CalculateForcesCoProcessor() override;             
+	void process(double step) override; 
    void addInteractor(SPtr<D3Q27Interactor> interactor);
 protected:
 	void collectData(double step);
diff --git a/src/cpu/VirtualFluidsCore/CoProcessors/CoProcessor.cpp b/src/cpu/VirtualFluidsCore/CoProcessors/CoProcessor.cpp
index cd74e23229799f23688a820efbe3c06a5ce3a272..081aac9825a92956c2c13298ea6efab2ff810ead 100644
--- a/src/cpu/VirtualFluidsCore/CoProcessors/CoProcessor.cpp
+++ b/src/cpu/VirtualFluidsCore/CoProcessors/CoProcessor.cpp
@@ -37,8 +37,7 @@
 #include "UbScheduler.h"
 
 CoProcessor::CoProcessor()
-{
-}
+= default;
 
 CoProcessor::CoProcessor(SPtr<Grid3D> grid, SPtr<UbScheduler> s): grid(grid), scheduler(s)
 {
@@ -46,7 +45,5 @@ CoProcessor::CoProcessor(SPtr<Grid3D> grid, SPtr<UbScheduler> s): grid(grid), sc
 }
 
 CoProcessor::~CoProcessor()
-{
-
-}
+= default;
 
diff --git a/src/cpu/VirtualFluidsCore/CoProcessors/DecreaseViscosityCoProcessor.cpp b/src/cpu/VirtualFluidsCore/CoProcessors/DecreaseViscosityCoProcessor.cpp
index c06dccb3ef008c9247e298e06ad4792a18197cb5..040d5f94438cd0c4a8c5bed33bf1a1d6824b2d8c 100644
--- a/src/cpu/VirtualFluidsCore/CoProcessors/DecreaseViscosityCoProcessor.cpp
+++ b/src/cpu/VirtualFluidsCore/CoProcessors/DecreaseViscosityCoProcessor.cpp
@@ -29,8 +29,7 @@ DecreaseViscosityCoProcessor::DecreaseViscosityCoProcessor(SPtr<Grid3D> grid, SP
 }
 //////////////////////////////////////////////////////////////////////////
 DecreaseViscosityCoProcessor::~DecreaseViscosityCoProcessor() 
-{
-}
+= default;
 //////////////////////////////////////////////////////////////////////////
 void DecreaseViscosityCoProcessor::process(double step)
 {
diff --git a/src/cpu/VirtualFluidsCore/CoProcessors/DecreaseViscosityCoProcessor.h b/src/cpu/VirtualFluidsCore/CoProcessors/DecreaseViscosityCoProcessor.h
index 75551388a852656af24043cb5b2ef16edb9477db..3885ac399516d80665acdc21ca093e4b4758d90d 100644
--- a/src/cpu/VirtualFluidsCore/CoProcessors/DecreaseViscosityCoProcessor.h
+++ b/src/cpu/VirtualFluidsCore/CoProcessors/DecreaseViscosityCoProcessor.h
@@ -32,9 +32,9 @@ class DecreaseViscosityCoProcessor: public CoProcessor
 public:
    DecreaseViscosityCoProcessor(SPtr<Grid3D> grid, SPtr<UbScheduler> s,
       mu::Parser* nueFunc, SPtr<Communicator> comm);
-   virtual ~DecreaseViscosityCoProcessor();
+   ~DecreaseViscosityCoProcessor() override;
    //! calls collect PostprocessData.
-   void process(double step); 
+   void process(double step) override; 
 protected:
    //! resets the collision factor depending on the current timestep.
    void setViscosity(double step);  
diff --git a/src/cpu/VirtualFluidsCore/CoProcessors/EmergencyExitCoProcessor.cpp b/src/cpu/VirtualFluidsCore/CoProcessors/EmergencyExitCoProcessor.cpp
index a287ada4c6193522737fe9fb147a45ef04190268..f8d103396caa187a8def6296ca201e729223bcd1 100644
--- a/src/cpu/VirtualFluidsCore/CoProcessors/EmergencyExitCoProcessor.cpp
+++ b/src/cpu/VirtualFluidsCore/CoProcessors/EmergencyExitCoProcessor.cpp
@@ -26,9 +26,7 @@ EmergencyExitCoProcessor::EmergencyExitCoProcessor( SPtr<Grid3D> grid, SPtr<UbSc
 }
 //////////////////////////////////////////////////////////////////////////
 EmergencyExitCoProcessor::~EmergencyExitCoProcessor()
-{
-
-}
+= default;
 //////////////////////////////////////////////////////////////////////////
 void EmergencyExitCoProcessor::process( double step )
 {
@@ -49,7 +47,7 @@ void EmergencyExitCoProcessor::collectData( double step )
    }
 }
 //////////////////////////////////////////////////////////////////////////
-void EmergencyExitCoProcessor::writeMetafile(int status )
+void EmergencyExitCoProcessor::writeMetafile(int  /*status*/ )
 {
    UbFileOutputASCII out(metafile);
    out.writeBool(false);
diff --git a/src/cpu/VirtualFluidsCore/CoProcessors/EmergencyExitCoProcessor.h b/src/cpu/VirtualFluidsCore/CoProcessors/EmergencyExitCoProcessor.h
index 8d7dfd1698a552fc9f1aa5b9b6c09eee0b569bbf..4dd768a595e5cddc7b767a142ed37184e4464ac4 100644
--- a/src/cpu/VirtualFluidsCore/CoProcessors/EmergencyExitCoProcessor.h
+++ b/src/cpu/VirtualFluidsCore/CoProcessors/EmergencyExitCoProcessor.h
@@ -22,7 +22,7 @@ class EmergencyExitCoProcessor : public CoProcessor
 {
 public:
     EmergencyExitCoProcessor(SPtr<Grid3D> grid, SPtr<UbScheduler> s, const std::string& path, SPtr<MPIIORestartCoProcessor> rp, SPtr<Communicator> comm);
-    virtual ~EmergencyExitCoProcessor();
+    ~EmergencyExitCoProcessor() override;
 
     void process(double step) override;
 
diff --git a/src/cpu/VirtualFluidsCore/CoProcessors/ForceCalculator.cpp b/src/cpu/VirtualFluidsCore/CoProcessors/ForceCalculator.cpp
index 1bdf0d57f5244f3c22d3fddbf33c3cc3d441f2cc..40a8a61f3a823866abafa6b2f1e63d4c659f11a7 100644
--- a/src/cpu/VirtualFluidsCore/CoProcessors/ForceCalculator.cpp
+++ b/src/cpu/VirtualFluidsCore/CoProcessors/ForceCalculator.cpp
@@ -19,9 +19,7 @@ ForceCalculator::ForceCalculator(SPtr<Communicator> comm) : comm(comm), forceX1g
 }
 
 ForceCalculator::~ForceCalculator()
-{
-
-}
+= default;
 
 
 
diff --git a/src/cpu/VirtualFluidsCore/CoProcessors/IntegrateValuesHelper.cpp b/src/cpu/VirtualFluidsCore/CoProcessors/IntegrateValuesHelper.cpp
index 84e5b810f5bfff3c80a15cf0c3f606ed2a170e99..93802d6fcdcdb4d29a6f962318ea490df3ad7cc1 100644
--- a/src/cpu/VirtualFluidsCore/CoProcessors/IntegrateValuesHelper.cpp
+++ b/src/cpu/VirtualFluidsCore/CoProcessors/IntegrateValuesHelper.cpp
@@ -43,8 +43,7 @@ IntegrateValuesHelper::IntegrateValuesHelper(SPtr<Grid3D> grid, SPtr<Communicato
 }
 //////////////////////////////////////////////////////////////////////////
 IntegrateValuesHelper::~IntegrateValuesHelper()
-{
-}
+= default;
 //////////////////////////////////////////////////////////////////////////
 void IntegrateValuesHelper::init(int level)
 {
@@ -103,7 +102,7 @@ void IntegrateValuesHelper::init(int level)
                   {
                      if (!bcArray->isSolid(ix1, ix2, ix3) && !bcArray->isUndefined(ix1, ix2, ix3))
                      {
-                        cn.nodes.push_back(UbTupleInt3(ix1, ix2, ix3));
+                        cn.nodes.emplace_back(ix1, ix2, ix3);
                         numFluids++;
                      }
                      else if (bcArray->isSolid(ix1, ix2, ix3))
diff --git a/src/cpu/VirtualFluidsCore/CoProcessors/LineTimeSeriesCoProcessor.h b/src/cpu/VirtualFluidsCore/CoProcessors/LineTimeSeriesCoProcessor.h
index 74514779245381fc640a93ee62f65e03ffee1def..ba8ec0ecfe88b67dad14eb7118c2243c6ca0ed6a 100644
--- a/src/cpu/VirtualFluidsCore/CoProcessors/LineTimeSeriesCoProcessor.h
+++ b/src/cpu/VirtualFluidsCore/CoProcessors/LineTimeSeriesCoProcessor.h
@@ -26,7 +26,7 @@ public:
 enum Direction {X1, X2, X3};
 public:
    LineTimeSeriesCoProcessor(SPtr<Grid3D> grid, SPtr<UbScheduler> s, const std::string& path, SPtr<GbLine3D> line, int level,SPtr<Communicator> comm);
-   ~LineTimeSeriesCoProcessor(){}
+   ~LineTimeSeriesCoProcessor() override= default;
 
    void process(double step) override;
    void writeLine(const std::string& path);
@@ -39,7 +39,7 @@ private:
    bool root;
    SPtr<GbLine3D> line;
    //function pointer
-   typedef void(*CalcMacrosFct)(const LBMReal* const& /*feq[27]*/, LBMReal& /*(d)rho*/, LBMReal& /*vx1*/, LBMReal& /*vx2*/, LBMReal& /*vx3*/);
+   using CalcMacrosFct = void (*)(const LBMReal *const &, LBMReal &, LBMReal &, LBMReal &, LBMReal &);
    CalcMacrosFct calcMacros;
    int blocknx;
    int blockix1;
diff --git a/src/cpu/VirtualFluidsCore/CoProcessors/MPIIOCoProcessor.h b/src/cpu/VirtualFluidsCore/CoProcessors/MPIIOCoProcessor.h
index abf06426362ce41443eabfae10ea3550690ac38b..33a63f02c2d28f5586ecc5e5ddf290c3dd10c111 100644
--- a/src/cpu/VirtualFluidsCore/CoProcessors/MPIIOCoProcessor.h
+++ b/src/cpu/VirtualFluidsCore/CoProcessors/MPIIOCoProcessor.h
@@ -16,10 +16,10 @@ class MPIIOCoProcessor : public CoProcessor
 {
 public:
    MPIIOCoProcessor(SPtr<Grid3D> grid, SPtr<UbScheduler> s, const std::string& path, SPtr<Communicator> comm); 
-   virtual ~MPIIOCoProcessor();
+   ~MPIIOCoProcessor() override;
 
    //! Each timestep writes the grid into the files
-   virtual void process(double step) = 0;
+   void process(double step) override = 0;
 
    //! Writes the blocks of the grid into the file cpBlocks.bin
    void writeBlocks(int step);
diff --git a/src/cpu/VirtualFluidsCore/CoProcessors/MPIIOMigrationBECoProcessor.cpp b/src/cpu/VirtualFluidsCore/CoProcessors/MPIIOMigrationBECoProcessor.cpp
index 3f29498a12d85ea460b71fe4ad85fe84ad9512ea..5d864a190eadba32e6ff89946bc73f0d6c953a13 100644
--- a/src/cpu/VirtualFluidsCore/CoProcessors/MPIIOMigrationBECoProcessor.cpp
+++ b/src/cpu/VirtualFluidsCore/CoProcessors/MPIIOMigrationBECoProcessor.cpp
@@ -763,7 +763,7 @@ void MPIIOMigrationBECoProcessor::blocksExchange(int tagN, int ind1, int ind2, i
    SPtr<Block3D> tempBlock;
    int tempRank;
    
-   for(size_t ind = indexB - indexB; ind < indexE - indexB; ind++)
+   for(size_t ind = indexB - indexB; ind < indexE - indexB; ind++) // FIXME: both sides of operator are equivalent
    {
       tempBlock = grid->getBlock(indexB + int(ind));
       if(!tempBlock)  throw UbException(UB_EXARGS,"MPIIOMigrationBECoProcessor::blocksExchange -- null block pointer!!!" );
@@ -1245,7 +1245,7 @@ void MPIIOMigrationBECoProcessor::readBoundaryConds(int step)
 
    SPtr<Block3D> tempBlock;
    int tempRank;
-   for (int ind = indexB - indexB; ind < indexE - indexB; ind++)
+   for (int ind = indexB - indexB; ind < indexE - indexB; ind++) // FIXME: both sides of operator are equivalent
    {
       tempBlock = grid->getBlock(indexB + ind);
       tempRank = tempBlock->getRank();
diff --git a/src/cpu/VirtualFluidsCore/CoProcessors/MPIIOMigrationBECoProcessor.h b/src/cpu/VirtualFluidsCore/CoProcessors/MPIIOMigrationBECoProcessor.h
index a3ff742cb6c4280e0bfa272da7633e15c05867a3..90ad1a928de9cf75f0845380944cb3898031d94c 100644
--- a/src/cpu/VirtualFluidsCore/CoProcessors/MPIIOMigrationBECoProcessor.h
+++ b/src/cpu/VirtualFluidsCore/CoProcessors/MPIIOMigrationBECoProcessor.h
@@ -23,9 +23,9 @@ class MPIIOMigrationBECoProcessor : public MPIIOCoProcessor
 public:
 
    MPIIOMigrationBECoProcessor(SPtr<Grid3D> grid, SPtr<UbScheduler> s, const std::string& path, SPtr<Communicator> comm);
-   virtual ~MPIIOMigrationBECoProcessor();
+   ~MPIIOMigrationBECoProcessor() override;
    //! Each timestep writes the grid into the files
-   void process(double step);
+   void process(double step) override;
    //! Reads the grid from the files before grid reconstruction
    void restart(int step);
    //! Writes the blocks of the grid into the file cpBlocks.bin
diff --git a/src/cpu/VirtualFluidsCore/CoProcessors/MPIIOMigrationCoProcessor.h b/src/cpu/VirtualFluidsCore/CoProcessors/MPIIOMigrationCoProcessor.h
index 2db01731d221be5889c4e691a42cb21966efcc29..1f09325694cf2439e324741cd06d6d5084974ed4 100644
--- a/src/cpu/VirtualFluidsCore/CoProcessors/MPIIOMigrationCoProcessor.h
+++ b/src/cpu/VirtualFluidsCore/CoProcessors/MPIIOMigrationCoProcessor.h
@@ -22,9 +22,9 @@ public:
    enum Arrays { AverageDensity = 1, AverageVelocity = 2, AverageFluktuations = 3, AverageTriple = 4, ShearStressVal = 5, RelaxationFactor = 6 };
 
    MPIIOMigrationCoProcessor(SPtr<Grid3D> grid, SPtr<UbScheduler> s, const std::string& path, SPtr<Communicator> comm);
-   virtual ~MPIIOMigrationCoProcessor();
+   ~MPIIOMigrationCoProcessor() override;
    //! Each timestep writes the grid into the files
-   void process(double step);
+   void process(double step) override;
    //! Reads the grid from the files before grid reconstruction
    void restart(int step);
    //! Writes the blocks of the grid into the file cpBlocks.bin
diff --git a/src/cpu/VirtualFluidsCore/CoProcessors/MPIIORestartCoProcessor.h b/src/cpu/VirtualFluidsCore/CoProcessors/MPIIORestartCoProcessor.h
index a52ebe6598fefa665455360b70b932f0a292c2d9..fa4cf2619826babf733a0d1c3d5975e5d586a9ef 100644
--- a/src/cpu/VirtualFluidsCore/CoProcessors/MPIIORestartCoProcessor.h
+++ b/src/cpu/VirtualFluidsCore/CoProcessors/MPIIORestartCoProcessor.h
@@ -22,9 +22,9 @@ class MPIIORestartCoProcessor : public MPIIOCoProcessor
 {
 public:
    MPIIORestartCoProcessor(SPtr<Grid3D> grid, SPtr<UbScheduler> s, const std::string& path, SPtr<Communicator> comm);
-   virtual ~MPIIORestartCoProcessor();
+   ~MPIIORestartCoProcessor() override;
    //! Each timestep writes the grid into the files
-   void process(double step);
+   void process(double step) override;
    //! Reads the grid from the files before grid reconstruction
    void restart(int step);
    //! Writes the blocks of the grid into the file cpBlocks.bin
diff --git a/src/cpu/VirtualFluidsCore/CoProcessors/MicrophoneArrayCoProcessor.cpp b/src/cpu/VirtualFluidsCore/CoProcessors/MicrophoneArrayCoProcessor.cpp
index 73527fc76617e3baa6de12f9c1cc32058af2cc1a..8ea0e64d5a937eabd5083b46dbc111a904a388ea 100644
--- a/src/cpu/VirtualFluidsCore/CoProcessors/MicrophoneArrayCoProcessor.cpp
+++ b/src/cpu/VirtualFluidsCore/CoProcessors/MicrophoneArrayCoProcessor.cpp
@@ -19,8 +19,7 @@ MicrophoneArrayCoProcessor::MicrophoneArrayCoProcessor(SPtr<Grid3D> grid, SPtr<U
 }
 
 MicrophoneArrayCoProcessor::~MicrophoneArrayCoProcessor()
-{
-}
+= default;
 
 void MicrophoneArrayCoProcessor::process(double step)
 {
@@ -105,7 +104,7 @@ void MicrophoneArrayCoProcessor::collectData(double step)
    }
 }
 
-void MicrophoneArrayCoProcessor::writeFile(double step)
+void MicrophoneArrayCoProcessor::writeFile(double  /*step*/)
 {
    for (int i = 0; i < microphones.size(); i++)
    {
diff --git a/src/cpu/VirtualFluidsCore/CoProcessors/MicrophoneArrayCoProcessor.h b/src/cpu/VirtualFluidsCore/CoProcessors/MicrophoneArrayCoProcessor.h
index b3f5edbc8f32271e3c70a17918a1952914bb940a..73821538b06e5da5d9f73d10ba9bb6d6613571b8 100644
--- a/src/cpu/VirtualFluidsCore/CoProcessors/MicrophoneArrayCoProcessor.h
+++ b/src/cpu/VirtualFluidsCore/CoProcessors/MicrophoneArrayCoProcessor.h
@@ -23,7 +23,7 @@ class MicrophoneArrayCoProcessor : public CoProcessor
 {
 public:
    MicrophoneArrayCoProcessor(SPtr<Grid3D> grid, SPtr<UbScheduler> s, const std::string& path, SPtr<Communicator> comm);
-   virtual ~MicrophoneArrayCoProcessor();
+   ~MicrophoneArrayCoProcessor() override;
 
    //! calls collectData.
    void process(double step) override;
@@ -50,7 +50,7 @@ private:
    int count;
    int micID;
 
-   typedef void(*CalcMacrosFct)(const LBMReal* const& /*feq[27]*/, LBMReal& /*(d)rho*/, LBMReal& /*vx1*/, LBMReal& /*vx2*/, LBMReal& /*vx3*/);
+   using CalcMacrosFct = void (*)(const LBMReal *const &, LBMReal &, LBMReal &, LBMReal &, LBMReal &);
    CalcMacrosFct calcMacros;
 };
 
diff --git a/src/cpu/VirtualFluidsCore/CoProcessors/NUPSCounterCoProcessor.cpp b/src/cpu/VirtualFluidsCore/CoProcessors/NUPSCounterCoProcessor.cpp
index e881706cacc53a98076131da2022fc417d9bf1e7..43652ec721991f00b5b5f6a47122ec807bb4e60c 100644
--- a/src/cpu/VirtualFluidsCore/CoProcessors/NUPSCounterCoProcessor.cpp
+++ b/src/cpu/VirtualFluidsCore/CoProcessors/NUPSCounterCoProcessor.cpp
@@ -66,8 +66,7 @@ NUPSCounterCoProcessor::NUPSCounterCoProcessor(SPtr<Grid3D> grid, SPtr<UbSchedul
 }
 //////////////////////////////////////////////////////////////////////////
 NUPSCounterCoProcessor::~NUPSCounterCoProcessor() 
-{
-}
+= default;
 //////////////////////////////////////////////////////////////////////////
 void NUPSCounterCoProcessor::process(double step)
 {
diff --git a/src/cpu/VirtualFluidsCore/CoProcessors/NUPSCounterCoProcessor.h b/src/cpu/VirtualFluidsCore/CoProcessors/NUPSCounterCoProcessor.h
index 6d929fc25404aa53564598ac31d1bc18ee5acc98..f111a4b8cc4389217cdcfb758908d294733d6ba0 100644
--- a/src/cpu/VirtualFluidsCore/CoProcessors/NUPSCounterCoProcessor.h
+++ b/src/cpu/VirtualFluidsCore/CoProcessors/NUPSCounterCoProcessor.h
@@ -55,7 +55,7 @@ public:
    //! \param numOfThreads is number of threads
    //! \param comm is Communicator object
    NUPSCounterCoProcessor(SPtr<Grid3D> grid, SPtr<UbScheduler> s, int numOfThreads, SPtr<Communicator> comm);
-   virtual ~NUPSCounterCoProcessor();
+   ~NUPSCounterCoProcessor() override;
 
    void process(double step)override;
 
diff --git a/src/cpu/VirtualFluidsCore/CoProcessors/PressureCoefficientCoProcessor.cpp b/src/cpu/VirtualFluidsCore/CoProcessors/PressureCoefficientCoProcessor.cpp
index ced56bb057afc1ea3bfafab577f814fe05cf2e0a..417f713a7c1e7ad111f7f8c95322613a0bbc12c6 100644
--- a/src/cpu/VirtualFluidsCore/CoProcessors/PressureCoefficientCoProcessor.cpp
+++ b/src/cpu/VirtualFluidsCore/CoProcessors/PressureCoefficientCoProcessor.cpp
@@ -25,9 +25,7 @@ PressureCoefficientCoProcessor::PressureCoefficientCoProcessor(SPtr<Grid3D> grid
 }
 //////////////////////////////////////////////////////////////////////////
 PressureCoefficientCoProcessor::~PressureCoefficientCoProcessor()
-{
-
-}
+= default;
 //////////////////////////////////////////////////////////////////////////
 void PressureCoefficientCoProcessor::process(double step)
 {
@@ -141,7 +139,7 @@ void PressureCoefficientCoProcessor::writeValues(int step)
    if (comm->getProcessID() == comm->getRoot())
    {
       datanames.resize(0);
-      datanames.push_back("rho");
+      datanames.emplace_back("rho");
       data.resize(datanames.size());
 
       std::ofstream ostr;
diff --git a/src/cpu/VirtualFluidsCore/CoProcessors/PressureCoefficientCoProcessor.h b/src/cpu/VirtualFluidsCore/CoProcessors/PressureCoefficientCoProcessor.h
index c1d5685c59b6d769fe006eb2dcd32e3b63cc3f78..441e6ca8e6480c59c4e1196ff5fddac22eb3f355 100644
--- a/src/cpu/VirtualFluidsCore/CoProcessors/PressureCoefficientCoProcessor.h
+++ b/src/cpu/VirtualFluidsCore/CoProcessors/PressureCoefficientCoProcessor.h
@@ -21,7 +21,7 @@ class PressureCoefficientCoProcessor: public CoProcessor
 public:
    PressureCoefficientCoProcessor(SPtr<Grid3D> grid, SPtr<UbScheduler> s,
        SPtr<GbCuboid3D> plane, const std::string& path, SPtr<Communicator> comm);
-   ~PressureCoefficientCoProcessor();
+   ~PressureCoefficientCoProcessor() override;
 
    void process(double step) override;
 
@@ -47,7 +47,7 @@ private:
 
    std::vector<double> outValues;
 
-   typedef void(*CalcMacrosFct)(const LBMReal* const& /*feq[27]*/, LBMReal& /*(d)rho*/, LBMReal& /*vx1*/, LBMReal& /*vx2*/, LBMReal& /*vx3*/);
+   using CalcMacrosFct = void (*)(const LBMReal *const &, LBMReal &, LBMReal &, LBMReal &, LBMReal &);
    CalcMacrosFct calcMacros;
 };
 
diff --git a/src/cpu/VirtualFluidsCore/CoProcessors/PressureDifferenceCoProcessor.cpp b/src/cpu/VirtualFluidsCore/CoProcessors/PressureDifferenceCoProcessor.cpp
index 6de9989b6ae2d3f86d3dcbe956824f7ccd042ad0..46399e0bd0033e6437744f5e99bb847e7134a249 100644
--- a/src/cpu/VirtualFluidsCore/CoProcessors/PressureDifferenceCoProcessor.cpp
+++ b/src/cpu/VirtualFluidsCore/CoProcessors/PressureDifferenceCoProcessor.cpp
@@ -51,8 +51,7 @@ PressureDifferenceCoProcessor::PressureDifferenceCoProcessor(SPtr<Grid3D> grid,
 }
 //////////////////////////////////////////////////////////////////////////
 PressureDifferenceCoProcessor::~PressureDifferenceCoProcessor() 
-{
-}
+= default;
 //////////////////////////////////////////////////////////////////////////
 void PressureDifferenceCoProcessor::process(double step)
 {
diff --git a/src/cpu/VirtualFluidsCore/CoProcessors/PressureDifferenceCoProcessor.h b/src/cpu/VirtualFluidsCore/CoProcessors/PressureDifferenceCoProcessor.h
index 2503bbd188cceed14d8bb0c0e0a55e91e2b8e37b..c3903443d199a35704fa5b34f8498e97e48da713 100644
--- a/src/cpu/VirtualFluidsCore/CoProcessors/PressureDifferenceCoProcessor.h
+++ b/src/cpu/VirtualFluidsCore/CoProcessors/PressureDifferenceCoProcessor.h
@@ -26,7 +26,7 @@ public:
         SPtr<IntegrateValuesHelper> h1, SPtr<IntegrateValuesHelper> h2,
                                    LBMReal rhoReal, LBMReal uReal, LBMReal uLB,
                                    /*const SPtr<LBMUnitConverter> conv,*/ SPtr<Communicator> comm);
-	virtual ~PressureDifferenceCoProcessor();
+	~PressureDifferenceCoProcessor() override;
 
 	void process(double step) override;
 
diff --git a/src/cpu/VirtualFluidsCore/CoProcessors/QCriterionCoProcessor.cpp b/src/cpu/VirtualFluidsCore/CoProcessors/QCriterionCoProcessor.cpp
index b53487f6b5100d3fc8145f404a924940cd6e7b54..75801803c79bb41093ba9092c2b87026335b9837 100644
--- a/src/cpu/VirtualFluidsCore/CoProcessors/QCriterionCoProcessor.cpp
+++ b/src/cpu/VirtualFluidsCore/CoProcessors/QCriterionCoProcessor.cpp
@@ -107,8 +107,8 @@ void QCriterionCoProcessor::addData(const SPtr<Block3D> block)
 
 	//Diese Daten werden geschrieben:
 	datanames.resize(0);
-	datanames.push_back("q");
-	datanames.push_back("scaleFactor");
+	datanames.emplace_back("q");
+	datanames.emplace_back("scaleFactor");
 	data.resize(datanames.size());
 
 
@@ -299,7 +299,7 @@ void QCriterionCoProcessor::getNeighborVelocities(int offx, int offy, int offz,
 		///////////////////////////////////////
 		////compute distribution at neighboring nodes from neighboring blocks
 
-		if (checkInterpolation==false || neighNodeIsBC)
+		if (!checkInterpolation || neighNodeIsBC)
 		{
 			SPtr<ILBMKernel> kernelW = blockNeighW->getKernel();
 			SPtr<BCArray3D> bcArrayW = kernelW->getBCProcessor()->getBCArray();          
@@ -362,7 +362,7 @@ void QCriterionCoProcessor::getNeighborVelocities(int offx, int offy, int offz,
 		computeVelocity(fW,vW,compressible);
 
 	}
-	if (checkInterpolation==true)
+	if (checkInterpolation)
 	{
 		//in plus-direction data is available in current block because of ghost layers
 		LBMReal fE[27];
diff --git a/src/cpu/VirtualFluidsCore/CoProcessors/ShearStressCoProcessor.cpp b/src/cpu/VirtualFluidsCore/CoProcessors/ShearStressCoProcessor.cpp
index 514021b837b00e96fe82143a329fb5e84213fc31..5487936b53f3b370198e60e076527e749c499d43 100644
--- a/src/cpu/VirtualFluidsCore/CoProcessors/ShearStressCoProcessor.cpp
+++ b/src/cpu/VirtualFluidsCore/CoProcessors/ShearStressCoProcessor.cpp
@@ -42,9 +42,7 @@ ShearStressCoProcessor::ShearStressCoProcessor(SPtr<Grid3D> grid, const std::str
 }
 //////////////////////////////////////////////////////////////////////////
 ShearStressCoProcessor::~ShearStressCoProcessor()
-{
-
-}
+= default;
 //////////////////////////////////////////////////////////////////////////
 void ShearStressCoProcessor::process( double step )
 {
@@ -246,15 +244,15 @@ void ShearStressCoProcessor::addData()
 {
    //Diese Daten werden geschrieben:
    datanames.resize(0);
-   datanames.push_back("y^plus");
-   datanames.push_back("u_tau");
+   datanames.emplace_back("y^plus");
+   datanames.emplace_back("u_tau");
    //datanames.push_back("yPlusFD");
 
    data.resize(datanames.size());
 
    for(const auto& interactor : interactors)
    {
-      typedef std::map<SPtr<Block3D>, std::set< std::vector<int> > > TransNodeIndicesMap;
+      using TransNodeIndicesMap = std::map<SPtr<Block3D>, std::set<std::vector<int> > >;
       for(TransNodeIndicesMap::value_type t : interactor->getBcNodeIndicesMap())
       {
          SPtr<Block3D> block = t.first;
@@ -358,7 +356,7 @@ void ShearStressCoProcessor::reset(double step)
    UBLOG(logDEBUG3, "resetCoProcessor::update:" << step);
 }
 //////////////////////////////////////////////////////////////////////////
-void ShearStressCoProcessor::resetData(double step)
+void ShearStressCoProcessor::resetData(double  /*step*/)
 {
    for(int level = minInitLevel; level<=maxInitLevel;level++)
    {
diff --git a/src/cpu/VirtualFluidsCore/CoProcessors/ShearStressCoProcessor.h b/src/cpu/VirtualFluidsCore/CoProcessors/ShearStressCoProcessor.h
index 4be491635fddad878b47b4780d5505c561e3dd3c..a054fa36eb02b6dfb825472cea549f90c00c558f 100644
--- a/src/cpu/VirtualFluidsCore/CoProcessors/ShearStressCoProcessor.h
+++ b/src/cpu/VirtualFluidsCore/CoProcessors/ShearStressCoProcessor.h
@@ -25,11 +25,11 @@ class ShearStressCoProcessor: public CoProcessor
 {
 public:
    //! Default constructor
-   ShearStressCoProcessor(){}
+   ShearStressCoProcessor()= default;
    //! Constructor
    ShearStressCoProcessor(SPtr<Grid3D> grid, const std::string& path, WbWriter* const writer,
        SPtr<UbScheduler> s, SPtr<UbScheduler> rs);
-   virtual ~ShearStressCoProcessor(); 
+   ~ShearStressCoProcessor() override; 
     
    void process(double step) override; 
 
diff --git a/src/cpu/VirtualFluidsCore/CoProcessors/TimeAveragedValuesCoProcessor.cpp b/src/cpu/VirtualFluidsCore/CoProcessors/TimeAveragedValuesCoProcessor.cpp
index d3b09f7ce8d96e843abd2f96986cb59fb7f0672f..b3a92e95f5632c771c06725f3b9891e83f66f294 100644
--- a/src/cpu/VirtualFluidsCore/CoProcessors/TimeAveragedValuesCoProcessor.cpp
+++ b/src/cpu/VirtualFluidsCore/CoProcessors/TimeAveragedValuesCoProcessor.cpp
@@ -15,9 +15,7 @@
 
 
 TimeAveragedValuesCoProcessor::TimeAveragedValuesCoProcessor()
-{
-
-}
+= default;
 //////////////////////////////////////////////////////////////////////////
 TimeAveragedValuesCoProcessor::TimeAveragedValuesCoProcessor(SPtr<Grid3D> grid, const std::string& path, WbWriter* const writer,
    SPtr<UbScheduler> s, SPtr<Communicator> comm, int options)
@@ -227,45 +225,45 @@ void TimeAveragedValuesCoProcessor::addData(const SPtr<Block3D> block)
    //Diese Daten werden geschrieben:
    datanames.resize(0);
 
-   datanames.push_back("level");
-   datanames.push_back("Rho");
+   datanames.emplace_back("level");
+   datanames.emplace_back("Rho");
 
    if ((options&Density) == Density)
    {
-      datanames.push_back("taRho");
-      datanames.push_back("taRhoF");
+      datanames.emplace_back("taRho");
+      datanames.emplace_back("taRhoF");
    }
 
    if ((options&Velocity) == Velocity)
    {
-      datanames.push_back("taVx");
-      datanames.push_back("taVy");
-      datanames.push_back("taVz");
+      datanames.emplace_back("taVx");
+      datanames.emplace_back("taVy");
+      datanames.emplace_back("taVz");
    }
 
    if ((options&Fluctuations) == Fluctuations)
    {
-      datanames.push_back("taVxx");
-      datanames.push_back("taVyy");
-      datanames.push_back("taVzz");
-      datanames.push_back("taVxy");
-      datanames.push_back("taVxz");
-      datanames.push_back("taVyz");
-      datanames.push_back("taVyz");
+      datanames.emplace_back("taVxx");
+      datanames.emplace_back("taVyy");
+      datanames.emplace_back("taVzz");
+      datanames.emplace_back("taVxy");
+      datanames.emplace_back("taVxz");
+      datanames.emplace_back("taVyz");
+      datanames.emplace_back("taVyz");
    }
 
    if ((options&Triplecorrelations) == Triplecorrelations)
    {
-      datanames.push_back("taVxxx");
-      datanames.push_back("taVxxy");
-      datanames.push_back("taVxxz");
-      datanames.push_back("taVyyy");
-      datanames.push_back("taVyyx");
-      datanames.push_back("taVyyz");
-      datanames.push_back("taVzzz");
-      datanames.push_back("taVzzx");
-      datanames.push_back("taVzzy");
-      datanames.push_back("taVxyz");
+      datanames.emplace_back("taVxxx");
+      datanames.emplace_back("taVxxy");
+      datanames.emplace_back("taVxxz");
+      datanames.emplace_back("taVyyy");
+      datanames.emplace_back("taVyyx");
+      datanames.emplace_back("taVyyz");
+      datanames.emplace_back("taVzzz");
+      datanames.emplace_back("taVzzx");
+      datanames.emplace_back("taVzzy");
+      datanames.emplace_back("taVxyz");
    }
 
 
diff --git a/src/cpu/VirtualFluidsCore/CoProcessors/TimeAveragedValuesCoProcessor.h b/src/cpu/VirtualFluidsCore/CoProcessors/TimeAveragedValuesCoProcessor.h
index 9465167dc04e8b466883b9ff42952cefcb614ba9..e88a859a9df8c478007cbab7fa8af883c57fb01f 100644
--- a/src/cpu/VirtualFluidsCore/CoProcessors/TimeAveragedValuesCoProcessor.h
+++ b/src/cpu/VirtualFluidsCore/CoProcessors/TimeAveragedValuesCoProcessor.h
@@ -44,7 +44,7 @@ public:
    TimeAveragedValuesCoProcessor(SPtr<Grid3D> grid, const std::string& path, WbWriter* const writer,
        SPtr<UbScheduler> s, SPtr<Communicator> comm, int options, std::vector<int> levels, std::vector<double>& levelCoords, std::vector<double>& bounds, bool timeAveraging = true);
    //! Make update
-   void process(double step);
+   void process(double step) override;
    //! Computes subtotal of velocity , fluctuations and triple correlations
    void calculateSubtotal(double step);
    void addLevelCoordinate(double c);
@@ -108,7 +108,7 @@ private:
    int iMinC;
    int iMaxC;
 
-   typedef void(*CalcMacrosFct)(const LBMReal* const& /*feq[27]*/, LBMReal& /*(d)rho*/, LBMReal& /*vx1*/, LBMReal& /*vx2*/, LBMReal& /*vx3*/);
+   using CalcMacrosFct = void (*)(const LBMReal *const &, LBMReal &, LBMReal &, LBMReal &, LBMReal &);
    CalcMacrosFct calcMacros;
 
    bool planarAveraging;
diff --git a/src/cpu/VirtualFluidsCore/CoProcessors/TimeDependentBCCoProcessor.cpp b/src/cpu/VirtualFluidsCore/CoProcessors/TimeDependentBCCoProcessor.cpp
index ea687cfba6770d06f35539bc43407f317d6623e0..d1308a1102592f8ced9c781a7a31fa4d8fb65dd8 100644
--- a/src/cpu/VirtualFluidsCore/CoProcessors/TimeDependentBCCoProcessor.cpp
+++ b/src/cpu/VirtualFluidsCore/CoProcessors/TimeDependentBCCoProcessor.cpp
@@ -10,9 +10,7 @@ TimeDependentBCCoProcessor::TimeDependentBCCoProcessor(SPtr<Grid3D> grid, SPtr<U
 }
 //////////////////////////////////////////////////////////////////////////
 TimeDependentBCCoProcessor::~TimeDependentBCCoProcessor() 
-{
-	
-}
+= default;
 //////////////////////////////////////////////////////////////////////////
 void TimeDependentBCCoProcessor::process(double step)
 {
diff --git a/src/cpu/VirtualFluidsCore/CoProcessors/TimeDependentBCCoProcessor.h b/src/cpu/VirtualFluidsCore/CoProcessors/TimeDependentBCCoProcessor.h
index e3d03e7a6b100b57d10346daa38cc2bb6e0f72b1..e316a1d19e921ac8af0a3588e791ad0045ba58b6 100644
--- a/src/cpu/VirtualFluidsCore/CoProcessors/TimeDependentBCCoProcessor.h
+++ b/src/cpu/VirtualFluidsCore/CoProcessors/TimeDependentBCCoProcessor.h
@@ -16,7 +16,7 @@ class TimeDependentBCCoProcessor : public CoProcessor
 {
 public:
 	TimeDependentBCCoProcessor(SPtr<Grid3D> grid, SPtr<UbScheduler> s);
-	virtual ~TimeDependentBCCoProcessor();
+	~TimeDependentBCCoProcessor() override;
 
 	void process(double step) override;
 
diff --git a/src/cpu/VirtualFluidsCore/CoProcessors/TimeseriesCoProcessor.cpp b/src/cpu/VirtualFluidsCore/CoProcessors/TimeseriesCoProcessor.cpp
index c3297d04e01071c0aade09938135d1b71e418adc..8f0ff8c9975e78d639345f7c86d69bd0fbbf4788 100644
--- a/src/cpu/VirtualFluidsCore/CoProcessors/TimeseriesCoProcessor.cpp
+++ b/src/cpu/VirtualFluidsCore/CoProcessors/TimeseriesCoProcessor.cpp
@@ -45,8 +45,7 @@ TimeseriesCoProcessor::TimeseriesCoProcessor(SPtr<Grid3D> grid, SPtr<UbScheduler
 }
 //////////////////////////////////////////////////////////////////////////
 TimeseriesCoProcessor::~TimeseriesCoProcessor() 
-{
-}
+= default;
 //////////////////////////////////////////////////////////////////////////
 void TimeseriesCoProcessor::process(double step)
 {
diff --git a/src/cpu/VirtualFluidsCore/CoProcessors/TimeseriesCoProcessor.h b/src/cpu/VirtualFluidsCore/CoProcessors/TimeseriesCoProcessor.h
index b6ca9e903c74073ad5df463cc9f74ef8b07e8a15..981344167a90eeefdfae5a93e7cc8d7d8842d809 100644
--- a/src/cpu/VirtualFluidsCore/CoProcessors/TimeseriesCoProcessor.h
+++ b/src/cpu/VirtualFluidsCore/CoProcessors/TimeseriesCoProcessor.h
@@ -27,7 +27,7 @@ class TimeseriesCoProcessor : public CoProcessor
 {
 public:
     TimeseriesCoProcessor(SPtr<Grid3D> grid, SPtr<UbScheduler> s, SPtr<IntegrateValuesHelper> h1, const std::string& path, SPtr<Communicator> comm);
-    virtual ~TimeseriesCoProcessor();
+    ~TimeseriesCoProcessor() override;
 
     //! calls collectData.
     void process(double step) override;
diff --git a/src/cpu/VirtualFluidsCore/CoProcessors/TurbulenceIntensityCoProcessor.cpp b/src/cpu/VirtualFluidsCore/CoProcessors/TurbulenceIntensityCoProcessor.cpp
index 2eab0a349d1e660fd0fe798b7dc3f0c345bab19c..9f1a383c259f26d6dc9e4e357ff11d9d46d74845 100644
--- a/src/cpu/VirtualFluidsCore/CoProcessors/TurbulenceIntensityCoProcessor.cpp
+++ b/src/cpu/VirtualFluidsCore/CoProcessors/TurbulenceIntensityCoProcessor.cpp
@@ -113,7 +113,7 @@ void TurbulenceIntensityCoProcessor::addData(const SPtr<Block3D> block)
 
    //Diese Daten werden geschrieben:
    datanames.resize(0);
-   datanames.push_back("TI");
+   datanames.emplace_back("TI");
 
    data.resize(datanames.size());
 
diff --git a/src/cpu/VirtualFluidsCore/CoProcessors/TurbulenceIntensityCoProcessor.h b/src/cpu/VirtualFluidsCore/CoProcessors/TurbulenceIntensityCoProcessor.h
index 7ea876d4e1bed3527f99262c087f286d24de909b..fe14a4922d808f037dc1eeaab831f869592ae29c 100644
--- a/src/cpu/VirtualFluidsCore/CoProcessors/TurbulenceIntensityCoProcessor.h
+++ b/src/cpu/VirtualFluidsCore/CoProcessors/TurbulenceIntensityCoProcessor.h
@@ -19,7 +19,7 @@ class TurbulenceIntensityCoProcessor : public CoProcessor
 public:
    TurbulenceIntensityCoProcessor(SPtr<Grid3D> grid, const std::string& path, WbWriter* const writer,
        SPtr<UbScheduler> s, SPtr<Communicator> comm);
-   void process(double step);
+   void process(double step) override;
 protected:
    void collectData(double step);
    void addData(const SPtr<Block3D> block);
diff --git a/src/cpu/VirtualFluidsCore/CoProcessors/WriteBlocksCoProcessor.cpp b/src/cpu/VirtualFluidsCore/CoProcessors/WriteBlocksCoProcessor.cpp
index f2843380f8bd0ccb386f9c5cdf745fdd8ab219dc..077c10e32a09b2902267ba4dd010dac27a5a15ff 100644
--- a/src/cpu/VirtualFluidsCore/CoProcessors/WriteBlocksCoProcessor.cpp
+++ b/src/cpu/VirtualFluidsCore/CoProcessors/WriteBlocksCoProcessor.cpp
@@ -52,8 +52,7 @@ WriteBlocksCoProcessor::WriteBlocksCoProcessor(SPtr<Grid3D> grid, SPtr<UbSchedul
 }
 //////////////////////////////////////////////////////////////////////////
 WriteBlocksCoProcessor::~WriteBlocksCoProcessor() 
-{
-}
+= default;
 //////////////////////////////////////////////////////////////////////////
 void WriteBlocksCoProcessor::process(double step)
 {
@@ -71,12 +70,12 @@ void WriteBlocksCoProcessor::collectData(double step)
       std::vector< UbTupleInt8 > cells;
       std::vector<std::string> celldatanames;
 
-      celldatanames.push_back("isActive");
-      celldatanames.push_back("rank");
-      celldatanames.push_back("interface");
-      celldatanames.push_back("ID");
-      celldatanames.push_back("part");
-      celldatanames.push_back("level");
+      celldatanames.emplace_back("isActive");
+      celldatanames.emplace_back("rank");
+      celldatanames.emplace_back("interface");
+      celldatanames.emplace_back("ID");
+      celldatanames.emplace_back("part");
+      celldatanames.emplace_back("level");
       //celldatanames.push_back("connectorCF");
       //celldatanames.push_back("connectorFC");
 #if defined VF_FETOL
diff --git a/src/cpu/VirtualFluidsCore/CoProcessors/WriteBlocksCoProcessor.h b/src/cpu/VirtualFluidsCore/CoProcessors/WriteBlocksCoProcessor.h
index 8127c9a4653d00e81802bcaa8bb34f9d6fc09563..30beca56754f7bc74738664ee694e0b21acab146 100644
--- a/src/cpu/VirtualFluidsCore/CoProcessors/WriteBlocksCoProcessor.h
+++ b/src/cpu/VirtualFluidsCore/CoProcessors/WriteBlocksCoProcessor.h
@@ -57,7 +57,7 @@ public:
    //! \param writer is WbWriter object
    //! \param comm is Communicator object
    WriteBlocksCoProcessor(SPtr<Grid3D> grid, SPtr<UbScheduler> s, const std::string& path, WbWriter* const writer, SPtr<Communicator> comm);
-   virtual ~WriteBlocksCoProcessor();
+   ~WriteBlocksCoProcessor() override;
 
    void process(double step) override;
 
diff --git a/src/cpu/VirtualFluidsCore/CoProcessors/WriteBoundaryConditionsCoProcessor.cpp b/src/cpu/VirtualFluidsCore/CoProcessors/WriteBoundaryConditionsCoProcessor.cpp
index ec21df5aebfc4b92be4fce2a1ec69692b6a2a7c7..4902ea845c4bc76c281f49c9b0db303adcd19dc8 100644
--- a/src/cpu/VirtualFluidsCore/CoProcessors/WriteBoundaryConditionsCoProcessor.cpp
+++ b/src/cpu/VirtualFluidsCore/CoProcessors/WriteBoundaryConditionsCoProcessor.cpp
@@ -50,9 +50,7 @@
 using namespace std;
 
 WriteBoundaryConditionsCoProcessor::WriteBoundaryConditionsCoProcessor()
-{
-
-}
+= default;
 //////////////////////////////////////////////////////////////////////////
 WriteBoundaryConditionsCoProcessor::WriteBoundaryConditionsCoProcessor(SPtr<Grid3D> grid, SPtr<UbScheduler> s,
    const std::string& path, WbWriter* const writer, SPtr<Communicator> comm)
@@ -151,10 +149,10 @@ void WriteBoundaryConditionsCoProcessor::addDataGeo(SPtr<Block3D> block)
 
    //Diese Daten werden geschrieben:
    datanames.resize(0);
-   datanames.push_back("Boundary Conditions");
-   datanames.push_back("Geometry");
-   datanames.push_back("Level");
-   //datanames.push_back("Interface CF");
+   datanames.emplace_back("Boundary Conditions");
+   datanames.emplace_back("Geometry");
+   datanames.emplace_back("Level");
+   //datanames.emplace_back("Interface CF");
 
    data.resize(datanames.size());
 
diff --git a/src/cpu/VirtualFluidsCore/CoProcessors/WriteBoundaryConditionsCoProcessor.h b/src/cpu/VirtualFluidsCore/CoProcessors/WriteBoundaryConditionsCoProcessor.h
index 73bd92ffe485fad78adf34aaa2aeaf07e28b400d..b89db187db42d4d13a0f3f9b986451e3665e499b 100644
--- a/src/cpu/VirtualFluidsCore/CoProcessors/WriteBoundaryConditionsCoProcessor.h
+++ b/src/cpu/VirtualFluidsCore/CoProcessors/WriteBoundaryConditionsCoProcessor.h
@@ -61,7 +61,7 @@ public:
    //! \param writer is WbWriter object
    //! \param comm is Communicator object
    WriteBoundaryConditionsCoProcessor(SPtr<Grid3D> grid, SPtr<UbScheduler> s, const std::string& path, WbWriter* const writer, SPtr<Communicator> comm);
-   ~WriteBoundaryConditionsCoProcessor() {}
+   ~WriteBoundaryConditionsCoProcessor() override = default;
 
    void process(double step) override;
 
diff --git a/src/cpu/VirtualFluidsCore/CoProcessors/WriteGbObjectsCoProcessor.cpp b/src/cpu/VirtualFluidsCore/CoProcessors/WriteGbObjectsCoProcessor.cpp
index 66f01407e46fd3e699037e395fa5b3b50367a434..0b66c12875bb7a7174f2f1501ae6c3731a257246 100644
--- a/src/cpu/VirtualFluidsCore/CoProcessors/WriteGbObjectsCoProcessor.cpp
+++ b/src/cpu/VirtualFluidsCore/CoProcessors/WriteGbObjectsCoProcessor.cpp
@@ -11,9 +11,7 @@ WriteGbObjectsCoProcessor::WriteGbObjectsCoProcessor(SPtr<Grid3D> grid, SPtr<UbS
 }
 //////////////////////////////////////////////////////////////////////////
 WriteGbObjectsCoProcessor::~WriteGbObjectsCoProcessor()
-{
-
-}
+= default;
 //////////////////////////////////////////////////////////////////////////
 void WriteGbObjectsCoProcessor::process(double step)
 {
diff --git a/src/cpu/VirtualFluidsCore/CoProcessors/WriteGbObjectsCoProcessor.h b/src/cpu/VirtualFluidsCore/CoProcessors/WriteGbObjectsCoProcessor.h
index a6639a6e9c415a2f9a6a859347d6e19801d9dd0a..6b1c9f24ab7096d171eb35cca035ecf7f5393d92 100644
--- a/src/cpu/VirtualFluidsCore/CoProcessors/WriteGbObjectsCoProcessor.h
+++ b/src/cpu/VirtualFluidsCore/CoProcessors/WriteGbObjectsCoProcessor.h
@@ -21,7 +21,7 @@ class WriteGbObjectsCoProcessor :public CoProcessor
 {
 public:
    WriteGbObjectsCoProcessor(SPtr<Grid3D> grid, SPtr<UbScheduler> s, const std::string& path, WbWriter* const writer, SPtr<Communicator> comm);
-   virtual ~WriteGbObjectsCoProcessor();
+   ~WriteGbObjectsCoProcessor() override;
    //! calls collectData.
    void process(double step) override;
    //! adds geometry object
diff --git a/src/cpu/VirtualFluidsCore/CoProcessors/WriteMQFromSelectionCoProcessor.cpp b/src/cpu/VirtualFluidsCore/CoProcessors/WriteMQFromSelectionCoProcessor.cpp
index 455de36b8c054b1f0b47a78451a28adf96852f31..0f53b97a4acedd5ebc286f3f3e3a596bc40cb211 100644
--- a/src/cpu/VirtualFluidsCore/CoProcessors/WriteMQFromSelectionCoProcessor.cpp
+++ b/src/cpu/VirtualFluidsCore/CoProcessors/WriteMQFromSelectionCoProcessor.cpp
@@ -15,9 +15,7 @@
 #include "GbObject3D.h"
 
 WriteMQFromSelectionCoProcessor::WriteMQFromSelectionCoProcessor()
-{
-
-}
+= default;
 //////////////////////////////////////////////////////////////////////////
 WriteMQFromSelectionCoProcessor::WriteMQFromSelectionCoProcessor(SPtr<Grid3D> grid, SPtr<UbScheduler> s,
                                                                                  SPtr<GbObject3D> gbObject,
@@ -136,12 +134,12 @@ void WriteMQFromSelectionCoProcessor::addDataMQ(SPtr<Block3D> block)
 
    //Diese Daten werden geschrieben:
    datanames.resize(0);
-   datanames.push_back("Rho");
-   datanames.push_back("Vx");
-   datanames.push_back("Vy");
-   datanames.push_back("Vz");
+   datanames.emplace_back("Rho");
+   datanames.emplace_back("Vx");
+   datanames.emplace_back("Vy");
+   datanames.emplace_back("Vz");
    //datanames.push_back("Press");
-   datanames.push_back("Level");
+   datanames.emplace_back("Level");
    //datanames.push_back("BlockID");
 
      
@@ -202,9 +200,9 @@ void WriteMQFromSelectionCoProcessor::addDataMQ(SPtr<Block3D> block)
                   int index = 0;
                   nodeNumbers(ix1, ix2, ix3) = nr++;
 
-                  nodes.push_back(UbTupleFloat3(float(worldCoordinates[0]),
+                  nodes.emplace_back(float(worldCoordinates[0]),
                      float(worldCoordinates[1]),
-                     float(worldCoordinates[2])));
+                     float(worldCoordinates[2]));
 
                   distributions->getDistribution(f, ix1, ix2, ix3);
                   calcMacros(f, rho, vx1, vx2, vx3);
diff --git a/src/cpu/VirtualFluidsCore/CoProcessors/WriteMQFromSelectionCoProcessor.h b/src/cpu/VirtualFluidsCore/CoProcessors/WriteMQFromSelectionCoProcessor.h
index 5a5c0a58e0f17c75dfa1c904f7cd6b505bbea039..a10ab7f2707b71daf4468523f10c92ddc6f04826 100644
--- a/src/cpu/VirtualFluidsCore/CoProcessors/WriteMQFromSelectionCoProcessor.h
+++ b/src/cpu/VirtualFluidsCore/CoProcessors/WriteMQFromSelectionCoProcessor.h
@@ -27,7 +27,7 @@ public:
                                            SPtr<GbObject3D> gbObject,
                                            const std::string& path, WbWriter* const writer, 
                                            SPtr<LBMUnitConverter> conv, SPtr<Communicator> comm);
-   ~WriteMQFromSelectionCoProcessor(){}
+   ~WriteMQFromSelectionCoProcessor() override= default;
 
    void process(double step) override;
 
@@ -52,7 +52,7 @@ private:
    SPtr<Communicator> comm;
    SPtr<GbObject3D> gbObject;
 
-   typedef void(*CalcMacrosFct)(const LBMReal* const& /*feq[27]*/, LBMReal& /*(d)rho*/, LBMReal& /*vx1*/, LBMReal& /*vx2*/, LBMReal& /*vx3*/);
+   using CalcMacrosFct = void (*)(const LBMReal *const &, LBMReal &, LBMReal &, LBMReal &, LBMReal &);
    CalcMacrosFct calcMacros;
 };
 
diff --git a/src/cpu/VirtualFluidsCore/CoProcessors/WriteMacroscopicQuantitiesCoProcessor.cpp b/src/cpu/VirtualFluidsCore/CoProcessors/WriteMacroscopicQuantitiesCoProcessor.cpp
index 5654d1dfe567245621c90e1231f12966fd0b0f3e..d621d551561991fa2edde46152a1ce96cc9db264 100644
--- a/src/cpu/VirtualFluidsCore/CoProcessors/WriteMacroscopicQuantitiesCoProcessor.cpp
+++ b/src/cpu/VirtualFluidsCore/CoProcessors/WriteMacroscopicQuantitiesCoProcessor.cpp
@@ -47,9 +47,7 @@
 #include "BCArray3D.h"
 
 WriteMacroscopicQuantitiesCoProcessor::WriteMacroscopicQuantitiesCoProcessor()
-{
-
-}
+= default;
 //////////////////////////////////////////////////////////////////////////
 WriteMacroscopicQuantitiesCoProcessor::WriteMacroscopicQuantitiesCoProcessor(SPtr<Grid3D> grid, SPtr<UbScheduler> s,
                                                                                  const std::string& path, WbWriter* const writer, 
@@ -153,13 +151,13 @@ void WriteMacroscopicQuantitiesCoProcessor::addDataMQ(SPtr<Block3D> block)
 
    //Diese Daten werden geschrieben:
    datanames.resize(0);
-   datanames.push_back("Rho");
-   datanames.push_back("Vx");
-   datanames.push_back("Vy");
-   datanames.push_back("Vz");
-   //datanames.push_back("Press");
-   datanames.push_back("Level");
-   //datanames.push_back("BlockID");
+   datanames.emplace_back("Rho");
+   datanames.emplace_back("Vx");
+   datanames.emplace_back("Vy");
+   datanames.emplace_back("Vz");
+   //datanames.emplace_back("Press");
+   datanames.emplace_back("Level");
+   //datanames.emplace_back("BlockID");
 
      
 
@@ -219,9 +217,9 @@ void WriteMacroscopicQuantitiesCoProcessor::addDataMQ(SPtr<Block3D> block)
                int index = 0;
                nodeNumbers(ix1,ix2,ix3) = nr++;
                Vector3D worldCoordinates = grid->getNodeCoordinates(block, ix1, ix2, ix3);
-               nodes.push_back( UbTupleFloat3(float(worldCoordinates[0]),
+               nodes.emplace_back(float(worldCoordinates[0]),
                                               float(worldCoordinates[1]),
-                                              float(worldCoordinates[2]) ));
+                                              float(worldCoordinates[2]) );
 
                distributions->getDistribution(f, ix1, ix2, ix3);
                calcMacros(f,rho,vx1,vx2,vx3);
diff --git a/src/cpu/VirtualFluidsCore/CoProcessors/WriteMacroscopicQuantitiesCoProcessor.h b/src/cpu/VirtualFluidsCore/CoProcessors/WriteMacroscopicQuantitiesCoProcessor.h
index 0386f938191630894e3facf04a2fa721e3fb6287..816999a71d92219f11d59fd2d9450e46531d427e 100644
--- a/src/cpu/VirtualFluidsCore/CoProcessors/WriteMacroscopicQuantitiesCoProcessor.h
+++ b/src/cpu/VirtualFluidsCore/CoProcessors/WriteMacroscopicQuantitiesCoProcessor.h
@@ -66,7 +66,7 @@ public:
    WriteMacroscopicQuantitiesCoProcessor(SPtr<Grid3D> grid, SPtr<UbScheduler> s,
                                            const std::string& path, WbWriter* const writer, 
                                            SPtr<LBMUnitConverter> conv, SPtr<Communicator> comm);
-   ~WriteMacroscopicQuantitiesCoProcessor(){}
+   ~WriteMacroscopicQuantitiesCoProcessor() override= default;
 
    void process(double step) override;
 
@@ -94,7 +94,7 @@ private:
    int gridRank;
    SPtr<Communicator> comm;
 
-   typedef void(*CalcMacrosFct)(const LBMReal* const& /*feq[27]*/, LBMReal& /*(d)rho*/, LBMReal& /*vx1*/, LBMReal& /*vx2*/, LBMReal& /*vx3*/);
+   using CalcMacrosFct = void (*)(const LBMReal *const &, LBMReal &, LBMReal &, LBMReal &, LBMReal &);
    CalcMacrosFct calcMacros;
 };
 
diff --git a/src/cpu/VirtualFluidsCore/Connectors/Block3DConnector.h b/src/cpu/VirtualFluidsCore/Connectors/Block3DConnector.h
index 527c42d3e3f43d9e3d9b3cdef8bf666b0c3d5450..1bef6737422efa711f15bb1f78b87312ea0032e2 100644
--- a/src/cpu/VirtualFluidsCore/Connectors/Block3DConnector.h
+++ b/src/cpu/VirtualFluidsCore/Connectors/Block3DConnector.h
@@ -46,9 +46,9 @@
 class Block3DConnector
 {
 public:
-   Block3DConnector() : sendDir(-1) {}
+   Block3DConnector() = default;
    Block3DConnector(const int& sendDir) : sendDir(sendDir) {}
-   virtual ~Block3DConnector() {}
+   virtual ~Block3DConnector() = default;
    //!Iniitializes connector
    virtual void init()=0;
    //!Synchronizes the send-buffer length
@@ -94,7 +94,7 @@ public:
    virtual void receiveVectorsX3() = 0;
 
 protected:
-   int  sendDir;
+   int  sendDir{-1};
 };
 
 #endif //BLOCK3DCONNECTOR_H
diff --git a/src/cpu/VirtualFluidsCore/Connectors/Block3DConnectorFactory.cpp b/src/cpu/VirtualFluidsCore/Connectors/Block3DConnectorFactory.cpp
index b8889d537afdf2152c2dea7c3bfc9668a004fd9d..af4cefa6778fdf130a530b125ec2a321eae6664b 100644
--- a/src/cpu/VirtualFluidsCore/Connectors/Block3DConnectorFactory.cpp
+++ b/src/cpu/VirtualFluidsCore/Connectors/Block3DConnectorFactory.cpp
@@ -5,12 +5,10 @@
 #include "FineToCoarseNodeSetBlock3DConnector.h"
 
 Block3DConnectorFactory::Block3DConnectorFactory()
-{
-}
+= default;
 //////////////////////////////////////////////////////////////////////////
 Block3DConnectorFactory::~Block3DConnectorFactory()
-{
-}
+= default;
 //////////////////////////////////////////////////////////////////////////
 SPtr<Block3DConnector> Block3DConnectorFactory::createSameLevelDirectConnector(SPtr<Block3D> from, SPtr<Block3D> to, int sendDir)
 {
diff --git a/src/cpu/VirtualFluidsCore/Connectors/Block3DConnectorFactory.h b/src/cpu/VirtualFluidsCore/Connectors/Block3DConnectorFactory.h
index e753f32cacefe9e6c037ac1b2a9bf8551e5ed1cc..4e2ae44a04429e199c23bc629b6ee9f9e295a541 100644
--- a/src/cpu/VirtualFluidsCore/Connectors/Block3DConnectorFactory.h
+++ b/src/cpu/VirtualFluidsCore/Connectors/Block3DConnectorFactory.h
@@ -9,28 +9,28 @@ class Block3DConnectorFactory : public ConnectorFactory
 {
 public:
    Block3DConnectorFactory();
-   virtual ~Block3DConnectorFactory();
+   ~Block3DConnectorFactory() override;
 
-   virtual SPtr<Block3DConnector> createSameLevelDirectConnector(SPtr<Block3D> from, SPtr<Block3D> to, int sendDir);
+   SPtr<Block3DConnector> createSameLevelDirectConnector(SPtr<Block3D> from, SPtr<Block3D> to, int sendDir) override;
 
-   virtual SPtr<Block3DConnector> createSameLevelVectorConnector(SPtr<Block3D> block,
+   SPtr<Block3DConnector> createSameLevelVectorConnector(SPtr<Block3D> block,
       VectorTransmitterPtr sender,
       VectorTransmitterPtr receiver,
-      int sendDir);
+      int sendDir) override;
 
-   virtual SPtr<Block3DConnector> createCoarseToFineConnector(SPtr<Block3D> block,
+   SPtr<Block3DConnector> createCoarseToFineConnector(SPtr<Block3D> block,
       VectorTransmitterPtr sender00, VectorTransmitterPtr receiver00,
       VectorTransmitterPtr sender01, VectorTransmitterPtr receiver01,
       VectorTransmitterPtr sender10, VectorTransmitterPtr receiver10,
       VectorTransmitterPtr sender11, VectorTransmitterPtr receiver11,
-      int sendDir, InterpolationProcessorPtr iprocessor);
+      int sendDir, InterpolationProcessorPtr iprocessor) override;
 
-   virtual SPtr<Block3DConnector> createFineToCoarseConnector(SPtr<Block3D> block,
+   SPtr<Block3DConnector> createFineToCoarseConnector(SPtr<Block3D> block,
       VectorTransmitterPtr sender,
       VectorTransmitterPtr receiver,
       int sendDir,
       InterpolationProcessorPtr iprocessor,
-      FineToCoarseBlock3DConnector::CFconnectorType connType);
+      FineToCoarseBlock3DConnector::CFconnectorType connType) override;
 
 private:
 
diff --git a/src/cpu/VirtualFluidsCore/Connectors/CoarseToFineBlock3DConnector.h b/src/cpu/VirtualFluidsCore/Connectors/CoarseToFineBlock3DConnector.h
index 8a04f0ca485aa0811c8387ec99abcc582e4bf6db..54798eaf848c9e2550ff5c2bbc4de3b6888c8f60 100644
--- a/src/cpu/VirtualFluidsCore/Connectors/CoarseToFineBlock3DConnector.h
+++ b/src/cpu/VirtualFluidsCore/Connectors/CoarseToFineBlock3DConnector.h
@@ -49,43 +49,43 @@ public:
       VectorTransmitterPtr sender11, VectorTransmitterPtr receiver11,
       int sendDir, InterpolationProcessorPtr iprocessor);
 
-   virtual ~CoarseToFineBlock3DConnector() {}
+   ~CoarseToFineBlock3DConnector() override = default;
 
-   bool isLocalConnector();
-   bool isRemoteConnector();
+   bool isLocalConnector() override;
+   bool isRemoteConnector() override;
 
-   virtual void init()=0;
+   void init() override =0;
 
-   void sendTransmitterDataSize();
-   void receiveTransmitterDataSize();
+   void sendTransmitterDataSize() override;
+   void receiveTransmitterDataSize() override;
 
-   void prepareForSend();
-   void sendVectors();
+   void prepareForSend() override;
+   void sendVectors() override;
 
-   void prepareForReceive();
-   void receiveVectors();
+   void prepareForReceive() override;
+   void receiveVectors() override;
 
-   virtual void fillSendVectors()=0;
-   virtual void distributeReceiveVectors() = 0;
+   void fillSendVectors() override =0;
+   void distributeReceiveVectors() override = 0;
 
-   bool isInterpolationConnectorCF() { return true; }
-   bool isInterpolationConnectorFC() { return false; }
+   bool isInterpolationConnectorCF() override { return true; }
+   bool isInterpolationConnectorFC() override { return false; }
 
-   void prepareForSendX1() {}
-   void prepareForSendX2() {}
-   void prepareForSendX3() {}
+   void prepareForSendX1() override {}
+   void prepareForSendX2() override {}
+   void prepareForSendX3() override {}
 
-   void sendVectorsX1() {}
-   void sendVectorsX2() {}
-   void sendVectorsX3() {}
+   void sendVectorsX1() override {}
+   void sendVectorsX2() override {}
+   void sendVectorsX3() override {}
 
-   void prepareForReceiveX1() {}
-   void prepareForReceiveX2() {}
-   void prepareForReceiveX3() {}
+   void prepareForReceiveX1() override {}
+   void prepareForReceiveX2() override {}
+   void prepareForReceiveX3() override {}
 
-   void receiveVectorsX1() {}
-   void receiveVectorsX2() {}
-   void receiveVectorsX3() {}
+   void receiveVectorsX1() override {}
+   void receiveVectorsX2() override {}
+   void receiveVectorsX3() override {}
 
 protected:
    WPtr<Block3D> block; //dieser nvd sendet daten und die empfangenen werden diesem nvd zugeordnet
diff --git a/src/cpu/VirtualFluidsCore/Connectors/CoarseToFineNodeSetBlock3DConnector.h b/src/cpu/VirtualFluidsCore/Connectors/CoarseToFineNodeSetBlock3DConnector.h
index a1834c336adb048a20fc9e907b3ebeb957ed1135..ae8f09b16c4a55034e488b04051260aa3f4c9240 100644
--- a/src/cpu/VirtualFluidsCore/Connectors/CoarseToFineNodeSetBlock3DConnector.h
+++ b/src/cpu/VirtualFluidsCore/Connectors/CoarseToFineNodeSetBlock3DConnector.h
@@ -50,14 +50,14 @@ public:
       VectorTransmitterPtr sender11, VectorTransmitterPtr receiver11,
       int sendDir, InterpolationProcessorPtr iprocessor);
 
-   void init();
+   void init() override;
 
-   void fillSendVectors();
-   void distributeReceiveVectors();
+   void fillSendVectors() override;
+   void distributeReceiveVectors() override;
 
 protected:
    typedef std::vector< int > INodeVector;
-   typedef std::vector < INodeVector > INodeSet;
+   using INodeSet = std::vector<INodeVector>;
    INodeSet  iNodeSetSender00;
    INodeSet  iNodeSetSender01;
    INodeSet  iNodeSetSender10;
diff --git a/src/cpu/VirtualFluidsCore/Connectors/ConnectorFactory.h b/src/cpu/VirtualFluidsCore/Connectors/ConnectorFactory.h
index cd7bd1a41b0c44fc46118d147c6947098556c7c9..323d0349f26417a9b9ece9cca73289ac5e71caa8 100644
--- a/src/cpu/VirtualFluidsCore/Connectors/ConnectorFactory.h
+++ b/src/cpu/VirtualFluidsCore/Connectors/ConnectorFactory.h
@@ -11,8 +11,8 @@
 class ConnectorFactory
 {
 public:
-   ConnectorFactory() {};
-   virtual ~ConnectorFactory() {};
+   ConnectorFactory() = default;;
+   virtual ~ConnectorFactory() = default;;
 
    virtual SPtr<Block3DConnector> createSameLevelDirectConnector(SPtr<Block3D> from, SPtr<Block3D> to, int sendDir) = 0;
    virtual SPtr<Block3DConnector> createSameLevelVectorConnector(SPtr<Block3D> block,
diff --git a/src/cpu/VirtualFluidsCore/Connectors/D3Q27ETCFOffVectorConnector.h b/src/cpu/VirtualFluidsCore/Connectors/D3Q27ETCFOffVectorConnector.h
index 48ac7a37fc451a85493212f1564a1a1059fee42e..96c8627fe4b113c3e195c041b86975c119f3d285 100644
--- a/src/cpu/VirtualFluidsCore/Connectors/D3Q27ETCFOffVectorConnector.h
+++ b/src/cpu/VirtualFluidsCore/Connectors/D3Q27ETCFOffVectorConnector.h
@@ -44,8 +44,8 @@ template< typename VectorTransmitter >
 class D3Q27ETCFOffVectorConnector : public Block3DConnector
 {
 public:
-   typedef typename VectorTransmitter::value_type  vector_type;
-   typedef SPtr< VectorTransmitter > VectorTransmitterPtr;
+   using vector_type = typename VectorTransmitter::value_type;
+   using VectorTransmitterPtr = SPtr<VectorTransmitter>;
 public:
    D3Q27ETCFOffVectorConnector(SPtr<Block3D> block,
       VectorTransmitterPtr senderEvenEvenSW, VectorTransmitterPtr receiverEvenEvenSW,
@@ -54,42 +54,42 @@ public:
       VectorTransmitterPtr senderOddOddNE, VectorTransmitterPtr receiverOddOddNE,
       int sendDir, InterpolationProcessorPtr iprocessor);
 
-   bool isLocalConnector();
-   bool isRemoteConnector();
-   void init();
+   bool isLocalConnector() override;
+   bool isRemoteConnector() override;
+   void init() override;
 
-   void sendTransmitterDataSize();
-   void receiveTransmitterDataSize();
+   void sendTransmitterDataSize() override;
+   void receiveTransmitterDataSize() override;
 
-   void prepareForSend();
-   void sendVectors();
+   void prepareForSend() override;
+   void sendVectors() override;
 
-   void prepareForReceive();
-   void receiveVectors();
+   void prepareForReceive() override;
+   void receiveVectors() override;
 
-   void fillSendVectors();
-   void distributeReceiveVectors();
+   void fillSendVectors() override;
+   void distributeReceiveVectors() override;
 
-   bool isInterpolationConnectorCF() { return true; }
-   bool isInterpolationConnectorFC() { return false; }
+   bool isInterpolationConnectorCF() override { return true; }
+   bool isInterpolationConnectorFC() override { return false; }
 
    double getSendRecieveTime();
 
-   void prepareForSendX1() {}
-   void prepareForSendX2() {}
-   void prepareForSendX3() {}
+   void prepareForSendX1() override {}
+   void prepareForSendX2() override {}
+   void prepareForSendX3() override {}
 
-   void sendVectorsX1() {}
-   void sendVectorsX2() {}
-   void sendVectorsX3() {}
+   void sendVectorsX1() override {}
+   void sendVectorsX2() override {}
+   void sendVectorsX3() override {}
 
-   void prepareForReceiveX1() {}
-   void prepareForReceiveX2() {}
-   void prepareForReceiveX3() {}
+   void prepareForReceiveX1() override {}
+   void prepareForReceiveX2() override {}
+   void prepareForReceiveX3() override {}
 
-   void receiveVectorsX1() {}
-   void receiveVectorsX2() {}
-   void receiveVectorsX3() {}
+   void receiveVectorsX1() override {}
+   void receiveVectorsX2() override {}
+   void receiveVectorsX3() override {}
 
 protected:
    WPtr<Block3D> block; //dieser nvd sendet daten und die empfangenen werden diesem nvd zugeordnet
@@ -1708,7 +1708,7 @@ void D3Q27ETCFOffVectorConnector< VectorTransmitter>::getLocalMinMax(int& minX1,
 }
 //////////////////////////////////////////////////////////////////////////
 template< typename VectorTransmitter >
-void D3Q27ETCFOffVectorConnector< VectorTransmitter>::getLocalMinMax(int& minX1, int& minX2, int& minX3, int& maxX1, int& maxX2, int& maxX3, CFconnectorType connType)
+void D3Q27ETCFOffVectorConnector< VectorTransmitter>::getLocalMinMax(int& minX1, int& minX2, int& minX3, int& maxX1, int& maxX2, int& maxX3, CFconnectorType  /*connType*/)
 {
    using namespace D3Q27System;
    int TminX1 = minX1; int TminX2 = minX2; int TminX3 = minX3; int TmaxX1 = maxX1; int TmaxX2 = maxX2; int TmaxX3 = maxX3;
diff --git a/src/cpu/VirtualFluidsCore/Connectors/D3Q27ETFCOffVectorConnector.h b/src/cpu/VirtualFluidsCore/Connectors/D3Q27ETFCOffVectorConnector.h
index 397a9c27c2aaab3bdfc017b057440ab15b2e0921..14acb11e53250b3510074dc3181b92e2bc76f517 100644
--- a/src/cpu/VirtualFluidsCore/Connectors/D3Q27ETFCOffVectorConnector.h
+++ b/src/cpu/VirtualFluidsCore/Connectors/D3Q27ETFCOffVectorConnector.h
@@ -38,48 +38,48 @@ class D3Q27ETFCOffVectorConnector : public Block3DConnector
 public:
 
 protected:
-	typedef typename VectorTransmitter::value_type  vector_type;
-	typedef SPtr< VectorTransmitter > VectorTransmitterPtr;
+	using vector_type = typename VectorTransmitter::value_type;
+	using VectorTransmitterPtr = SPtr<VectorTransmitter>;
 public:
    D3Q27ETFCOffVectorConnector(SPtr<Block3D> block, VectorTransmitterPtr sender, VectorTransmitterPtr receiver, int sendDir, 
       InterpolationProcessorPtr iprocessor, CFconnectorType connType);
 
-	bool isLocalConnector();
-	bool isRemoteConnector();
-	void init();
+	bool isLocalConnector() override;
+	bool isRemoteConnector() override;
+	void init() override;
 
-	void sendTransmitterDataSize();
-	void receiveTransmitterDataSize();
+	void sendTransmitterDataSize() override;
+	void receiveTransmitterDataSize() override;
 
-	void prepareForSend();
-	void sendVectors();
+	void prepareForSend() override;
+	void sendVectors() override;
 
-	void prepareForReceive();
-	void receiveVectors();
+	void prepareForReceive() override;
+	void receiveVectors() override;
 
-	void fillSendVectors();
-	void distributeReceiveVectors();
+	void fillSendVectors() override;
+	void distributeReceiveVectors() override;
 
-	bool isInterpolationConnectorCF() { return false; }
-	bool isInterpolationConnectorFC() { return true; }
+	bool isInterpolationConnectorCF() override { return false; }
+	bool isInterpolationConnectorFC() override { return true; }
 
 	double getSendRecieveTime();
 
-	void prepareForSendX1() {}
-	void prepareForSendX2() {}
-	void prepareForSendX3() {}
+	void prepareForSendX1() override {}
+	void prepareForSendX2() override {}
+	void prepareForSendX3() override {}
 
-	void sendVectorsX1(){}
-	void sendVectorsX2(){}
-	void sendVectorsX3(){}
+	void sendVectorsX1() override{}
+	void sendVectorsX2() override{}
+	void sendVectorsX3() override{}
 
-	void prepareForReceiveX1() {}
-	void prepareForReceiveX2() {}
-	void prepareForReceiveX3() {}
+	void prepareForReceiveX1() override {}
+	void prepareForReceiveX2() override {}
+	void prepareForReceiveX3() override {}
 
-	void receiveVectorsX1() {}
-	void receiveVectorsX2() {}
-	void receiveVectorsX3() {}
+	void receiveVectorsX1() override {}
+	void receiveVectorsX2() override {}
+	void receiveVectorsX3() override {}
 
 protected:
 	WPtr<Block3D> block; //dieser nvd sendet daten und die empfangenen werden diesem nvd zugeordnet
@@ -1212,7 +1212,7 @@ void D3Q27ETFCOffVectorConnector< VectorTransmitter>::getLocalMinMax(int& minX1,
 }
 //////////////////////////////////////////////////////////////////////////
 template<  typename VectorTransmitter  >
-void D3Q27ETFCOffVectorConnector< VectorTransmitter>::getLocalMinMax(int& minX1, int& minX2, int& minX3, int& maxX1, int& maxX2, int& maxX3, CFconnectorType connType)
+void D3Q27ETFCOffVectorConnector< VectorTransmitter>::getLocalMinMax(int& minX1, int& minX2, int& minX3, int& maxX1, int& maxX2, int& maxX3, CFconnectorType  /*connType*/)
 {
    using namespace D3Q27System;
    int TminX1 = minX1; int TminX2 = minX2; int TminX3 = minX3; int TmaxX1 = maxX1; int TmaxX2 = maxX2; int TmaxX3 = maxX3;
diff --git a/src/cpu/VirtualFluidsCore/Connectors/D3Q27ETFullDirectConnector.h b/src/cpu/VirtualFluidsCore/Connectors/D3Q27ETFullDirectConnector.h
index b9f2d1c24e1df8651c7d5c8e1b6a3aad4d1ddbb1..ffce993cce0b56cdafde01b875e43be614bdeef3 100644
--- a/src/cpu/VirtualFluidsCore/Connectors/D3Q27ETFullDirectConnector.h
+++ b/src/cpu/VirtualFluidsCore/Connectors/D3Q27ETFullDirectConnector.h
@@ -47,8 +47,8 @@ class D3Q27ETFullDirectConnector : public LocalBlock3DConnector
 {
 public:
    D3Q27ETFullDirectConnector(SPtr<Block3D> from, SPtr<Block3D> to, int sendDir);
-   void init();
-   void sendVectors();
+   void init() override;
+   void sendVectors() override;
 
 protected:
    inline void exchangeData(int x1From, int x2From, int x3From, int x1To, int x2To, int x3To);
diff --git a/src/cpu/VirtualFluidsCore/Connectors/D3Q27ETFullVectorConnector.h b/src/cpu/VirtualFluidsCore/Connectors/D3Q27ETFullVectorConnector.h
index 149e53d6242aef86a27d9f4478bfa2499b069a50..b1c3a8e824385c21463a4e883f8355fbca28eef7 100644
--- a/src/cpu/VirtualFluidsCore/Connectors/D3Q27ETFullVectorConnector.h
+++ b/src/cpu/VirtualFluidsCore/Connectors/D3Q27ETFullVectorConnector.h
@@ -25,10 +25,10 @@ public:
       , VectorTransmitterPtr receiver
       , int sendDir);
 
-   void init();
+   void init() override;
 
-   void fillSendVectors();
-   void distributeReceiveVectors();
+   void fillSendVectors() override;
+   void distributeReceiveVectors() override;
 
 protected:
    inline void fillData(vector_type& sdata, int& index, int x1, int x2, int x3);
diff --git a/src/cpu/VirtualFluidsCore/Connectors/FineToCoarseBlock3DConnector.h b/src/cpu/VirtualFluidsCore/Connectors/FineToCoarseBlock3DConnector.h
index cb1f1e1c935a70fff9c3bc72827c483ab55cc081..c4bbc182f3c38f27bc1332dc825484da5f6af048 100644
--- a/src/cpu/VirtualFluidsCore/Connectors/FineToCoarseBlock3DConnector.h
+++ b/src/cpu/VirtualFluidsCore/Connectors/FineToCoarseBlock3DConnector.h
@@ -47,40 +47,40 @@ public:
 public:
    FineToCoarseBlock3DConnector(SPtr<Block3D> block, VectorTransmitterPtr sender, VectorTransmitterPtr receiver, int sendDir, InterpolationProcessorPtr iprocessor, CFconnectorType connType);
 
-   bool isLocalConnector();
-   bool isRemoteConnector();
+   bool isLocalConnector() override;
+   bool isRemoteConnector() override;
    
-   void sendTransmitterDataSize();
-   void receiveTransmitterDataSize();
+   void sendTransmitterDataSize() override;
+   void receiveTransmitterDataSize() override;
 
-   void prepareForSend();
-   void sendVectors();
+   void prepareForSend() override;
+   void sendVectors() override;
 
-   void prepareForReceive();
-   void receiveVectors();
+   void prepareForReceive() override;
+   void receiveVectors() override;
 
-   virtual void init()=0;
-   virtual void fillSendVectors()=0;
-   virtual void distributeReceiveVectors()=0;
+   void init() override =0;
+   void fillSendVectors() override =0;
+   void distributeReceiveVectors() override =0;
 
-   bool isInterpolationConnectorCF() { return false; }
-   bool isInterpolationConnectorFC() { return true; }
+   bool isInterpolationConnectorCF() override { return false; }
+   bool isInterpolationConnectorFC() override { return true; }
 
-   void prepareForSendX1() {}
-   void prepareForSendX2() {}
-   void prepareForSendX3() {}
+   void prepareForSendX1() override {}
+   void prepareForSendX2() override {}
+   void prepareForSendX3() override {}
 
-   void sendVectorsX1() {}
-   void sendVectorsX2() {}
-   void sendVectorsX3() {}
+   void sendVectorsX1() override {}
+   void sendVectorsX2() override {}
+   void sendVectorsX3() override {}
 
-   void prepareForReceiveX1() {}
-   void prepareForReceiveX2() {}
-   void prepareForReceiveX3() {}
+   void prepareForReceiveX1() override {}
+   void prepareForReceiveX2() override {}
+   void prepareForReceiveX3() override {}
 
-   void receiveVectorsX1() {}
-   void receiveVectorsX2() {}
-   void receiveVectorsX3() {}
+   void receiveVectorsX1() override {}
+   void receiveVectorsX2() override {}
+   void receiveVectorsX3() override {}
 
 protected:
    WPtr<Block3D> block; 
diff --git a/src/cpu/VirtualFluidsCore/Connectors/FineToCoarseNodeSetBlock3DConnector.h b/src/cpu/VirtualFluidsCore/Connectors/FineToCoarseNodeSetBlock3DConnector.h
index 899f91e2cda6d74064ef1cf5999771e7c54816f9..0c10e7778392513f379b07236d280407880cc6ce 100644
--- a/src/cpu/VirtualFluidsCore/Connectors/FineToCoarseNodeSetBlock3DConnector.h
+++ b/src/cpu/VirtualFluidsCore/Connectors/FineToCoarseNodeSetBlock3DConnector.h
@@ -29,12 +29,12 @@ class FineToCoarseNodeSetBlock3DConnector : public FineToCoarseBlock3DConnector
 {
 public:
    FineToCoarseNodeSetBlock3DConnector(SPtr<Block3D> block, VectorTransmitterPtr sender, VectorTransmitterPtr receiver, int sendDir, InterpolationProcessorPtr iprocessor, CFconnectorType connType);
-   void init();
-   void fillSendVectors();
-   void distributeReceiveVectors();
+   void init() override;
+   void fillSendVectors() override;
+   void distributeReceiveVectors() override;
 protected:
-   typedef std::vector< int > INodeVector;
-   typedef std::vector < INodeVector > INodeSet;
+   using INodeVector = std::vector<int>;
+   using INodeSet = std::vector<INodeVector>;
    INodeSet  iNodeSetSender;
    INodeSet  iNodeSetReceiver;
 
diff --git a/src/cpu/VirtualFluidsCore/Connectors/LocalBlock3DConnector.h b/src/cpu/VirtualFluidsCore/Connectors/LocalBlock3DConnector.h
index 93bb6536d26020a55ad93ad379820ca0266e816d..90790ce7d2e1545bbabb3dcd263fb98c4e05e77c 100644
--- a/src/cpu/VirtualFluidsCore/Connectors/LocalBlock3DConnector.h
+++ b/src/cpu/VirtualFluidsCore/Connectors/LocalBlock3DConnector.h
@@ -49,40 +49,40 @@ public:
    {
 
    }
-   virtual ~LocalBlock3DConnector() {}
-   void sendTransmitterDataSize() {}
-   void receiveTransmitterDataSize() {}
-   virtual void init() = 0;
-   void prepareForReceive() {}
-   void prepareForSend() {}
-   void fillSendVectors() {}
-   virtual void sendVectors()=0;
-   void receiveVectors() {}
+   ~LocalBlock3DConnector() override = default;
+   void sendTransmitterDataSize() override {}
+   void receiveTransmitterDataSize() override {}
+   void init() override = 0;
+   void prepareForReceive() override {}
+   void prepareForSend() override {}
+   void fillSendVectors() override {}
+   void sendVectors() override =0;
+   void receiveVectors() override {}
 
-   void distributeReceiveVectors() {}
+   void distributeReceiveVectors() override {}
 
-   bool isLocalConnector() { return true; }
-   bool isRemoteConnector() { return false; }
-   bool isInterpolationConnectorCF() { return false; }
-   bool isInterpolationConnectorFC() { return false; }
+   bool isLocalConnector() override { return true; }
+   bool isRemoteConnector() override { return false; }
+   bool isInterpolationConnectorCF() override { return false; }
+   bool isInterpolationConnectorFC() override { return false; }
 
    double getSendRecieveTime();
 
-   void prepareForSendX1() {}
-   void prepareForSendX2() {}
-   void prepareForSendX3() {}
+   void prepareForSendX1() override {}
+   void prepareForSendX2() override {}
+   void prepareForSendX3() override {}
 
-   void sendVectorsX1() {}
-   void sendVectorsX2() {}
-   void sendVectorsX3() {}
+   void sendVectorsX1() override {}
+   void sendVectorsX2() override {}
+   void sendVectorsX3() override {}
 
-   void prepareForReceiveX1() {}
-   void prepareForReceiveX2() {}
-   void prepareForReceiveX3() {}
+   void prepareForReceiveX1() override {}
+   void prepareForReceiveX2() override {}
+   void prepareForReceiveX3() override {}
 
-   void receiveVectorsX1() {}
-   void receiveVectorsX2() {}
-   void receiveVectorsX3() {}
+   void receiveVectorsX1() override {}
+   void receiveVectorsX2() override {}
+   void receiveVectorsX3() override {}
 
 protected:
    WPtr<Block3D> from;
diff --git a/src/cpu/VirtualFluidsCore/Connectors/RemoteBlock3DConnector.h b/src/cpu/VirtualFluidsCore/Connectors/RemoteBlock3DConnector.h
index 0956604accf41cc089ec034c27ae10120768847f..95d34f91fa2520d2b477a1f892826f8165616830 100644
--- a/src/cpu/VirtualFluidsCore/Connectors/RemoteBlock3DConnector.h
+++ b/src/cpu/VirtualFluidsCore/Connectors/RemoteBlock3DConnector.h
@@ -23,43 +23,43 @@ public:
       , VectorTransmitterPtr receiver
       , int sendDir);
 
-   bool isLocalConnector();
-   bool isRemoteConnector();
+   bool isLocalConnector() override;
+   bool isRemoteConnector() override;
 
-   virtual void init() = 0;
+   void init() override = 0;
 
-   void sendTransmitterDataSize();
-   void receiveTransmitterDataSize();
+   void sendTransmitterDataSize() override;
+   void receiveTransmitterDataSize() override;
 
-   void prepareForSend();
-   void sendVectors();
+   void prepareForSend() override;
+   void sendVectors() override;
 
-   void prepareForReceive();
-   void receiveVectors();
+   void prepareForReceive() override;
+   void receiveVectors() override;
 
-   virtual void fillSendVectors() = 0;
-   virtual void distributeReceiveVectors() = 0;
+   void fillSendVectors() override = 0;
+   void distributeReceiveVectors() override = 0;
 
-   bool isInterpolationConnectorCF() { return false; }
-   bool isInterpolationConnectorFC() { return false; }
+   bool isInterpolationConnectorCF() override { return false; }
+   bool isInterpolationConnectorFC() override { return false; }
 
    double getSendRecieveTime() { return 0; }
 
-   void prepareForSendX1() {}
-   void prepareForSendX2() {}
-   void prepareForSendX3() {}
+   void prepareForSendX1() override {}
+   void prepareForSendX2() override {}
+   void prepareForSendX3() override {}
 
-   void sendVectorsX1() {}
-   void sendVectorsX2() {}
-   void sendVectorsX3() {}
+   void sendVectorsX1() override {}
+   void sendVectorsX2() override {}
+   void sendVectorsX3() override {}
 
-   void prepareForReceiveX1() {}
-   void prepareForReceiveX2() {}
-   void prepareForReceiveX3() {}
+   void prepareForReceiveX1() override {}
+   void prepareForReceiveX2() override {}
+   void prepareForReceiveX3() override {}
 
-   void receiveVectorsX1() {}
-   void receiveVectorsX2() {}
-   void receiveVectorsX3() {}
+   void receiveVectorsX1() override {}
+   void receiveVectorsX2() override {}
+   void receiveVectorsX3() override {}
 
 protected:
    WPtr<Block3D> block; 
diff --git a/src/cpu/VirtualFluidsCore/Connectors/TransmitterType.h b/src/cpu/VirtualFluidsCore/Connectors/TransmitterType.h
index 851854dffa54f074c8c2a303841b1139589b84c3..27300328c3be08a9a2e9f038f07bf68de916dc20 100644
--- a/src/cpu/VirtualFluidsCore/Connectors/TransmitterType.h
+++ b/src/cpu/VirtualFluidsCore/Connectors/TransmitterType.h
@@ -8,9 +8,9 @@
 #include <PointerDefinitions.h>
 
 
-typedef TbTransmitter< CbVector< LBMReal > > VectorTransmitter;
-typedef VectorTransmitter::value_type  vector_type;
-typedef SPtr< TbTransmitter< CbVector< LBMReal > > > VectorTransmitterPtr;
+using VectorTransmitter = TbTransmitter<CbVector<LBMReal> >;
+using vector_type = VectorTransmitter::value_type;
+using VectorTransmitterPtr = SPtr<TbTransmitter<CbVector<LBMReal> > >;
 
 #endif // TransmitterType_h__
 
diff --git a/src/cpu/VirtualFluidsCore/Data/D3Q27EsoTwist3DSoA.cpp b/src/cpu/VirtualFluidsCore/Data/D3Q27EsoTwist3DSoA.cpp
index a27563d9be2a0ee18b47ca331d93191d939e0440..77da3c462c156e080d763d98ccd36b7d056d03d7 100644
--- a/src/cpu/VirtualFluidsCore/Data/D3Q27EsoTwist3DSoA.cpp
+++ b/src/cpu/VirtualFluidsCore/Data/D3Q27EsoTwist3DSoA.cpp
@@ -3,8 +3,7 @@
 #include "EsoTwistD3Q27System.h"
 
 D3Q27EsoTwist3DSoA::D3Q27EsoTwist3DSoA()
-{
-}
+= default;
 //////////////////////////////////////////////////////////////////////////
 D3Q27EsoTwist3DSoA::D3Q27EsoTwist3DSoA( const size_t& nx1, const size_t& nx2, const size_t& nx3, LBMReal value )
 {
@@ -42,9 +41,7 @@ D3Q27EsoTwist3DSoA::D3Q27EsoTwist3DSoA( const size_t& nx1, const size_t& nx2, co
 }
 //////////////////////////////////////////////////////////////////////////
 D3Q27EsoTwist3DSoA::~D3Q27EsoTwist3DSoA()
-{
-
-}
+= default;
 //////////////////////////////////////////////////////////////////////////
 void D3Q27EsoTwist3DSoA::swap()
 {
@@ -507,7 +504,7 @@ void D3Q27EsoTwist3DSoA::setDistributionInvForDirection(LBMReal f, size_t x1, si
    //}
 }
 //////////////////////////////////////////////////////////////////////////
-LBMReal D3Q27EsoTwist3DSoA::getDistributionInvForDirection(size_t x1, size_t x2, size_t x3, int direction)
+LBMReal D3Q27EsoTwist3DSoA::getDistributionInvForDirection(size_t  /*x1*/, size_t  /*x2*/, size_t  /*x3*/, int  /*direction*/)
 {
    //switch (direction)
    //{
diff --git a/src/cpu/VirtualFluidsCore/Data/D3Q27EsoTwist3DSoA.h b/src/cpu/VirtualFluidsCore/Data/D3Q27EsoTwist3DSoA.h
index 252311bffb7bf1779822c2d911e9d456c4b85e6d..c409b03a6545553e4c2c0bd17bfc2bc0faa9ccc0 100644
--- a/src/cpu/VirtualFluidsCore/Data/D3Q27EsoTwist3DSoA.h
+++ b/src/cpu/VirtualFluidsCore/Data/D3Q27EsoTwist3DSoA.h
@@ -47,35 +47,35 @@ public:
    D3Q27EsoTwist3DSoA();
    D3Q27EsoTwist3DSoA(const size_t& nx1, const size_t& nx2, const size_t& nx3, LBMReal value);
    //////////////////////////////////////////////////////////////////////////
-   ~D3Q27EsoTwist3DSoA();
+   ~D3Q27EsoTwist3DSoA() override;
    //////////////////////////////////////////////////////////////////////////
-   void swap();
+   void swap() override;
    //////////////////////////////////////////////////////////////////////////
-   virtual void getDistribution( LBMReal* const f, size_t x1, size_t x2, size_t x3);
+   void getDistribution( LBMReal* const f, size_t x1, size_t x2, size_t x3) override;
    //////////////////////////////////////////////////////////////////////////
-   virtual void setDistribution(const LBMReal* const f, size_t x1, size_t x2, size_t x3);
+   void setDistribution(const LBMReal* const f, size_t x1, size_t x2, size_t x3) override;
    ////////////////////////////////////////////////////////////////////////
-   virtual void getDistributionInv( LBMReal* const f, size_t x1, size_t x2, size_t x3);
+   void getDistributionInv( LBMReal* const f, size_t x1, size_t x2, size_t x3) override;
    //////////////////////////////////////////////////////////////////////////
-   virtual void setDistributionInv(const LBMReal* const f, size_t x1, size_t x2, size_t x3);
+   void setDistributionInv(const LBMReal* const f, size_t x1, size_t x2, size_t x3) override;
    //////////////////////////////////////////////////////////////////////////
-   virtual void setDistributionForDirection(const LBMReal* const f, size_t x1, size_t x2, size_t x3, unsigned long int direction);
+   void setDistributionForDirection(const LBMReal* const f, size_t x1, size_t x2, size_t x3, unsigned long int direction) override;
    //////////////////////////////////////////////////////////////////////////
-   virtual void setDistributionForDirection(LBMReal f, size_t x1, size_t x2, size_t x3, int direction);
+   void setDistributionForDirection(LBMReal f, size_t x1, size_t x2, size_t x3, int direction) override;
    //////////////////////////////////////////////////////////////////////////
-   virtual LBMReal getDistributionInvForDirection(size_t x1, size_t x2, size_t x3, int direction);
+   LBMReal getDistributionInvForDirection(size_t x1, size_t x2, size_t x3, int direction) override;
    //////////////////////////////////////////////////////////////////////////
-   virtual void setDistributionInvForDirection(const LBMReal* const f, size_t x1, size_t x2, size_t x3, unsigned long int direction);
+   void setDistributionInvForDirection(const LBMReal* const f, size_t x1, size_t x2, size_t x3, unsigned long int direction) override;
    //////////////////////////////////////////////////////////////////////////
-   virtual void setDistributionInvForDirection(LBMReal f, size_t x1, size_t x2, size_t x3, unsigned long int direction);
+   void setDistributionInvForDirection(LBMReal f, size_t x1, size_t x2, size_t x3, unsigned long int direction) override;
    //////////////////////////////////////////////////////////////////////////
-   virtual LBMReal getDistributionForDirection(size_t x1, size_t x2, size_t x3, int direction);
+   LBMReal getDistributionForDirection(size_t x1, size_t x2, size_t x3, int direction) override;
    //////////////////////////////////////////////////////////////////////////
-   size_t getNX1() const;
+   size_t getNX1() const override;
    //////////////////////////////////////////////////////////////////////////
-   size_t getNX2() const;
+   size_t getNX2() const override;
    //////////////////////////////////////////////////////////////////////////
-   size_t getNX3() const;
+   size_t getNX3() const override;
    //////////////////////////////////////////////////////////////////////////
    Distributions getDistributions();
    //////////////////////////////////////////////////////////////////////////
diff --git a/src/cpu/VirtualFluidsCore/Data/D3Q27EsoTwist3DSplittedVector.cpp b/src/cpu/VirtualFluidsCore/Data/D3Q27EsoTwist3DSplittedVector.cpp
index 533f23f6bb2ad24e68e156b53ff9974324c9b2c4..113fd04ce73e162db48eca9396038920bc348321 100644
--- a/src/cpu/VirtualFluidsCore/Data/D3Q27EsoTwist3DSplittedVector.cpp
+++ b/src/cpu/VirtualFluidsCore/Data/D3Q27EsoTwist3DSplittedVector.cpp
@@ -35,8 +35,7 @@
 #include "EsoTwistD3Q27System.h"
 
 D3Q27EsoTwist3DSplittedVector::D3Q27EsoTwist3DSplittedVector()
-{
-}
+= default;
 //////////////////////////////////////////////////////////////////////////
 D3Q27EsoTwist3DSplittedVector::D3Q27EsoTwist3DSplittedVector( size_t nx1, size_t nx2, size_t nx3, LBMReal value )
 {
@@ -44,16 +43,14 @@ D3Q27EsoTwist3DSplittedVector::D3Q27EsoTwist3DSplittedVector( size_t nx1, size_t
    this->NX2 = nx2;
    this->NX3 = nx3;
 
-   this->localDistributions    = CbArray4D<LBMReal,IndexerX4X3X2X1>::CbArray4DPtr(new CbArray4D<LBMReal,IndexerX4X3X2X1>(13, nx1+1, nx2+1, nx3+1, value));
-   this->nonLocalDistributions = CbArray4D<LBMReal,IndexerX4X3X2X1>::CbArray4DPtr(new CbArray4D<LBMReal,IndexerX4X3X2X1>(13, nx1+1, nx2+1, nx3+1, value));
+   this->localDistributions    = std::make_shared<CbArray4D<LBMReal, IndexerX4X3X2X1> >(13, nx1+1, nx2+1, nx3+1, value);
+   this->nonLocalDistributions = std::make_shared<CbArray4D<LBMReal, IndexerX4X3X2X1> >(13, nx1+1, nx2+1, nx3+1, value);
 
-   this->zeroDistributions     = CbArray3D<LBMReal,IndexerX3X2X1>::CbArray3DPtr(new CbArray3D<LBMReal,IndexerX3X2X1>(nx1, nx2, nx3, value));
+   this->zeroDistributions     = std::make_shared<CbArray3D<LBMReal, IndexerX3X2X1> >(nx1, nx2, nx3, value);
 }
 //////////////////////////////////////////////////////////////////////////
 D3Q27EsoTwist3DSplittedVector::~D3Q27EsoTwist3DSplittedVector()
-{
-
-}
+= default;
 //////////////////////////////////////////////////////////////////////////
 void D3Q27EsoTwist3DSplittedVector::swap()
 {
diff --git a/src/cpu/VirtualFluidsCore/Data/D3Q27EsoTwist3DSplittedVector.h b/src/cpu/VirtualFluidsCore/Data/D3Q27EsoTwist3DSplittedVector.h
index f555aabad86f5708c7e3bd35d824322a4245dff8..1e92809c0c429b0d72bc29e17806b17795fc4a67 100644
--- a/src/cpu/VirtualFluidsCore/Data/D3Q27EsoTwist3DSplittedVector.h
+++ b/src/cpu/VirtualFluidsCore/Data/D3Q27EsoTwist3DSplittedVector.h
@@ -51,35 +51,35 @@ public:
    //! \param value initialisation value
    D3Q27EsoTwist3DSplittedVector(size_t nx1, size_t nx2, size_t nx3, LBMReal value);
    //////////////////////////////////////////////////////////////////////////
-   ~D3Q27EsoTwist3DSplittedVector();
+   ~D3Q27EsoTwist3DSplittedVector() override;
    //////////////////////////////////////////////////////////////////////////
-   void swap();
+   void swap() override;
    //////////////////////////////////////////////////////////////////////////
-   virtual void getDistribution( LBMReal* const f, size_t x1, size_t x2, size_t x3);
+   void getDistribution( LBMReal* const f, size_t x1, size_t x2, size_t x3) override;
    //////////////////////////////////////////////////////////////////////////
-   virtual void setDistribution(const LBMReal* const f, size_t x1, size_t x2, size_t x3);
+   void setDistribution(const LBMReal* const f, size_t x1, size_t x2, size_t x3) override;
    ////////////////////////////////////////////////////////////////////////
-   virtual void getDistributionInv( LBMReal* const f, size_t x1, size_t x2, size_t x3);
+   void getDistributionInv( LBMReal* const f, size_t x1, size_t x2, size_t x3) override;
    //////////////////////////////////////////////////////////////////////////
-   virtual void setDistributionInv(const LBMReal* const f, size_t x1, size_t x2, size_t x3);
+   void setDistributionInv(const LBMReal* const f, size_t x1, size_t x2, size_t x3) override;
    //////////////////////////////////////////////////////////////////////////
-   virtual void setDistributionForDirection(const LBMReal* const f, size_t x1, size_t x2, size_t x3, unsigned long int direction);
+   void setDistributionForDirection(const LBMReal* const f, size_t x1, size_t x2, size_t x3, unsigned long int direction) override;
    //////////////////////////////////////////////////////////////////////////
-   virtual void setDistributionForDirection(LBMReal f, size_t x1, size_t x2, size_t x3, int direction);
+   void setDistributionForDirection(LBMReal f, size_t x1, size_t x2, size_t x3, int direction) override;
    //////////////////////////////////////////////////////////////////////////
-   virtual LBMReal getDistributionInvForDirection(size_t x1, size_t x2, size_t x3, int direction);
+   LBMReal getDistributionInvForDirection(size_t x1, size_t x2, size_t x3, int direction) override;
    //////////////////////////////////////////////////////////////////////////
-   virtual void setDistributionInvForDirection(const LBMReal* const f, size_t x1, size_t x2, size_t x3, unsigned long int direction);
+   void setDistributionInvForDirection(const LBMReal* const f, size_t x1, size_t x2, size_t x3, unsigned long int direction) override;
    //////////////////////////////////////////////////////////////////////////
-   virtual void setDistributionInvForDirection(LBMReal f, size_t x1, size_t x2, size_t x3, unsigned long int direction);
+   void setDistributionInvForDirection(LBMReal f, size_t x1, size_t x2, size_t x3, unsigned long int direction) override;
    //////////////////////////////////////////////////////////////////////////
-   virtual LBMReal getDistributionForDirection(size_t x1, size_t x2, size_t x3, int direction);
+   LBMReal getDistributionForDirection(size_t x1, size_t x2, size_t x3, int direction) override;
    //////////////////////////////////////////////////////////////////////////
-   size_t getNX1() const;
+   size_t getNX1() const override;
    //////////////////////////////////////////////////////////////////////////
-   size_t getNX2() const;
+   size_t getNX2() const override;
    //////////////////////////////////////////////////////////////////////////
-   size_t getNX3() const;
+   size_t getNX3() const override;
    //////////////////////////////////////////////////////////////////////////
    CbArray4D<LBMReal,IndexerX4X3X2X1>::CbArray4DPtr getLocalDistributions();
    //////////////////////////////////////////////////////////////////////////
diff --git a/src/cpu/VirtualFluidsCore/Data/DataSet3D.h b/src/cpu/VirtualFluidsCore/Data/DataSet3D.h
index 095708b4aeddc3a411af077261e9c0872299343f..66fefb15ad256b9f0161dae938fe58795d5911f8 100644
--- a/src/cpu/VirtualFluidsCore/Data/DataSet3D.h
+++ b/src/cpu/VirtualFluidsCore/Data/DataSet3D.h
@@ -40,9 +40,9 @@
 #include "basics/container/CbArray3D.h"
 #include "DistributionArray3D.h"
 
-typedef CbArray4D<LBMReal,IndexerX4X3X2X1> AverageValuesArray3D;
-typedef CbArray4D<LBMReal,IndexerX4X3X2X1> ShearStressValuesArray3D;
-typedef CbArray3D<LBMReal, IndexerX3X2X1> RelaxationFactorArray3D;
+using AverageValuesArray3D = CbArray4D<LBMReal, IndexerX4X3X2X1>;
+using ShearStressValuesArray3D = CbArray4D<LBMReal, IndexerX4X3X2X1>;
+using RelaxationFactorArray3D = CbArray3D<LBMReal, IndexerX3X2X1>;
 
 //! A class provides an interface for data structures in the kernel.
 class DataSet3D
diff --git a/src/cpu/VirtualFluidsCore/Data/DistributionArray3D.h b/src/cpu/VirtualFluidsCore/Data/DistributionArray3D.h
index c72f358cddf6fd36b92e4b7f681ef438f37b1f72..89da1577ffe6c57f9ef77c96dec4dd92a73c569a 100644
--- a/src/cpu/VirtualFluidsCore/Data/DistributionArray3D.h
+++ b/src/cpu/VirtualFluidsCore/Data/DistributionArray3D.h
@@ -6,8 +6,9 @@
 class DistributionArray3D
 {
 public:
-   DistributionArray3D() {};
-   virtual ~DistributionArray3D(){};
+   DistributionArray3D() = default;;
+   virtual ~DistributionArray3D()= default;;
+
    virtual size_t getNX1() const = 0;
    virtual size_t getNX2() const = 0;
    virtual size_t getNX3() const = 0;
diff --git a/src/cpu/VirtualFluidsCore/Data/EsoTwist3D.h b/src/cpu/VirtualFluidsCore/Data/EsoTwist3D.h
index 87c1639bf85a9b9e12f2787280f98375050bc6b4..2e0475f1d76faa992431d1e8ebbeb64760178e13 100644
--- a/src/cpu/VirtualFluidsCore/Data/EsoTwist3D.h
+++ b/src/cpu/VirtualFluidsCore/Data/EsoTwist3D.h
@@ -50,38 +50,38 @@ class EsoTwistPlusD3Q19UnrollArray{};
 class EsoTwist3D : public DistributionArray3D
 {
 public:
-   EsoTwist3D(){};
-   virtual ~EsoTwist3D(){};
+   EsoTwist3D()= default;;
+   ~EsoTwist3D() override= default;;
    //////////////////////////////////////////////////////////////////////////
-   virtual void swap() = 0;
+   void swap() override = 0;
    //////////////////////////////////////////////////////////////////////////
-   virtual void getDistribution(LBMReal* const f, size_t x1, size_t x2, size_t x3) = 0;
+   void getDistribution(LBMReal* const f, size_t x1, size_t x2, size_t x3) override = 0;
    //////////////////////////////////////////////////////////////////////////
-   virtual void setDistribution(const LBMReal* const f, size_t x1, size_t x2, size_t x3) = 0;
+   void setDistribution(const LBMReal* const f, size_t x1, size_t x2, size_t x3) override = 0;
    ////////////////////////////////////////////////////////////////////////
-   virtual void getDistributionInv( LBMReal* const f, size_t x1, size_t x2, size_t x3) = 0;
+   void getDistributionInv( LBMReal* const f, size_t x1, size_t x2, size_t x3) override = 0;
    //////////////////////////////////////////////////////////////////////////
-   virtual void setDistributionInv(const LBMReal* const f, size_t x1, size_t x2, size_t x3) = 0;
+   void setDistributionInv(const LBMReal* const f, size_t x1, size_t x2, size_t x3) override = 0;
    //////////////////////////////////////////////////////////////////////////
-   virtual void setDistributionForDirection(const LBMReal* const f, size_t x1, size_t x2, size_t x3, unsigned long int direction) = 0;
+   void setDistributionForDirection(const LBMReal* const f, size_t x1, size_t x2, size_t x3, unsigned long int direction) override = 0;
    //////////////////////////////////////////////////////////////////////////
-   virtual void setDistributionForDirection(LBMReal f, size_t x1, size_t x2, size_t x3, int direction) = 0;
+   void setDistributionForDirection(LBMReal f, size_t x1, size_t x2, size_t x3, int direction) override = 0;
    //////////////////////////////////////////////////////////////////////////
    //virtual void getDistributionInvForDirection(LBMReal* const& f, const size_t& x1, const size_t& x2, const size_t& x3, const unsigned long int& direction) = 0;
    //////////////////////////////////////////////////////////////////////////
-   virtual LBMReal getDistributionInvForDirection(size_t x1, size_t x2, size_t x3, int direction) = 0;
+   LBMReal getDistributionInvForDirection(size_t x1, size_t x2, size_t x3, int direction) override = 0;
    //////////////////////////////////////////////////////////////////////////
-   virtual void setDistributionInvForDirection(const LBMReal* const f, size_t x1, size_t x2, size_t x3, unsigned long int direction) = 0;
+   void setDistributionInvForDirection(const LBMReal* const f, size_t x1, size_t x2, size_t x3, unsigned long int direction) override = 0;
    //////////////////////////////////////////////////////////////////////////
-   virtual void setDistributionInvForDirection(LBMReal f, size_t x1, size_t x2, size_t x3, unsigned long int direction) = 0;
+   void setDistributionInvForDirection(LBMReal f, size_t x1, size_t x2, size_t x3, unsigned long int direction) override = 0;
    //////////////////////////////////////////////////////////////////////////
-   virtual LBMReal getDistributionForDirection(size_t x1, size_t x2, size_t x3, int direction) = 0;
+   LBMReal getDistributionForDirection(size_t x1, size_t x2, size_t x3, int direction) override = 0;
    //////////////////////////////////////////////////////////////////////////
-   virtual size_t getNX1() const = 0;
+   size_t getNX1() const override = 0;
    //////////////////////////////////////////////////////////////////////////
-   virtual size_t getNX2() const = 0;
+   size_t getNX2() const override = 0;
    //////////////////////////////////////////////////////////////////////////
-   virtual size_t getNX3() const = 0;
+   size_t getNX3() const override = 0;
    //////////////////////////////////////////////////////////////////////////
   
 };
diff --git a/src/cpu/VirtualFluidsCore/Data/VoidData3D.h b/src/cpu/VirtualFluidsCore/Data/VoidData3D.h
index d1f22710167f0b23f3dfd816b0147833cbd113a0..b4a9b2ff6010c7c2997691a435329fd14156ff5d 100644
--- a/src/cpu/VirtualFluidsCore/Data/VoidData3D.h
+++ b/src/cpu/VirtualFluidsCore/Data/VoidData3D.h
@@ -7,28 +7,28 @@
 class VoidData3D : public EsoTwist3D
 {
 public:
-   VoidData3D() {};
-   VoidData3D (size_t nx1, size_t nx2, size_t nx3, LBMReal value) 
+   VoidData3D() = default;;
+   VoidData3D (size_t nx1, size_t nx2, size_t nx3, LBMReal  /*value*/) 
    {
       this->NX1 = nx1;
       this->NX2 = nx2;
       this->NX3 = nx3;
    }
-    ~VoidData3D() {};
-    size_t getNX1() const { return NX1;}
-    size_t getNX2() const { return NX2;}
-    size_t getNX3() const { return NX3;}
-    void getDistribution(LBMReal* const f, size_t x1, size_t x2, size_t x3) {}
-    void setDistribution(const LBMReal* const f, size_t x1, size_t x2, size_t x3){}
-    void getDistributionInv(LBMReal* const f, size_t x1, size_t x2, size_t x3) {}
-    void setDistributionInv(const LBMReal* const f, size_t x1, size_t x2, size_t x3) {}
-    void setDistributionForDirection(const LBMReal* const f, size_t x1, size_t x2, size_t x3, unsigned long int direction) {}
-    void setDistributionForDirection(LBMReal f, size_t x1, size_t x2, size_t x3, int direction) {}
-    LBMReal getDistributionInvForDirection(size_t x1, size_t x2, size_t x3, int direction) {return 0.0;}
-    void setDistributionInvForDirection(const LBMReal* const f, size_t x1, size_t x2, size_t x3, unsigned long int direction) {}
-    void setDistributionInvForDirection(LBMReal f, size_t x1, size_t x2, size_t x3, unsigned long int direction) {}
-    LBMReal getDistributionForDirection(size_t x1, size_t x2, size_t x3, int direction) {return 0.0;}
-    void swap() {}
+    ~VoidData3D() override = default;;
+    size_t getNX1() const override { return NX1;}
+    size_t getNX2() const override { return NX2;}
+    size_t getNX3() const override { return NX3;}
+    void getDistribution(LBMReal* const f, size_t x1, size_t x2, size_t x3) override {}
+    void setDistribution(const LBMReal* const f, size_t x1, size_t x2, size_t x3) override{}
+    void getDistributionInv(LBMReal* const f, size_t x1, size_t x2, size_t x3) override {}
+    void setDistributionInv(const LBMReal* const f, size_t x1, size_t x2, size_t x3) override {}
+    void setDistributionForDirection(const LBMReal* const f, size_t x1, size_t x2, size_t x3, unsigned long int direction) override {}
+    void setDistributionForDirection(LBMReal f, size_t x1, size_t x2, size_t x3, int direction) override {}
+    LBMReal getDistributionInvForDirection(size_t  /*x1*/, size_t  /*x2*/, size_t  /*x3*/, int  /*direction*/) override {return 0.0;}
+    void setDistributionInvForDirection(const LBMReal* const f, size_t x1, size_t x2, size_t x3, unsigned long int direction) override {}
+    void setDistributionInvForDirection(LBMReal f, size_t x1, size_t x2, size_t x3, unsigned long int direction) override {}
+    LBMReal getDistributionForDirection(size_t  /*x1*/, size_t  /*x2*/, size_t  /*x3*/, int  /*direction*/) override {return 0.0;}
+    void swap() override {}
 protected:
 private:
    size_t NX1, NX2, NX3;
diff --git a/src/cpu/VirtualFluidsCore/Grid/BasicCalculator.cpp b/src/cpu/VirtualFluidsCore/Grid/BasicCalculator.cpp
index d0127b372cd2969f9aef6a5517b904ca6e01d4eb..55c35a9cd465799f7877d88a3f4c4a81524f518a 100644
--- a/src/cpu/VirtualFluidsCore/Grid/BasicCalculator.cpp
+++ b/src/cpu/VirtualFluidsCore/Grid/BasicCalculator.cpp
@@ -52,11 +52,6 @@ BasicCalculator::BasicCalculator(SPtr<Grid3D> grid, SPtr<UbScheduler> additional
    Calculator(grid, additionalGhostLayerUpdateScheduler, numberOfTimeSteps)
 {
 
-}
-//////////////////////////////////////////////////////////////////////////
-BasicCalculator::~BasicCalculator()
-{
-
 }
 //////////////////////////////////////////////////////////////////////////
 void BasicCalculator::calculate()
diff --git a/src/cpu/VirtualFluidsCore/Grid/BasicCalculator.h b/src/cpu/VirtualFluidsCore/Grid/BasicCalculator.h
index 0e681746156f7cbbec5216f7eb0bb10fe8fa5c07..7585f53ce3651c8d80328c5cc3a0821e5e7cda43 100644
--- a/src/cpu/VirtualFluidsCore/Grid/BasicCalculator.h
+++ b/src/cpu/VirtualFluidsCore/Grid/BasicCalculator.h
@@ -46,8 +46,8 @@ class BasicCalculator : public Calculator
 {
 public:
    BasicCalculator(SPtr<Grid3D> grid, SPtr<UbScheduler> additionalGhostLayerUpdateScheduler, int numberOfTimeSteps);
-   virtual ~BasicCalculator();
-   virtual void calculate();
+   ~BasicCalculator() override = default;
+   void calculate() override;
 
 protected:
    void calculateBlocks(int startLevel, int maxInitLevel, int calcStep);
diff --git a/src/cpu/VirtualFluidsCore/Grid/Block3D.cpp b/src/cpu/VirtualFluidsCore/Grid/Block3D.cpp
index f11cfde0d0b69cc60862ab43d9afdf21d4dc5dae..23fc3903bfa7877211ff9e47d5993f0f7b39d742 100644
--- a/src/cpu/VirtualFluidsCore/Grid/Block3D.cpp
+++ b/src/cpu/VirtualFluidsCore/Grid/Block3D.cpp
@@ -39,38 +39,19 @@
 
 
 int Block3D::counter = 0;
-//////////////////////////////////////////////////////////////////////////
-Block3D::Block3D() : x1(0),x2(0),x3(0)
-                     ,active(true)
-                     ,globalID(-1)
-                     ,rank(-1),part(-1)
-                     ,interpolationFlagCF(0)
-                     ,interpolationFlagFC(0)
-                     ,level(-1)
-                     ,bundle(-1)
-                     ,lrank(-1)
-                     ,localID(-1)
-{
-}
+
 //////////////////////////////////////////////////////////////////////////
 Block3D::Block3D(int x1, int x2, int x3, int level)
-               : x1(x1), x2(x2), x3(x3)
-               ,active(true)
-               ,globalID(-1)
-               ,rank(0),part(0)
-               ,interpolationFlagCF(0)
-               ,interpolationFlagFC(0)
-               ,level(level)
-               ,bundle(0)
-               ,lrank(-1)
-               ,localID(-1)
+               : x1(x1), x2(x2), x3(x3),
+               rank(0),part(0),
+               level(level), bundle(0)
+               
 {
    globalID = counter++;
 }
 //////////////////////////////////////////////////////////////////////////
 Block3D::~Block3D()
-{
-}
+= default;
 //////////////////////////////////////////////////////////////////////////
 bool Block3D::operator==(const Block3D& src) const
 {
@@ -521,7 +502,7 @@ void Block3D::addWeight( int rank, int weight )
 //////////////////////////////////////////////////////////////////////////
 void Block3D::addWeightForAll( int weight )
 {
-   typedef std::map<int, int> wMap;
+   using wMap = std::map<int, int>;
    for (wMap::value_type &w : this->weight)
    {
       w.second += weight;
diff --git a/src/cpu/VirtualFluidsCore/Grid/Block3D.h b/src/cpu/VirtualFluidsCore/Grid/Block3D.h
index 674517f187e61bc29daa753464f8b6c97525aa27..0912f82ace8aed11bb04be55d08e0c579b1c63df 100644
--- a/src/cpu/VirtualFluidsCore/Grid/Block3D.h
+++ b/src/cpu/VirtualFluidsCore/Grid/Block3D.h
@@ -47,7 +47,7 @@ class ILBMKernel;
 class Block3D
 {
 public:
-   Block3D();
+   Block3D() = default;
    Block3D(int x1, int x2, int x3, int level);
    virtual ~Block3D();
    bool operator==(const Block3D& src) const;
@@ -137,29 +137,29 @@ public:
    std::string toString() ;
 
    static int getMaxGlobalID() { return counter; }
-   static void setMaxGlobalID(int c) { counter = 0; }
+   static void setMaxGlobalID(int  /*c*/) { counter = 0; } // FIXME ???
 
 private:
-  int   x1;
-  int   x2;
-  int   x3;
+  int   x1{0};
+  int   x2{0};
+  int   x3{0};
 
-  bool active;
+  bool active{true};
 
-  int interpolationFlagCF;
-  int interpolationFlagFC;
+  int interpolationFlagCF{0};
+  int interpolationFlagFC{0};
 
   SPtr<LBMKernel> kernel;
   std::vector<SPtr<Block3DConnector> > connectors;
   std::map<int, int> weight;
 
-  int bundle;
-  int rank;
-  int lrank;
-  int globalID;
-  int localID;
-  int part;
-  int level;
+  int bundle{-1};
+  int rank{-1};
+  int lrank{-1};
+  int globalID{-1};
+  int localID{-1};
+  int part{-1};
+  int level{-1};
   static int counter;
 
 };
diff --git a/src/cpu/VirtualFluidsCore/Grid/Calculator.cpp b/src/cpu/VirtualFluidsCore/Grid/Calculator.cpp
index 9a314f0668da70149023c56ed4e458aee969244e..5fc3f8d42117876076e7c5e0185f3815346c6ab6 100644
--- a/src/cpu/VirtualFluidsCore/Grid/Calculator.cpp
+++ b/src/cpu/VirtualFluidsCore/Grid/Calculator.cpp
@@ -76,9 +76,7 @@ Calculator::Calculator(SPtr<Grid3D> grid, SPtr<UbScheduler> additionalGhostLayer
 }
 //////////////////////////////////////////////////////////////////////////
 Calculator::~Calculator()
-{
-
-}
+= default;
 //////////////////////////////////////////////////////////////////////////
 void Calculator::addCoProcessor(SPtr<CoProcessor> coProcessor)
 {
@@ -154,9 +152,9 @@ void Calculator::initRemoteConnectors()
       initConnectors(remoteConns[l]);
       if (l != maxLevel)
       {
-		 for(int i = 0; i < remoteInterConnsCF[l].size(); i++)
+		 for(size_t i = 0; i < remoteInterConnsCF[l].size(); i++)
 			remoteInterConns[l].push_back(remoteInterConnsCF[l][i]);
-		 for(int i = 0; i < remoteInterConnsFC[l+1].size(); i++)
+		 for(size_t i = 0; i < remoteInterConnsFC[l+1].size(); i++)
 	      remoteInterConns[l].push_back(remoteInterConnsFC[l+1][i]);
       }
    }
diff --git a/src/cpu/VirtualFluidsCore/Grid/Grid3D.cpp b/src/cpu/VirtualFluidsCore/Grid/Grid3D.cpp
index c80f0b7d87c09d9d5c3c20a3fd7c43e7e31337cf..3cb76a8b263be5fe02d3c1667b9c8b8368147b50 100644
--- a/src/cpu/VirtualFluidsCore/Grid/Grid3D.cpp
+++ b/src/cpu/VirtualFluidsCore/Grid/Grid3D.cpp
@@ -49,38 +49,14 @@
 
 using namespace std;
 
-Grid3D::Grid3D() :
-   rank(0),
-   bundle(0),
-   orgDeltaX(1.0),
-   periodicX1(false),
-   periodicX2(false),
-   periodicX3(false),
-   timeStep(0.0),
-   blockNx1(0),
-   blockNx2(0),
-   blockNx3(0),
-   nx1(0),
-   nx2(0),
-   nx3(0)
+Grid3D::Grid3D() 
+   
 {
    levelSet.resize(Grid3DSystem::MAXLEVEL + 1);
 }
 //////////////////////////////////////////////////////////////////////////
-Grid3D::Grid3D(SPtr<Communicator> comm) :
-   rank(0),
-   bundle(0),
-   orgDeltaX(1.0),
-   periodicX1(false),
-   periodicX2(false),
-   periodicX3(false),
-   timeStep(0.0),
-   blockNx1(0),
-   blockNx2(0),
-   blockNx3(0),
-   nx1(0),
-   nx2(0),
-   nx3(0)
+Grid3D::Grid3D(SPtr<Communicator> comm) 
+   
 {
    levelSet.resize(Grid3DSystem::MAXLEVEL + 1);
    bundle = comm->getBundleID();
@@ -88,13 +64,7 @@ Grid3D::Grid3D(SPtr<Communicator> comm) :
 }
 //////////////////////////////////////////////////////////////////////////
 Grid3D::Grid3D(SPtr<Communicator> comm, int blockNx1, int blockNx2, int blockNx3, int gridNx1, int gridNx2, int gridNx3) :
-   rank(0),
-   bundle(0),
-   orgDeltaX(1.0),
-   periodicX1(false),
-   periodicX2(false),
-   periodicX3(false),
-   timeStep(0.0),
+   
    blockNx1(blockNx1),
    blockNx2(blockNx2),
    blockNx3(blockNx2),
@@ -105,7 +75,7 @@ Grid3D::Grid3D(SPtr<Communicator> comm, int blockNx1, int blockNx2, int blockNx3
    levelSet.resize(Grid3DSystem::MAXLEVEL + 1);
    bundle = comm->getBundleID();
    rank = comm->getProcessID();
-   trafo = SPtr<CoordinateTransformation3D>(new CoordinateTransformation3D(0.0, 0.0, 0.0, (double)blockNx1, (double)blockNx2, (double)blockNx3));
+   trafo = std::make_shared<CoordinateTransformation3D>(0.0, 0.0, 0.0, (double)blockNx1, (double)blockNx2, (double)blockNx3);
    UbTupleInt3 minInd(0, 0, 0);
    UbTupleInt3 maxInd(gridNx1, gridNx2, gridNx3);
    this->fillExtentWithBlocks(minInd, maxInd);
@@ -354,14 +324,14 @@ bool Grid3D::expandBlock(int ix1, int ix2, int ix3, int level)
    int bottom = ix3 << 1;
    int top = bottom + 1;
 
-   SPtr<Block3D> blockBSW = SPtr<Block3D>(new Block3D(west, south, bottom, l));
-   SPtr<Block3D> blockBSE = SPtr<Block3D>(new Block3D(east, south, bottom, l));
-   SPtr<Block3D> blockBNW = SPtr<Block3D>(new Block3D(west, north, bottom, l));
-   SPtr<Block3D> blockBNE = SPtr<Block3D>(new Block3D(east, north, bottom, l));
-   SPtr<Block3D> blockTSW = SPtr<Block3D>(new Block3D(west, south, top, l));
-   SPtr<Block3D> blockTSE = SPtr<Block3D>(new Block3D(east, south, top, l));
-   SPtr<Block3D> blockTNW = SPtr<Block3D>(new Block3D(west, north, top, l));
-   SPtr<Block3D> blockTNE = SPtr<Block3D>(new Block3D(east, north, top, l));
+   auto blockBSW = std::make_shared<Block3D>(west, south, bottom, l);
+   auto blockBSE = std::make_shared<Block3D>(east, south, bottom, l);
+   auto blockBNW = std::make_shared<Block3D>(west, north, bottom, l);
+   auto blockBNE = std::make_shared<Block3D>(east, north, bottom, l);
+   auto blockTSW = std::make_shared<Block3D>(west, south, top, l);
+   auto blockTSE = std::make_shared<Block3D>(east, south, top, l);
+   auto blockTNW = std::make_shared<Block3D>(west, north, top, l);
+   auto blockTNE = std::make_shared<Block3D>(east, north, top, l);
 
    if (!this->deleteBlock(ix1, ix2, ix3, level))
       throw UbException(UB_EXARGS, "could not delete block");
@@ -429,7 +399,7 @@ SPtr<Block3D> Grid3D::collapseBlock(int fix1, int fix2, int fix3, int flevel, in
    /*TNE*/fineBlocks[6] = this->getBlock(fx1[1], fx2[1], fx3[1], flevel);
    /*TNW*/fineBlocks[7] = this->getBlock(fx1[0], fx2[1], fx3[1], flevel);
 
-   SPtr<Block3D> cblock = SPtr<Block3D>(new Block3D(cix1, cix2, cix3, clevel));
+   auto cblock = std::make_shared<Block3D>(cix1, cix2, cix3, clevel);
 
    for (int i = 0; i < 2; i++)
       for (int k = 0; k < 2; k++)
@@ -651,11 +621,12 @@ UbTupleDouble3 Grid3D::getBlockWorldCoordinates(int blockX1Index, int blockX2Ind
    double x2 = (double)blockX2Index * c1oShiftedLevel;
    double x3 = (double)blockX3Index * c1oShiftedLevel;
 
-   if (!trafo) return UbTupleDouble3(x1, x2, x3);
+   if (!trafo)
+       return { x1, x2, x3 };
 
-   return UbTupleDouble3(trafo->transformBackwardToX1Coordinate(x1, x2, x3)
+   return {trafo->transformBackwardToX1Coordinate(x1, x2, x3)
       , trafo->transformBackwardToX2Coordinate(x1, x2, x3)
-      , trafo->transformBackwardToX3Coordinate(x1, x2, x3));
+      , trafo->transformBackwardToX3Coordinate(x1, x2, x3) };
 }
 //////////////////////////////////////////////////////////////////////////
 //double Grid3D::getDeltaT(SPtr<Block3D> block) const 
diff --git a/src/cpu/VirtualFluidsCore/Grid/Grid3D.h b/src/cpu/VirtualFluidsCore/Grid/Grid3D.h
index 77e250439bfe2a3207b49b9e2e7ad59ad7e33ba7..c91dca4a0410cf2cffaeebfd2ce8cf46173860de 100644
--- a/src/cpu/VirtualFluidsCore/Grid/Grid3D.h
+++ b/src/cpu/VirtualFluidsCore/Grid/Grid3D.h
@@ -59,17 +59,17 @@ class Interactor3D;
 class Grid3D : public enableSharedFromThis<Grid3D>
 {
 public:
-   typedef UbKeys::Key3<int>                  Block3DKey;
-   typedef std::map< Block3DKey, SPtr<Block3D> > Block3DMap;
-   typedef std::map< int, SPtr<Block3D> >    BlockIDMap;
-   typedef std::vector<Block3DMap>        LevelSet;
-   typedef std::vector<SPtr<Interactor3D> >   Interactor3DSet;
+   using Block3DKey = UbKeys::Key3<int>;
+   using Block3DMap = std::map<Block3DKey, SPtr<Block3D> >;
+   using BlockIDMap = std::map<int, SPtr<Block3D> >;
+   using LevelSet = std::vector<Block3DMap>;
+   using Interactor3DSet = std::vector<SPtr<Interactor3D> >;
 
 public:
    Grid3D();
    Grid3D(SPtr<Communicator> comm);
    Grid3D(SPtr<Communicator> comm, int blockNx1, int blockNx2, int blockNx3, int gridNx1, int gridNx2, int gridNx3);
-   virtual ~Grid3D(){}
+   virtual ~Grid3D() = default;
    //////////////////////////////////////////////////////////////////////////
    //blocks control
    void addBlock(SPtr<Block3D> block);
@@ -252,25 +252,25 @@ private:
    BlockIDMap blockIdMap;
    Interactor3DSet interactors;
 
-   int rank;
-   int bundle;
+   int rank{0};
+   int bundle{0};
    
-   bool periodicX1;
-   bool periodicX2;
-   bool periodicX3;
+   bool periodicX1{false};
+   bool periodicX2{false};
+   bool periodicX3{false};
 
-   int blockNx1;    
-   int blockNx2;    
-   int blockNx3; 
+   int blockNx1{0};    
+   int blockNx2{0};    
+   int blockNx3{0}; 
 
-   int nx1;    
-   int nx2;    
-   int nx3;    
+   int nx1{0};    
+   int nx2{0};    
+   int nx3{0};    
 
    SPtr<CoordinateTransformation3D> trafo;
-   double orgDeltaX;
+   double orgDeltaX{1.0};
 
-   double timeStep;
+   double timeStep{0.0};
    
 };
 
diff --git a/src/cpu/VirtualFluidsCore/Interactors/D3Q27Interactor.cpp b/src/cpu/VirtualFluidsCore/Interactors/D3Q27Interactor.cpp
index 7e5b482297cbdff20fea571339e9f91682eef7f6..bc77cedde86a4aa83bb1328cad15a3e72f71af31 100644
--- a/src/cpu/VirtualFluidsCore/Interactors/D3Q27Interactor.cpp
+++ b/src/cpu/VirtualFluidsCore/Interactors/D3Q27Interactor.cpp
@@ -84,9 +84,7 @@ D3Q27Interactor::D3Q27Interactor(SPtr<GbObject3D> geoObject3D, SPtr<Grid3D> grid
 }
 //////////////////////////////////////////////////////////////////////////
 D3Q27Interactor::~D3Q27Interactor()
-{
-
-}
+= default;
 //////////////////////////////////////////////////////////////////////////
 void D3Q27Interactor::initRayVectors()
 {
@@ -324,7 +322,7 @@ bool D3Q27Interactor::setDifferencesToGbObject3D(const SPtr<Block3D> block)
                            bc = bcArray->getBC(ix1,ix2,ix3);
                            if(!bc)
                            {
-                              bc = SPtr<BoundaryConditions>(new BoundaryConditions);
+                              bc = std::make_shared<BoundaryConditions>();
                               bcArray->setBC(ix1,ix2,ix3,bc);
                            }
 
@@ -469,7 +467,7 @@ bool D3Q27Interactor::setDifferencesToGbObject3D(const SPtr<Block3D> block)
                               bc = bcArray->getBC(ix1,ix2,ix3);
                               if(!bc)
                               {
-                                 bc = SPtr<BoundaryConditions>(new BoundaryConditions);
+                                 bc = std::make_shared<BoundaryConditions>();
                                  bcArray->setBC(ix1,ix2,ix3,bc);
                               }
                               for(int index=(int)bcAdapters.size()-1; index>=0; --index)
diff --git a/src/cpu/VirtualFluidsCore/Interactors/D3Q27Interactor.h b/src/cpu/VirtualFluidsCore/Interactors/D3Q27Interactor.h
index 6ecb10f02c86af013d6102e5a698486084bb8e67..d0c16b2a5799dab42788b1ec3f11c2cd3549a8ed 100644
--- a/src/cpu/VirtualFluidsCore/Interactors/D3Q27Interactor.h
+++ b/src/cpu/VirtualFluidsCore/Interactors/D3Q27Interactor.h
@@ -53,8 +53,8 @@ class Block3D;
 class Grid3D;
 class GbObject3D;
 
-typedef std::map<SPtr<Block3D>, std::set< std::vector<int> > > BcNodeIndicesMap;
-typedef std::map<SPtr<Block3D>, std::set< UbTupleInt3 > > SolidNodeIndicesMap;
+using BcNodeIndicesMap = std::map<SPtr<Block3D>, std::set< std::vector<int> > >;
+using SolidNodeIndicesMap = std::map<SPtr<Block3D>, std::set<UbTupleInt3> >;
 
 //! \brief A specialized class for grid generation.
 //! \details Support standard geometric primitives.
@@ -66,7 +66,7 @@ public:
    D3Q27Interactor(SPtr<GbObject3D> geoObject3D, SPtr<Grid3D> grid, SPtr<BCAdapter> bcAdapter,  int type);
    D3Q27Interactor(SPtr<GbObject3D> geoObject3D, SPtr<Grid3D> grid, SPtr<BCAdapter> bcAdapter,  int type, Interactor3D::Accuracy a);
 
-   virtual ~D3Q27Interactor();
+   ~D3Q27Interactor() override;
 
    void setRelevantForForces(const bool& value) {  this->relevantForForces = value; }
    bool isRelevantForForces() { return this->relevantForForces; }
@@ -75,15 +75,15 @@ public:
    void deleteBCAdapter() { bcAdapters.clear(); }
 
  
-   virtual void initInteractor(const double& timeStep=0);
-   void updateInteractor(const double& timestep=0); 
+   void initInteractor(const double& timeStep=0) override;
+   void updateInteractor(const double& timestep=0) override; 
 
    void setReinitWithStoredQs(bool reinitWithStoredQsFlag) { this->reinitWithStoredQsFlag = reinitWithStoredQsFlag; }
    
-   void removeSolidBlocks() { Interactor3D::removeSolidBlocks(); solidNodeIndicesMap.clear(); }
-   void removeBcBlocks() { Interactor3D::removeBcBlocks(); bcNodeIndicesMap.clear(); }
+   void removeSolidBlocks() override { Interactor3D::removeSolidBlocks(); solidNodeIndicesMap.clear(); }
+   void removeBcBlocks() override { Interactor3D::removeBcBlocks(); bcNodeIndicesMap.clear(); }
 
-   bool setDifferencesToGbObject3D(const SPtr<Block3D> block);
+   bool setDifferencesToGbObject3D(const SPtr<Block3D> block) override;
 
    ObObject* clone() { throw UbException(UB_EXARGS,"not implemented");	}
 
diff --git a/src/cpu/VirtualFluidsCore/Interactors/D3Q27TriFaceMeshInteractor.cpp b/src/cpu/VirtualFluidsCore/Interactors/D3Q27TriFaceMeshInteractor.cpp
index 77f91b95c9410e739140b97fe58d25692a22f728..9bdf07ccee2b55bdbbd66507735f6137c601728d 100644
--- a/src/cpu/VirtualFluidsCore/Interactors/D3Q27TriFaceMeshInteractor.cpp
+++ b/src/cpu/VirtualFluidsCore/Interactors/D3Q27TriFaceMeshInteractor.cpp
@@ -30,36 +30,34 @@
 using namespace std;
 
 D3Q27TriFaceMeshInteractor::D3Q27TriFaceMeshInteractor()
-: D3Q27Interactor(), forceshift(0.0), velocityshift(0.0), forceshiftpolicy(false), velocityshiftpolicy(false), useHalfSpace(true), regardPIOTest(true)
+: D3Q27Interactor() 
 {
    this->stressMode = STRESSNORMAL;
 }
 //////////////////////////////////////////////////////////////////////////
-D3Q27TriFaceMeshInteractor::D3Q27TriFaceMeshInteractor(SPtr<Grid3D> grid, std::string name)
+D3Q27TriFaceMeshInteractor::D3Q27TriFaceMeshInteractor(SPtr<Grid3D>  /*grid*/, std::string  /*name*/)
 {
    this->stressMode = STRESSNORMAL;
 }
 //////////////////////////////////////////////////////////////////////////
 D3Q27TriFaceMeshInteractor::D3Q27TriFaceMeshInteractor(SPtr<GbTriFaceMesh3D> triFaceMesh, SPtr<Grid3D> grid, SPtr<BCAdapter> bcAdapter, int type)
-: D3Q27Interactor(triFaceMesh, grid, bcAdapter, type), forceshift(0.0), velocityshift(0.0), forceshiftpolicy(false), velocityshiftpolicy(false), useHalfSpace(true), regardPIOTest(true)
+: D3Q27Interactor(triFaceMesh, grid, bcAdapter, type)
 {
    this->stressMode = STRESSNORMAL;
 }
 //////////////////////////////////////////////////////////////////////////
 D3Q27TriFaceMeshInteractor::D3Q27TriFaceMeshInteractor(SPtr<GbTriFaceMesh3D> triFaceMesh, SPtr<Grid3D> grid, SPtr<BCAdapter> bcAdapter, int type, Interactor3D::Accuracy a)
-   : D3Q27Interactor(triFaceMesh, grid, bcAdapter, type, a), forceshift(0.0), velocityshift(0.0), forceshiftpolicy(false), velocityshiftpolicy(false), useHalfSpace(true), regardPIOTest(true)
+   : D3Q27Interactor(triFaceMesh, grid, bcAdapter, type, a)
 {
    this->stressMode = STRESSNORMAL;
 }
 //////////////////////////////////////////////////////////////////////////
 D3Q27TriFaceMeshInteractor::~D3Q27TriFaceMeshInteractor()
-{
-
-}
+= default;
 //////////////////////////////////////////////////////////////////////////
 void D3Q27TriFaceMeshInteractor::initInteractor(const double& timeStep)
 {
-   Interactor3D::initInteractor(timeStep);
+   Interactor3D::initInteractor(timeStep); // FIXME: refers to a member overridden in subclass
    setQs(timeStep);
 }
 //////////////////////////////////////////////////////////////////////////
@@ -1499,7 +1497,7 @@ UbTupleDouble3 D3Q27TriFaceMeshInteractor::getForces()
    //   forceX2 += attribut.getFY()*area;
    //   forceX3 += attribut.getFZ()*area;
    //}
-   return UbTupleDouble3(forceX1,forceX2,forceX3);
+   return {forceX1,forceX2,forceX3};
 }
 //////////////////////////////////////////////////////////////////////////
 UbTupleDouble3 D3Q27TriFaceMeshInteractor::getForcesTriangle()
@@ -1637,7 +1635,7 @@ UbTupleDouble3 D3Q27TriFaceMeshInteractor::getForcesTriangle()
    ////   forceX2 += Fy1;
    ////   forceX3 += Fz1;
    ////}
-   return UbTupleDouble3(forceX1,forceX2,forceX3);
+   return {forceX1,forceX2,forceX3};
 }
 //////////////////////////////////////////////////////////////////////////
 void D3Q27TriFaceMeshInteractor::calculateForces()
@@ -1744,7 +1742,7 @@ string D3Q27TriFaceMeshInteractor::toString()
    return ss.str();
 }
 //////////////////////////////////////////////////////////////////////////
-void D3Q27TriFaceMeshInteractor::reinitWithStoredQs( const double& timeStep )
+void D3Q27TriFaceMeshInteractor::reinitWithStoredQs( const double&  /*timeStep*/ )
 {
    //alle solid Bloecke wieder solid setzen
    std::vector<SPtr<Block3D>>& solidBlocks = this->getSolidBlockSet();
@@ -1825,7 +1823,7 @@ void D3Q27TriFaceMeshInteractor::reinitWithStoredQs( const double& timeStep )
    }
 }
 //////////////////////////////////////////////////////////////////////////
-void D3Q27TriFaceMeshInteractor::updateInteractor( const double& timestep/*=0*/ )
+void D3Q27TriFaceMeshInteractor::updateInteractor( const double&  /*timestep*//*=0*/ )
 {
    UB_THROW( UbException("D3Q27TriFaceMeshInteractor::updateInteractor - toDo") );
 }
diff --git a/src/cpu/VirtualFluidsCore/Interactors/D3Q27TriFaceMeshInteractor.h b/src/cpu/VirtualFluidsCore/Interactors/D3Q27TriFaceMeshInteractor.h
index bd3f127200fcb9e265d4876d982ef92500b1d47b..70e1b2d254e5d1b9e5b0f946f3cc87a223dc9529 100644
--- a/src/cpu/VirtualFluidsCore/Interactors/D3Q27TriFaceMeshInteractor.h
+++ b/src/cpu/VirtualFluidsCore/Interactors/D3Q27TriFaceMeshInteractor.h
@@ -28,24 +28,24 @@ public:
    D3Q27TriFaceMeshInteractor(SPtr<GbTriFaceMesh3D> triFaceMesh, SPtr<Grid3D> grid, SPtr<BCAdapter> bcAdapter, int type, Interactor3D::Accuracy a);
    //D3Q27TriFaceMeshInteractor(SPtr<GbTriFaceMesh3D> triFaceMesh, D3Q27BoundaryConditionAdapterPtr bcAdapter, int type, std::string name="D3Q27TriFaceMeshInteractor");
 
-   ~D3Q27TriFaceMeshInteractor();
+   ~D3Q27TriFaceMeshInteractor() override;
 
-   virtual void initInteractor(const double& timeStep=0);
+   void initInteractor(const double& timeStep=0) override;
    virtual void initInteractor2(const double& timeStep=0);
 
-   void updateInteractor(const double& timestep=0);
+   void updateInteractor(const double& timestep=0) override;
 
    void updateMovedGeometry(const double& timeStep=0);
    void setQs(const double& timeStep);
    void refineBlockGridToLevel(int level, double startDistance, double stopDistance);
 
-   bool setDifferencesToGbObject3D(const SPtr<Block3D> block/*,const double& orgX1,const double& orgX2,const double& orgX3,const double& blockLengthX1,const double& blockLengthX2,const double& blockLengthX3, const double& timestep=0*/);
+   bool setDifferencesToGbObject3D(const SPtr<Block3D> block/*,const double& orgX1,const double& orgX2,const double& orgX3,const double& blockLengthX1,const double& blockLengthX2,const double& blockLengthX3, const double& timestep=0*/) override;
 
    void setRegardPointInObjectTest( bool opt ) { this->regardPIOTest = opt; }
 
    ObObject*        clone() { throw UbException(UB_EXARGS,"not implemented");	}
 
-   UbTupleDouble3 getForces();
+   UbTupleDouble3 getForces() override;
    UbTupleDouble3 getForcesTriangle();
 
    void setStressMode(int stressMode)                      { this->stressMode = stressMode;                         }
@@ -80,12 +80,12 @@ public:
 protected:
    int    stressMode;
 
-   double forceshift;       
-   double velocityshift;
-   bool   forceshiftpolicy;
-   bool   velocityshiftpolicy;
-   bool   useHalfSpace;
-   bool   regardPIOTest;
+   double forceshift{0.0};       
+   double velocityshift{0.0};
+   bool   forceshiftpolicy{false};
+   bool   velocityshiftpolicy{false};
+   bool   useHalfSpace{true};
+   bool   regardPIOTest{true};
 
    void reinitWithStoredQs(const double& timeStep);
    //   bool reinitWithStoredQsFlag;
diff --git a/src/cpu/VirtualFluidsCore/Interactors/Interactor3D.cpp b/src/cpu/VirtualFluidsCore/Interactors/Interactor3D.cpp
index c05fc12ef3af5e50ee562423efd1ee703bf57740..0899c8634a887c9e9af36c40830c1d3b1dcab347 100644
--- a/src/cpu/VirtualFluidsCore/Interactors/Interactor3D.cpp
+++ b/src/cpu/VirtualFluidsCore/Interactors/Interactor3D.cpp
@@ -86,8 +86,7 @@ Interactor3D::Interactor3D(SPtr<GbObject3D> geoObject3D, SPtr<Grid3D> grid, int
 }
 //////////////////////////////////////////////////////////////////////////
 Interactor3D::~Interactor3D()
-{
-}
+= default;
 //////////////////////////////////////////////////////////////////////////
 bool Interactor3D::arePointsInsideGeoObject(double minX1, double minX2, double minX3, double maxX1, double maxX2, double maxX3, double delta)
 {
@@ -327,7 +326,7 @@ bool Interactor3D::isActive()
    return active;
 }
 //////////////////////////////////////////////////////////////////////////
-void Interactor3D::initInteractor(const double& timeStep)
+void Interactor3D::initInteractor(const double&  /*timeStep*/)
 {
    //UBLOG(logINFO, "transBlocks.size = "<<transBlocks.size());
 
@@ -337,7 +336,7 @@ void Interactor3D::initInteractor(const double& timeStep)
    }
 }
 //////////////////////////////////////////////////////////////////////////
-void Interactor3D::updateInteractor(const double& timeStep)
+void Interactor3D::updateInteractor(const double&  /*timeStep*/)
 {
    UB_THROW( UbException("Interactor3D::updateInteractor - toDo") );
 }
diff --git a/src/cpu/VirtualFluidsCore/Interactors/Interactor3D.h b/src/cpu/VirtualFluidsCore/Interactors/Interactor3D.h
index abfffbd316bcb17723a788b41728095fed83940d..ef7ac33dbbd1e34fa8518d3f719ccf0b8841bdf5 100644
--- a/src/cpu/VirtualFluidsCore/Interactors/Interactor3D.h
+++ b/src/cpu/VirtualFluidsCore/Interactors/Interactor3D.h
@@ -76,7 +76,7 @@ public:
    SPtr<Grid3D> getGrid3D()  const { return grid.lock();   }
    void setGrid3D(SPtr<Grid3D> grid) { this->grid = grid; }
    virtual SPtr<GbObject3D>  getGbObject3D() const { return geoObject3D; }
-   virtual bool setDifferencesToGbObject3D(const SPtr<Block3D> block/*, const double& x1, const double& x2, const double& x3, const double& blockLengthX1, const double& blockLengthX2, const double& blockLengthX3, const double& timestep=0*/)
+   virtual bool setDifferencesToGbObject3D(const SPtr<Block3D>  /*block*//*, const double& x1, const double& x2, const double& x3, const double& blockLengthX1, const double& blockLengthX2, const double& blockLengthX3, const double& timestep=0*/)
    {
       //UBLOG(logINFO, "Interactor3D::setDifferencesToGbObject3D()");
       return false;  
diff --git a/src/cpu/VirtualFluidsCore/Interactors/InteractorsHelper.cpp b/src/cpu/VirtualFluidsCore/Interactors/InteractorsHelper.cpp
index 354bdd4a9b3bc6ba3450ae7fa0ccb9d524686c27..29ccab6babf4eae939b86fd06e96a5828ffdbfe7 100644
--- a/src/cpu/VirtualFluidsCore/Interactors/InteractorsHelper.cpp
+++ b/src/cpu/VirtualFluidsCore/Interactors/InteractorsHelper.cpp
@@ -49,9 +49,7 @@ InteractorsHelper::InteractorsHelper(SPtr<Grid3D> grid, SPtr<Grid3DVisitor> visi
 }
 //////////////////////////////////////////////////////////////////////////
 InteractorsHelper::~InteractorsHelper()
-{
-
-}
+= default;
 //////////////////////////////////////////////////////////////////////////
 void InteractorsHelper::addInteractor( SPtr<Interactor3D> interactor )
 {
diff --git a/src/cpu/VirtualFluidsCore/LBM/BGKLBMKernel.cpp b/src/cpu/VirtualFluidsCore/LBM/BGKLBMKernel.cpp
index 5735fa5d4122128a0853decebf6e37ce816e8dd1..b2f5cd60fe90ef92a6b5a9a40157f2ccf3d17494 100644
--- a/src/cpu/VirtualFluidsCore/LBM/BGKLBMKernel.cpp
+++ b/src/cpu/VirtualFluidsCore/LBM/BGKLBMKernel.cpp
@@ -15,9 +15,7 @@ BGKLBMKernel::BGKLBMKernel()
 }
 //////////////////////////////////////////////////////////////////////////
 BGKLBMKernel::~BGKLBMKernel(void)
-{
-
-}
+= default;
 //////////////////////////////////////////////////////////////////////////
 void BGKLBMKernel::initDataSet()
 {
@@ -39,7 +37,7 @@ SPtr<LBMKernel> BGKLBMKernel::clone()
    return kernel;
 }
 //////////////////////////////////////////////////////////////////////////
-void BGKLBMKernel::calculate(int step)
+void BGKLBMKernel::calculate(int  /*step*/)
 {
    using namespace D3Q27System;
    using namespace UbMath;
diff --git a/src/cpu/VirtualFluidsCore/LBM/BGKLBMKernel.h b/src/cpu/VirtualFluidsCore/LBM/BGKLBMKernel.h
index d3b7cefb1ee3a4ed3abd74bfde2f9c2a3e4e6f81..0118352ba5fe18437d3733c0da7f88f2e51229f9 100644
--- a/src/cpu/VirtualFluidsCore/LBM/BGKLBMKernel.h
+++ b/src/cpu/VirtualFluidsCore/LBM/BGKLBMKernel.h
@@ -11,7 +11,7 @@ class BGKLBMKernel :  public LBMKernel
 {
 public:
    BGKLBMKernel();
-   ~BGKLBMKernel(void);
+   ~BGKLBMKernel() override;
    void calculate(int step)override;
    SPtr<LBMKernel> clone()override;
    double getCalculationTime() override;
diff --git a/src/cpu/VirtualFluidsCore/LBM/CompressibleCumulant4thOrderViscosityLBMKernel.cpp b/src/cpu/VirtualFluidsCore/LBM/CompressibleCumulant4thOrderViscosityLBMKernel.cpp
index 055b0f770219d4df04f14d21d0df43f10441a8c6..caa21b43d1d790eb9ef354d087e77a585a509de5 100644
--- a/src/cpu/VirtualFluidsCore/LBM/CompressibleCumulant4thOrderViscosityLBMKernel.cpp
+++ b/src/cpu/VirtualFluidsCore/LBM/CompressibleCumulant4thOrderViscosityLBMKernel.cpp
@@ -2,7 +2,7 @@
 #include "D3Q27System.h"
 #include "InterpolationProcessor.h"
 #include "D3Q27EsoTwist3DSplittedVector.h"
-#include <math.h>
+#include <cmath>
 #include "DataSet3D.h"
 #include "LBMKernel.h"
 #include "Block3D.h"
@@ -20,9 +20,7 @@ CompressibleCumulant4thOrderViscosityLBMKernel::CompressibleCumulant4thOrderVisc
 }
 //////////////////////////////////////////////////////////////////////////
 CompressibleCumulant4thOrderViscosityLBMKernel::~CompressibleCumulant4thOrderViscosityLBMKernel(void)
-{
-
-}
+= default;
 //////////////////////////////////////////////////////////////////////////
 void CompressibleCumulant4thOrderViscosityLBMKernel::initDataSet()
 {
diff --git a/src/cpu/VirtualFluidsCore/LBM/CompressibleCumulant4thOrderViscosityLBMKernel.h b/src/cpu/VirtualFluidsCore/LBM/CompressibleCumulant4thOrderViscosityLBMKernel.h
index d10ea218f385eda34234a4a22b3d7d5ba76e5bf5..2cdd9c5b32b0068b5e586a7033a2456f72167d31 100644
--- a/src/cpu/VirtualFluidsCore/LBM/CompressibleCumulant4thOrderViscosityLBMKernel.h
+++ b/src/cpu/VirtualFluidsCore/LBM/CompressibleCumulant4thOrderViscosityLBMKernel.h
@@ -18,9 +18,9 @@ public:
    enum Parameter{NORMAL, MAGIC};
 public:
    CompressibleCumulant4thOrderViscosityLBMKernel();
-   virtual ~CompressibleCumulant4thOrderViscosityLBMKernel(void);
-   virtual void calculate(int step);
-   virtual SPtr<LBMKernel> clone();
+   ~CompressibleCumulant4thOrderViscosityLBMKernel() override;
+   void calculate(int step) override;
+   SPtr<LBMKernel> clone() override;
    double getCalculationTime() override;
    //! The value should not be equal to a shear viscosity
    void setBulkViscosity(LBMReal value);
diff --git a/src/cpu/VirtualFluidsCore/LBM/CompressibleCumulantLBMKernel.cpp b/src/cpu/VirtualFluidsCore/LBM/CompressibleCumulantLBMKernel.cpp
index c63a971f8b74c1cacf2c0c4a7a00961c2593a230..b01159e580d9b551430741ce890d0fed32b91710 100644
--- a/src/cpu/VirtualFluidsCore/LBM/CompressibleCumulantLBMKernel.cpp
+++ b/src/cpu/VirtualFluidsCore/LBM/CompressibleCumulantLBMKernel.cpp
@@ -2,7 +2,6 @@
 #include "D3Q27System.h"
 #include "InterpolationProcessor.h"
 #include "D3Q27EsoTwist3DSplittedVector.h"
-#include <math.h>
 #include "DataSet3D.h"
 #include "Block3D.h"
 
@@ -22,9 +21,7 @@ CompressibleCumulantLBMKernel::CompressibleCumulantLBMKernel()
 }
 //////////////////////////////////////////////////////////////////////////
 CompressibleCumulantLBMKernel::~CompressibleCumulantLBMKernel(void)
-{
-
-}
+= default;
 //////////////////////////////////////////////////////////////////////////
 void CompressibleCumulantLBMKernel::initDataSet()
 {
diff --git a/src/cpu/VirtualFluidsCore/LBM/CompressibleCumulantLBMKernel.h b/src/cpu/VirtualFluidsCore/LBM/CompressibleCumulantLBMKernel.h
index 353fc4b539b1f3f4fe05c1e814bc3bc1c7efe0c2..802a707708583b9f76700f5f12038f70b29db7b4 100644
--- a/src/cpu/VirtualFluidsCore/LBM/CompressibleCumulantLBMKernel.h
+++ b/src/cpu/VirtualFluidsCore/LBM/CompressibleCumulantLBMKernel.h
@@ -18,10 +18,10 @@ public:
    enum Parameter{NORMAL, MAGIC};
 public:
    CompressibleCumulantLBMKernel();
-   virtual ~CompressibleCumulantLBMKernel(void);
-   virtual void calculate(int step);
-   virtual SPtr<LBMKernel> clone();
-   double getCalculationTime();
+   ~CompressibleCumulantLBMKernel() override;
+   void calculate(int step) override;
+   SPtr<LBMKernel> clone() override;
+   double getCalculationTime() override;
    void setBulkOmegaToOmega(bool value);
    void setRelaxationParameter(Parameter p);
 protected:
diff --git a/src/cpu/VirtualFluidsCore/LBM/CompressibleOffsetInterpolationProcessor.cpp b/src/cpu/VirtualFluidsCore/LBM/CompressibleOffsetInterpolationProcessor.cpp
index aedd7b2706303a3ad91f50a209943135663646e9..04e9fe233bd42da3cfc7e156f080f57b9be505c1 100644
--- a/src/cpu/VirtualFluidsCore/LBM/CompressibleOffsetInterpolationProcessor.cpp
+++ b/src/cpu/VirtualFluidsCore/LBM/CompressibleOffsetInterpolationProcessor.cpp
@@ -3,23 +3,13 @@
 
 using namespace UbMath;
 
-CompressibleOffsetInterpolationProcessor::CompressibleOffsetInterpolationProcessor()
-   : omegaC(0.0), omegaF(0.0)
-{
-   //forcingC = 0; //9.99685e-7;
-   //forcingF = 0; //forcingC*0.5;
-}
 //////////////////////////////////////////////////////////////////////////
 CompressibleOffsetInterpolationProcessor::CompressibleOffsetInterpolationProcessor(LBMReal omegaC, LBMReal omegaF)
    : omegaC(omegaC), omegaF(omegaF)
 {
 
 }
-//////////////////////////////////////////////////////////////////////////
-CompressibleOffsetInterpolationProcessor::~CompressibleOffsetInterpolationProcessor()
-{
 
-}
 //////////////////////////////////////////////////////////////////////////
 InterpolationProcessorPtr CompressibleOffsetInterpolationProcessor::clone()
 {
@@ -464,7 +454,7 @@ void CompressibleOffsetInterpolationProcessor::calcInterpolatedCoefficiets(const
    yz_TNW =   0.0625*eps_new *((                bxyz +     cxyz)/(72.*o));
 }
 //////////////////////////////////////////////////////////////////////////
-void CompressibleOffsetInterpolationProcessor::calcInterpolatedNodeCF(LBMReal* f, LBMReal omega, LBMReal x, LBMReal y, LBMReal z, LBMReal press, LBMReal xs, LBMReal ys, LBMReal zs)
+void CompressibleOffsetInterpolationProcessor::calcInterpolatedNodeCF(LBMReal* f, LBMReal  /*omega*/, LBMReal  /*x*/, LBMReal  /*y*/, LBMReal  /*z*/, LBMReal press, LBMReal xs, LBMReal ys, LBMReal zs)
 {
    using namespace D3Q27System;
 
diff --git a/src/cpu/VirtualFluidsCore/LBM/CompressibleOffsetInterpolationProcessor.h b/src/cpu/VirtualFluidsCore/LBM/CompressibleOffsetInterpolationProcessor.h
index b4465799a5ab77578e9ba4cde78d919ddcc9a6f4..b81277683d0feaf97ed2f9c45cc108a99b9d8a3c 100644
--- a/src/cpu/VirtualFluidsCore/LBM/CompressibleOffsetInterpolationProcessor.h
+++ b/src/cpu/VirtualFluidsCore/LBM/CompressibleOffsetInterpolationProcessor.h
@@ -14,19 +14,20 @@ class CompressibleOffsetInterpolationProcessor;
 class CompressibleOffsetInterpolationProcessor : public InterpolationProcessor
 {
 public:
-   CompressibleOffsetInterpolationProcessor();
+   CompressibleOffsetInterpolationProcessor() = default;
    CompressibleOffsetInterpolationProcessor(LBMReal omegaC, LBMReal omegaF);
-   virtual ~CompressibleOffsetInterpolationProcessor();
-   InterpolationProcessorPtr clone();
-   void setOmegas(LBMReal omegaC, LBMReal omegaF);
-   void interpolateCoarseToFine(D3Q27ICell& icellC, D3Q27ICell& icellF);
-   void interpolateCoarseToFine(D3Q27ICell& icellC, D3Q27ICell& icellF, LBMReal xoff, LBMReal yoff, LBMReal zoff);
-   void interpolateFineToCoarse(D3Q27ICell& icellF, LBMReal* icellC); 
-   void interpolateFineToCoarse(D3Q27ICell& icellF, LBMReal* icellC, LBMReal xoff, LBMReal yoff, LBMReal zoff); 
+   ~CompressibleOffsetInterpolationProcessor() override = default;
+
+   InterpolationProcessorPtr clone() override;
+   void setOmegas(LBMReal omegaC, LBMReal omegaF) override;
+   void interpolateCoarseToFine(D3Q27ICell& icellC, D3Q27ICell& icellF) override;
+   void interpolateCoarseToFine(D3Q27ICell& icellC, D3Q27ICell& icellF, LBMReal xoff, LBMReal yoff, LBMReal zoff) override;
+   void interpolateFineToCoarse(D3Q27ICell& icellF, LBMReal* icellC) override; 
+   void interpolateFineToCoarse(D3Q27ICell& icellF, LBMReal* icellC, LBMReal xoff, LBMReal yoff, LBMReal zoff) override; 
    //LBMReal forcingC, forcingF;
 protected:   
 private:
-   LBMReal omegaC, omegaF;
+   LBMReal omegaC{0.0}, omegaF{0.0};
    LBMReal a0, ax, ay, az, axx, ayy, azz, axy, axz, ayz, b0, bx, by, bz, bxx, byy, bzz, bxy, bxz, byz, c0, cx, cy, cz, cxx, cyy, czz, cxy, cxz, cyz, axyz, bxyz, cxyz;
    LBMReal xoff,    yoff,    zoff;
    LBMReal xoff_sq, yoff_sq, zoff_sq;
@@ -44,10 +45,10 @@ private:
 
 //   LBMReal a,b,c;
 
-   void setOffsets(LBMReal xoff, LBMReal yoff, LBMReal zoff);
+   void setOffsets(LBMReal xoff, LBMReal yoff, LBMReal zoff) override;
    void calcMoments(const LBMReal* const f, LBMReal omega, LBMReal& rho, LBMReal& vx1, LBMReal& vx2, LBMReal& vx3, 
       LBMReal& kxy, LBMReal& kyz, LBMReal& kxz, LBMReal& kxxMyy, LBMReal& kxxMzz);
-   void calcInterpolatedCoefficiets(const D3Q27ICell& icell, LBMReal omega, LBMReal eps_new);
+   void calcInterpolatedCoefficiets(const D3Q27ICell& icell, LBMReal omega, LBMReal eps_new) override;
    void calcInterpolatedNodeCF(LBMReal* f, LBMReal omega, LBMReal x, LBMReal y, LBMReal z, LBMReal press, LBMReal xs, LBMReal ys, LBMReal zs);
    LBMReal calcPressBSW();
    LBMReal calcPressTSW();
@@ -57,9 +58,9 @@ private:
    LBMReal calcPressTNW();
    LBMReal calcPressTNE();
    LBMReal calcPressBNE();
-   void calcInterpolatedNodeFC(LBMReal* f, LBMReal omega);
-   void calcInterpolatedVelocity(LBMReal x, LBMReal y, LBMReal z,LBMReal& vx1, LBMReal& vx2, LBMReal& vx3);
-   void calcInterpolatedShearStress(LBMReal x, LBMReal y, LBMReal z,LBMReal& tauxx, LBMReal& tauyy, LBMReal& tauzz,LBMReal& tauxy, LBMReal& tauxz, LBMReal& tauyz);
+   void calcInterpolatedNodeFC(LBMReal* f, LBMReal omega) override;
+   void calcInterpolatedVelocity(LBMReal x, LBMReal y, LBMReal z,LBMReal& vx1, LBMReal& vx2, LBMReal& vx3) override;
+   void calcInterpolatedShearStress(LBMReal x, LBMReal y, LBMReal z,LBMReal& tauxx, LBMReal& tauyy, LBMReal& tauzz,LBMReal& tauxy, LBMReal& tauxz, LBMReal& tauyz) override;
 };
 
 //////////////////////////////////////////////////////////////////////////
diff --git a/src/cpu/VirtualFluidsCore/LBM/CompressibleOffsetMomentsInterpolationProcessor.cpp b/src/cpu/VirtualFluidsCore/LBM/CompressibleOffsetMomentsInterpolationProcessor.cpp
index 211bf2729270204e708c93ab8addbce2ad708fbc..54d3b32b26cea7f597b0c487668ca74cb99193ad 100644
--- a/src/cpu/VirtualFluidsCore/LBM/CompressibleOffsetMomentsInterpolationProcessor.cpp
+++ b/src/cpu/VirtualFluidsCore/LBM/CompressibleOffsetMomentsInterpolationProcessor.cpp
@@ -4,7 +4,7 @@
 using namespace UbMath;
 
 CompressibleOffsetMomentsInterpolationProcessor::CompressibleOffsetMomentsInterpolationProcessor()
-   : omegaC(0.0), omegaF(0.0)
+    
 {
    this->bulkViscosity = 0.0;
    this->shearViscosity = 0.0;
@@ -22,9 +22,7 @@ CompressibleOffsetMomentsInterpolationProcessor::CompressibleOffsetMomentsInterp
 }
 //////////////////////////////////////////////////////////////////////////
 CompressibleOffsetMomentsInterpolationProcessor::~CompressibleOffsetMomentsInterpolationProcessor()
-{
-
-}
+= default;
 //////////////////////////////////////////////////////////////////////////
 InterpolationProcessorPtr CompressibleOffsetMomentsInterpolationProcessor::clone()
 {
diff --git a/src/cpu/VirtualFluidsCore/LBM/CompressibleOffsetMomentsInterpolationProcessor.h b/src/cpu/VirtualFluidsCore/LBM/CompressibleOffsetMomentsInterpolationProcessor.h
index f3a1403e4e09ee451a772547b9f2e6b1932c0a74..bee108e64a9294a3286e3b79519d496bd5ac91cf 100644
--- a/src/cpu/VirtualFluidsCore/LBM/CompressibleOffsetMomentsInterpolationProcessor.h
+++ b/src/cpu/VirtualFluidsCore/LBM/CompressibleOffsetMomentsInterpolationProcessor.h
@@ -16,17 +16,17 @@ class CompressibleOffsetMomentsInterpolationProcessor : public InterpolationProc
 public:
    CompressibleOffsetMomentsInterpolationProcessor();
    CompressibleOffsetMomentsInterpolationProcessor(LBMReal omegaC, LBMReal omegaF);
-   virtual ~CompressibleOffsetMomentsInterpolationProcessor();
-   InterpolationProcessorPtr clone();
-   void setOmegas(LBMReal omegaC, LBMReal omegaF);
-   void interpolateCoarseToFine(D3Q27ICell& icellC, D3Q27ICell& icellF);
-   void interpolateCoarseToFine(D3Q27ICell& icellC, D3Q27ICell& icellF, LBMReal xoff, LBMReal yoff, LBMReal zoff);
-   void interpolateFineToCoarse(D3Q27ICell& icellF, LBMReal* icellC); 
-   void interpolateFineToCoarse(D3Q27ICell& icellF, LBMReal* icellC, LBMReal xoff, LBMReal yoff, LBMReal zoff); 
+   ~CompressibleOffsetMomentsInterpolationProcessor() override;
+   InterpolationProcessorPtr clone() override;
+   void setOmegas(LBMReal omegaC, LBMReal omegaF) override;
+   void interpolateCoarseToFine(D3Q27ICell& icellC, D3Q27ICell& icellF) override;
+   void interpolateCoarseToFine(D3Q27ICell& icellC, D3Q27ICell& icellF, LBMReal xoff, LBMReal yoff, LBMReal zoff) override;
+   void interpolateFineToCoarse(D3Q27ICell& icellF, LBMReal* icellC) override; 
+   void interpolateFineToCoarse(D3Q27ICell& icellF, LBMReal* icellC, LBMReal xoff, LBMReal yoff, LBMReal zoff) override; 
    void setBulkViscosity(LBMReal shearViscosity, LBMReal bulkViscosity);
 protected:   
 private:
-   LBMReal omegaC, omegaF;
+   LBMReal omegaC{0.0}, omegaF{0.0};
    LBMReal a0, ax, ay, az, axx, ayy, azz, axy, axz, ayz, b0, bx, by, bz, bxx, byy, bzz, bxy, bxz, byz, c0, cx, cy, cz, cxx, cyy, czz, cxy, cxz, cyz, axyz, bxyz, cxyz;
    LBMReal xoff,    yoff,    zoff;
    LBMReal xoff_sq, yoff_sq, zoff_sq;
@@ -50,10 +50,10 @@ private:
    LBMReal OxxPyyPzzC;
    LBMReal OxxPyyPzzF;
 
-   void setOffsets(LBMReal xoff, LBMReal yoff, LBMReal zoff);
+   void setOffsets(LBMReal xoff, LBMReal yoff, LBMReal zoff) override;
    void calcMoments(const LBMReal* const f, LBMReal omega, LBMReal& rho, LBMReal& vx1, LBMReal& vx2, LBMReal& vx3, 
       LBMReal& kxy, LBMReal& kyz, LBMReal& kxz, LBMReal& kxxMyy, LBMReal& kxxMzz);
-   void calcInterpolatedCoefficiets(const D3Q27ICell& icell, LBMReal omega, LBMReal eps_new);
+   void calcInterpolatedCoefficiets(const D3Q27ICell& icell, LBMReal omega, LBMReal eps_new) override;
    void calcInterpolatedNodeCF(LBMReal* f, LBMReal omega, LBMReal x, LBMReal y, LBMReal z, LBMReal press, LBMReal xs, LBMReal ys, LBMReal zs);
    LBMReal calcPressBSW();
    LBMReal calcPressTSW();
@@ -63,9 +63,9 @@ private:
    LBMReal calcPressTNW();
    LBMReal calcPressTNE();
    LBMReal calcPressBNE();
-   void calcInterpolatedNodeFC(LBMReal* f, LBMReal omega);
-   void calcInterpolatedVelocity(LBMReal x, LBMReal y, LBMReal z,LBMReal& vx1, LBMReal& vx2, LBMReal& vx3);
-   void calcInterpolatedShearStress(LBMReal x, LBMReal y, LBMReal z,LBMReal& tauxx, LBMReal& tauyy, LBMReal& tauzz,LBMReal& tauxy, LBMReal& tauxz, LBMReal& tauyz);
+   void calcInterpolatedNodeFC(LBMReal* f, LBMReal omega) override;
+   void calcInterpolatedVelocity(LBMReal x, LBMReal y, LBMReal z,LBMReal& vx1, LBMReal& vx2, LBMReal& vx3) override;
+   void calcInterpolatedShearStress(LBMReal x, LBMReal y, LBMReal z,LBMReal& tauxx, LBMReal& tauyy, LBMReal& tauzz,LBMReal& tauxy, LBMReal& tauxz, LBMReal& tauyz) override;
 };
 
 //////////////////////////////////////////////////////////////////////////
diff --git a/src/cpu/VirtualFluidsCore/LBM/CompressibleOffsetSquarePressureInterpolationProcessor.cpp b/src/cpu/VirtualFluidsCore/LBM/CompressibleOffsetSquarePressureInterpolationProcessor.cpp
index 4f3822b2be713db219bc5d68cfb1578ad9652343..3436dd58471605b08e6cbfdc676474c4418cedfe 100644
--- a/src/cpu/VirtualFluidsCore/LBM/CompressibleOffsetSquarePressureInterpolationProcessor.cpp
+++ b/src/cpu/VirtualFluidsCore/LBM/CompressibleOffsetSquarePressureInterpolationProcessor.cpp
@@ -4,7 +4,7 @@
 using namespace UbMath;
 
 CompressibleOffsetSquarePressureInterpolationProcessor::CompressibleOffsetSquarePressureInterpolationProcessor()
-   : omegaC(0.0), omegaF(0.0)
+    
 {
    this->bulkOmegaToOmega = false;
    this->OxxPyyPzzC = one;
@@ -20,9 +20,7 @@ CompressibleOffsetSquarePressureInterpolationProcessor::CompressibleOffsetSquare
 }
 //////////////////////////////////////////////////////////////////////////
 CompressibleOffsetSquarePressureInterpolationProcessor::~CompressibleOffsetSquarePressureInterpolationProcessor()
-{
-
-}
+= default;
 //////////////////////////////////////////////////////////////////////////
 InterpolationProcessorPtr CompressibleOffsetSquarePressureInterpolationProcessor::clone()
 {
diff --git a/src/cpu/VirtualFluidsCore/LBM/CompressibleOffsetSquarePressureInterpolationProcessor.h b/src/cpu/VirtualFluidsCore/LBM/CompressibleOffsetSquarePressureInterpolationProcessor.h
index 5236697192f17b325172db55f58f1aaf2bd39291..e456668afc3d8b3a5c993774d60df5c9edff28a7 100644
--- a/src/cpu/VirtualFluidsCore/LBM/CompressibleOffsetSquarePressureInterpolationProcessor.h
+++ b/src/cpu/VirtualFluidsCore/LBM/CompressibleOffsetSquarePressureInterpolationProcessor.h
@@ -16,17 +16,17 @@ class CompressibleOffsetSquarePressureInterpolationProcessor : public Interpolat
 public:
    CompressibleOffsetSquarePressureInterpolationProcessor();
    CompressibleOffsetSquarePressureInterpolationProcessor(LBMReal omegaC, LBMReal omegaF);
-   virtual ~CompressibleOffsetSquarePressureInterpolationProcessor();
-   InterpolationProcessorPtr clone();
-   void setOmegas(LBMReal omegaC, LBMReal omegaF);
-   void interpolateCoarseToFine(D3Q27ICell& icellC, D3Q27ICell& icellF);
-   void interpolateCoarseToFine(D3Q27ICell& icellC, D3Q27ICell& icellF, LBMReal xoff, LBMReal yoff, LBMReal zoff);
-   void interpolateFineToCoarse(D3Q27ICell& icellF, LBMReal* icellC); 
-   void interpolateFineToCoarse(D3Q27ICell& icellF, LBMReal* icellC, LBMReal xoff, LBMReal yoff, LBMReal zoff); 
+   ~CompressibleOffsetSquarePressureInterpolationProcessor() override;
+   InterpolationProcessorPtr clone() override;
+   void setOmegas(LBMReal omegaC, LBMReal omegaF) override;
+   void interpolateCoarseToFine(D3Q27ICell& icellC, D3Q27ICell& icellF) override;
+   void interpolateCoarseToFine(D3Q27ICell& icellC, D3Q27ICell& icellF, LBMReal xoff, LBMReal yoff, LBMReal zoff) override;
+   void interpolateFineToCoarse(D3Q27ICell& icellF, LBMReal* icellC) override; 
+   void interpolateFineToCoarse(D3Q27ICell& icellF, LBMReal* icellC, LBMReal xoff, LBMReal yoff, LBMReal zoff) override; 
    void setBulkOmegaToOmega(bool value);
 protected:   
 private:
-   LBMReal omegaC, omegaF;
+   LBMReal omegaC{0.0}, omegaF{0.0};
    LBMReal a0, ax, ay, az, axx, ayy, azz, axy, axz, ayz, b0, bx, by, bz, bxx, byy, bzz, bxy, bxz, byz, c0, cx, cy, cz, cxx, cyy, czz, cxy, cxz, cyz, axyz, bxyz, cxyz;
    LBMReal xoff,    yoff,    zoff;
    LBMReal xoff_sq, yoff_sq, zoff_sq;
@@ -49,10 +49,10 @@ private:
    LBMReal OxxPyyPzzC;
    LBMReal OxxPyyPzzF;
 
-   void setOffsets(LBMReal xoff, LBMReal yoff, LBMReal zoff);
+   void setOffsets(LBMReal xoff, LBMReal yoff, LBMReal zoff) override;
    void calcMoments(const LBMReal* const f, LBMReal omega, LBMReal& rho, LBMReal& vx1, LBMReal& vx2, LBMReal& vx3, 
       LBMReal& kxy, LBMReal& kyz, LBMReal& kxz, LBMReal& kxxMyy, LBMReal& kxxMzz);
-   void calcInterpolatedCoefficiets(const D3Q27ICell& icell, LBMReal omega, LBMReal eps_new);
+   void calcInterpolatedCoefficiets(const D3Q27ICell& icell, LBMReal omega, LBMReal eps_new) override;
    void calcInterpolatedNodeCF(LBMReal* f, LBMReal omega, LBMReal x, LBMReal y, LBMReal z, LBMReal press, LBMReal xs, LBMReal ys, LBMReal zs);
    LBMReal calcPressBSW();
    LBMReal calcPressTSW();
@@ -62,9 +62,9 @@ private:
    LBMReal calcPressTNW();
    LBMReal calcPressTNE();
    LBMReal calcPressBNE();
-   void calcInterpolatedNodeFC(LBMReal* f, LBMReal omega);
-   void calcInterpolatedVelocity(LBMReal x, LBMReal y, LBMReal z,LBMReal& vx1, LBMReal& vx2, LBMReal& vx3);
-   void calcInterpolatedShearStress(LBMReal x, LBMReal y, LBMReal z,LBMReal& tauxx, LBMReal& tauyy, LBMReal& tauzz,LBMReal& tauxy, LBMReal& tauxz, LBMReal& tauyz);
+   void calcInterpolatedNodeFC(LBMReal* f, LBMReal omega) override;
+   void calcInterpolatedVelocity(LBMReal x, LBMReal y, LBMReal z,LBMReal& vx1, LBMReal& vx2, LBMReal& vx3) override;
+   void calcInterpolatedShearStress(LBMReal x, LBMReal y, LBMReal z,LBMReal& tauxx, LBMReal& tauyy, LBMReal& tauzz,LBMReal& tauxy, LBMReal& tauxz, LBMReal& tauyz) override;
 };
 
 //////////////////////////////////////////////////////////////////////////
diff --git a/src/cpu/VirtualFluidsCore/LBM/CumulantK17LBMKernel.cpp b/src/cpu/VirtualFluidsCore/LBM/CumulantK17LBMKernel.cpp
index 92387c298e6f45186c813ff0f321a1898da01837..77226bd240f1a113372a8fba6f702fa2ad769e9e 100644
--- a/src/cpu/VirtualFluidsCore/LBM/CumulantK17LBMKernel.cpp
+++ b/src/cpu/VirtualFluidsCore/LBM/CumulantK17LBMKernel.cpp
@@ -34,7 +34,7 @@
 #include "CumulantK17LBMKernel.h"
 #include "D3Q27System.h"
 #include "D3Q27EsoTwist3DSplittedVector.h"
-#include <math.h>
+#include <cmath>
 #include "DataSet3D.h"
 #include "LBMKernel.h"
 #include "Block3D.h"
@@ -51,9 +51,7 @@ CumulantK17LBMKernel::CumulantK17LBMKernel()
 }
 //////////////////////////////////////////////////////////////////////////
 CumulantK17LBMKernel::~CumulantK17LBMKernel(void)
-{
-
-}
+= default;
 //////////////////////////////////////////////////////////////////////////
 void CumulantK17LBMKernel::initDataSet()
 {
diff --git a/src/cpu/VirtualFluidsCore/LBM/CumulantK17LBMKernel.h b/src/cpu/VirtualFluidsCore/LBM/CumulantK17LBMKernel.h
index 1958b39d812695033ec395964236b1c7f9ce2e84..4444213c046873bd3dca44525f85d1be69b12fa1 100644
--- a/src/cpu/VirtualFluidsCore/LBM/CumulantK17LBMKernel.h
+++ b/src/cpu/VirtualFluidsCore/LBM/CumulantK17LBMKernel.h
@@ -52,10 +52,10 @@ class CumulantK17LBMKernel : public LBMKernel
 {
 public:
    CumulantK17LBMKernel();
-   virtual ~CumulantK17LBMKernel(void);
-   virtual void calculate(int step);
-   virtual SPtr<LBMKernel> clone();
-   virtual double getCalculationTime() { return .0; }
+   ~CumulantK17LBMKernel() override;
+   void calculate(int step) override;
+   SPtr<LBMKernel> clone() override;
+   double getCalculationTime() override { return .0; }
 
 protected:
    inline void forwardInverseChimeraWithK(LBMReal& mfa, LBMReal& mfb, LBMReal& mfc, LBMReal vv, LBMReal v2, LBMReal Kinverse, LBMReal K);
diff --git a/src/cpu/VirtualFluidsCore/LBM/ICell.h b/src/cpu/VirtualFluidsCore/LBM/ICell.h
index 76922d58dabccb141ae148df047e404ad821dc86..897a4134fa7df689d2a01e3713dccfbdd474e364 100644
--- a/src/cpu/VirtualFluidsCore/LBM/ICell.h
+++ b/src/cpu/VirtualFluidsCore/LBM/ICell.h
@@ -18,7 +18,7 @@ struct ICell3D
    std::vector<LBMReal> BSE;
 };
 
-ICell3D::ICell3D(int size)
+inline ICell3D::ICell3D(int size)
 {
    TSW.resize(size); 
    TNW.resize(size);
diff --git a/src/cpu/VirtualFluidsCore/LBM/IncompressibleCumulantLBMKernel.cpp b/src/cpu/VirtualFluidsCore/LBM/IncompressibleCumulantLBMKernel.cpp
index dbeb77a1c952ec29bb2d8440d864e9d46fe93d36..ec4b9bbd4f177a3d0fdbd0c3f1d4c3d7775fface 100644
--- a/src/cpu/VirtualFluidsCore/LBM/IncompressibleCumulantLBMKernel.cpp
+++ b/src/cpu/VirtualFluidsCore/LBM/IncompressibleCumulantLBMKernel.cpp
@@ -3,7 +3,7 @@
 #include "InterpolationProcessor.h"
 #include "D3Q27EsoTwist3DSplittedVector.h"
 #include "DataSet3D.h"
-#include <math.h>
+#include <cmath>
 #include "Block3D.h"
 
 #define PROOF_CORRECTNESS
@@ -19,9 +19,7 @@ IncompressibleCumulantLBMKernel::IncompressibleCumulantLBMKernel()
 }
 //////////////////////////////////////////////////////////////////////////
 IncompressibleCumulantLBMKernel::~IncompressibleCumulantLBMKernel(void)
-{
-
-}
+= default;
 //////////////////////////////////////////////////////////////////////////
 void IncompressibleCumulantLBMKernel::initDataSet()
 {
diff --git a/src/cpu/VirtualFluidsCore/LBM/IncompressibleCumulantLBMKernel.h b/src/cpu/VirtualFluidsCore/LBM/IncompressibleCumulantLBMKernel.h
index cf4234e0069025d601ddd8eb0cf0e905525a0d42..d7c3c78a6ffb2c27b99fbf603f5561dff0171c29 100644
--- a/src/cpu/VirtualFluidsCore/LBM/IncompressibleCumulantLBMKernel.h
+++ b/src/cpu/VirtualFluidsCore/LBM/IncompressibleCumulantLBMKernel.h
@@ -20,10 +20,10 @@ public:
    enum Parameter{NORMAL, MAGIC};
 public:
    IncompressibleCumulantLBMKernel();
-   virtual ~IncompressibleCumulantLBMKernel(void);
-   virtual void calculate(int step);
-   virtual SPtr<LBMKernel> clone();
-   double getCalculationTime();
+   ~IncompressibleCumulantLBMKernel() override;
+   void calculate(int step) override;
+   SPtr<LBMKernel> clone() override;
+   double getCalculationTime() override;
    void setRelaxationParameter(Parameter p);
 protected:
    virtual void initDataSet();
diff --git a/src/cpu/VirtualFluidsCore/LBM/IncompressibleCumulantWithSpongeLayerLBMKernel.cpp b/src/cpu/VirtualFluidsCore/LBM/IncompressibleCumulantWithSpongeLayerLBMKernel.cpp
index c84776771f7eb6e7d14ce085cba6244f47269317..089b505a5f5d357e378c1e556caeffc3e51bc411 100644
--- a/src/cpu/VirtualFluidsCore/LBM/IncompressibleCumulantWithSpongeLayerLBMKernel.cpp
+++ b/src/cpu/VirtualFluidsCore/LBM/IncompressibleCumulantWithSpongeLayerLBMKernel.cpp
@@ -1,7 +1,7 @@
 #include "IncompressibleCumulantWithSpongeLayerLBMKernel.h"
 #include "D3Q27System.h"
 #include "D3Q27EsoTwist3DSplittedVector.h"
-#include <math.h>
+#include <cmath>
 #include "DataSet3D.h"
 #include "BCArray3D.h"
 #include "Block3D.h"
@@ -12,14 +12,10 @@ using namespace UbMath;
 
 //////////////////////////////////////////////////////////////////////////
 IncompressibleCumulantWithSpongeLayerLBMKernel::IncompressibleCumulantWithSpongeLayerLBMKernel()
-{
-
-}
+= default;
 //////////////////////////////////////////////////////////////////////////
 IncompressibleCumulantWithSpongeLayerLBMKernel::~IncompressibleCumulantWithSpongeLayerLBMKernel(void)
-{
-
-}
+= default;
 //////////////////////////////////////////////////////////////////////////
 void IncompressibleCumulantWithSpongeLayerLBMKernel::initDataSet()
 {
diff --git a/src/cpu/VirtualFluidsCore/LBM/IncompressibleCumulantWithSpongeLayerLBMKernel.h b/src/cpu/VirtualFluidsCore/LBM/IncompressibleCumulantWithSpongeLayerLBMKernel.h
index c3ab71343657c793028fbb0d4ec4894ef15f923f..2747cdc7673b6fb7aa3ade08162568f14c3e3ad1 100644
--- a/src/cpu/VirtualFluidsCore/LBM/IncompressibleCumulantWithSpongeLayerLBMKernel.h
+++ b/src/cpu/VirtualFluidsCore/LBM/IncompressibleCumulantWithSpongeLayerLBMKernel.h
@@ -21,9 +21,9 @@ class IncompressibleCumulantWithSpongeLayerLBMKernel :  public IncompressibleCum
 {
 public:
    IncompressibleCumulantWithSpongeLayerLBMKernel();
-   virtual ~IncompressibleCumulantWithSpongeLayerLBMKernel(void);
-   SPtr<LBMKernel> clone();
-   void calculate(int step);
+   ~IncompressibleCumulantWithSpongeLayerLBMKernel() override;
+   SPtr<LBMKernel> clone() override;
+   void calculate(int step) override;
    void initRelaxFactor(int vdir, double vL1, double vdx, double vSP);
    //! \param vdir where the sponge layer is placed
    //! \param vL1 length of simulation domain
@@ -31,7 +31,7 @@ public:
    //! \param vSP length of sponge layer
    void setRelaxFactorParam(int vdir, double vL1, double vdx, double vSP);
 protected:
-  void initDataSet();
+  void initDataSet() override;
   LBMReal OxyyMxzz;
   int direction;
   double L1;
diff --git a/src/cpu/VirtualFluidsCore/LBM/IncompressibleOffsetInterpolationProcessor.cpp b/src/cpu/VirtualFluidsCore/LBM/IncompressibleOffsetInterpolationProcessor.cpp
index 3d4409ee3de320dbd38d4cda7726fbb08d5bbf3e..979476eb4208d39f1e925c4d87d7257b3df77680 100644
--- a/src/cpu/VirtualFluidsCore/LBM/IncompressibleOffsetInterpolationProcessor.cpp
+++ b/src/cpu/VirtualFluidsCore/LBM/IncompressibleOffsetInterpolationProcessor.cpp
@@ -3,23 +3,13 @@
 
 
 
-IncompressibleOffsetInterpolationProcessor::IncompressibleOffsetInterpolationProcessor()
-   : omegaC(0.0), omegaF(0.0)
-{
-   //forcingC = 0; //9.99685e-7;
-   //forcingF = 0; //forcingC*0.5;
-}
 //////////////////////////////////////////////////////////////////////////
 IncompressibleOffsetInterpolationProcessor::IncompressibleOffsetInterpolationProcessor(LBMReal omegaC, LBMReal omegaF)
    : omegaC(omegaC), omegaF(omegaF)
 {
 
 }
-//////////////////////////////////////////////////////////////////////////
-IncompressibleOffsetInterpolationProcessor::~IncompressibleOffsetInterpolationProcessor()
-{
 
-}
 //////////////////////////////////////////////////////////////////////////
 InterpolationProcessorPtr IncompressibleOffsetInterpolationProcessor::clone()
 {
@@ -536,7 +526,7 @@ void IncompressibleOffsetInterpolationProcessor::calcInterpolatedCoefficiets(con
    yz_TNW =   0.0625*eps_new *((                bxyz +     cxyz)/(72.*o));
 }
 //////////////////////////////////////////////////////////////////////////
-void IncompressibleOffsetInterpolationProcessor::calcInterpolatedNode(LBMReal* f, LBMReal omega, LBMReal x, LBMReal y, LBMReal z, LBMReal press, LBMReal xs, LBMReal ys, LBMReal zs)
+void IncompressibleOffsetInterpolationProcessor::calcInterpolatedNode(LBMReal* f, LBMReal  /*omega*/, LBMReal  /*x*/, LBMReal  /*y*/, LBMReal  /*z*/, LBMReal press, LBMReal xs, LBMReal ys, LBMReal zs)
 {
    using namespace D3Q27System;
 
diff --git a/src/cpu/VirtualFluidsCore/LBM/IncompressibleOffsetInterpolationProcessor.h b/src/cpu/VirtualFluidsCore/LBM/IncompressibleOffsetInterpolationProcessor.h
index b618660a914fa58b10788c400ecff9b9f688fc05..6b024d419308e284eae4f334290b23dcd5b48218 100644
--- a/src/cpu/VirtualFluidsCore/LBM/IncompressibleOffsetInterpolationProcessor.h
+++ b/src/cpu/VirtualFluidsCore/LBM/IncompressibleOffsetInterpolationProcessor.h
@@ -10,24 +10,24 @@
 //////////////////////////////////////////////////////////////////////////
 
 class IncompressibleOffsetInterpolationProcessor;
-typedef SPtr<IncompressibleOffsetInterpolationProcessor> D3Q27IncompressibleOffsetInterpolationProcessorPtr;
+using D3Q27IncompressibleOffsetInterpolationProcessorPtr = SPtr<IncompressibleOffsetInterpolationProcessor>;
 
 class IncompressibleOffsetInterpolationProcessor : public InterpolationProcessor
 {
 public:
-   IncompressibleOffsetInterpolationProcessor();
+   IncompressibleOffsetInterpolationProcessor() = default;
    IncompressibleOffsetInterpolationProcessor(LBMReal omegaC, LBMReal omegaF);
-   virtual ~IncompressibleOffsetInterpolationProcessor();
-   InterpolationProcessorPtr clone();
-   void setOmegas(LBMReal omegaC, LBMReal omegaF);
-   void interpolateCoarseToFine(D3Q27ICell& icellC, D3Q27ICell& icellF);
-   void interpolateCoarseToFine(D3Q27ICell& icellC, D3Q27ICell& icellF, LBMReal xoff, LBMReal yoff, LBMReal zoff);
-   void interpolateFineToCoarse(D3Q27ICell& icellF, LBMReal* icellC); 
-   void interpolateFineToCoarse(D3Q27ICell& icellF, LBMReal* icellC, LBMReal xoff, LBMReal yoff, LBMReal zoff); 
+   ~IncompressibleOffsetInterpolationProcessor() override = default;
+   InterpolationProcessorPtr clone() override;
+   void setOmegas(LBMReal omegaC, LBMReal omegaF) override;
+   void interpolateCoarseToFine(D3Q27ICell& icellC, D3Q27ICell& icellF) override;
+   void interpolateCoarseToFine(D3Q27ICell& icellC, D3Q27ICell& icellF, LBMReal xoff, LBMReal yoff, LBMReal zoff) override;
+   void interpolateFineToCoarse(D3Q27ICell& icellF, LBMReal* icellC) override; 
+   void interpolateFineToCoarse(D3Q27ICell& icellF, LBMReal* icellC, LBMReal xoff, LBMReal yoff, LBMReal zoff) override; 
    //LBMReal forcingC, forcingF;
 protected:   
 private:
-   LBMReal omegaC, omegaF;
+   LBMReal omegaC{0.0}, omegaF{0.0};
    LBMReal a0, ax, ay, az, axx, ayy, azz, axy, axz, ayz, b0, bx, by, bz, bxx, byy, bzz, bxy, bxz, byz, c0, cx, cy, cz, cxx, cyy, czz, cxy, cxz, cyz, axyz, bxyz, cxyz;
    LBMReal xoff,    yoff,    zoff;
    LBMReal xoff_sq, yoff_sq, zoff_sq;
@@ -45,10 +45,10 @@ private:
 
 //   LBMReal a,b,c;
 
-   void setOffsets(LBMReal xoff, LBMReal yoff, LBMReal zoff);
+   void setOffsets(LBMReal xoff, LBMReal yoff, LBMReal zoff) override;
    void calcMoments(const LBMReal* const f, LBMReal omega, LBMReal& rho, LBMReal& vx1, LBMReal& vx2, LBMReal& vx3, 
       LBMReal& kxy, LBMReal& kyz, LBMReal& kxz, LBMReal& kxxMyy, LBMReal& kxxMzz);
-   void calcInterpolatedCoefficiets(const D3Q27ICell& icell, LBMReal omega, LBMReal eps_new);
+   void calcInterpolatedCoefficiets(const D3Q27ICell& icell, LBMReal omega, LBMReal eps_new) override;
    void calcInterpolatedNode(LBMReal* f, LBMReal omega, LBMReal x, LBMReal y, LBMReal z, LBMReal press, LBMReal xs, LBMReal ys, LBMReal zs);
    LBMReal calcPressBSW();
    LBMReal calcPressTSW();
@@ -58,9 +58,9 @@ private:
    LBMReal calcPressTNW();
    LBMReal calcPressTNE();
    LBMReal calcPressBNE();
-   void calcInterpolatedNodeFC(LBMReal* f, LBMReal omega);
-   void calcInterpolatedVelocity(LBMReal x, LBMReal y, LBMReal z,LBMReal& vx1, LBMReal& vx2, LBMReal& vx3);
-   void calcInterpolatedShearStress(LBMReal x, LBMReal y, LBMReal z,LBMReal& tauxx, LBMReal& tauyy, LBMReal& tauzz,LBMReal& tauxy, LBMReal& tauxz, LBMReal& tauyz);
+   void calcInterpolatedNodeFC(LBMReal* f, LBMReal omega) override;
+   void calcInterpolatedVelocity(LBMReal x, LBMReal y, LBMReal z,LBMReal& vx1, LBMReal& vx2, LBMReal& vx3) override;
+   void calcInterpolatedShearStress(LBMReal x, LBMReal y, LBMReal z,LBMReal& tauxx, LBMReal& tauyy, LBMReal& tauzz,LBMReal& tauxy, LBMReal& tauxz, LBMReal& tauyz) override;
 };
 
 //////////////////////////////////////////////////////////////////////////
diff --git a/src/cpu/VirtualFluidsCore/LBM/InitDensityLBMKernel.cpp b/src/cpu/VirtualFluidsCore/LBM/InitDensityLBMKernel.cpp
index b866d9b1e48cae743650a0a335392f1d56043bb5..6a7256997d22e9f226d6a534a7f51801f533a59d 100644
--- a/src/cpu/VirtualFluidsCore/LBM/InitDensityLBMKernel.cpp
+++ b/src/cpu/VirtualFluidsCore/LBM/InitDensityLBMKernel.cpp
@@ -12,8 +12,7 @@ InitDensityLBMKernel::InitDensityLBMKernel()
 }
 
 InitDensityLBMKernel::~InitDensityLBMKernel()
-{
-}
+= default;
 
 void InitDensityLBMKernel::initDataSet()
 {
@@ -854,7 +853,7 @@ double InitDensityLBMKernel::getCalculationTime()
 
 
 
-void InitDensityLBMKernel::calculate(int step)
+void InitDensityLBMKernel::calculate(int  /*step*/)
 {
    using namespace D3Q27System;
 
diff --git a/src/cpu/VirtualFluidsCore/LBM/InitDensityLBMKernel.h b/src/cpu/VirtualFluidsCore/LBM/InitDensityLBMKernel.h
index 465bcea75fe0994b61ea11ea079687588f83b0d6..71833e246353ff667ff025234b4a137fb905c5be 100644
--- a/src/cpu/VirtualFluidsCore/LBM/InitDensityLBMKernel.h
+++ b/src/cpu/VirtualFluidsCore/LBM/InitDensityLBMKernel.h
@@ -11,11 +11,11 @@ class InitDensityLBMKernel :  public LBMKernel
 {
 public:
    InitDensityLBMKernel();
-   ~InitDensityLBMKernel();
-   void calculate(int step);
-   SPtr<LBMKernel> clone();
+   ~InitDensityLBMKernel() override;
+   void calculate(int step) override;
+   SPtr<LBMKernel> clone() override;
    void setVelocity(int x1, int x2, int x3, LBMReal vvx, LBMReal vvy, LBMReal vvz);
-   double getCalculationTime();
+   double getCalculationTime() override;
 protected:
    void initDataSet();
 private:
diff --git a/src/cpu/VirtualFluidsCore/LBM/InterpolationHelper.cpp b/src/cpu/VirtualFluidsCore/LBM/InterpolationHelper.cpp
index 7a58d0dee4c76f627f57ea68acfdcddf92e35e5e..0942a9f0691b67c6d1e8d7cec938aaaa494f5e45 100644
--- a/src/cpu/VirtualFluidsCore/LBM/InterpolationHelper.cpp
+++ b/src/cpu/VirtualFluidsCore/LBM/InterpolationHelper.cpp
@@ -8,11 +8,9 @@ InterpolationHelper::InterpolationHelper(InterpolationProcessorPtr iProcessor) :
 }
 //////////////////////////////////////////////////////////////////////////
 InterpolationHelper::~InterpolationHelper()
-{
-
-}
+= default;
 //////////////////////////////////////////////////////////////////////////
-void InterpolationHelper::interpolate8to1( D3Q27ICell& icellF, LBMReal* icellC, double x1, double x2, double x3, LBMReal omega )
+void InterpolationHelper::interpolate8to1( D3Q27ICell& icellF, LBMReal* icellC, double  /*x1*/, double  /*x2*/, double  /*x3*/, LBMReal omega )
 {
    iProcessor->calcInterpolatedCoefficiets(icellF, omega, 1.0);
    iProcessor->calcInterpolatedNodeFC(icellC, omega);
diff --git a/src/cpu/VirtualFluidsCore/LBM/InterpolationHelper.h b/src/cpu/VirtualFluidsCore/LBM/InterpolationHelper.h
index c6e95803f8938188892938f335f3896a647e3789..56cedd8f7ad5e7a666618731f43d5f76627d80e3 100644
--- a/src/cpu/VirtualFluidsCore/LBM/InterpolationHelper.h
+++ b/src/cpu/VirtualFluidsCore/LBM/InterpolationHelper.h
@@ -4,7 +4,7 @@
 #include "InterpolationProcessor.h"
 
 class InterpolationHelper;
-typedef SPtr<InterpolationHelper> InterpolationHelperPtr;
+using InterpolationHelperPtr = SPtr<InterpolationHelper>;
 
 class InterpolationHelper
 {
diff --git a/src/cpu/VirtualFluidsCore/LBM/InterpolationProcessor.cpp b/src/cpu/VirtualFluidsCore/LBM/InterpolationProcessor.cpp
index 4b8b746b720a494889c529682bc3ea02459e8649..60893e2b2ca546358bf86b99d4933cb7338ce484 100644
--- a/src/cpu/VirtualFluidsCore/LBM/InterpolationProcessor.cpp
+++ b/src/cpu/VirtualFluidsCore/LBM/InterpolationProcessor.cpp
@@ -3,14 +3,10 @@
 
 //////////////////////////////////////////////////////////////////////////
 InterpolationProcessor::InterpolationProcessor()
-{
-
-}
+= default;
 //////////////////////////////////////////////////////////////////////////
 InterpolationProcessor::~InterpolationProcessor()
-{
-
-}
+= default;
 //////////////////////////////////////////////////////////////////////////
 void InterpolationProcessor::readICell(SPtr<DistributionArray3D> f, D3Q27ICell& icell, int x1, int x2, int x3) 
 {
@@ -87,7 +83,7 @@ bool InterpolationProcessor::findNeighborICell(const SPtr<BCArray3D> bcArray, SP
       zoff = 0;
    }
    //GoEast
-   else if(inRange(x1+2,x2,x3) && !iCellHasSolid(bcArray, x1+1,x2,x3)) // ist übernächster Knoten auch im Gebiet (Grundknoten bei 0,0,0
+   else if(inRange(x1+2,x2,x3) && !iCellHasSolid(bcArray, x1+1,x2,x3)) // ist �bern�chster Knoten auch im Gebiet (Grundknoten bei 0,0,0
    {
       readICell(f,icell,x1+1,x2,x3);
       xoff = -1;
@@ -103,7 +99,7 @@ bool InterpolationProcessor::findNeighborICell(const SPtr<BCArray3D> bcArray, SP
       zoff = 0;
    }
    //GoNorth
-   else if(inRange(x1,x2+2,x3) && !iCellHasSolid(bcArray, x1,x2+1,x3)) // ist übernächster Knoten auch im Gebiet (Grundknoten bei 0,0,0
+   else if(inRange(x1,x2+2,x3) && !iCellHasSolid(bcArray, x1,x2+1,x3)) // ist �bern�chster Knoten auch im Gebiet (Grundknoten bei 0,0,0
    {
       readICell(f,icell,x1,x2+1,x3);
       xoff = 0;
@@ -119,7 +115,7 @@ bool InterpolationProcessor::findNeighborICell(const SPtr<BCArray3D> bcArray, SP
       zoff = 1;
    }
    //GoTop
-   else if(inRange(x1,x2,x3+2) && !iCellHasSolid(bcArray, x1,x2,x3+1)) // ist übernächster Knoten auch im Gebiet (Grundknoten bei 0,0,0
+   else if(inRange(x1,x2,x3+2) && !iCellHasSolid(bcArray, x1,x2,x3+1)) // ist �bern�chster Knoten auch im Gebiet (Grundknoten bei 0,0,0
    {
       readICell(f,icell,x1,x2,x3+1);
       xoff = 0;
@@ -127,7 +123,7 @@ bool InterpolationProcessor::findNeighborICell(const SPtr<BCArray3D> bcArray, SP
       zoff = -1;
    }
    //GoNW
-   else if(inRange(x1-1,x2+2,x3) && !iCellHasSolid(bcArray, x1-1,x2+1,x3)) // ist übernächster Knoten auch im Gebiet (Grundknoten bei 0,0,0
+   else if(inRange(x1-1,x2+2,x3) && !iCellHasSolid(bcArray, x1-1,x2+1,x3)) // ist �bern�chster Knoten auch im Gebiet (Grundknoten bei 0,0,0
    {
       readICell(f,icell,x1-1,x2+1,x3);
       xoff = 1;
@@ -135,7 +131,7 @@ bool InterpolationProcessor::findNeighborICell(const SPtr<BCArray3D> bcArray, SP
       zoff = 0;
    }
    //GoNE
-   else if(inRange(x1+2,x2+2,x3) && !iCellHasSolid(bcArray, x1+1,x2+1,x3)) // ist übernächster Knoten auch im Gebiet (Grundknoten bei 0,0,0
+   else if(inRange(x1+2,x2+2,x3) && !iCellHasSolid(bcArray, x1+1,x2+1,x3)) // ist �bern�chster Knoten auch im Gebiet (Grundknoten bei 0,0,0
    {
       readICell(f,icell,x1+1,x2+1,x3);
       xoff = -1;
@@ -143,7 +139,7 @@ bool InterpolationProcessor::findNeighborICell(const SPtr<BCArray3D> bcArray, SP
       zoff = 0;
    }
    //GoSW
-   else if(inRange(x1-1,x2-1,x3) && !iCellHasSolid(bcArray, x1-1,x2-1,x3)) // ist übernächster Knoten auch im Gebiet (Grundknoten bei 0,0,0
+   else if(inRange(x1-1,x2-1,x3) && !iCellHasSolid(bcArray, x1-1,x2-1,x3)) // ist �bern�chster Knoten auch im Gebiet (Grundknoten bei 0,0,0
    {
       readICell(f,icell,x1-1,x2-1,x3);
       xoff = 1;
@@ -151,7 +147,7 @@ bool InterpolationProcessor::findNeighborICell(const SPtr<BCArray3D> bcArray, SP
       zoff = 0;
    }
    //GoSE
-   else if(inRange(x1+2,x2-1,x3) && !iCellHasSolid(bcArray, x1+1,x2-1,x3)) // ist übernächster Knoten auch im Gebiet (Grundknoten bei 0,0,0
+   else if(inRange(x1+2,x2-1,x3) && !iCellHasSolid(bcArray, x1+1,x2-1,x3)) // ist �bern�chster Knoten auch im Gebiet (Grundknoten bei 0,0,0
    {
       readICell(f,icell,x1+1,x2-1,x3);
       xoff = -1;
@@ -167,7 +163,7 @@ bool InterpolationProcessor::findNeighborICell(const SPtr<BCArray3D> bcArray, SP
       zoff = 1;
    }
    //GoBE
-   else if(inRange(x1+2,x2,x3-1) && !iCellHasSolid(bcArray, x1+1,x2,x3-1)) // ist übernächster Knoten auch im Gebiet (Grundknoten bei 0,0,0
+   else if(inRange(x1+2,x2,x3-1) && !iCellHasSolid(bcArray, x1+1,x2,x3-1)) // ist �bern�chster Knoten auch im Gebiet (Grundknoten bei 0,0,0
    {
       readICell(f,icell,x1+1,x2,x3-1);
       xoff = -1;
@@ -183,7 +179,7 @@ bool InterpolationProcessor::findNeighborICell(const SPtr<BCArray3D> bcArray, SP
       zoff = 1;
    }
    //GoBN
-   else if(inRange(x1,x2+2,x3-1) && !iCellHasSolid(bcArray, x1,x2+1,x3-1)) // ist übernächster Knoten auch im Gebiet (Grundknoten bei 0,0,0
+   else if(inRange(x1,x2+2,x3-1) && !iCellHasSolid(bcArray, x1,x2+1,x3-1)) // ist �bern�chster Knoten auch im Gebiet (Grundknoten bei 0,0,0
    {
       readICell(f,icell,x1,x2+1,x3-1);
       xoff = 0;
@@ -199,7 +195,7 @@ bool InterpolationProcessor::findNeighborICell(const SPtr<BCArray3D> bcArray, SP
       zoff = -1;
    }
    //GoTE
-   else if(inRange(x1+2,x2,x3+2) && !iCellHasSolid(bcArray, x1+1,x2,x3+1)) // ist übernächster Knoten auch im Gebiet (Grundknoten bei 0,0,0
+   else if(inRange(x1+2,x2,x3+2) && !iCellHasSolid(bcArray, x1+1,x2,x3+1)) // ist �bern�chster Knoten auch im Gebiet (Grundknoten bei 0,0,0
    {
       readICell(f,icell,x1+1,x2,x3+1);
       xoff = -1;
@@ -215,7 +211,7 @@ bool InterpolationProcessor::findNeighborICell(const SPtr<BCArray3D> bcArray, SP
       zoff = -1;
    }
    //GoTN
-   else if(inRange(x1,x2+2,x3+2) && !iCellHasSolid(bcArray, x1,x2+1,x3+1)) // ist übernächster Knoten auch im Gebiet (Grundknoten bei 0,0,0
+   else if(inRange(x1,x2+2,x3+2) && !iCellHasSolid(bcArray, x1,x2+1,x3+1)) // ist �bern�chster Knoten auch im Gebiet (Grundknoten bei 0,0,0
    {
       readICell(f,icell,x1,x2+1,x3+1);
       xoff = 0;
@@ -223,7 +219,7 @@ bool InterpolationProcessor::findNeighborICell(const SPtr<BCArray3D> bcArray, SP
       zoff = -1;
    }
    //GoTNW
-   else if(inRange(x1-1,x2+2,x3+2) && !iCellHasSolid(bcArray, x1-1,x2+1,x3+1)) // ist übernächster Knoten auch im Gebiet (Grundknoten bei 0,0,0
+   else if(inRange(x1-1,x2+2,x3+2) && !iCellHasSolid(bcArray, x1-1,x2+1,x3+1)) // ist �bern�chster Knoten auch im Gebiet (Grundknoten bei 0,0,0
    {
       readICell(f,icell,x1-1,x2+1,x3+1);
       xoff = 1;
@@ -231,7 +227,7 @@ bool InterpolationProcessor::findNeighborICell(const SPtr<BCArray3D> bcArray, SP
       zoff = -1;
    }
    //GoTNE
-   else if(inRange(x1+2,x2+2,x3+2) && !iCellHasSolid(bcArray, x1+1,x2+1,x3+1)) // ist übernächster Knoten auch im Gebiet (Grundknoten bei 0,0,0
+   else if(inRange(x1+2,x2+2,x3+2) && !iCellHasSolid(bcArray, x1+1,x2+1,x3+1)) // ist �bern�chster Knoten auch im Gebiet (Grundknoten bei 0,0,0
    {
       readICell(f,icell,x1+1,x2+1,x3+1);
       xoff = -1;
@@ -239,7 +235,7 @@ bool InterpolationProcessor::findNeighborICell(const SPtr<BCArray3D> bcArray, SP
       zoff = -1;
    }
    //GoTSE
-   else if(inRange(x1+2,x2-1,x3+2) && !iCellHasSolid(bcArray, x1+1,x2-1,x3+1)) // ist übernächster Knoten auch im Gebiet (Grundknoten bei 0,0,0
+   else if(inRange(x1+2,x2-1,x3+2) && !iCellHasSolid(bcArray, x1+1,x2-1,x3+1)) // ist �bern�chster Knoten auch im Gebiet (Grundknoten bei 0,0,0
    {
       readICell(f,icell,x1+1,x2-1,x3+1);
       xoff = -1;
@@ -247,7 +243,7 @@ bool InterpolationProcessor::findNeighborICell(const SPtr<BCArray3D> bcArray, SP
       zoff = -1;
    }
    //GoTSW
-   else if(inRange(x1-1,x2-1,x3+2) && !iCellHasSolid(bcArray, x1-1,x2-1,x3+1)) // ist übernächster Knoten auch im Gebiet (Grundknoten bei 0,0,0
+   else if(inRange(x1-1,x2-1,x3+2) && !iCellHasSolid(bcArray, x1-1,x2-1,x3+1)) // ist �bern�chster Knoten auch im Gebiet (Grundknoten bei 0,0,0
    {
       readICell(f,icell,x1-1,x2-1,x3+1);
       xoff =  1;
@@ -255,7 +251,7 @@ bool InterpolationProcessor::findNeighborICell(const SPtr<BCArray3D> bcArray, SP
       zoff = -1;
    }
    //GoBNW
-   else if(inRange(x1-1,x2+2,x3-1) && !iCellHasSolid(bcArray, x1-1,x2+1,x3-1)) // ist übernächster Knoten auch im Gebiet (Grundknoten bei 0,0,0
+   else if(inRange(x1-1,x2+2,x3-1) && !iCellHasSolid(bcArray, x1-1,x2+1,x3-1)) // ist �bern�chster Knoten auch im Gebiet (Grundknoten bei 0,0,0
    {
       readICell(f,icell,x1-1,x2+1,x3-1);
       xoff =  1;
@@ -263,7 +259,7 @@ bool InterpolationProcessor::findNeighborICell(const SPtr<BCArray3D> bcArray, SP
       zoff =  1;
    }
    //GoBNE
-   else if(inRange(x1+2,x2+2,x3-1) && !iCellHasSolid(bcArray, x1+1,x2+1,x3-1)) // ist übernächster Knoten auch im Gebiet (Grundknoten bei 0,0,0
+   else if(inRange(x1+2,x2+2,x3-1) && !iCellHasSolid(bcArray, x1+1,x2+1,x3-1)) // ist �bern�chster Knoten auch im Gebiet (Grundknoten bei 0,0,0
    {
       readICell(f,icell,x1+1,x2+1,x3-1);
       xoff = -1;
@@ -271,7 +267,7 @@ bool InterpolationProcessor::findNeighborICell(const SPtr<BCArray3D> bcArray, SP
       zoff =  1;
    }
    //GoBSE
-   else if(inRange(x1+2,x2-1,x3-1) && !iCellHasSolid(bcArray, x1+1,x2-1,x3-1)) // ist übernächster Knoten auch im Gebiet (Grundknoten bei 0,0,0
+   else if(inRange(x1+2,x2-1,x3-1) && !iCellHasSolid(bcArray, x1+1,x2-1,x3-1)) // ist �bern�chster Knoten auch im Gebiet (Grundknoten bei 0,0,0
    {
       readICell(f,icell,x1+1,x2-1,x3-1);
       xoff = -1;
@@ -279,7 +275,7 @@ bool InterpolationProcessor::findNeighborICell(const SPtr<BCArray3D> bcArray, SP
       zoff =  1;
    }
    //GoBSW
-   else if(inRange(x1-1,x2-1,x3-1) && !iCellHasSolid(bcArray, x1-1,x2-1,x3-1)) // ist übernächster Knoten auch im Gebiet (Grundknoten bei 0,0,0
+   else if(inRange(x1-1,x2-1,x3-1) && !iCellHasSolid(bcArray, x1-1,x2-1,x3-1)) // ist �bern�chster Knoten auch im Gebiet (Grundknoten bei 0,0,0
    {
       readICell(f,icell,x1-1,x2-1,x3-1);
       xoff =  1;
@@ -294,9 +290,9 @@ bool InterpolationProcessor::findNeighborICell(const SPtr<BCArray3D> bcArray, SP
       //                  " by using in: "+(std::string)typeid(*this).name()+ 
       //                  " or maybe you have a solid on the block boundary";
       //UB_THROW(UbException(UB_EXARGS, err));
-      return 0;
+      return false;
    }
-   return 1;
+   return true;
 }
 //////////////////////////////////////////////////////////////////////////
 int InterpolationProcessor::iCellHowManySolids( const SPtr<BCArray3D> bcArray, int x1, int x2, int x3 )
diff --git a/src/cpu/VirtualFluidsCore/LBM/InterpolationProcessor.h b/src/cpu/VirtualFluidsCore/LBM/InterpolationProcessor.h
index 06e2efd2df018beca946f4f48d8d7d19597750f6..fb9ade9aa43ea24384710ace3a0ded9fffbdda69 100644
--- a/src/cpu/VirtualFluidsCore/LBM/InterpolationProcessor.h
+++ b/src/cpu/VirtualFluidsCore/LBM/InterpolationProcessor.h
@@ -21,7 +21,7 @@ struct D3Q27ICell
 };
 
 class InterpolationProcessor;
-typedef SPtr<InterpolationProcessor> InterpolationProcessorPtr;
+using InterpolationProcessorPtr = SPtr<InterpolationProcessor>;
 
 #include "InterpolationHelper.h"
 
diff --git a/src/cpu/VirtualFluidsCore/LBM/LBMKernel.cpp b/src/cpu/VirtualFluidsCore/LBM/LBMKernel.cpp
index ec1bb4049181b613542fc66953a8f0e34859182a..7004a4d734c5aff518148631d5881fc0ba0a7f8b 100644
--- a/src/cpu/VirtualFluidsCore/LBM/LBMKernel.cpp
+++ b/src/cpu/VirtualFluidsCore/LBM/LBMKernel.cpp
@@ -37,16 +37,13 @@
 #include "Block3D.h"
 #include "BCArray3D.h"
 
-LBMKernel::LBMKernel() : ghostLayerWidth(1),
-                             deltaT(1.0),
-                             withForcing(false),
-                             withSpongeLayer(false),
-                             compressible(false)
+LBMKernel::LBMKernel() 
+                             
 {
    this->setForcingX1(0.0);
    this->setForcingX2(0.0);
    this->setForcingX3(0.0);
-   dataSet = SPtr<DataSet3D>(new DataSet3D());
+   dataSet = std::make_shared<DataSet3D>();
    this->nx[0] = 0;
    this->nx[1] = 0;
    this->nx[2] = 0;
diff --git a/src/cpu/VirtualFluidsCore/LBM/LBMKernel.h b/src/cpu/VirtualFluidsCore/LBM/LBMKernel.h
index 91d213fc8549c0c926f8479b224b1183639baa27..9703bf6c56349c93618f330d38e60b7af4148e72 100644
--- a/src/cpu/VirtualFluidsCore/LBM/LBMKernel.h
+++ b/src/cpu/VirtualFluidsCore/LBM/LBMKernel.h
@@ -49,17 +49,17 @@ class Block3D;
 class LBMKernel : public ILBMKernel, public enableSharedFromThis<LBMKernel>
 {
 public:
-    typedef std::numeric_limits<LBMReal> LBMRealLim;
+    using LBMRealLim = std::numeric_limits<LBMReal>;
 public:
     LBMKernel();
 
     virtual SPtr<LBMKernel> clone() = 0;
 
-    virtual void calculate(int step) = 0;
-    virtual double getCalculationTime() = 0;
+    void calculate(int step) override = 0;
+    double getCalculationTime() override = 0;
 
-    void setBCProcessor(SPtr<BCProcessor> bcp);
-    SPtr<BCProcessor> getBCProcessor() const;
+    void setBCProcessor(SPtr<BCProcessor> bcp) override;
+    SPtr<BCProcessor> getBCProcessor() const override;
 
     void setCollisionFactor(double collFactor) override;
     double getCollisionFactor() const override;
@@ -113,19 +113,19 @@ protected:
     SPtr<DataSet3D> dataSet;
     SPtr<BCProcessor> bcProcessor;
     LBMReal collFactor;
-    int ghostLayerWidth;
-    bool compressible;
+    int ghostLayerWidth{1};
+    bool compressible{false};
 
     //forcing 
-    bool withForcing;
+    bool withForcing{false};
     mu::Parser muForcingX1;
     mu::Parser muForcingX2;
     mu::Parser muForcingX3;
     int ix1, ix2, ix3;
-    LBMReal deltaT;
+    LBMReal deltaT{1.0};
 
     //sponge layer
-    bool withSpongeLayer;
+    bool withSpongeLayer{false};
     mu::Parser muSpongeLayer;
 
     WPtr<Block3D> block;
diff --git a/src/cpu/VirtualFluidsCore/LBM/LBMKernelETD3Q27BGK.cpp b/src/cpu/VirtualFluidsCore/LBM/LBMKernelETD3Q27BGK.cpp
index 3560fd8336c36aae87c2bfa8acf92777089bf93c..1da1a07ea4713d47c34ad75de5ba3e71fc548759 100644
--- a/src/cpu/VirtualFluidsCore/LBM/LBMKernelETD3Q27BGK.cpp
+++ b/src/cpu/VirtualFluidsCore/LBM/LBMKernelETD3Q27BGK.cpp
@@ -17,9 +17,7 @@ LBMKernelETD3Q27BGK::LBMKernelETD3Q27BGK()
 }
 //////////////////////////////////////////////////////////////////////////
 LBMKernelETD3Q27BGK::~LBMKernelETD3Q27BGK(void)
-{
-
-}
+= default;
 //////////////////////////////////////////////////////////////////////////
 void LBMKernelETD3Q27BGK::initDataSet()
 {
@@ -41,7 +39,7 @@ SPtr<LBMKernel> LBMKernelETD3Q27BGK::clone()
    return kernel;
 }
 //////////////////////////////////////////////////////////////////////////
-void LBMKernelETD3Q27BGK::calculate(int step)
+void LBMKernelETD3Q27BGK::calculate(int  /*step*/)
 {
    using namespace D3Q27System;
 
diff --git a/src/cpu/VirtualFluidsCore/LBM/LBMKernelETD3Q27BGK.h b/src/cpu/VirtualFluidsCore/LBM/LBMKernelETD3Q27BGK.h
index 632a8040282f43a4449782fbd01b7679ac4e1dc8..09e495c2375b8f009f2a231ca4a762437031303b 100644
--- a/src/cpu/VirtualFluidsCore/LBM/LBMKernelETD3Q27BGK.h
+++ b/src/cpu/VirtualFluidsCore/LBM/LBMKernelETD3Q27BGK.h
@@ -11,7 +11,7 @@ class LBMKernelETD3Q27BGK :  public LBMKernel
 {
 public:
    LBMKernelETD3Q27BGK();
-   ~LBMKernelETD3Q27BGK(void);
+   ~LBMKernelETD3Q27BGK() override;
    void calculate(int step)override;
    SPtr<LBMKernel> clone()override;
    double getCalculationTime() override;
diff --git a/src/cpu/VirtualFluidsCore/LBM/LBMSystem.h b/src/cpu/VirtualFluidsCore/LBM/LBMSystem.h
index 49a82b3938f9ceebc6239fd033b7c6d30373cd60..7b016a3b75675d9551d62c111e60364385c95493 100644
--- a/src/cpu/VirtualFluidsCore/LBM/LBMSystem.h
+++ b/src/cpu/VirtualFluidsCore/LBM/LBMSystem.h
@@ -49,7 +49,7 @@ namespace LBMSystem
    typedef float real;
    #define REAL_CAST(x) ( (LBMSystem::real)(x) )
 #else
-   typedef double real;
+   using real = double;
    #define REAL_CAST(x) ( x )
 #endif
 
@@ -89,7 +89,7 @@ namespace LBMSystem
 }
 
 //some typedefs for global namespace
-typedef LBMSystem::real LBMReal;
+using LBMReal = LBMSystem::real;
 
 #endif
 
diff --git a/src/cpu/VirtualFluidsCore/LBM/LBMUnitConverter.h b/src/cpu/VirtualFluidsCore/LBM/LBMUnitConverter.h
index b65ebd7b3d381518f07dc7a72341d7644a03a1ef..89514acd6b4e6ee2221fea85e805c5679192ce20 100644
--- a/src/cpu/VirtualFluidsCore/LBM/LBMUnitConverter.h
+++ b/src/cpu/VirtualFluidsCore/LBM/LBMUnitConverter.h
@@ -33,17 +33,7 @@ public:
 
    enum WORLD_MATERIAL { WATER  = 0, SEAWWATER  = 1, AIR_20C  = 2, OIL  = 3  }; 
 
-   LBMUnitConverter() :  factorLengthLbToW(1.0),
-                         factorTimeLbToW(1.0),
-                         factorMassLbToW(1.0), 
-                         refRhoLb(1.0),
-                         factorVelocityLbToW(1.0), 
-                         factorViscosityLbToW(1.0),
-                         factorDensityLbToW(1.0),
-                         factorPressureLbToW(1.0)
-   {
-
-   }
+   LBMUnitConverter() = default;
 
    LBMUnitConverter(   const double& refLengthWorld, const double& csWorld, const double& rhoWorld
       , const double& refLengthLb   , const double& csLb = 1.0/std::sqrt(3.0)  , const double& rhoLb = 1.0   )
@@ -68,7 +58,7 @@ public:
 
    }
 
-   LBMUnitConverter(int dummy, double uReal, double uLB, double nuReal, double nuLB) 
+   LBMUnitConverter(int  /*dummy*/, double uReal, double uLB, double nuReal, double nuLB) 
    {
       factorVelocityLbToW = uReal/uLB;
       factorViscosityLbToW = nuReal/nuLB;
@@ -76,7 +66,7 @@ public:
       factorPressureLbToW = factorDensityLbToW;
    }
 
-   virtual ~LBMUnitConverter() {}
+   virtual ~LBMUnitConverter() = default;
 
    double  getRefRhoLb()             { return refRhoLb; }
 
@@ -170,7 +160,7 @@ public:
 
 
 
-   void init(  const double& refLengthWorld, const double& csWorld, const double& rhoWorld, const double& vWorld, 
+   void init(  const double& refLengthWorld, const double&  /*csWorld*/, const double& rhoWorld, const double& vWorld, 
                const double& refLengthLb, const double& rhoLb, const double& vLb  )
    {
       factorLengthLbToW = refLengthWorld / refLengthLb;
@@ -180,16 +170,16 @@ public:
       this->refRhoLb = rhoLb;
    }
    protected:
-   double factorLengthLbToW;
-   double factorTimeLbToW;
-   double factorMassLbToW;
-   double refRhoLb;
-   double factorTimeWithoutDx;
+   double factorLengthLbToW{1.0};
+   double factorTimeLbToW{1.0};
+   double factorMassLbToW{1.0};
+   double refRhoLb{1.0};
+   double factorTimeWithoutDx{0.0};
    
-   double factorVelocityLbToW;
-   double factorViscosityLbToW;
-   double factorDensityLbToW;
-   double factorPressureLbToW;
+   double factorVelocityLbToW{1.0};
+   double factorViscosityLbToW{1.0};
+   double factorDensityLbToW{1.0};
+   double factorPressureLbToW{1.0};
 
 };
 
diff --git a/src/cpu/VirtualFluidsCore/LBM/VoidLBMKernel.cpp b/src/cpu/VirtualFluidsCore/LBM/VoidLBMKernel.cpp
index cc6bfcf81043e9350bee1c16fdb1718dab5e6c1b..8e4a73a7bd7330947b99d124fb031bcebc314c3b 100644
--- a/src/cpu/VirtualFluidsCore/LBM/VoidLBMKernel.cpp
+++ b/src/cpu/VirtualFluidsCore/LBM/VoidLBMKernel.cpp
@@ -4,14 +4,10 @@
 #include "DataSet3D.h"
 
 VoidLBMKernel::VoidLBMKernel()
-{
-
-}
+= default;
 //////////////////////////////////////////////////////////////////////////
 VoidLBMKernel::~VoidLBMKernel()
-{
-
-}
+= default;
 //////////////////////////////////////////////////////////////////////////
 void VoidLBMKernel::initDataSet()
 {
diff --git a/src/cpu/VirtualFluidsCore/LBM/VoidLBMKernel.h b/src/cpu/VirtualFluidsCore/LBM/VoidLBMKernel.h
index 6d324600685d6b43cbf5a6535c5b653b4bcb7dee..4ae754ccae75e5f12e0e09baa5e6ec0076fb3510 100644
--- a/src/cpu/VirtualFluidsCore/LBM/VoidLBMKernel.h
+++ b/src/cpu/VirtualFluidsCore/LBM/VoidLBMKernel.h
@@ -7,10 +7,10 @@ class VoidLBMKernel : public LBMKernel
 {
 public:
    VoidLBMKernel();
-   ~VoidLBMKernel();
-   SPtr<LBMKernel> clone();
-   void calculate(int step);
-   double getCalculationTime();
+   ~VoidLBMKernel() override;
+   SPtr<LBMKernel> clone() override;
+   void calculate(int step) override;
+   double getCalculationTime() override;
    void initDataSet();
 protected:
 
diff --git a/src/cpu/VirtualFluidsCore/Parallel/Communicator.h b/src/cpu/VirtualFluidsCore/Parallel/Communicator.h
index 69c90125bd7cd35836a6486b3197cd4eb1bf266e..1ab893e56196a37c20622b8cf985babee02ca8d0 100644
--- a/src/cpu/VirtualFluidsCore/Parallel/Communicator.h
+++ b/src/cpu/VirtualFluidsCore/Parallel/Communicator.h
@@ -43,7 +43,7 @@
 class Communicator
 {
 public:
-   virtual ~Communicator(){}
+   virtual ~Communicator()= default;
    static SPtr<Communicator> getInstance();
    virtual int getBundleID() = 0;
    virtual int getNumberOfBundles() = 0;
@@ -83,8 +83,8 @@ public:
    virtual void broadcast(std::vector<double>& values) = 0;
    virtual void broadcast(std::vector<long int>& values) = 0;
 protected:
-   Communicator(){}
-   Communicator( const Communicator& ){}
+   Communicator()= default;
+   Communicator( const Communicator& )= default;
    static SPtr<Communicator> instance;
 };
 
diff --git a/src/cpu/VirtualFluidsCore/Parallel/MPICommunicator.cpp b/src/cpu/VirtualFluidsCore/Parallel/MPICommunicator.cpp
index b8a81e7ee2613a355498b3d805efde4c7a50193b..0c785fc3da54cae00043ab2a830a9fc42860ce14 100644
--- a/src/cpu/VirtualFluidsCore/Parallel/MPICommunicator.cpp
+++ b/src/cpu/VirtualFluidsCore/Parallel/MPICommunicator.cpp
@@ -107,7 +107,7 @@ int MPICommunicator::getProcessID()
    return PID;
 }
 //////////////////////////////////////////////////////////////////////////
-int MPICommunicator::getProcessID(int bundle, int rank)
+int MPICommunicator::getProcessID(int  /*bundle*/, int  /*rank*/)
 {
    return PID;
 }
@@ -147,7 +147,7 @@ int MPICommunicator::getProcessRoot()
    return 0;
 }
 //////////////////////////////////////////////////////////////////////////
-int MPICommunicator::getNumberOfProcessesInBundle(int bundle)
+int MPICommunicator::getNumberOfProcessesInBundle(int  /*bundle*/)
 {
    return numprocs;
 }
diff --git a/src/cpu/VirtualFluidsCore/Parallel/MPICommunicator.h b/src/cpu/VirtualFluidsCore/Parallel/MPICommunicator.h
index e88eb42b3b5d87fca4401d49bd1c925a6686fa80..20b6b85b377cd43c5c02373ed39ed2196b96546d 100644
--- a/src/cpu/VirtualFluidsCore/Parallel/MPICommunicator.h
+++ b/src/cpu/VirtualFluidsCore/Parallel/MPICommunicator.h
@@ -22,45 +22,45 @@ private:
    MPICommunicator();
    MPICommunicator( const MPICommunicator& ){}
 public:
-   ~MPICommunicator();
+   ~MPICommunicator() override;
    static SPtr<Communicator> getInstance();
-   int getBundleID();
-   int getNumberOfBundles();
-   int getProcessID();
-   int getProcessID(int bundle, int rank);
-   int getNumberOfProcesses();
-   void* getNativeCommunicator();
-   int getRoot();
-   int getBundleRoot();
-   int getProcessRoot();
-   int getNumberOfProcessesInBundle(int bundle);
-   bool isRoot();
-   void abort(int errorcode);
-
-   void sendSerializedObject(std::stringstream& ss, int target);
-   void receiveSerializedObject(std::stringstream& ss, int source);
-
-   void barrier();
-
-   std::vector<std::string> gather(const std::string& str);
-   std::vector<int> gather(std::vector<int>& values);
-   std::vector<float> gather(std::vector<float>& values);
-   std::vector<double> gather(std::vector<double>& values);
-   std::vector<unsigned long long> gather(std::vector<unsigned long long>& values);
-
-   void allGather(std::vector<int>& svalues, std::vector<int>& rvalues);
-   void allGather(std::vector<float>& svalues, std::vector<float>& rvalues);
-   void allGather(std::vector<double>& svalues, std::vector<double>& rvalues);
-   void allGather(std::vector<unsigned long long>& svalues, std::vector<unsigned long long>& rvalues);
-
-   void broadcast(int& value);
-   void broadcast(float& value);
-   void broadcast(double& value);
-   void broadcast(long int& value);
-   void broadcast(std::vector<int>& values);
-   void broadcast(std::vector<float>& values);
-   void broadcast(std::vector<double>& values);
-   void broadcast(std::vector<long int>& values);
+   int getBundleID() override;
+   int getNumberOfBundles() override;
+   int getProcessID() override;
+   int getProcessID(int bundle, int rank) override;
+   int getNumberOfProcesses() override;
+   void* getNativeCommunicator() override;
+   int getRoot() override;
+   int getBundleRoot() override;
+   int getProcessRoot() override;
+   int getNumberOfProcessesInBundle(int bundle) override;
+   bool isRoot() override;
+   void abort(int errorcode) override;
+
+   void sendSerializedObject(std::stringstream& ss, int target) override;
+   void receiveSerializedObject(std::stringstream& ss, int source) override;
+
+   void barrier() override;
+
+   std::vector<std::string> gather(const std::string& str) override;
+   std::vector<int> gather(std::vector<int>& values) override;
+   std::vector<float> gather(std::vector<float>& values) override;
+   std::vector<double> gather(std::vector<double>& values) override;
+   std::vector<unsigned long long> gather(std::vector<unsigned long long>& values) override;
+
+   void allGather(std::vector<int>& svalues, std::vector<int>& rvalues) override;
+   void allGather(std::vector<float>& svalues, std::vector<float>& rvalues) override;
+   void allGather(std::vector<double>& svalues, std::vector<double>& rvalues) override;
+   void allGather(std::vector<unsigned long long>& svalues, std::vector<unsigned long long>& rvalues) override;
+
+   void broadcast(int& value) override;
+   void broadcast(float& value) override;
+   void broadcast(double& value) override;
+   void broadcast(long int& value) override;
+   void broadcast(std::vector<int>& values) override;
+   void broadcast(std::vector<float>& values) override;
+   void broadcast(std::vector<double>& values) override;
+   void broadcast(std::vector<long int>& values) override;
 
    template <class T>
    std::vector<T> gather(std::vector<T>& values);
diff --git a/src/cpu/VirtualFluidsCore/Parallel/MetisPartitioner.cpp b/src/cpu/VirtualFluidsCore/Parallel/MetisPartitioner.cpp
index 55ab9e5467c777590441661a58907b496650090f..86a8e1e72c4ca2b342bf68abfb360105554c9b44 100644
--- a/src/cpu/VirtualFluidsCore/Parallel/MetisPartitioner.cpp
+++ b/src/cpu/VirtualFluidsCore/Parallel/MetisPartitioner.cpp
@@ -19,9 +19,7 @@ MetisPartitioner::MetisPartitioner()
 }
 //////////////////////////////////////////////////////////////////////////
 MetisPartitioner::~MetisPartitioner()
-{
-
-}
+= default;
 //////////////////////////////////////////////////////////////////////////
 idx_t* MetisPartitioner::getMetisOptions()
 {
diff --git a/src/cpu/VirtualFluidsCore/Parallel/NullCommunicator.cpp b/src/cpu/VirtualFluidsCore/Parallel/NullCommunicator.cpp
index 5e3bcf132065e766b50e2deb5b028561a8d39335..520206d48817828f51d901035f8d1b0f81dc7a7c 100644
--- a/src/cpu/VirtualFluidsCore/Parallel/NullCommunicator.cpp
+++ b/src/cpu/VirtualFluidsCore/Parallel/NullCommunicator.cpp
@@ -35,12 +35,10 @@
 
 
 NullCommunicator::NullCommunicator()
-{
-}
+= default;
 //////////////////////////////////////////////////////////////////////////
 NullCommunicator::~NullCommunicator()
-{
-}
+= default;
 //////////////////////////////////////////////////////////////////////////
 int NullCommunicator::getBundleID() 
 {
@@ -82,12 +80,12 @@ int NullCommunicator::getProcessRoot()
    return 0;
 }
 //////////////////////////////////////////////////////////////////////////
-std::vector<std::string> NullCommunicator::gather(const std::string& str)
+std::vector<std::string> NullCommunicator::gather(const std::string&  /*str*/)
 {
    return std::vector<std::string>();
 }
 //////////////////////////////////////////////////////////////////////////
-std::vector<double> NullCommunicator::gatherDoubles(std::vector<double>& values) 
+std::vector<double> NullCommunicator::gatherDoubles(std::vector<double>&  /*values*/) 
 {
    return std::vector<double>();
 }
diff --git a/src/cpu/VirtualFluidsCore/Parallel/NullCommunicator.h b/src/cpu/VirtualFluidsCore/Parallel/NullCommunicator.h
index af3ed35204cd8daacacae329de51b60667a9a51f..2495b7766357a7f1b9a0e4200aed9a8a3945af77 100644
--- a/src/cpu/VirtualFluidsCore/Parallel/NullCommunicator.h
+++ b/src/cpu/VirtualFluidsCore/Parallel/NullCommunicator.h
@@ -44,20 +44,20 @@ class NullCommunicator : public Communicator
 {
 public:
    NullCommunicator();
-   ~NullCommunicator();
-   int getBundleID();
-   int getNumberOfBundles();
-   int getProcessID();
-   int getNumberOfProcesses();
-   void* getNativeCommunicator();
-   int getRoot();
-   int getBundleRoot();
-   int getProcessRoot();
-   std::vector<std::string> gather(const std::string& str);
+   ~NullCommunicator() override;
+   int getBundleID() override;
+   int getNumberOfBundles() override;
+   int getProcessID() override;
+   int getNumberOfProcesses() override;
+   void* getNativeCommunicator() override;
+   int getRoot() override;
+   int getBundleRoot() override;
+   int getProcessRoot() override;
+   std::vector<std::string> gather(const std::string& str) override;
    std::vector<double> gatherDoubles(std::vector<double>& values); 
    void allGatherInts(std::vector<int>& svalues, std::vector<int>& rvalues);
-   void sendSerializedObject(std::stringstream& ss, int target);
-   void receiveSerializedObject(std::stringstream& ss, int source);
+   void sendSerializedObject(std::stringstream& ss, int target) override;
+   void receiveSerializedObject(std::stringstream& ss, int source) override;
 protected:
 private:
 };
diff --git a/src/cpu/VirtualFluidsCore/Parallel/PriorityQueueDecompositor.h b/src/cpu/VirtualFluidsCore/Parallel/PriorityQueueDecompositor.h
index 67f1e52d440a9fbc1670f5bedd0561d38ed841e8..a5234fd9583935a155711c9fbd4521713e9a98d4 100644
--- a/src/cpu/VirtualFluidsCore/Parallel/PriorityQueueDecompositor.h
+++ b/src/cpu/VirtualFluidsCore/Parallel/PriorityQueueDecompositor.h
@@ -36,9 +36,7 @@ public:
       }
    }
    virtual ~PriorityQueueDecompositor()
-   {
-
-   }
+   = default;
    void getDecomposition(std::vector< std::vector<T> >& prts)
    {
       for( itOb=objects.begin() ; itOb != objects.end(); itOb++)
diff --git a/src/cpu/VirtualFluidsCore/Parallel/SimpleGeometricPartitioner.h b/src/cpu/VirtualFluidsCore/Parallel/SimpleGeometricPartitioner.h
index 9573e778c04efe6c1ead3f888dc9247d141ba76e..b7b62c1ddfe438f3bc0a23d140880a80f7cee2dd 100644
--- a/src/cpu/VirtualFluidsCore/Parallel/SimpleGeometricPartitioner.h
+++ b/src/cpu/VirtualFluidsCore/Parallel/SimpleGeometricPartitioner.h
@@ -25,7 +25,7 @@ public:
       int p = numberOfProcess;
 
       if (p == 1)
-         return UbTupleInt3(1, 1, 1);
+         return {1, 1, 1};
 
       double a = pow(p*pow(x,3.0)/xyz,1.0/3.0);
       double b = pow(p*pow(y,3.0)/xyz,1.0/3.0);
diff --git a/src/cpu/VirtualFluidsCore/Utilities/CheckpointConverter.cpp b/src/cpu/VirtualFluidsCore/Utilities/CheckpointConverter.cpp
index 9bf7278bcc6720541a13f082171524ed7125f581..fe58829b18d462d63dfd52b48ec0fe3046e2a019 100644
--- a/src/cpu/VirtualFluidsCore/Utilities/CheckpointConverter.cpp
+++ b/src/cpu/VirtualFluidsCore/Utilities/CheckpointConverter.cpp
@@ -6,7 +6,7 @@
 #include "Grid3D.h"
 #include "Communicator.h"
 #include "CoordinateTransformation3D.h"
-#include <stdio.h>
+#include <cstdio>
 
 #define BLOCK_SIZE 1024
 
@@ -403,7 +403,7 @@ void CheckpointConverter::convertDataSet(int step, int procCount)
 
 }
 
-void CheckpointConverter::convert___Array(int step, int procCount, std::string filenameR, std::string filenameW)
+void CheckpointConverter::convert___Array(int  /*step*/, int procCount, std::string filenameR, std::string filenameW)
 {
    double start, finish;
    if (comm->isRoot()) start = MPI_Wtime();
diff --git a/src/cpu/VirtualFluidsCore/Utilities/MemoryUtil.h b/src/cpu/VirtualFluidsCore/Utilities/MemoryUtil.h
index 1102acac0d6c0fc761204ebb5e2463d00299e145..863b4d4f1ce0fbee66ef43a43d0edb5443e2450f 100644
--- a/src/cpu/VirtualFluidsCore/Utilities/MemoryUtil.h
+++ b/src/cpu/VirtualFluidsCore/Utilities/MemoryUtil.h
@@ -43,16 +43,16 @@
 #define MEMORYUTIL_APPLE
    #include "sys/types.h"
    #include "sys/sysctl.h"
-   #include "stdlib.h"
-   #include "stdio.h"
-   #include "string.h"
+   #include <cstdlib>
+   #include <cstdio>
+   #include <cstring>
 #elif (defined(__amd64) || defined(__amd64__) || defined(__unix__) || defined(__CYGWIN__)) && !defined(__AIX__)
    #define MEMORYUTIL_LINUX
    #include "sys/types.h"
    #include "sys/sysinfo.h"
-   #include "stdlib.h"
-   #include "stdio.h"
-   #include "string.h"
+   #include "cstdlib"
+   #include "cstdio"
+   #include "cstring"
 #else
    #error "MemoryUtil::UnknownMachine"
 #endif
diff --git a/src/cpu/VirtualFluidsCore/Visitors/Block3DVisitor.h b/src/cpu/VirtualFluidsCore/Visitors/Block3DVisitor.h
index f333f521c82a3398976d3b5e32b50a230e514728..e3ce942167e1377d0fd0172caa2fea8e7b6b4474 100644
--- a/src/cpu/VirtualFluidsCore/Visitors/Block3DVisitor.h
+++ b/src/cpu/VirtualFluidsCore/Visitors/Block3DVisitor.h
@@ -43,17 +43,13 @@ class Grid3D;
 class Block3DVisitor
 {
 public:
-   Block3DVisitor() : startLevel(-1), stopLevel(-1)
-   {
-   }
+   Block3DVisitor() = default;
 
    Block3DVisitor(int startLevel, int stopLevel) : startLevel(startLevel), stopLevel(stopLevel)
    {
    }
 
-	virtual ~Block3DVisitor()
-   {
-   }
+	virtual ~Block3DVisitor() = default;
 	
    virtual void visit(SPtr<Grid3D> grid, SPtr<Block3D> block) = 0;
    
@@ -63,8 +59,8 @@ public:
    void setStopLevel(int level);
 
 private:
-   int  startLevel;
-   int  stopLevel;
+   int  startLevel{-1};
+   int  stopLevel{-1};
 };
 //////////////////////////////////////////////////////////////////////////
 inline int  Block3DVisitor::getStartLevel() const
diff --git a/src/cpu/VirtualFluidsCore/Visitors/BoundaryConditionsBlockVisitor.cpp b/src/cpu/VirtualFluidsCore/Visitors/BoundaryConditionsBlockVisitor.cpp
index e75d09c2cb755204829bc277aba202a8f8f86079..7f1e57b2469e8aa2d051043740064f0e8c7d4bd8 100644
--- a/src/cpu/VirtualFluidsCore/Visitors/BoundaryConditionsBlockVisitor.cpp
+++ b/src/cpu/VirtualFluidsCore/Visitors/BoundaryConditionsBlockVisitor.cpp
@@ -49,9 +49,7 @@ Block3DVisitor(0, Grid3DSystem::MAXLEVEL)
 }
 //////////////////////////////////////////////////////////////////////////
 BoundaryConditionsBlockVisitor::~BoundaryConditionsBlockVisitor()
-{
-
-}
+= default;
 //////////////////////////////////////////////////////////////////////////
 void BoundaryConditionsBlockVisitor::visit(SPtr<Grid3D> grid, SPtr<Block3D> block)
 {
diff --git a/src/cpu/VirtualFluidsCore/Visitors/BoundaryConditionsBlockVisitor.h b/src/cpu/VirtualFluidsCore/Visitors/BoundaryConditionsBlockVisitor.h
index 9bd52139b77b04d639a9b1ac4d3406d616897a9e..c7ea28e58237846b74c1cf6aa80563d4c20b6427 100644
--- a/src/cpu/VirtualFluidsCore/Visitors/BoundaryConditionsBlockVisitor.h
+++ b/src/cpu/VirtualFluidsCore/Visitors/BoundaryConditionsBlockVisitor.h
@@ -50,7 +50,7 @@ class BoundaryConditionsBlockVisitor : public Block3DVisitor
 {
 public:
    BoundaryConditionsBlockVisitor();
-   virtual ~BoundaryConditionsBlockVisitor();
+   ~BoundaryConditionsBlockVisitor() override;
    
       void visit(SPtr<Grid3D> grid, SPtr<Block3D> block) override;
    void addBC(SPtr<BCAdapter> bc);
diff --git a/src/cpu/VirtualFluidsCore/Visitors/ChangeBoundaryDensityBlockVisitor.cpp b/src/cpu/VirtualFluidsCore/Visitors/ChangeBoundaryDensityBlockVisitor.cpp
index 077dadeabafdfe53548735412401aa59231f470c..c0dabd959bded6b2d1657584970623549eb50248 100644
--- a/src/cpu/VirtualFluidsCore/Visitors/ChangeBoundaryDensityBlockVisitor.cpp
+++ b/src/cpu/VirtualFluidsCore/Visitors/ChangeBoundaryDensityBlockVisitor.cpp
@@ -16,9 +16,7 @@ newBoundaryDensity(newBoundaryDensity)
 }
 //////////////////////////////////////////////////////////////////////////
 ChangeBoundaryDensityBlockVisitor::~ChangeBoundaryDensityBlockVisitor()
-{
-
-}
+= default;
 //////////////////////////////////////////////////////////////////////////
 void ChangeBoundaryDensityBlockVisitor::visit(SPtr<Grid3D> grid, SPtr<Block3D> block)
 {
diff --git a/src/cpu/VirtualFluidsCore/Visitors/ChangeBoundaryDensityBlockVisitor.h b/src/cpu/VirtualFluidsCore/Visitors/ChangeBoundaryDensityBlockVisitor.h
index b6eac16431d9ae09624ccbe350170ed0869e9ed4..1baefe7adba933891c1b0689e7798a3cd3419ca7 100644
--- a/src/cpu/VirtualFluidsCore/Visitors/ChangeBoundaryDensityBlockVisitor.h
+++ b/src/cpu/VirtualFluidsCore/Visitors/ChangeBoundaryDensityBlockVisitor.h
@@ -13,7 +13,7 @@ class ChangeBoundaryDensityBlockVisitor : public Block3DVisitor
 {
 public:
    ChangeBoundaryDensityBlockVisitor(float oldBoundaryDensity, float newBoundaryDensity);
-   virtual ~ChangeBoundaryDensityBlockVisitor();
+   ~ChangeBoundaryDensityBlockVisitor() override;
 
    void visit(SPtr<Grid3D> grid, SPtr<Block3D> block) override;
 private:
diff --git a/src/cpu/VirtualFluidsCore/Visitors/CheckRatioBlockVisitor.h b/src/cpu/VirtualFluidsCore/Visitors/CheckRatioBlockVisitor.h
index 3b24e6fdf845398b690239c726099cee89703ae2..da666fe47ad2fdea78ee512a37f3bcba4ffc0f3c 100644
--- a/src/cpu/VirtualFluidsCore/Visitors/CheckRatioBlockVisitor.h
+++ b/src/cpu/VirtualFluidsCore/Visitors/CheckRatioBlockVisitor.h
@@ -14,7 +14,7 @@ class CheckRatioBlockVisitor : public Block3DVisitor
 public:
    CheckRatioBlockVisitor(int levelDepth, bool includeNotActiveBlocks = true);
 
-   virtual ~CheckRatioBlockVisitor() {}
+   ~CheckRatioBlockVisitor() override = default;
 
    bool getState();
    void resetState();
diff --git a/src/cpu/VirtualFluidsCore/Visitors/CoarsenCrossAndInsideGbObjectBlockVisitor.cpp b/src/cpu/VirtualFluidsCore/Visitors/CoarsenCrossAndInsideGbObjectBlockVisitor.cpp
index bc94a821fbae57735961651025eb04fc12fdb9b2..85047e2588259a5764f0c8193aaf68352c06b1c9 100644
--- a/src/cpu/VirtualFluidsCore/Visitors/CoarsenCrossAndInsideGbObjectBlockVisitor.cpp
+++ b/src/cpu/VirtualFluidsCore/Visitors/CoarsenCrossAndInsideGbObjectBlockVisitor.cpp
@@ -4,19 +4,18 @@
 #include <geometry3d/GbObject3D.h>
 
 CoarsenCrossAndInsideGbObjectBlockVisitor::CoarsenCrossAndInsideGbObjectBlockVisitor()
-   : Block3DVisitor(), notActive(true)
+   : Block3DVisitor() 
 {
 }
 //////////////////////////////////////////////////////////////////////////
 CoarsenCrossAndInsideGbObjectBlockVisitor::CoarsenCrossAndInsideGbObjectBlockVisitor(SPtr<GbObject3D> geoObject, int fineLevel, int coarseLevel)
-   : Block3DVisitor(fineLevel, fineLevel), geoObject(geoObject), notActive(true), coarseLevel(coarseLevel)
+   : Block3DVisitor(fineLevel, fineLevel), geoObject(geoObject), coarseLevel(coarseLevel)
 {
 
 }
 //////////////////////////////////////////////////////////////////////////
 CoarsenCrossAndInsideGbObjectBlockVisitor::~CoarsenCrossAndInsideGbObjectBlockVisitor()
-{
-}
+= default;
 //////////////////////////////////////////////////////////////////////////
 void CoarsenCrossAndInsideGbObjectBlockVisitor::visit(const SPtr<Grid3D> grid, SPtr<Block3D> block)
 {
diff --git a/src/cpu/VirtualFluidsCore/Visitors/CoarsenCrossAndInsideGbObjectBlockVisitor.h b/src/cpu/VirtualFluidsCore/Visitors/CoarsenCrossAndInsideGbObjectBlockVisitor.h
index 19399d554f5cd03328972e067f98593f78e7e214..a62e6dc8dac71e4e1ad4d7c6f1beebdde53823dd 100644
--- a/src/cpu/VirtualFluidsCore/Visitors/CoarsenCrossAndInsideGbObjectBlockVisitor.h
+++ b/src/cpu/VirtualFluidsCore/Visitors/CoarsenCrossAndInsideGbObjectBlockVisitor.h
@@ -21,12 +21,12 @@ public:
    //! \param geoObject a smart pointer to bounding box
    //! \param refineLevel an integer for refine on this level
    CoarsenCrossAndInsideGbObjectBlockVisitor(SPtr<GbObject3D> geoObject, int fineLevel, int coarseLevel);
-   virtual ~CoarsenCrossAndInsideGbObjectBlockVisitor();
+   ~CoarsenCrossAndInsideGbObjectBlockVisitor() override;
       void visit(SPtr<Grid3D> grid, SPtr<Block3D> block) override;
    //////////////////////////////////////////////////////////////////////////
 protected:
     SPtr<GbObject3D> geoObject;
-   bool notActive;
+   bool notActive{true};
    int coarseLevel;
 };
 
diff --git a/src/cpu/VirtualFluidsCore/Visitors/ConnectorBlockVisitor.cpp b/src/cpu/VirtualFluidsCore/Visitors/ConnectorBlockVisitor.cpp
index 6248316b5516c6162a254ba8ad9f02a94dc9d8ed..01256a40c3f54e8931312a29fac24d0ad0efafd5 100644
--- a/src/cpu/VirtualFluidsCore/Visitors/ConnectorBlockVisitor.cpp
+++ b/src/cpu/VirtualFluidsCore/Visitors/ConnectorBlockVisitor.cpp
@@ -15,8 +15,7 @@ ConnectorBlockVisitor::ConnectorBlockVisitor(SPtr<Communicator> comm, LBMReal nu
 }
 //////////////////////////////////////////////////////////////////////////
 ConnectorBlockVisitor::~ConnectorBlockVisitor(void)
-{
-}
+= default;
 //////////////////////////////////////////////////////////////////////////
 void ConnectorBlockVisitor::visit(SPtr<Grid3D> grid, SPtr<Block3D> block)
 {
diff --git a/src/cpu/VirtualFluidsCore/Visitors/ConnectorBlockVisitor.h b/src/cpu/VirtualFluidsCore/Visitors/ConnectorBlockVisitor.h
index fdd79284cb513dd6874afa25b081c3e564bbae77..f40083001d78d74b9b2b8d173a3059a8a4469433 100644
--- a/src/cpu/VirtualFluidsCore/Visitors/ConnectorBlockVisitor.h
+++ b/src/cpu/VirtualFluidsCore/Visitors/ConnectorBlockVisitor.h
@@ -16,7 +16,7 @@ class ConnectorBlockVisitor : public Block3DVisitor
 {
 public:
    ConnectorBlockVisitor(SPtr<Communicator> comm, LBMReal nu, SPtr<InterpolationProcessor> iProcessor, SPtr<ConnectorFactory> cFactory);
-   virtual ~ConnectorBlockVisitor();
+   ~ConnectorBlockVisitor() override;
       void visit(SPtr<Grid3D> grid, SPtr<Block3D> block) override;
    //////////////////////////////////////////////////////////////////////////
 protected:
diff --git a/src/cpu/VirtualFluidsCore/Visitors/CreateTransmittersHelper.cpp b/src/cpu/VirtualFluidsCore/Visitors/CreateTransmittersHelper.cpp
index 5e24c8696403c19744d9c2c9e4941d3da5b68344..24177504ce65eb2cc34c621077a8e6108fc171f4 100644
--- a/src/cpu/VirtualFluidsCore/Visitors/CreateTransmittersHelper.cpp
+++ b/src/cpu/VirtualFluidsCore/Visitors/CreateTransmittersHelper.cpp
@@ -14,9 +14,7 @@ using namespace std;
 
 //////////////////////////////////////////////////////////////////////////
 CreateTransmittersHelper::CreateTransmittersHelper()
-{
-
-}
+= default;
 //////////////////////////////////////////////////////////////////////////
 void CreateTransmittersHelper::createTransmitters(SPtr<Block3D> sblock, SPtr<Block3D> tblock, int dir, IBlock ib,
                                                         TransmitterPtr& sender, TransmitterPtr& receiver, SPtr<Communicator> comm, TransmitterType tType)
diff --git a/src/cpu/VirtualFluidsCore/Visitors/CreateTransmittersHelper.h b/src/cpu/VirtualFluidsCore/Visitors/CreateTransmittersHelper.h
index 820807a2f09518c25647d7f72c2eca8241526d05..d339bdfb41e43ee3ae159b3141e4e2f67c1bcc1d 100644
--- a/src/cpu/VirtualFluidsCore/Visitors/CreateTransmittersHelper.h
+++ b/src/cpu/VirtualFluidsCore/Visitors/CreateTransmittersHelper.h
@@ -21,8 +21,8 @@ public:
    //! Switch between MPI and BOND Transmitters
    enum TransmitterType {MPI, BOND, MPI2BOND};
 public:
-   typedef CbVector <LBMReal> DataType;
-   typedef SPtr< TbTransmitter< DataType > > TransmitterPtr;
+   using DataType = CbVector<LBMReal>;
+   using TransmitterPtr = SPtr<TbTransmitter<DataType> >;
 public:
    CreateTransmittersHelper();
    void createTransmitters(const SPtr<Block3D> sblock, const SPtr<Block3D> tblock, int dir, IBlock ib,
diff --git a/src/cpu/VirtualFluidsCore/Visitors/GenBlocksGridVisitor.h b/src/cpu/VirtualFluidsCore/Visitors/GenBlocksGridVisitor.h
index e9f2670716dd0add52db6730ded0b2fb05d868b6..65db6fa109087b7121358f0c3227846dbb246326 100644
--- a/src/cpu/VirtualFluidsCore/Visitors/GenBlocksGridVisitor.h
+++ b/src/cpu/VirtualFluidsCore/Visitors/GenBlocksGridVisitor.h
@@ -48,9 +48,9 @@ class GenBlocksGridVisitor : public Grid3DVisitor
 {
 public:
    GenBlocksGridVisitor(SPtr<GbObject3D> boundingBox);
-   virtual ~GenBlocksGridVisitor(){}
+   ~GenBlocksGridVisitor() override= default;
 
-   void visit(SPtr<Grid3D> grid);
+   void visit(SPtr<Grid3D> grid) override;
 
 private:
    UbTupleInt3 minInd, maxInd;
diff --git a/src/cpu/VirtualFluidsCore/Visitors/Grid3DVisitor.h b/src/cpu/VirtualFluidsCore/Visitors/Grid3DVisitor.h
index 2d836daf77d2f180788d0090243b28f86f85f8cc..5484ac44202930eaeacde3e64ac20c2d6bccaabd 100644
--- a/src/cpu/VirtualFluidsCore/Visitors/Grid3DVisitor.h
+++ b/src/cpu/VirtualFluidsCore/Visitors/Grid3DVisitor.h
@@ -43,8 +43,8 @@ class Grid3D;
 class Grid3DVisitor
 {
 public:
-   Grid3DVisitor() {}
-   virtual ~Grid3DVisitor() {}
+   Grid3DVisitor() = default;
+   virtual ~Grid3DVisitor() = default;
 
    virtual void visit(SPtr<Grid3D> grid) = 0;
 };
diff --git a/src/cpu/VirtualFluidsCore/Visitors/InitDistributionsBlockVisitor.cpp b/src/cpu/VirtualFluidsCore/Visitors/InitDistributionsBlockVisitor.cpp
index 4ba5de0ccfa5320ce3e1b66dbc3ce78d215460cf..055cf6a2ba68dce48c3bb49e3c1a94dc9a3c9748 100644
--- a/src/cpu/VirtualFluidsCore/Visitors/InitDistributionsBlockVisitor.cpp
+++ b/src/cpu/VirtualFluidsCore/Visitors/InitDistributionsBlockVisitor.cpp
@@ -139,9 +139,8 @@ void InitDistributionsBlockVisitor::visit(const SPtr<Grid3D> grid, SPtr<Block3D>
    this->muVx3.DefineVar("x1",&x1); this->muVx3.DefineVar("x2",&x2); this->muVx3.DefineVar("x3",&x3);
    this->muRho.DefineVar("x1",&x1); this->muRho.DefineVar("x2",&x2); this->muRho.DefineVar("x3",&x3);
 
-   //Funktionszeiger
-   typedef void (*CalcFeqsFct)(LBMReal* const& /*feq[27]*/,const LBMReal& /*(d)rho*/,const LBMReal& /*vx1*/,const LBMReal& /*vx2*/,const LBMReal& /*vx3*/);
-   CalcFeqsFct   calcFeqsFct   = NULL;
+   using CalcFeqsFct = void (*)(LBMReal* const& /*feq[27]*/,const LBMReal& /*(d)rho*/,const LBMReal& /*vx1*/,const LBMReal& /*vx2*/,const LBMReal& /*vx3*/);
+   CalcFeqsFct calcFeqsFct   = NULL;
    
    LBMReal vx1,vx2,vx3,rho;
 
@@ -168,9 +167,9 @@ void InitDistributionsBlockVisitor::visit(const SPtr<Grid3D> grid, SPtr<Block3D>
 
       LBMReal f[D3Q27System::ENDF+1];
 
-      for(int ix3=0; ix3<bcArray->getNX3(); ix3++)
-         for(int ix2=0; ix2<bcArray->getNX2(); ix2++)
-            for(int ix1=0; ix1<bcArray->getNX1(); ix1++)
+      for(size_t ix3=0; ix3<bcArray->getNX3(); ix3++)
+         for(size_t ix2=0; ix2<bcArray->getNX2(); ix2++)
+            for(size_t ix1=0; ix1<bcArray->getNX1(); ix1++)
             {
                Vector3D coords = grid->getNodeCoordinates(block, ix1, ix2, ix3);
                x1 = coords[0];
diff --git a/src/cpu/VirtualFluidsCore/Visitors/InitDistributionsBlockVisitor.h b/src/cpu/VirtualFluidsCore/Visitors/InitDistributionsBlockVisitor.h
index 1e7425796e7502b9caf7049141ffc37af051ae62..bddda7901b29995d6c38de764b737c1d6636b2d8 100644
--- a/src/cpu/VirtualFluidsCore/Visitors/InitDistributionsBlockVisitor.h
+++ b/src/cpu/VirtualFluidsCore/Visitors/InitDistributionsBlockVisitor.h
@@ -63,7 +63,7 @@ class Block3D;
 class InitDistributionsBlockVisitor : public Block3DVisitor
 {
 public:
-   typedef std::numeric_limits<LBMReal> D3Q27RealLim;
+   using D3Q27RealLim = std::numeric_limits<LBMReal>;
 
 public:
    InitDistributionsBlockVisitor();
diff --git a/src/cpu/VirtualFluidsCore/Visitors/InitDistributionsWithInterpolationGridVisitor.cpp b/src/cpu/VirtualFluidsCore/Visitors/InitDistributionsWithInterpolationGridVisitor.cpp
index bc6963c18563948ba36499bb9b15b199560a80ff..279714e35fba8e812b56e01b3fc5929e9285cc45 100644
--- a/src/cpu/VirtualFluidsCore/Visitors/InitDistributionsWithInterpolationGridVisitor.cpp
+++ b/src/cpu/VirtualFluidsCore/Visitors/InitDistributionsWithInterpolationGridVisitor.cpp
@@ -22,8 +22,7 @@ InitDistributionsWithInterpolationGridVisitor::InitDistributionsWithInterpolatio
 }
 //////////////////////////////////////////////////////////////////////////
 InitDistributionsWithInterpolationGridVisitor::~InitDistributionsWithInterpolationGridVisitor()
-{
-}
+= default;
 //////////////////////////////////////////////////////////////////////////
 void InitDistributionsWithInterpolationGridVisitor::visit(SPtr<Grid3D> grid)
 {
diff --git a/src/cpu/VirtualFluidsCore/Visitors/InitDistributionsWithInterpolationGridVisitor.h b/src/cpu/VirtualFluidsCore/Visitors/InitDistributionsWithInterpolationGridVisitor.h
index 3e6f13603b7f4fa84a028a328c71080c2ac1d3bf..bdc373e14d02f947c9a9a60249b6a617e6d0069c 100644
--- a/src/cpu/VirtualFluidsCore/Visitors/InitDistributionsWithInterpolationGridVisitor.h
+++ b/src/cpu/VirtualFluidsCore/Visitors/InitDistributionsWithInterpolationGridVisitor.h
@@ -14,8 +14,8 @@ class InitDistributionsWithInterpolationGridVisitor : public Grid3DVisitor
 {
 public:
    InitDistributionsWithInterpolationGridVisitor(SPtr<Grid3D> oldGrid, SPtr<InterpolationProcessor> iProcessor, LBMReal nu);
-   ~InitDistributionsWithInterpolationGridVisitor();
-   void visit(SPtr<Grid3D> grid);
+   ~InitDistributionsWithInterpolationGridVisitor() override;
+   void visit(SPtr<Grid3D> grid) override;
 private:
    void copyLocalBlock(SPtr<Block3D> oldBlock, SPtr<Block3D> newBlock);
    void copyRemoteBlock(SPtr<Block3D> oldBlock, SPtr<Block3D> newBlock);
diff --git a/src/cpu/VirtualFluidsCore/Visitors/MetisPartitioningGridVisitor.cpp b/src/cpu/VirtualFluidsCore/Visitors/MetisPartitioningGridVisitor.cpp
index 16dcbd43e8d3c410490ed637f37a1cc03f780db1..23f3260e9e4efbcbf516bbd58cbb03fa12d5ab5b 100644
--- a/src/cpu/VirtualFluidsCore/Visitors/MetisPartitioningGridVisitor.cpp
+++ b/src/cpu/VirtualFluidsCore/Visitors/MetisPartitioningGridVisitor.cpp
@@ -1,7 +1,7 @@
 #if defined VF_METIS && defined VF_MPI
 
 #include "MetisPartitioningGridVisitor.h"
-#include <math.h>
+#include <cmath>
 #include "Block3D.h"
 #include "Grid3D.h"
 #include "Communicator.h"
@@ -22,9 +22,7 @@ MetisPartitioningGridVisitor::MetisPartitioningGridVisitor(SPtr<Communicator> co
 }
 //////////////////////////////////////////////////////////////////////////
 MetisPartitioningGridVisitor::~MetisPartitioningGridVisitor()
-{
-
-}
+= default;
 //////////////////////////////////////////////////////////////////////////
 void MetisPartitioningGridVisitor::visit(SPtr<Grid3D> grid)
 {
diff --git a/src/cpu/VirtualFluidsCore/Visitors/MetisPartitioningGridVisitor.h b/src/cpu/VirtualFluidsCore/Visitors/MetisPartitioningGridVisitor.h
index 0065a41a7dd89edaa02dc8bc1479b03104ef2855..2d241359c9ad7058ec995a863c854fb52cb5c6be 100644
--- a/src/cpu/VirtualFluidsCore/Visitors/MetisPartitioningGridVisitor.h
+++ b/src/cpu/VirtualFluidsCore/Visitors/MetisPartitioningGridVisitor.h
@@ -34,7 +34,7 @@ public:
    //! \param threads - on/off decomposition for threads
    //! \param numberOfThreads - number of threads
    MetisPartitioningGridVisitor(SPtr<Communicator> comm, GraphType graphType, int numOfDirs, MetisPartitioner::PartType partType = MetisPartitioner::KWAY, bool threads = false, int numberOfThreads = 0);
-   virtual ~MetisPartitioningGridVisitor();
+   ~MetisPartitioningGridVisitor() override;
    void visit(SPtr<Grid3D> grid) override;
    void setNumberOfProcesses(int np);
 
diff --git a/src/cpu/VirtualFluidsCore/Visitors/OverlapBlockVisitor.h b/src/cpu/VirtualFluidsCore/Visitors/OverlapBlockVisitor.h
index db25eaf71066b390f1779046237e99c7ce9b1cf9..49f34438c1db40126f7915ee3080d7352dad9337 100644
--- a/src/cpu/VirtualFluidsCore/Visitors/OverlapBlockVisitor.h
+++ b/src/cpu/VirtualFluidsCore/Visitors/OverlapBlockVisitor.h
@@ -14,7 +14,7 @@ class OverlapBlockVisitor : public Block3DVisitor
 public:
    OverlapBlockVisitor(int levelDepth, bool includeNotActiveBlocks = true);
    
-   virtual ~OverlapBlockVisitor(){}
+   ~OverlapBlockVisitor() override= default;
 
    bool isIterative()   { return false; }
 
diff --git a/src/cpu/VirtualFluidsCore/Visitors/RatioBlockVisitor.h b/src/cpu/VirtualFluidsCore/Visitors/RatioBlockVisitor.h
index 8641087216fb418dd57e5e78e5171fee66340197..f3f42d9cfa0613747645783f3939c1be8e3630ce 100644
--- a/src/cpu/VirtualFluidsCore/Visitors/RatioBlockVisitor.h
+++ b/src/cpu/VirtualFluidsCore/Visitors/RatioBlockVisitor.h
@@ -14,7 +14,7 @@ class RatioBlockVisitor : public Block3DVisitor
 public:
    RatioBlockVisitor(int levelDepth, bool includeNotActiveBlocks = false);
 
-   virtual ~RatioBlockVisitor() {}
+   ~RatioBlockVisitor() override = default;
 
    bool expandsByAdaptation() { return this->expandBlocks; }
 
diff --git a/src/cpu/VirtualFluidsCore/Visitors/RatioSmoothBlockVisitor.h b/src/cpu/VirtualFluidsCore/Visitors/RatioSmoothBlockVisitor.h
index 25715682d690e06e7bbd0b8db7c1c8174de1f9b9..856e5177911d958615f91dc22033958ccd80f760 100644
--- a/src/cpu/VirtualFluidsCore/Visitors/RatioSmoothBlockVisitor.h
+++ b/src/cpu/VirtualFluidsCore/Visitors/RatioSmoothBlockVisitor.h
@@ -13,7 +13,7 @@ class RatioSmoothBlockVisitor : public Block3DVisitor
 public:
    RatioSmoothBlockVisitor(int levelDepth, bool includeNotActiveBlocks = false);
 
-   virtual ~RatioSmoothBlockVisitor() {}
+   ~RatioSmoothBlockVisitor() override = default;
 
    bool expandsByAdaptation() { return this->expandBlocks; }
 
diff --git a/src/cpu/VirtualFluidsCore/Visitors/RefineAroundGbObjectHelper.cpp b/src/cpu/VirtualFluidsCore/Visitors/RefineAroundGbObjectHelper.cpp
index def2a0e11e73569200e80fa4260b2fc9a251d48a..59ffd9dfe64e3c0fa69abbc314ac673c485bbdd6 100644
--- a/src/cpu/VirtualFluidsCore/Visitors/RefineAroundGbObjectHelper.cpp
+++ b/src/cpu/VirtualFluidsCore/Visitors/RefineAroundGbObjectHelper.cpp
@@ -19,8 +19,7 @@ RefineAroundGbObjectHelper::RefineAroundGbObjectHelper(SPtr<Grid3D> grid, int re
 }
 //////////////////////////////////////////////////////////////////////////
 RefineAroundGbObjectHelper::~RefineAroundGbObjectHelper(void)
-{
-}
+= default;
 //////////////////////////////////////////////////////////////////////////
 void RefineAroundGbObjectHelper::refine()
 {
diff --git a/src/cpu/VirtualFluidsCore/Visitors/RefineAroundGbObjectHelper.h b/src/cpu/VirtualFluidsCore/Visitors/RefineAroundGbObjectHelper.h
index 3c21476a8fff8aff87d75e721d0e60fad882221c..76a7bb38571908fe732a06f9aaac1cb52e7080c0 100644
--- a/src/cpu/VirtualFluidsCore/Visitors/RefineAroundGbObjectHelper.h
+++ b/src/cpu/VirtualFluidsCore/Visitors/RefineAroundGbObjectHelper.h
@@ -20,7 +20,7 @@ public:
    //! \param startDistance start distance from geometry for refinement
    //! \param stopDistance stop distance from geometry for refinement
    RefineAroundGbObjectHelper(SPtr<Grid3D> grid, int maxRefineLevel, SPtr<D3Q27TriFaceMeshInteractor> objectIter, double startDistance, double stopDistance, SPtr<Communicator> comm);
-   virtual ~RefineAroundGbObjectHelper(void);
+   virtual ~RefineAroundGbObjectHelper();
    //! start refinement
    void refine();
 private:
diff --git a/src/cpu/VirtualFluidsCore/Visitors/RefineCrossAndInsideGbObjectBlockVisitor.cpp b/src/cpu/VirtualFluidsCore/Visitors/RefineCrossAndInsideGbObjectBlockVisitor.cpp
index 0eaf38e90fd99e2d785319f95eeb5758a31e1b82..cb503f368d67d53c58073a2d8e1c53751c2b3a52 100644
--- a/src/cpu/VirtualFluidsCore/Visitors/RefineCrossAndInsideGbObjectBlockVisitor.cpp
+++ b/src/cpu/VirtualFluidsCore/Visitors/RefineCrossAndInsideGbObjectBlockVisitor.cpp
@@ -6,19 +6,18 @@
 
 
 RefineCrossAndInsideGbObjectBlockVisitor::RefineCrossAndInsideGbObjectBlockVisitor()
-:  Block3DVisitor() , notActive(true)
+:  Block3DVisitor()  
 {
 }
 //////////////////////////////////////////////////////////////////////////
 RefineCrossAndInsideGbObjectBlockVisitor::RefineCrossAndInsideGbObjectBlockVisitor(SPtr<GbObject3D> geoObject, int refineLevel)
-   : Block3DVisitor(0,refineLevel-1), geoObject(geoObject), notActive(true)
+   : Block3DVisitor(0,refineLevel-1), geoObject(geoObject)
 {
 
 }
 //////////////////////////////////////////////////////////////////////////
 RefineCrossAndInsideGbObjectBlockVisitor::~RefineCrossAndInsideGbObjectBlockVisitor()
-{
-}
+= default;
 //////////////////////////////////////////////////////////////////////////
 void RefineCrossAndInsideGbObjectBlockVisitor::visit(const SPtr<Grid3D> grid, SPtr<Block3D> block)
 {
diff --git a/src/cpu/VirtualFluidsCore/Visitors/RefineCrossAndInsideGbObjectBlockVisitor.h b/src/cpu/VirtualFluidsCore/Visitors/RefineCrossAndInsideGbObjectBlockVisitor.h
index 6149eda041efe55d1f390f6eb9e592bc1a22558a..07e3e3b70b155cc2a94f9dcb4f481cd39975e74e 100644
--- a/src/cpu/VirtualFluidsCore/Visitors/RefineCrossAndInsideGbObjectBlockVisitor.h
+++ b/src/cpu/VirtualFluidsCore/Visitors/RefineCrossAndInsideGbObjectBlockVisitor.h
@@ -22,12 +22,12 @@ public:
    //! \param geoObject a smart pointer to bounding box
    //! \param refineLevel an integer for refine on this level
    RefineCrossAndInsideGbObjectBlockVisitor(SPtr<GbObject3D> geoObject, int refineLevel);
-   virtual ~RefineCrossAndInsideGbObjectBlockVisitor();
+   ~RefineCrossAndInsideGbObjectBlockVisitor() override;
 
    void visit(SPtr<Grid3D> grid, SPtr<Block3D> block) override;
 protected:
     SPtr<GbObject3D> geoObject;
-   bool notActive;
+   bool notActive{true};
 };
 
 #endif 
diff --git a/src/cpu/VirtualFluidsCore/Visitors/RefineCrossAndInsideGbObjectHelper.cpp b/src/cpu/VirtualFluidsCore/Visitors/RefineCrossAndInsideGbObjectHelper.cpp
index cff9fbfaf372d0ecb95da2b791c7d096001addce..912a551baebf49dcde72c642cb0010f68800bd3a 100644
--- a/src/cpu/VirtualFluidsCore/Visitors/RefineCrossAndInsideGbObjectHelper.cpp
+++ b/src/cpu/VirtualFluidsCore/Visitors/RefineCrossAndInsideGbObjectHelper.cpp
@@ -19,8 +19,7 @@ RefineCrossAndInsideGbObjectHelper::RefineCrossAndInsideGbObjectHelper(SPtr<Grid
 }
 //////////////////////////////////////////////////////////////////////////
 RefineCrossAndInsideGbObjectHelper::~RefineCrossAndInsideGbObjectHelper(void)
-{
-}
+= default;
 //////////////////////////////////////////////////////////////////////////
 void RefineCrossAndInsideGbObjectHelper::refine()
 {
diff --git a/src/cpu/VirtualFluidsCore/Visitors/RenumberBlockVisitor.h b/src/cpu/VirtualFluidsCore/Visitors/RenumberBlockVisitor.h
index 0980aa954abfba183fbc21a3a0221372ce709846..8740395482cb7849db37bc29dc2a478f0c2dbd86 100644
--- a/src/cpu/VirtualFluidsCore/Visitors/RenumberBlockVisitor.h
+++ b/src/cpu/VirtualFluidsCore/Visitors/RenumberBlockVisitor.h
@@ -21,7 +21,7 @@ class RenumberBlockVisitor : public Block3DVisitor
 public:
    RenumberBlockVisitor();
 
-   virtual ~RenumberBlockVisitor() {}
+   ~RenumberBlockVisitor() override = default;
 
    void visit(SPtr<Grid3D> grid, SPtr<Block3D> block) override;
 
diff --git a/src/cpu/VirtualFluidsCore/Visitors/RenumberGridVisitor.h b/src/cpu/VirtualFluidsCore/Visitors/RenumberGridVisitor.h
index b7005579aefddcec1c599a35f4bf7ae5c464d430..f4b27b58e5d48324fa9d198e8453a8e500d9a4fe 100644
--- a/src/cpu/VirtualFluidsCore/Visitors/RenumberGridVisitor.h
+++ b/src/cpu/VirtualFluidsCore/Visitors/RenumberGridVisitor.h
@@ -21,7 +21,7 @@ class RenumberGridVisitor : public Grid3DVisitor
 public:
    RenumberGridVisitor(SPtr<Communicator> com);
 
-   virtual ~RenumberGridVisitor() {}
+   ~RenumberGridVisitor() override = default;
 
    void visit(SPtr<Grid3D> grid) override;
 
diff --git a/src/cpu/VirtualFluidsCore/Visitors/SetBcBlocksBlockVisitor.h b/src/cpu/VirtualFluidsCore/Visitors/SetBcBlocksBlockVisitor.h
index 9836b61fb134ac27dbc183c2fb6f5ac984cba2d7..5db362a3b9f41ec59606374a7761da934b8f8f10 100644
--- a/src/cpu/VirtualFluidsCore/Visitors/SetBcBlocksBlockVisitor.h
+++ b/src/cpu/VirtualFluidsCore/Visitors/SetBcBlocksBlockVisitor.h
@@ -47,9 +47,9 @@ class SetBcBlocksBlockVisitor : public Block3DVisitor
 {
 public:
    SetBcBlocksBlockVisitor(SPtr<Interactor3D> interactor);
-   virtual ~SetBcBlocksBlockVisitor() {}
+   ~SetBcBlocksBlockVisitor() override = default;
 
-   virtual void visit(SPtr<Grid3D> grid, SPtr<Block3D> block);
+   void visit(SPtr<Grid3D> grid, SPtr<Block3D> block) override;
 
 private:
    SPtr<Interactor3D> interactor;
diff --git a/src/cpu/VirtualFluidsCore/Visitors/SetConnectorsBlockVisitor.cpp b/src/cpu/VirtualFluidsCore/Visitors/SetConnectorsBlockVisitor.cpp
index ae9a00e2c954a8bb7a147afc73ffb816a5830ad6..c6f1f9608a34ea25e9d3ebd524050a9ff60b4930 100644
--- a/src/cpu/VirtualFluidsCore/Visitors/SetConnectorsBlockVisitor.cpp
+++ b/src/cpu/VirtualFluidsCore/Visitors/SetConnectorsBlockVisitor.cpp
@@ -54,8 +54,7 @@ Block3DVisitor(0, Grid3DSystem::MAXLEVEL),
 }
 //////////////////////////////////////////////////////////////////////////
 SetConnectorsBlockVisitor::~SetConnectorsBlockVisitor(void)
-{
-}
+= default;
 //////////////////////////////////////////////////////////////////////////
 void SetConnectorsBlockVisitor::visit(SPtr<Grid3D> grid, SPtr<Block3D> block)
 {
@@ -133,7 +132,7 @@ void SetConnectorsBlockVisitor::setSameLevelConnectors(SPtr<Grid3D> grid, SPtr<B
    UBLOG(logDEBUG5, "D3Q27SetConnectorsBlockVisitor::setSameLevelConnectors() - end");
 }
 //////////////////////////////////////////////////////////////////////////
-void SetConnectorsBlockVisitor::setRemoteConnectors(SPtr<Block3D> sblock, SPtr<Block3D> tblock, int dir, bool fullConnector)
+void SetConnectorsBlockVisitor::setRemoteConnectors(SPtr<Block3D> sblock, SPtr<Block3D> tblock, int dir, bool  /*fullConnector*/)
 {
    UBLOG(logDEBUG5, "D3Q27SetConnectorsBlockVisitor::setRemoteConnectors() - start");
 	CreateTransmittersHelper helper;
diff --git a/src/cpu/VirtualFluidsCore/Visitors/SetConnectorsBlockVisitor.h b/src/cpu/VirtualFluidsCore/Visitors/SetConnectorsBlockVisitor.h
index 18d6b1f09a92fe45e47c7eeb4e8f777df821891b..7e7f13931b2d9ecf4200ed7987bb03ca04e5f9f4 100644
--- a/src/cpu/VirtualFluidsCore/Visitors/SetConnectorsBlockVisitor.h
+++ b/src/cpu/VirtualFluidsCore/Visitors/SetConnectorsBlockVisitor.h
@@ -51,7 +51,7 @@ class SetConnectorsBlockVisitor : public Block3DVisitor
 {
 public:
 	SetConnectorsBlockVisitor(SPtr<Communicator> comm, bool fullConnector, int dirs, LBMReal nue, SPtr<InterpolationProcessor> iProcessor);
-	virtual ~SetConnectorsBlockVisitor();
+	~SetConnectorsBlockVisitor() override;
 	void visit(SPtr<Grid3D> grid, SPtr<Block3D> block) override;
 	//////////////////////////////////////////////////////////////////////////
 protected:
diff --git a/src/cpu/VirtualFluidsCore/Visitors/SetForcingBlockVisitor.h b/src/cpu/VirtualFluidsCore/Visitors/SetForcingBlockVisitor.h
index f8406c31a30611ba663e8b2cdbbb3ebf3280b794..ac8936a138bf476b2da25f16271822e5945fe93b 100644
--- a/src/cpu/VirtualFluidsCore/Visitors/SetForcingBlockVisitor.h
+++ b/src/cpu/VirtualFluidsCore/Visitors/SetForcingBlockVisitor.h
@@ -19,9 +19,9 @@ public:
 
    SetForcingBlockVisitor(const std::string& sForcingX1, const std::string& sForcingX2, const std::string& sForcingX3);
 
-   virtual ~SetForcingBlockVisitor() {}
+   ~SetForcingBlockVisitor() override = default;
 
-   virtual void visit(SPtr<Grid3D> grid, SPtr<Block3D> block) override;
+   void visit(SPtr<Grid3D> grid, SPtr<Block3D> block) override;
 
 private:
    int ftype;
diff --git a/src/cpu/VirtualFluidsCore/Visitors/SetInterpolationDirsBlockVisitor.h b/src/cpu/VirtualFluidsCore/Visitors/SetInterpolationDirsBlockVisitor.h
index faca2e5fdf9e75de3d2ae97c2f3bbc806edf23b2..75dafc89949bc41deef5c1f3ae9f89e31a96576a 100644
--- a/src/cpu/VirtualFluidsCore/Visitors/SetInterpolationDirsBlockVisitor.h
+++ b/src/cpu/VirtualFluidsCore/Visitors/SetInterpolationDirsBlockVisitor.h
@@ -14,7 +14,7 @@ class SetInterpolationDirsBlockVisitor : public Block3DVisitor
 public:
    SetInterpolationDirsBlockVisitor(std::vector<int>& dirs);
 
-   virtual ~SetInterpolationDirsBlockVisitor() {}
+   ~SetInterpolationDirsBlockVisitor() override = default;
 
    void visit(SPtr<Grid3D> grid, SPtr<Block3D> block) override;
 
diff --git a/src/cpu/VirtualFluidsCore/Visitors/SetKernelBlockVisitor.cpp b/src/cpu/VirtualFluidsCore/Visitors/SetKernelBlockVisitor.cpp
index 3209dbe06f1bd385883fc3bf6504cb74d4bc5bb3..d3ec9e85ec58b977008e6fee49e5c5b64786e3c4 100644
--- a/src/cpu/VirtualFluidsCore/Visitors/SetKernelBlockVisitor.cpp
+++ b/src/cpu/VirtualFluidsCore/Visitors/SetKernelBlockVisitor.cpp
@@ -33,6 +33,8 @@
 //=======================================================================================
 
 #include "SetKernelBlockVisitor.h"
+
+#include <utility>
 #include "Grid3DSystem.h"
 #include "LBMSystem.h"
 #include "DataSet3D.h"
@@ -45,7 +47,7 @@
 SetKernelBlockVisitor::SetKernelBlockVisitor(SPtr<LBMKernel> kernel, LBMReal nue, double availMem, double needMem,
                                              SetKernelBlockVisitor::Action action) : Block3DVisitor(0,
                                                                                                     Grid3DSystem::MAXLEVEL),
-                                                                                     kernel(kernel), nue(nue),
+                                                                                     kernel(std::move(kernel)), nue(nue),
                                                                                      action(action), dataSetFlag(true)
 {
     if (needMem > availMem)
diff --git a/src/cpu/VirtualFluidsCore/Visitors/SetKernelBlockVisitor.h b/src/cpu/VirtualFluidsCore/Visitors/SetKernelBlockVisitor.h
index 9be7bad9d48190d7c2840d62fe612befa18f4774..e676d3f7e6c73f37192bad8627f827f83bd90bc8 100644
--- a/src/cpu/VirtualFluidsCore/Visitors/SetKernelBlockVisitor.h
+++ b/src/cpu/VirtualFluidsCore/Visitors/SetKernelBlockVisitor.h
@@ -62,8 +62,7 @@ public:
     SetKernelBlockVisitor(SPtr<LBMKernel> kernel, LBMReal nue, int &numberOfProcesses,
                           SetKernelBlockVisitor::Action action = SetKernelBlockVisitor::NewKernel);
 
-    virtual ~SetKernelBlockVisitor()
-    {}
+    ~SetKernelBlockVisitor() override = default;
 
     void visit(SPtr<Grid3D> grid, SPtr<Block3D> block) override;
 
diff --git a/src/cpu/VirtualFluidsCore/Visitors/SetSolidBlocksBlockVisitor.cpp b/src/cpu/VirtualFluidsCore/Visitors/SetSolidBlocksBlockVisitor.cpp
index 5c3d0762f21e94ffb5dc95a5d192cd1b788c885d..de9edef09deb391a772651bb590f7bdbde703522 100644
--- a/src/cpu/VirtualFluidsCore/Visitors/SetSolidBlocksBlockVisitor.cpp
+++ b/src/cpu/VirtualFluidsCore/Visitors/SetSolidBlocksBlockVisitor.cpp
@@ -33,13 +33,15 @@
 
 #include "SetSolidBlocksBlockVisitor.h"
 
+#include <utility>
+
 #include "Interactor3D.h"
 #include "Grid3DSystem.h"
 #include "Grid3D.h"
 #include "Block3D.h"
 
 SetSolidBlocksBlockVisitor::SetSolidBlocksBlockVisitor(SPtr<Interactor3D> interactor) :
-   Block3DVisitor(0, Grid3DSystem::MAXLEVEL), interactor(interactor)
+   Block3DVisitor(0, Grid3DSystem::MAXLEVEL), interactor(std::move(interactor))
 {
 
 }
diff --git a/src/cpu/VirtualFluidsCore/Visitors/SetSolidBlocksBlockVisitor.h b/src/cpu/VirtualFluidsCore/Visitors/SetSolidBlocksBlockVisitor.h
index 22945638d412253f2421394a3b4d12746bf77751..fe5456be9d021b5676aca18e97eb47af92188929 100644
--- a/src/cpu/VirtualFluidsCore/Visitors/SetSolidBlocksBlockVisitor.h
+++ b/src/cpu/VirtualFluidsCore/Visitors/SetSolidBlocksBlockVisitor.h
@@ -47,9 +47,9 @@ class SetSolidBlocksBlockVisitor : public Block3DVisitor
 {
 public:
    SetSolidBlocksBlockVisitor(SPtr<Interactor3D> interactor);
-   virtual ~SetSolidBlocksBlockVisitor() {}
+   ~SetSolidBlocksBlockVisitor() override = default;
 
-   virtual void visit(SPtr<Grid3D> grid, SPtr<Block3D> block);
+   void visit(SPtr<Grid3D> grid, SPtr<Block3D> block) override;
 
 private:
    SPtr<Interactor3D> interactor;
diff --git a/src/cpu/VirtualFluidsCore/Visitors/SetSpongeLayerBlockVisitor.cpp b/src/cpu/VirtualFluidsCore/Visitors/SetSpongeLayerBlockVisitor.cpp
index 076a6515c7aa27112d3b5d284b5926599b00a631..68c338d86aae39a852cf4b69d4df368b4615a024 100644
--- a/src/cpu/VirtualFluidsCore/Visitors/SetSpongeLayerBlockVisitor.cpp
+++ b/src/cpu/VirtualFluidsCore/Visitors/SetSpongeLayerBlockVisitor.cpp
@@ -12,9 +12,7 @@ SetSpongeLayerBlockVisitor::SetSpongeLayerBlockVisitor( const mu::Parser& sponge
 }
 //////////////////////////////////////////////////////////////////////////
 SetSpongeLayerBlockVisitor::~SetSpongeLayerBlockVisitor()
-{
-
-}
+= default;
 //////////////////////////////////////////////////////////////////////////
 void SetSpongeLayerBlockVisitor::visit( SPtr<Grid3D> grid, SPtr<Block3D> block )
 {
diff --git a/src/cpu/VirtualFluidsCore/Visitors/SetSpongeLayerBlockVisitor.h b/src/cpu/VirtualFluidsCore/Visitors/SetSpongeLayerBlockVisitor.h
index 67d5e2ad06c90d2b1f440e276f505a085990558f..27d48a1cf2372aa62ca5c56f9f3fef15f3536cca 100644
--- a/src/cpu/VirtualFluidsCore/Visitors/SetSpongeLayerBlockVisitor.h
+++ b/src/cpu/VirtualFluidsCore/Visitors/SetSpongeLayerBlockVisitor.h
@@ -17,7 +17,7 @@ class SetSpongeLayerBlockVisitor : public Block3DVisitor
 {
 public:
    SetSpongeLayerBlockVisitor(const mu::Parser& spongeLayer);
-   virtual ~SetSpongeLayerBlockVisitor();
+   ~SetSpongeLayerBlockVisitor() override;
 
    void visit(SPtr<Grid3D> grid, SPtr<Block3D> block) override;
 protected:
diff --git a/src/cpu/VirtualFluidsCore/Visitors/SetUndefinedNodesBlockVisitor.h b/src/cpu/VirtualFluidsCore/Visitors/SetUndefinedNodesBlockVisitor.h
index bf7e9e884eac391ee9d74fa9a1062f7d28e05434..8e40ada1222ea811498fb9984c8471e078620f1b 100644
--- a/src/cpu/VirtualFluidsCore/Visitors/SetUndefinedNodesBlockVisitor.h
+++ b/src/cpu/VirtualFluidsCore/Visitors/SetUndefinedNodesBlockVisitor.h
@@ -14,7 +14,7 @@ class SetUndefinedNodesBlockVisitor : public Block3DVisitor
 public:
    SetUndefinedNodesBlockVisitor(bool twoTypeOfConnectorsCheck=true);
 
-   virtual ~SetUndefinedNodesBlockVisitor() {}
+   ~SetUndefinedNodesBlockVisitor() override = default;
 
    void visit(SPtr<Grid3D> grid, SPtr<Block3D> block) override;
 protected:
diff --git a/src/cpu/VirtualFluidsCore/Visitors/SpongeLayerBlockVisitor.cpp b/src/cpu/VirtualFluidsCore/Visitors/SpongeLayerBlockVisitor.cpp
index 89db17a3d7e7f1cf5e4027ba5c7b1ed452f0b1a2..bc88929681f2cbc6138a4cfdf38d94164f4662bb 100644
--- a/src/cpu/VirtualFluidsCore/Visitors/SpongeLayerBlockVisitor.cpp
+++ b/src/cpu/VirtualFluidsCore/Visitors/SpongeLayerBlockVisitor.cpp
@@ -24,9 +24,7 @@ SpongeLayerBlockVisitor::SpongeLayerBlockVisitor(SPtr<GbCuboid3D> boundingBox, S
 }
 //////////////////////////////////////////////////////////////////////////
 SpongeLayerBlockVisitor::~SpongeLayerBlockVisitor()
-{
-
-}
+= default;
 //////////////////////////////////////////////////////////////////////////
 void SpongeLayerBlockVisitor::visit(SPtr<Grid3D> grid, SPtr<Block3D> block)
 {
diff --git a/src/cpu/VirtualFluidsCore/Visitors/SpongeLayerBlockVisitor.h b/src/cpu/VirtualFluidsCore/Visitors/SpongeLayerBlockVisitor.h
index 9b7091d2eee1f8ea6fefc835dd7ff216cce1576c..43ee4e614d5bf5961fd9457a462a0ad755051ac1 100644
--- a/src/cpu/VirtualFluidsCore/Visitors/SpongeLayerBlockVisitor.h
+++ b/src/cpu/VirtualFluidsCore/Visitors/SpongeLayerBlockVisitor.h
@@ -16,7 +16,7 @@ class SpongeLayerBlockVisitor : public Block3DVisitor
 {
 public:
    SpongeLayerBlockVisitor(SPtr<GbCuboid3D> boundingBox, SPtr<LBMKernel> kernel, double nue, int dir);
-   virtual ~SpongeLayerBlockVisitor();
+   ~SpongeLayerBlockVisitor() override;
 
    void visit(SPtr<Grid3D> grid, SPtr<Block3D> block) override;
 
diff --git a/src/cpu/VirtualFluidsCore/Visitors/ViscosityBlockVisitor.h b/src/cpu/VirtualFluidsCore/Visitors/ViscosityBlockVisitor.h
index 881d01f51840397e44604f178cf02ebf5e12c335..603a474623bda9578a7769ff015921171a7cf36b 100644
--- a/src/cpu/VirtualFluidsCore/Visitors/ViscosityBlockVisitor.h
+++ b/src/cpu/VirtualFluidsCore/Visitors/ViscosityBlockVisitor.h
@@ -14,7 +14,7 @@ class ViscosityBlockVisitor : public Block3DVisitor
 public:
    ViscosityBlockVisitor(LBMReal nu);
 
-   virtual ~ViscosityBlockVisitor() {}
+   ~ViscosityBlockVisitor() override = default;
 
    void visit(SPtr<Grid3D> grid, SPtr<Block3D> block) override;