diff --git a/dumux/implicit/problem.hh b/dumux/implicit/problem.hh
index d9b9e7e935406290136d10be3ca38bb918bcc71f..ab77a23d81bfdb59b94fdfa731a997eebfae6f9b 100644
--- a/dumux/implicit/problem.hh
+++ b/dumux/implicit/problem.hh
@@ -150,20 +150,7 @@ public:
         {
             gridAdapt().init();
         }
-
-        // get and apply point sources if any given in the problem
-        std::vector<PointSource> sources;
-        asImp_().addPointSources(sources);
-        // if there are point sources compute the DOF to point source map
-        if (!sources.empty())
-        {
-            // calculate point source locations and save them in a map
-            // this builds the bounding box tree if it doesn't exist yet
-            PointSourceHelper::computePointSourceMap(asImp_(),
-                                                     this->boundingBoxTree(),
-                                                     sources,
-                                                     pointSourceMap_);
-        }
+        computePointSourceMap_();
     }
 
     /*!
@@ -601,19 +588,7 @@ public:
                 // update bounding box tree if it exists
                 if (boundingBoxTree_)
                     boundingBoxTree_ = std::make_shared<BoundingBoxTree>(gridView_);
-                // get and apply point sources if any given in the problem
-                std::vector<PointSource> sources;
-                asImp_().addPointSources(sources);
-                // if there are point sources compute the DOF to point source map
-                if (!sources.empty())
-                {
-                    // calculate point source locations and save them in a map
-                    pointSourceMap_.clear();
-                    PointSourceHelper::computePointSourceMap(asImp_(),
-                                                             this->boundingBoxTree(),
-                                                             sources,
-                                                             pointSourceMap_);
-                }
+                computePointSourceMap_();
             }
         }
     }
@@ -1137,6 +1112,24 @@ protected:
         return *resultWriter_;
     }
 
+        //! Compute the point source map, i.e. which scvs have point source contributions
+    void computePointSourceMap_()
+    {
+        // get and apply point sources if any given in the problem
+        std::vector<PointSource> sources;
+        asImp_().addPointSources(sources);
+        // if there are point sources compute the DOF to point source map
+        if (!sources.empty())
+        {
+            // calculate point source locations and save them in a map
+            pointSourceMap_.clear();
+            PointSourceHelper::computePointSourceMap(asImp_(),
+                                                     this->boundingBoxTree(),
+                                                     sources,
+                                                     pointSourceMap_);
+        }
+    }
+
 
 private:
     // makes sure that the result writer exists