diff --git a/src/boundary/Boundary.h b/src/boundary/Boundary.h
index 24b74f64383c24f5386a0b45935dd87f25169ec1..bd56b65ce7bf752ca7fca3e722481b2a2d091d88 100644
--- a/src/boundary/Boundary.h
+++ b/src/boundary/Boundary.h
@@ -121,7 +121,7 @@ public:
                                                      "a flag_t which is not an unsigned integer!" );
 
 #ifndef NDEBUG
-   Boundary( const BoundaryUID & boundaryUID ) : boundaryUID_( boundaryUID ), mask_(0), maskSet_(false) {}
+   Boundary( const BoundaryUID & boundaryUID ) : boundaryUID_( boundaryUID ), mask_(0) {}
 
    void   setMask( const flag_t mask ) { WALBERLA_ASSERT( !maskSet_ ); mask_ = mask; maskSet_ = true; } // called by BoundaryHandler
    flag_t getMask() const { WALBERLA_ASSERT( maskSet_ ); return mask_; }
@@ -142,7 +142,7 @@ protected:
                  // If part of this mask is set for a specific cell, this boundary class/condition is responsible for the corresponding boundary treatment.
 
 #ifndef NDEBUG
-   bool maskSet_; // only used in debug mode!
+   bool maskSet_{false}; // only used in debug mode!
 #endif
 
 }; // class Boundary
