diff --git a/apps/benchmarks/PeriodicGranularGas/PeriodicGranularGas.cpp b/apps/benchmarks/PeriodicGranularGas/PeriodicGranularGas.cpp
index 190b13e0d42ad23926e76e7afc3e0ece4f14568f..bb69ca027d76ad7caefd56793052568c9518cf62 100644
--- a/apps/benchmarks/PeriodicGranularGas/PeriodicGranularGas.cpp
+++ b/apps/benchmarks/PeriodicGranularGas/PeriodicGranularGas.cpp
@@ -164,11 +164,11 @@ int main( int argc, char ** argv )
    std::function<void(void)> syncCallWithoutTT;
    if (bNN)
    {
-      syncCallWithoutTT = std::bind( pe::syncNextNeighbors<BodyTuple>, boost::ref(*forest), storageID, &tt, real_c(0.1), false );
+      syncCallWithoutTT = std::bind( pe::syncNextNeighbors<BodyTuple>, std::ref(*forest), storageID, &tt, real_c(0.1), false );
       WALBERLA_LOG_INFO_ON_ROOT("Using NextNeighbor sync!");
    } else if (bSO)
    {
-      syncCallWithoutTT = std::bind( pe::syncShadowOwners<BodyTuple>, boost::ref(*forest), storageID, &tt, real_c(0.1), false );
+      syncCallWithoutTT = std::bind( pe::syncShadowOwners<BodyTuple>, std::ref(*forest), storageID, &tt, real_c(0.1), false );
       WALBERLA_LOG_INFO_ON_ROOT("Using ShadowOwner sync!");
    } else
    {
diff --git a/src/core/math/Matrix2.h b/src/core/math/Matrix2.h
index 87b41821e01dc77efd2e2daffc82382ada132980..3dae71c58038bb2e4a58c3ad0e8d73c3247de23d 100644
--- a/src/core/math/Matrix2.h
+++ b/src/core/math/Matrix2.h
@@ -841,7 +841,7 @@ inline const Matrix2<Type> fabs( const Matrix2<Type>& m );
 //template< typename Type, typename Other >
 //inline const Matrix2<HIGH> operator*( Other scalar, const Matrix2<Type>& matrix )
 //{
-//   static_assert( ! boost::is_scalar<Other>::value, "Only scalar types allowed" );
+//   static_assert( ! std::is_scalar<Other>::value, "Only scalar types allowed" );
 //   return matrix*scalar;
 //}
 //**********************************************************************************************************************
diff --git a/src/core/mpi/BufferSystem.impl.h b/src/core/mpi/BufferSystem.impl.h
index 483013860cfb65df8c0892ac770ec21057b89953..240f49a0c9431bb8fac7a4c0738daffdc8ce957c 100644
--- a/src/core/mpi/BufferSystem.impl.h
+++ b/src/core/mpi/BufferSystem.impl.h
@@ -520,8 +520,6 @@ void GenericBufferSystem<Rb, Sb>::setCommunicationType( const bool knownSize )
 //
 //======================================================================================================================
 
-// using boost::counting_range didn't work on all supported compilers
-// so the range is created explicitly
 template< typename Rb, typename Sb>
 typename GenericBufferSystem<Rb, Sb>::RankRange GenericBufferSystem<Rb,Sb>::noRanks()
 {
diff --git a/src/core/uid/UIDGenerators.h b/src/core/uid/UIDGenerators.h
index 7c762b9a125f325bc90f909e070c2779d2f7b3a7..0e913b16a100773e9f2aa149c55e2320a51684a4 100644
--- a/src/core/uid/UIDGenerators.h
+++ b/src/core/uid/UIDGenerators.h
@@ -153,7 +153,7 @@ public:
 
 // http://graphics.stanford.edu/~seander/bithacks.html
 
-static const boost::uint8_t logBase2LookupTable[256] =
+static const uint8_t logBase2LookupTable[256] =
 {
 #define logBase2LT(n) n, n, n, n, n, n, n, n, n, n, n, n, n, n, n, n
       0, 0, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3,
@@ -164,9 +164,9 @@ static const boost::uint8_t logBase2LookupTable[256] =
 
 template< typename UINT > size_t logBase2( UINT value ); // 1000 -> 3, 0010 -> 1, 0001 -> 0, etc.
 
-template<> inline size_t logBase2< boost::uint64_t >( boost::uint64_t value ) {
+template<> inline size_t logBase2< uint64_t >( uint64_t value ) {
 
-   boost::uint64_t i, j;
+   uint64_t i, j;
 
    i = value >> 32;
    if( i != 0 ) {
@@ -187,9 +187,9 @@ template<> inline size_t logBase2< boost::uint64_t >( boost::uint64_t value ) {
    return ( i != 0 ) ? (8 + logBase2LookupTable[i]) : logBase2LookupTable[value];
 }
 
-template<> inline size_t logBase2< boost::uint32_t >( boost::uint32_t value ) {
+template<> inline size_t logBase2< uint32_t >( uint32_t value ) {
 
-   boost::uint32_t i, j;
+   uint32_t i, j;
 
    j = value >> 16;
    if( j != 0 ) {
diff --git a/src/cuda/python/Exports.impl.h b/src/cuda/python/Exports.impl.h
index ada1586f3884bd42d841c94a36d20a2a76682e1f..b828163ed6a494d253f64e83045553079f8c0443 100644
--- a/src/cuda/python/Exports.impl.h
+++ b/src/cuda/python/Exports.impl.h
@@ -231,7 +231,7 @@ namespace internal {
 
       auto result = make_shared<boost::python::object>();
       AddToStorageExporter exporter( blocks, name, fs, gl, layout, type, usePitchedMem );
-      python_coupling::for_each_noncopyable_type<GpuFields>( boost::ref(exporter) );
+      python_coupling::for_each_noncopyable_type<GpuFields>( std::ref(exporter) );
 
       if ( ! exporter.successful() ) {
          PyErr_SetString( PyExc_ValueError, "Adding Field failed.");
diff --git a/src/domain_decomposition/BlockStorage.cpp b/src/domain_decomposition/BlockStorage.cpp
index edf5092afd72a035ace886d17966f5d28a342c91..bda4c82ed0ec168216da614f0b6b8f59c2c610ca 100644
--- a/src/domain_decomposition/BlockStorage.cpp
+++ b/src/domain_decomposition/BlockStorage.cpp
@@ -40,7 +40,7 @@ namespace domain_decomposition {
 //**********************************************************************************************************************
 /*!
 *   For documentation, see documentation of free function
-*   'void mapPointToPeriodicDomain( const boost::array< bool, 3 > & periodic, const AABB & domain,
+*   'void mapPointToPeriodicDomain( const std::array< bool, 3 > & periodic, const AABB & domain,
 *                                   real_t & x, real_t & y, real_t & z )'
 */
 //**********************************************************************************************************************
@@ -57,7 +57,7 @@ void BlockStorage::mapToPeriodicDomain( real_t & x, real_t & y, real_t & z ) con
 //**********************************************************************************************************************
 /*!
 *   For documentation, see documentation of free function
-*   'bool periodicIntersect( const boost::array< bool, 3 > & periodic, const math::AABB & domain, const math::AABB & box1, const math::AABB & box2 )'
+*   'bool periodicIntersect( const std::array< bool, 3 > & periodic, const math::AABB & domain, const math::AABB & box1, const math::AABB & box2 )'
 */
 //**********************************************************************************************************************
 bool BlockStorage::periodicIntersect( const math::AABB & box1, const math::AABB & box2 ) const
diff --git a/src/domain_decomposition/BlockStorage.h b/src/domain_decomposition/BlockStorage.h
index b0662742e2c92a1494db0b09290f9607a50f489b..34789a47b625f8db032975c470a8efdff312e51b 100644
--- a/src/domain_decomposition/BlockStorage.h
+++ b/src/domain_decomposition/BlockStorage.h
@@ -35,7 +35,6 @@
 #include "core/uid/SUID.h"
 
 #include <functional>
-//#include <boost/type_traits/is_base_of.hpp>
 #include <string>
 #include <vector>
 
@@ -660,7 +659,7 @@ template< typename T >
 inline BlockDataID BlockStorage::addBlockData( const shared_ptr< T > & dataHandling, const std::string & identifier,
                                                const Set<SUID> & requiredSelectors, const Set<SUID> & incompatibleSelectors )
 {
-   //static_assert( boost::is_base_of< BlockDataHandling<typename T::value_type>, T >::value );
+   //static_assert( std::is_base_of< BlockDataHandling<typename T::value_type>, T >::value );
    internal::SelectableBlockDataHandlingWrapper sbdhw( walberla::make_shared< internal::BlockDataHandlingHelper<typename T::value_type> >( dataHandling ),
                                                        requiredSelectors, incompatibleSelectors, identifier );
 
diff --git a/src/domain_decomposition/MapPointToPeriodicDomain.h b/src/domain_decomposition/MapPointToPeriodicDomain.h
index 21107b075bd2f35785642cd41a6e169f8145cbd9..0835af1809046737d876b8cbfa99001138be7eb4 100644
--- a/src/domain_decomposition/MapPointToPeriodicDomain.h
+++ b/src/domain_decomposition/MapPointToPeriodicDomain.h
@@ -46,7 +46,7 @@ void mapPointToPeriodicDomain( const std::array< bool, 3 > & periodic, const AAB
 
 
 
-/// see documetation of 'void mapPointToPeriodicDomain( const boost::array< bool, 3 > & periodic, const AABB & domain, real_t & x, real_t & y, real_t & z )'
+/// see documetation of 'void mapPointToPeriodicDomain( const std::array< bool, 3 > & periodic, const AABB & domain, real_t & x, real_t & y, real_t & z )'
 inline void mapPointToPeriodicDomain( const std::array< bool, 3 > & periodic, const AABB & domain, Vector3< real_t > & p )
 {
    mapPointToPeriodicDomain( periodic, domain, p[0], p[1], p[2] );
@@ -54,7 +54,7 @@ inline void mapPointToPeriodicDomain( const std::array< bool, 3 > & periodic, co
 
 
 
-/// see documetation of 'void mapPointToPeriodicDomain( const boost::array< bool, 3 > & periodic, const AABB & domain, real_t & x, real_t & y, real_t & z )'
+/// see documetation of 'void mapPointToPeriodicDomain( const std::array< bool, 3 > & periodic, const AABB & domain, real_t & x, real_t & y, real_t & z )'
 inline Vector3< real_t > mapPointToPeriodicDomain( const std::array< bool, 3 > & periodic, const AABB & domain, const Vector3< real_t > & p )
 {
    Vector3< real_t > point( p );
diff --git a/tests/pe_coupling/utility/BodiesForceTorqueContainerTest.cpp b/tests/pe_coupling/utility/BodiesForceTorqueContainerTest.cpp
index bf84cbe06f2dafcd9b732505913ab2fd1da4efdf..dcb3382e6be657496dea0ae4651e165ea643fc61 100644
--- a/tests/pe_coupling/utility/BodiesForceTorqueContainerTest.cpp
+++ b/tests/pe_coupling/utility/BodiesForceTorqueContainerTest.cpp
@@ -90,7 +90,7 @@ int main( int argc, char **argv )
 
    // pe coupling
    const real_t overlap = real_t( 1.5 ) * dx;
-   std::function<void(void)> syncCall = std::bind( pe::syncNextNeighbors<BodyTypeTuple>, boost::ref(blocks->getBlockForest()), bodyStorageID, static_cast<WcTimingTree*>(nullptr), overlap, false );
+   std::function<void(void)> syncCall = std::bind( pe::syncNextNeighbors<BodyTypeTuple>, std::ref(blocks->getBlockForest()), bodyStorageID, static_cast<WcTimingTree*>(nullptr), overlap, false );
 
    // sphere positions for test scenarios
    Vector3<real_t> positionInsideBlock(real_t(10), real_t(10), real_t(10));
diff --git a/tests/pe_coupling/utility/PeSubCyclingTest.cpp b/tests/pe_coupling/utility/PeSubCyclingTest.cpp
index 54268c11156242574e34042fa850566fa465c78a..ac538eaf4685d93a08d5381ba0d42a8cdd08473f 100644
--- a/tests/pe_coupling/utility/PeSubCyclingTest.cpp
+++ b/tests/pe_coupling/utility/PeSubCyclingTest.cpp
@@ -99,7 +99,7 @@ int main( int argc, char **argv )
 
    // set up synchronization procedure
    const real_t overlap = real_t( 1.5 ) * dx;
-   std::function<void(void)> syncCall = std::bind( pe::syncNextNeighbors<BodyTypeTuple>, boost::ref(blocks->getBlockForest()), bodyStorageID, static_cast<WcTimingTree*>(nullptr), overlap, false );
+   std::function<void(void)> syncCall = std::bind( pe::syncNextNeighbors<BodyTypeTuple>, std::ref(blocks->getBlockForest()), bodyStorageID, static_cast<WcTimingTree*>(nullptr), overlap, false );
 
 
    // sphere positions for test scenarios