diff --git a/src/pe/statistics/BodyStatistics.cpp b/src/pe/statistics/BodyStatistics.cpp
index a8f41928e671a923f5a4703b874b784dab0ca007..e76910eff77b6ec92b0bb35b9e0c6414c1895a96 100644
--- a/src/pe/statistics/BodyStatistics.cpp
+++ b/src/pe/statistics/BodyStatistics.cpp
@@ -42,7 +42,7 @@ void BodyStatistics::operator()()
    velocitySample_.clear();
    massSample_.clear();
 
-   for( auto blockIt = blockStorage_.begin(); blockIt != blockStorage_.end(); ++blockIt )
+   for( auto blockIt = blockStorage_->begin(); blockIt != blockStorage_->end(); ++blockIt )
    {
       auto storage = blockIt->getData< pe::Storage >( bodyStorageID_ );
       const pe::BodyStorage & localStorage  = (*storage)[0];
diff --git a/src/pe/statistics/BodyStatistics.h b/src/pe/statistics/BodyStatistics.h
index 0c4763937009d61af346a45dcf141c22e1a2be21..dacbf9585bb85dedda918cc2b058856e008f3f1c 100644
--- a/src/pe/statistics/BodyStatistics.h
+++ b/src/pe/statistics/BodyStatistics.h
@@ -36,7 +36,7 @@ class BodyStatistics
 {
 public:
 
-   BodyStatistics( const BlockStorage & blockStorage, const BlockDataID & bodyStorageID )
+   BodyStatistics( const shared_ptr<BlockStorage>& blockStorage, const BlockDataID & bodyStorageID )
       : blockStorage_( blockStorage ), bodyStorageID_( bodyStorageID )
    { }
 
@@ -52,8 +52,8 @@ public:
    real_t totalMass() const { return massSample_.sum(); }
 
 private:
-   const BlockStorage & blockStorage_;
-   BlockDataID bodyStorageID_;
+   const shared_ptr<BlockStorage> blockStorage_;
+   const BlockDataID              bodyStorageID_;
 
    math::Sample localBodiesBlockSample_, shadowBodiesBlockSample_;
    math::Sample localBodiesProcessSample_, shadowBodiesProcessSample_;