diff --git a/src/boundary/BoundaryHandling.h b/src/boundary/BoundaryHandling.h
index a3bff17631f979719fe1354c0a00b2b8c75f8b23..dc570ae0bdffe90afedd5403fb29927d7e56cd0a 100644
--- a/src/boundary/BoundaryHandling.h
+++ b/src/boundary/BoundaryHandling.h
@@ -2154,8 +2154,8 @@ inline void BoundaryHandling< FlagField_T, Stencil, Boundaries... >::operator()(
 
       if( dirty_ )
       {
-         for( uint_t i = 0; i != rebuildCellDirectionPairs_.size(); ++i )
-            rebuildCellDirectionPairs_[i] = true;
+         for(auto && rebuildCellDirectionPair : rebuildCellDirectionPairs_)
+            rebuildCellDirectionPair = true;
          dirty_ = false;
       }
 
@@ -2370,8 +2370,8 @@ inline void BoundaryHandling< FlagField_T, Stencil, Boundaries... >::toStream( s
    std::vector< std::string > boundaryConditions;
    getBoundaryConditions( boundaryConditions_, boundaryConditions );
 
-   for( auto bc = boundaryConditions.begin(); bc != boundaryConditions.end(); ++bc )
-      os << "- " << *bc << "\n";
+   for(auto & boundaryCondition : boundaryConditions)
+      os << "- " << boundaryCondition << "\n";
 
    os << "\nFlags/Masks:"
       << "\n- near boundary: "; valueToStream( os, nearBoundary_ );
@@ -2425,12 +2425,12 @@ typename std::enable_if<(N!=-1), void>::type BoundaryHandling< FlagField_T, Sten
    std::vector< FlagUID > uids;
    boundaryCondition.pushFlags( uids );
 
-   for( auto uid = uids.begin(); uid != uids.end(); ++uid )
+   for(auto & uid : uids)
    {
-      if( flagField_->flagExists( *uid ) )
-         mask = static_cast<flag_t>( mask | flagField_->getFlag( *uid ) );
+      if( flagField_->flagExists( uid ) )
+         mask = static_cast<flag_t>( mask | flagField_->getFlag( uid ) );
       else
-         mask = static_cast<flag_t>( mask | flagField_->registerFlag( *uid ) );
+         mask = static_cast<flag_t>( mask | flagField_->registerFlag( uid ) );
    }
    WALBERLA_ASSERT_EQUAL( boundary_ & mask, flag_t(0) ); // every boundary condition must have a unique mask/set of FlagUIDs
 
@@ -2585,13 +2585,12 @@ inline bool BoundaryHandling< FlagField_T, Stencil, Boundaries... >::checkFlagFi
       WALBERLA_ASSERT( innerBB_.contains( cells ) );
 
       CellVector nearBoundaryCells;
-      for( auto cellDirectionPairs = cellDirectionPairs_[numberOfGhostLayersToInclude].begin();
-               cellDirectionPairs != cellDirectionPairs_[numberOfGhostLayersToInclude].end(); ++cellDirectionPairs )
-         for( auto cellDirectionPair = cellDirectionPairs->begin(); cellDirectionPair != cellDirectionPairs->end(); ++cellDirectionPair )
-            nearBoundaryCells.push_back( cellDirectionPair->first );
+      for(const auto & cellDirectionPairs : cellDirectionPairs_[numberOfGhostLayersToInclude])
+         for(const auto & cellDirectionPair : cellDirectionPairs)
+            nearBoundaryCells.push_back( cellDirectionPair.first );
 
-      for( auto cell = nearBoundaryCells.begin(); cell != nearBoundaryCells.end(); ++cell )
-         if( !flagField_->isFlagSet( cell->x(), cell->y(), cell->z(), nearBoundary_ ) )
+      for(auto & nearBoundaryCell : nearBoundaryCells)
+         if( !flagField_->isFlagSet( nearBoundaryCell.x(), nearBoundaryCell.y(), nearBoundaryCell.z(), nearBoundary_ ) )
             return false;
 
       CellSet nearBoundarySet( nearBoundaryCells );
@@ -2805,8 +2804,8 @@ inline typename std::enable_if<(N!=-1), void>::type BoundaryHandling< FlagField_
    auto & boundaryCondition = std::get<N>( boundaryConditions );
    if( ( boundaryCondition.getMask() & flag ) == flag )
    {
-      for( auto cell = cells.begin(); cell != cells.end(); ++cell )
-         addBoundary( flag, cell->x(), cell->y(), cell->z() );
+      for(auto cell : cells)
+         addBoundary( flag, cell.x(), cell.y(), cell.z() );
 
       boundaryCondition.registerCells( flag, cells.begin(), cells.end(), parameter );
    }
diff --git a/src/boundary/BoundaryHandlingCollection.h b/src/boundary/BoundaryHandlingCollection.h
index 7b94d4a0e2c47b12724162ce89c007c850de964d..db91c1f95f5a131fd322708e0d847738b2677d65 100644
--- a/src/boundary/BoundaryHandlingCollection.h
+++ b/src/boundary/BoundaryHandlingCollection.h
@@ -1110,9 +1110,7 @@ template< typename Buffer_T >
 void BoundaryHandlingCollection< FlagField_T, Handlers... >::pack( Buffer_T & buffer, stencil::Direction direction, const uint_t numberOfLayers,
                                                              const bool assumeIdenticalFlagMapping ) const
 {
-#ifdef NDEBUG
    if( !assumeIdenticalFlagMapping )
-#endif
       buffer << getFlagMapping();
 
    CellInterval interval = getPackingInterval( direction, numberOfLayers );
diff --git a/src/lbm/boundary/ParserUBB.h b/src/lbm/boundary/ParserUBB.h
index 8559af959fd29f619b3d2284b8a7453de9fa1db9..e4cea769ac982f7be139fad36dbb1221bd30d224 100644
--- a/src/lbm/boundary/ParserUBB.h
+++ b/src/lbm/boundary/ParserUBB.h
@@ -117,7 +117,7 @@ public:
 
 
    ParserUBB( const BoundaryUID & boundaryUID, const FlagUID & uid, PDFField * const pdfField,
-              FlagField<flag_t> * const flagField, const shared_ptr< TimeTracker > & timeTracker,
+              const FlagField<flag_t> * const flagField, const shared_ptr< TimeTracker > & timeTracker,
               const uint_t level, const AABB & aabb );
    ParserUBB( const BoundaryUID & boundaryUID, const FlagUID & uid, PDFField * const pdfField,
               FlagField<flag_t> * const flagField,  const uint_t level, const AABB & aabb );
@@ -285,7 +285,7 @@ Vector3< real_t > ParserUBB<LatticeModel_T, flag_t, AdaptVelocityToExternalForce
 
 template< typename LatticeModel_T, typename flag_t, bool AdaptVelocityToExternalForce, bool StoreForce>
 inline ParserUBB<LatticeModel_T, flag_t, AdaptVelocityToExternalForce, StoreForce>::ParserUBB( const BoundaryUID & boundaryUID, const FlagUID & uid, PDFField * const pdfField,
-                                                                                   FlagField<flag_t> * const flagField, const shared_ptr< TimeTracker > & timeTracker,
+                                                                                   const FlagField<flag_t> * const flagField, const shared_ptr< TimeTracker > & timeTracker,
                                                                                    const uint_t level, const AABB & aabb )
    : Boundary<flag_t>( boundaryUID ), uid_( uid ), pdfField_( pdfField ), timeTracker_( timeTracker ), time_( real_t(0) ), level_( level )
 {
diff --git a/src/lbm/boundary/SimpleDiffusionDirichlet.h b/src/lbm/boundary/SimpleDiffusionDirichlet.h
index 5fa9db33d07f1559913f0e0a8c9fb590b3dd3e4e..b2d1b5779af2119d44ca63b5635f70e6d79620de 100644
--- a/src/lbm/boundary/SimpleDiffusionDirichlet.h
+++ b/src/lbm/boundary/SimpleDiffusionDirichlet.h
@@ -102,13 +102,13 @@ private:
    PDFField* const pdfField_;
 
    real_t val_;
-   bool   init_;
+   bool   init_{false};
 
 }; // class SimpleDiffusionDirichlet
 
 template< typename LatticeModel_T, typename flag_t >
 inline SimpleDiffusionDirichlet< LatticeModel_T, flag_t >::SimpleDiffusionDirichlet( const BoundaryUID& boundaryUID, const FlagUID& uid, PDFField* const pdfField, const real_t val ) :
-   Boundary<flag_t>( boundaryUID ), uid_( uid ), pdfField_( pdfField ), val_( val ), init_(false)
+   Boundary<flag_t>( boundaryUID ), uid_( uid ), pdfField_( pdfField ), val_( val )
 {
    WALBERLA_ASSERT_NOT_NULLPTR( pdfField_ );
 }
diff --git a/src/lbm/boundary/UBB.h b/src/lbm/boundary/UBB.h
index 9b1e46fa72895b87325ba7a8c4f63d827753a241..9a49e3f442e642ad3ad318fce0de041a02403b1f 100644
--- a/src/lbm/boundary/UBB.h
+++ b/src/lbm/boundary/UBB.h
@@ -87,7 +87,7 @@ public:
 
 
 
-   inline UBB( const BoundaryUID & boundaryUID, const FlagUID & uid, PDFField* const pdfField, FlagField<flag_t> * const flagField = nullptr );
+   inline UBB( const BoundaryUID & boundaryUID, const FlagUID & uid, PDFField* const pdfField, const FlagField<flag_t> * const flagField = nullptr );
 
    void pushFlags( std::vector< FlagUID > & uids ) const { uids.push_back( uid_ ); }
 
@@ -141,7 +141,7 @@ inline UBB< LatticeModel_T, flag_t, AdaptVelocityToExternalForce, StoreForce >::
 
 
 template< typename LatticeModel_T, typename flag_t, bool AdaptVelocityToExternalForce, bool StoreForce >
-inline UBB< LatticeModel_T, flag_t, AdaptVelocityToExternalForce, StoreForce >::UBB( const BoundaryUID & boundaryUID, const FlagUID & uid, PDFField* const pdfField, FlagField<flag_t> * const flagField ) :
+inline UBB< LatticeModel_T, flag_t, AdaptVelocityToExternalForce, StoreForce >::UBB( const BoundaryUID & boundaryUID, const FlagUID & uid, PDFField* const pdfField, const FlagField<flag_t> * const flagField ) :
 
    Boundary<flag_t>( boundaryUID ), uid_( uid ), pdfField_( pdfField )
 {
diff --git a/src/lbm/boundary/factories/DefaultBoundaryHandling.h b/src/lbm/boundary/factories/DefaultBoundaryHandling.h
index bdd2fb493326ca19af173aae9c1a4c769b97c319..9154638cba96d20d8caea5a305c7bfb52d633593 100644
--- a/src/lbm/boundary/factories/DefaultBoundaryHandling.h
+++ b/src/lbm/boundary/factories/DefaultBoundaryHandling.h
@@ -173,8 +173,8 @@ DefaultBoundaryHandlingFactory<LatticeModel, FlagFieldT>::operator()( walberla::
    FlagFieldT * const flagField = block->getData< FlagFieldT >( flagField_ );
 
    flag_t mask = 0;
-   for( auto flag = flagUIDSet_.begin(); flag != flagUIDSet_.end(); ++flag )
-      mask = static_cast< flag_t >( mask | flagField->getOrRegisterFlag( *flag ) );
+   for(auto flag : flagUIDSet_)
+      mask = static_cast< flag_t >( mask | flagField->getOrRegisterFlag( flag ) );
 
    BoundaryHandling * handling = new BoundaryHandling( "default lbm boundary handling", flagField, mask,
         BcNoSlip        ( getNoSlipBoundaryUID(),    getNoSlip(),    pdfField ),
diff --git a/src/lbm/boundary/factories/DefaultDiffusionBoundaryHandling.h b/src/lbm/boundary/factories/DefaultDiffusionBoundaryHandling.h
index 89fb33500f56417bbee3eb083f9a8ce44909daa0..d4d324f317f2e5cb664c2252f9e77bc0439a16b6 100644
--- a/src/lbm/boundary/factories/DefaultDiffusionBoundaryHandling.h
+++ b/src/lbm/boundary/factories/DefaultDiffusionBoundaryHandling.h
@@ -98,8 +98,8 @@ private:
       WALBERLA_ASSERT_NOT_NULLPTR( pdfField );
 
       flag_t domainMask(0u);
-      for( auto domainFlagUID = domainFlagUIDs.begin(); domainFlagUID != domainFlagUIDs.end(); ++domainFlagUID )
-         field::addMask( domainMask, flagField->getOrRegisterFlag( *domainFlagUID ) );
+      for(auto domainFlagUID : domainFlagUIDs)
+         field::addMask( domainMask, flagField->getOrRegisterFlag( domainFlagUID ) );
 
       BoundaryHandling_T * handling = new BoundaryHandling_T( "Diffusion Boundary Handling", flagField, domainMask,
          DiffusionDirichlet_T      ( getDiffusionDirichletBoundaryUID(),        getDiffusionDirichletFlagUID(),        pdfField, flagField ),
@@ -112,11 +112,11 @@ private:
       if( initFlagUIDs.size() > size_t(0u) )
       {
          flag_t initMask(0u);
-         for( auto initFlagUID = initFlagUIDs.begin(); initFlagUID != initFlagUIDs.end(); ++initFlagUID )
-            if( flagField->flagExists( *initFlagUID ) )
-               field::addMask( initMask, flagField->getFlag( *initFlagUID ) );
+         for(auto initFlagUID : initFlagUIDs)
+            if( flagField->flagExists( initFlagUID ) )
+               field::addMask( initMask, flagField->getFlag( initFlagUID ) );
             else
-               WALBERLA_ABORT( "Try to init flag field with a non registered flag: " << *initFlagUID );
+               WALBERLA_ABORT( "Try to init flag field with a non registered flag: " << initFlagUID );
          handling->fillWithDomain( initMask, uint_t(0u) );
       }
 
diff --git a/src/lbm/boundary/factories/ExtendedBoundaryHandlingFactory.h b/src/lbm/boundary/factories/ExtendedBoundaryHandlingFactory.h
index 730ceb008f7897c0d608119ad925940517d28421..1fad29cbfe2676a70dca881056204348bc728749 100644
--- a/src/lbm/boundary/factories/ExtendedBoundaryHandlingFactory.h
+++ b/src/lbm/boundary/factories/ExtendedBoundaryHandlingFactory.h
@@ -87,7 +87,7 @@ public:
    using BoundaryHandling = walberla::boundary::BoundaryHandling<FlagFieldT, Stencil, BcNoSlip, BcFreeSlip, BcPressure, BcUBB, BcOutlet, BcCurved>;
 
    static BlockDataID addBoundaryHandlingToStorage( const shared_ptr< StructuredBlockStorage > & bs, const std::string & identifier,
-                                                    BlockDataID flagFieldID, BlockDataID pdfFieldID, const Set< FlagUID > & flagUIDSet)
+                                                    BlockDataID  /*flagFieldID*/, BlockDataID pdfFieldID, const Set< FlagUID > & flagUIDSet)
    {
       return addBoundaryHandlingToStorage(bs, identifier, pdfFieldID, pdfFieldID, flagUIDSet,BoundaryHandling::Mode::OPTIMIZED_SPARSE_TRAVERSAL );
    }
@@ -158,8 +158,8 @@ ExtendedBoundaryHandlingFactory<LatticeModel, FlagFieldT>::operator()( IBlock *
    FlagFieldT * const flagField = block->getData< FlagFieldT >( flagField_ );
 
    flag_t mask = 0;
-   for( auto flag = flagUIDSet_.begin(); flag != flagUIDSet_.end(); ++flag )
-      mask = static_cast< flag_t >( mask | flagField->getOrRegisterFlag( *flag ) );
+   for(auto flag : flagUIDSet_)
+      mask = static_cast< flag_t >( mask | flagField->getOrRegisterFlag( flag ) );