diff --git a/src/basics/basics/container/CbVector.h b/src/basics/basics/container/CbVector.h
index 300b0212b4203bbd82a8505a7570bb519d8dfeed..49ccfcfacbd25d47bcfafa1c52f10cfe6a0c139c 100644
--- a/src/basics/basics/container/CbVector.h
+++ b/src/basics/basics/container/CbVector.h
@@ -264,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;
 
@@ -290,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..9a45f8ac90eb96e2a34d1fd2ae0da7f366bbdae3 100644
--- a/src/basics/basics/container/CbVectorPool.h
+++ b/src/basics/basics/container/CbVectorPool.h
@@ -427,19 +427,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
diff --git a/src/basics/basics/memory/MbSmartPtr.h b/src/basics/basics/memory/MbSmartPtr.h
index 4321a8e1aa5a0949899a77767499d68266e49049..0a705fa264bd1ef560e8dcd0a2176895bd6d5b2d 100644
--- a/src/basics/basics/memory/MbSmartPtr.h
+++ b/src/basics/basics/memory/MbSmartPtr.h
@@ -50,7 +50,7 @@ public:
 		init(ptr.get());
 	}
 	// Destruktor
-   ~MbSmartPtr<ObjType>()
+   ~MbSmartPtr<ObjType>() override
 	{
       init(NULL);
 	}
diff --git a/src/basics/basics/transmitter/TbTransmitterLocal.h b/src/basics/basics/transmitter/TbTransmitterLocal.h
index fba8f150c814b82f1042afad3c9f6f68de4bd0bb..9d6cd1db818cb64f51c2bceb56cf53d17eb5fb9d 100644
--- a/src/basics/basics/transmitter/TbTransmitterLocal.h
+++ b/src/basics/basics/transmitter/TbTransmitterLocal.h
@@ -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(); }
 };
 
 //////////////////////////////////////////////////////////////////////////
diff --git a/src/basics/basics/transmitter/TbTransmitterMpiPool.h b/src/basics/basics/transmitter/TbTransmitterMpiPool.h
index 78decb50c1447ccc3c3e84b388a11e37c302e2fc..052a9b39ed117bbc387d54abcba2f09e789b94c5 100644
--- a/src/basics/basics/transmitter/TbTransmitterMpiPool.h
+++ b/src/basics/basics/transmitter/TbTransmitterMpiPool.h
@@ -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;
@@ -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/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.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/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.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/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/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/WbWriterAvsASCII.h b/src/basics/basics/writer/WbWriterAvsASCII.h
index 45e00fd6d1e7d6cc326e7d6bcadb63d897e1f72a..652e7986a855e6ab77c17b436255e60aaa059c95 100644
--- a/src/basics/basics/writer/WbWriterAvsASCII.h
+++ b/src/basics/basics/writer/WbWriterAvsASCII.h
@@ -24,14 +24,14 @@ private:
    const WbWriterAvsASCII& operator=( const WbWriterAvsASCII& ); //no copy allowed
 
 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..ec9c3ca4ccf269f266cc262d542f864f20630f72 100644
--- a/src/basics/basics/writer/WbWriterAvsBinary.h
+++ b/src/basics/basics/writer/WbWriterAvsBinary.h
@@ -23,13 +23,13 @@ private:
    const WbWriterAvsBinary& operator=( const WbWriterAvsBinary& ); //no copy allowed
 
 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 +38,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 +48,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 +62,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..d270ab85c3576af14ef8dcf82a70da24e757aba5 100644
--- a/src/basics/basics/writer/WbWriterSunflow.h
+++ b/src/basics/basics/writer/WbWriterSunflow.h
@@ -26,9 +26,9 @@ private:
    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..8110d9d75a6b332650afa6415266ff5c0e2bd747 100644
--- a/src/basics/basics/writer/WbWriterTecPlotASCII.h
+++ b/src/basics/basics/writer/WbWriterTecPlotASCII.h
@@ -26,7 +26,7 @@ private:
 
    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..ead6cdba3b5de05e664f999b3715f96a9c6441e4 100644
--- a/src/basics/basics/writer/WbWriterVtkBinary.h
+++ b/src/basics/basics/writer/WbWriterVtkBinary.h
@@ -23,13 +23,13 @@ private:
    const WbWriterVtkBinary& operator=( const WbWriterVtkBinary& ); //no copy allowed
 
 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 +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,9 +64,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/WbWriterX3D.h b/src/basics/basics/writer/WbWriterX3D.h
index 2cea1c46ddc537f080dc8e7081cd92bc406b147c..4725e304f550fa7c8f063a6c75445575e40f2c85 100644
--- a/src/basics/basics/writer/WbWriterX3D.h
+++ b/src/basics/basics/writer/WbWriterX3D.h
@@ -26,9 +26,9 @@ private:
    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/GbCylinder3D.h b/src/basics/geometry3d/GbCylinder3D.h
index 04cdbb802ed4ce659097e258e341dd92e96c8766..f5f85252523dd04bd8a52f61ffd46252d6f49ebe 100644
--- a/src/basics/geometry3d/GbCylinder3D.h
+++ b/src/basics/geometry3d/GbCylinder3D.h
@@ -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
diff --git a/src/basics/geometry3d/GbHalfSpaceKrischan3D.h b/src/basics/geometry3d/GbHalfSpaceKrischan3D.h
index b51849282b2e6a171b0036fbdac778ea79f58037..004b5b63cddeb100f452f75786045b2cd3ebf8e8 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 { }
    /*=======================================================*/
    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/GbObjectGroup3D.h b/src/basics/geometry3d/GbObjectGroup3D.h
index fac78a728de7303a937ecb6db473f5357c7b7b3c..a066a2a0ef808241a0861a39014954b895078d16 100644
--- a/src/basics/geometry3d/GbObjectGroup3D.h
+++ b/src/basics/geometry3d/GbObjectGroup3D.h
@@ -33,10 +33,10 @@ public:
    // Konstruktoren
    GbObjectGroup3D(); 
    GbObjectGroup3D(GbObjectGroup3D *group){}; 
-   ~GbObjectGroup3D();
+   ~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/GbQuadFaceMesh3D.h b/src/basics/geometry3d/GbQuadFaceMesh3D.h
index d04c84e1f6a83bf7b4de05e57698fe9835b9ec1b..0ffa94867464cb5e48fc0ca139d9b4ce51042ca7 100644
--- a/src/basics/geometry3d/GbQuadFaceMesh3D.h
+++ b/src/basics/geometry3d/GbQuadFaceMesh3D.h
@@ -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,9 +92,9 @@ 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"; }
diff --git a/src/basics/geometry3d/GbSphere3D.h b/src/basics/geometry3d/GbSphere3D.h
index 694225a68df684cc5fc60e569a17322a1b335981..550b7c626bdb9765841006d6a7673715f1093d25 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/GbTriFaceMesh3D.h b/src/basics/geometry3d/GbTriFaceMesh3D.h
index 146c8c2200da8ec73fe9a6b5b87684a571d02604..f4e0c89292eab27aa6327442999127103f6feb51 100644
--- a/src/basics/geometry3d/GbTriFaceMesh3D.h
+++ b/src/basics/geometry3d/GbTriFaceMesh3D.h
@@ -217,14 +217,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 +240,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 +260,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);
 
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/GbVoxelMatrix3D.h b/src/basics/geometry3d/GbVoxelMatrix3D.h
index 4cc0925e065e05a3b66b5ec94b1dcaaa1759b878..9feceb824cb3de33ed6d8aa080dc28cb2c5d6a8f 100644
--- a/src/basics/geometry3d/GbVoxelMatrix3D.h
+++ b/src/basics/geometry3d/GbVoxelMatrix3D.h
@@ -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 {}
 
-   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"); }
+   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);
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/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/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.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.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/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.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.h b/src/cpu/VirtualFluidsCore/BoundaryConditions/SlipBCAdapter.h
index 2112e8e445d47dfac60fb9d2f4458d35e14d56ca..b6b34a616301e60ad19fb7f9cdea05a00ce5566e 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.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.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/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.h b/src/cpu/VirtualFluidsCore/CoProcessors/AverageValuesCoProcessor.h
index e45a52202d78c7798d64eb48305f70d60011c541..9b826e86545369b77a1c008bc94971b0617625ed 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:
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/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.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/LineTimeSeriesCoProcessor.h b/src/cpu/VirtualFluidsCore/CoProcessors/LineTimeSeriesCoProcessor.h
index 74514779245381fc640a93ee62f65e03ffee1def..027f2d9a109302233f007045bb59f79fda441150 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{}
 
    void process(double step) override;
    void writeLine(const std::string& path);
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.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.h b/src/cpu/VirtualFluidsCore/CoProcessors/MicrophoneArrayCoProcessor.h
index b3f5edbc8f32271e3c70a17918a1952914bb940a..52210186fbfc2d17b797eb45897214fb7ee563b4 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;
diff --git a/src/cpu/VirtualFluidsCore/CoProcessors/PressureCoefficientCoProcessor.h b/src/cpu/VirtualFluidsCore/CoProcessors/PressureCoefficientCoProcessor.h
index c1d5685c59b6d769fe006eb2dcd32e3b63cc3f78..16736237cf1fcb613d93699c7bcf75dc1fc22d73 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;
 
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/ShearStressCoProcessor.h b/src/cpu/VirtualFluidsCore/CoProcessors/ShearStressCoProcessor.h
index 4be491635fddad878b47b4780d5505c561e3dd3c..62843ab2ef3605df19036636ff5e90ad870c0089 100644
--- a/src/cpu/VirtualFluidsCore/CoProcessors/ShearStressCoProcessor.h
+++ b/src/cpu/VirtualFluidsCore/CoProcessors/ShearStressCoProcessor.h
@@ -29,7 +29,7 @@ public:
    //! 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.h b/src/cpu/VirtualFluidsCore/CoProcessors/TimeAveragedValuesCoProcessor.h
index 9465167dc04e8b466883b9ff42952cefcb614ba9..7a70c79355cc1678390de82c65e42ec8d7999bbe 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);
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.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.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/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.h b/src/cpu/VirtualFluidsCore/CoProcessors/WriteMQFromSelectionCoProcessor.h
index 5a5c0a58e0f17c75dfa1c904f7cd6b505bbea039..5720b49296e377d02f9197eea5273f02b971dcb5 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{}
 
    void process(double step) override;
 
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..98199fdde3f951492c2894e2642a7010788c2923 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 {}
 
-   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..9c5ec5bf6579d9ee999ef17bd20f4feb5ba89df8 100644
--- a/src/cpu/VirtualFluidsCore/Connectors/CoarseToFineNodeSetBlock3DConnector.h
+++ b/src/cpu/VirtualFluidsCore/Connectors/CoarseToFineNodeSetBlock3DConnector.h
@@ -50,10 +50,10 @@ 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;
diff --git a/src/cpu/VirtualFluidsCore/Connectors/D3Q27ETCFOffVectorConnector.h b/src/cpu/VirtualFluidsCore/Connectors/D3Q27ETCFOffVectorConnector.h
index 48ac7a37fc451a85493212f1564a1a1059fee42e..094a9bec457a3acc23ab212fdf31b2d2973254b2 100644
--- a/src/cpu/VirtualFluidsCore/Connectors/D3Q27ETCFOffVectorConnector.h
+++ b/src/cpu/VirtualFluidsCore/Connectors/D3Q27ETCFOffVectorConnector.h
@@ -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
diff --git a/src/cpu/VirtualFluidsCore/Connectors/D3Q27ETFCOffVectorConnector.h b/src/cpu/VirtualFluidsCore/Connectors/D3Q27ETFCOffVectorConnector.h
index 397a9c27c2aaab3bdfc017b057440ab15b2e0921..9817caad70d7238eed1ae70d5fa567d689d3ce20 100644
--- a/src/cpu/VirtualFluidsCore/Connectors/D3Q27ETFCOffVectorConnector.h
+++ b/src/cpu/VirtualFluidsCore/Connectors/D3Q27ETFCOffVectorConnector.h
@@ -44,42 +44,42 @@ 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
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..4d470fd620c190f2cfed2c338a589033c55a02fa 100644
--- a/src/cpu/VirtualFluidsCore/Connectors/FineToCoarseNodeSetBlock3DConnector.h
+++ b/src/cpu/VirtualFluidsCore/Connectors/FineToCoarseNodeSetBlock3DConnector.h
@@ -29,9 +29,9 @@ 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;
diff --git a/src/cpu/VirtualFluidsCore/Connectors/LocalBlock3DConnector.h b/src/cpu/VirtualFluidsCore/Connectors/LocalBlock3DConnector.h
index de6a011788cd84772a23fd97111ecd1e6755b2a9..90790ce7d2e1545bbabb3dcd263fb98c4e05e77c 100644
--- a/src/cpu/VirtualFluidsCore/Connectors/LocalBlock3DConnector.h
+++ b/src/cpu/VirtualFluidsCore/Connectors/LocalBlock3DConnector.h
@@ -68,21 +68,21 @@ public:
 
    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/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/VoidData3D.h b/src/cpu/VirtualFluidsCore/Data/VoidData3D.h
index d1f22710167f0b23f3dfd816b0147833cbd113a0..3462d2102f94f58da6e82f8e3944bcc4fe971f0d 100644
--- a/src/cpu/VirtualFluidsCore/Data/VoidData3D.h
+++ b/src/cpu/VirtualFluidsCore/Data/VoidData3D.h
@@ -14,21 +14,21 @@ public:
       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 {};
+    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/Interactors/D3Q27TriFaceMeshInteractor.h b/src/cpu/VirtualFluidsCore/Interactors/D3Q27TriFaceMeshInteractor.h
index bd3f127200fcb9e265d4876d982ef92500b1d47b..84ac491b91fc59482766cfff6b1dd2a8e1512b48 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;                         }
diff --git a/src/cpu/VirtualFluidsCore/LBM/BGKLBMKernel.h b/src/cpu/VirtualFluidsCore/LBM/BGKLBMKernel.h
index d3b7cefb1ee3a4ed3abd74bfde2f9c2a3e4e6f81..6a45748f2af6f45ff3749e5ca3e31b0fcf64b5f8 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(void) override;
    void calculate(int step)override;
    SPtr<LBMKernel> clone()override;
    double getCalculationTime() override;
diff --git a/src/cpu/VirtualFluidsCore/LBM/CompressibleCumulant4thOrderViscosityLBMKernel.h b/src/cpu/VirtualFluidsCore/LBM/CompressibleCumulant4thOrderViscosityLBMKernel.h
index d10ea218f385eda34234a4a22b3d7d5ba76e5bf5..4acff84c19d6eaacd469b0d105bb5466a69be3fa 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(void) 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.h b/src/cpu/VirtualFluidsCore/LBM/CompressibleCumulantLBMKernel.h
index 353fc4b539b1f3f4fe05c1e814bc3bc1c7efe0c2..a31ed59ddb8510d36548f84516b0071e4a4b6d97 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(void) 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.h b/src/cpu/VirtualFluidsCore/LBM/CompressibleOffsetInterpolationProcessor.h
index b4465799a5ab77578e9ba4cde78d919ddcc9a6f4..d29a20497b3601f30509f074ee1d3000f3d9937c 100644
--- a/src/cpu/VirtualFluidsCore/LBM/CompressibleOffsetInterpolationProcessor.h
+++ b/src/cpu/VirtualFluidsCore/LBM/CompressibleOffsetInterpolationProcessor.h
@@ -16,13 +16,13 @@ class CompressibleOffsetInterpolationProcessor : public InterpolationProcessor
 public:
    CompressibleOffsetInterpolationProcessor();
    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;
+   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:
@@ -44,10 +44,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 +57,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.h b/src/cpu/VirtualFluidsCore/LBM/CompressibleOffsetMomentsInterpolationProcessor.h
index f3a1403e4e09ee451a772547b9f2e6b1932c0a74..e5492f1594f33058569ada467d4d24c603435379 100644
--- a/src/cpu/VirtualFluidsCore/LBM/CompressibleOffsetMomentsInterpolationProcessor.h
+++ b/src/cpu/VirtualFluidsCore/LBM/CompressibleOffsetMomentsInterpolationProcessor.h
@@ -16,13 +16,13 @@ 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:
@@ -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.h b/src/cpu/VirtualFluidsCore/LBM/CompressibleOffsetSquarePressureInterpolationProcessor.h
index 5236697192f17b325172db55f58f1aaf2bd39291..b00d3839543107501a16dabea5866b37af305544 100644
--- a/src/cpu/VirtualFluidsCore/LBM/CompressibleOffsetSquarePressureInterpolationProcessor.h
+++ b/src/cpu/VirtualFluidsCore/LBM/CompressibleOffsetSquarePressureInterpolationProcessor.h
@@ -16,13 +16,13 @@ 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:
@@ -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.h b/src/cpu/VirtualFluidsCore/LBM/CumulantK17LBMKernel.h
index 96062021abc966db801e5a131bf06f24abec2cf4..4444213c046873bd3dca44525f85d1be69b12fa1 100644
--- a/src/cpu/VirtualFluidsCore/LBM/CumulantK17LBMKernel.h
+++ b/src/cpu/VirtualFluidsCore/LBM/CumulantK17LBMKernel.h
@@ -52,7 +52,7 @@ class CumulantK17LBMKernel : public LBMKernel
 {
 public:
    CumulantK17LBMKernel();
-   virtual ~CumulantK17LBMKernel() override;
+   ~CumulantK17LBMKernel() override;
    void calculate(int step) override;
    SPtr<LBMKernel> clone() override;
    double getCalculationTime() override { return .0; }
diff --git a/src/cpu/VirtualFluidsCore/LBM/IncompressibleCumulantLBMKernel.h b/src/cpu/VirtualFluidsCore/LBM/IncompressibleCumulantLBMKernel.h
index cf4234e0069025d601ddd8eb0cf0e905525a0d42..f614d94531acd5a5f9b7f0f83dcaef8c08bbb698 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(void) 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.h b/src/cpu/VirtualFluidsCore/LBM/IncompressibleCumulantWithSpongeLayerLBMKernel.h
index c3ab71343657c793028fbb0d4ec4894ef15f923f..ab7ef611ea0e7917188a396b4d1d9fb7e9f46bb1 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(void) 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.h b/src/cpu/VirtualFluidsCore/LBM/IncompressibleOffsetInterpolationProcessor.h
index b618660a914fa58b10788c400ecff9b9f688fc05..e4017e5b9892dd693bb026e6ea0ab60b700c5eaa 100644
--- a/src/cpu/VirtualFluidsCore/LBM/IncompressibleOffsetInterpolationProcessor.h
+++ b/src/cpu/VirtualFluidsCore/LBM/IncompressibleOffsetInterpolationProcessor.h
@@ -17,13 +17,13 @@ class IncompressibleOffsetInterpolationProcessor : public InterpolationProcessor
 public:
    IncompressibleOffsetInterpolationProcessor();
    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;
+   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:
@@ -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.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/LBMKernel.h b/src/cpu/VirtualFluidsCore/LBM/LBMKernel.h
index 1b2326374ec0b49bd19f540f6c9572266c2a3d0c..9703bf6c56349c93618f330d38e60b7af4148e72 100644
--- a/src/cpu/VirtualFluidsCore/LBM/LBMKernel.h
+++ b/src/cpu/VirtualFluidsCore/LBM/LBMKernel.h
@@ -55,11 +55,11 @@ public:
 
     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;
diff --git a/src/cpu/VirtualFluidsCore/LBM/LBMKernelETD3Q27BGK.h b/src/cpu/VirtualFluidsCore/LBM/LBMKernelETD3Q27BGK.h
index 632a8040282f43a4449782fbd01b7679ac4e1dc8..56c5c033a6b9078bcffc45b82fc1304ff2889933 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(void) override;
    void calculate(int step)override;
    SPtr<LBMKernel> clone()override;
    double getCalculationTime() override;
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/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/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/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..7f3d59c471f656caed1ade3074ace0cd72a80401 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 {}
 
    bool getState();
    void resetState();
diff --git a/src/cpu/VirtualFluidsCore/Visitors/CoarsenCrossAndInsideGbObjectBlockVisitor.h b/src/cpu/VirtualFluidsCore/Visitors/CoarsenCrossAndInsideGbObjectBlockVisitor.h
index 19399d554f5cd03328972e067f98593f78e7e214..9054926081ecc831197f2c46cf7f14afe7e2794d 100644
--- a/src/cpu/VirtualFluidsCore/Visitors/CoarsenCrossAndInsideGbObjectBlockVisitor.h
+++ b/src/cpu/VirtualFluidsCore/Visitors/CoarsenCrossAndInsideGbObjectBlockVisitor.h
@@ -21,7 +21,7 @@ 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:
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/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.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..15af7a41ac496ae21072a7206272c008eeab3129 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{}
 
    bool isIterative()   { return false; }
 
diff --git a/src/cpu/VirtualFluidsCore/Visitors/RatioBlockVisitor.h b/src/cpu/VirtualFluidsCore/Visitors/RatioBlockVisitor.h
index 8641087216fb418dd57e5e78e5171fee66340197..21e4daa8f5dd9b20a3ae7da29976b21cf405005a 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 {}
 
    bool expandsByAdaptation() { return this->expandBlocks; }
 
diff --git a/src/cpu/VirtualFluidsCore/Visitors/RatioSmoothBlockVisitor.h b/src/cpu/VirtualFluidsCore/Visitors/RatioSmoothBlockVisitor.h
index 25715682d690e06e7bbd0b8db7c1c8174de1f9b9..3b7d095f7f645aba94971c17c7263c31914fe7e3 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 {}
 
    bool expandsByAdaptation() { return this->expandBlocks; }
 
diff --git a/src/cpu/VirtualFluidsCore/Visitors/RefineCrossAndInsideGbObjectBlockVisitor.h b/src/cpu/VirtualFluidsCore/Visitors/RefineCrossAndInsideGbObjectBlockVisitor.h
index 6149eda041efe55d1f390f6eb9e592bc1a22558a..d8b5b188839286c8542b5885da316f6e772c370b 100644
--- a/src/cpu/VirtualFluidsCore/Visitors/RefineCrossAndInsideGbObjectBlockVisitor.h
+++ b/src/cpu/VirtualFluidsCore/Visitors/RefineCrossAndInsideGbObjectBlockVisitor.h
@@ -22,7 +22,7 @@ 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:
diff --git a/src/cpu/VirtualFluidsCore/Visitors/RenumberBlockVisitor.h b/src/cpu/VirtualFluidsCore/Visitors/RenumberBlockVisitor.h
index 0980aa954abfba183fbc21a3a0221372ce709846..ff0939e017c29cfd2464e495c88b88cf37cfddc2 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 {}
 
    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..b403947d64d92547fb7426438d5737ee195845da 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 {}
 
    void visit(SPtr<Grid3D> grid) override;
 
diff --git a/src/cpu/VirtualFluidsCore/Visitors/SetForcingBlockVisitor.h b/src/cpu/VirtualFluidsCore/Visitors/SetForcingBlockVisitor.h
index f8406c31a30611ba663e8b2cdbbb3ebf3280b794..d612a5f045185709e1fb5f992abc2d5e91e19ba4 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 {}
 
-   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..8645cf828843c75a006adaf08028cde142276024 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 {}
 
    void visit(SPtr<Grid3D> grid, SPtr<Block3D> block) override;
 
diff --git a/src/cpu/VirtualFluidsCore/Visitors/SetKernelBlockVisitor.h b/src/cpu/VirtualFluidsCore/Visitors/SetKernelBlockVisitor.h
index 771eb66751e089a49cad06474175eac8df4af119..e676d3f7e6c73f37192bad8627f827f83bd90bc8 100644
--- a/src/cpu/VirtualFluidsCore/Visitors/SetKernelBlockVisitor.h
+++ b/src/cpu/VirtualFluidsCore/Visitors/SetKernelBlockVisitor.h
@@ -64,7 +64,7 @@ public:
 
     ~SetKernelBlockVisitor() override = default;
 
-    void visit(SPtr<Grid3D> grid, SPtr<Block3D> block);
+    void visit(SPtr<Grid3D> grid, SPtr<Block3D> block) override;
 
     void setNoDataSetFlag(bool flag);
 
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..9fe2b4f5141197685f336a17feb0026e1dd57d75 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 {}
 
    void visit(SPtr<Grid3D> grid, SPtr<Block3D> block) override;
 protected:
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..31f5d03169aae504e914a2fd726456cc951fc42c 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 {}
 
    void visit(SPtr<Grid3D> grid, SPtr<Block3D> block) override;