diff --git a/AssemblerLib/GlobalSetup.h b/AssemblerLib/GlobalSetup.h
index b795d4c55e43e32a1e6f92921e395435b60a12e8..fb29d3401a9f0b8a9574636f7024b4cd0bd7562e 100644
--- a/AssemblerLib/GlobalSetup.h
+++ b/AssemblerLib/GlobalSetup.h
@@ -53,6 +53,13 @@ struct GlobalSetup
         return Executor::executeDereferenced(std::forward<Args>(args)...);
     }
 
+    template <typename... Args>
+    static
+    void executeMemberDereferenced(Args&& ... args)
+    {
+        return Executor::executeMemberDereferenced(std::forward<Args>(args)...);
+    }
+
     template <typename... Args>
     static
     void transform(Args&& ... args)
diff --git a/AssemblerLib/SerialExecutor.h b/AssemblerLib/SerialExecutor.h
index d3232aceac3730fe631f82e565ccd2618ab3910d..c369f6bef3857898ec9d115e0592e75ff8964ed6 100644
--- a/AssemblerLib/SerialExecutor.h
+++ b/AssemblerLib/SerialExecutor.h
@@ -62,6 +62,24 @@ struct SerialExecutor
             f(i, *c[i], std::forward<Args_>(args)...);
     }
 
+    /// Executes the given \c method of the given \c object for each element
+    /// from the input \c container.
+    ///
+    /// This method is very similar to executeDereferenced().
+    ///
+    /// \see executeDereferenced()
+    template <typename Container, typename Object, typename... MethodArgs, typename... Args>
+    static void
+    executeMemberDereferenced(
+            Object& object,
+            void (Object::*method)(MethodArgs... method_args) const,
+            Container const& container, Args&&... args)
+    {
+        for (std::size_t i = 0; i < container.size(); i++) {
+            (object.*method)(i, *container[i], std::forward<Args>(args)...);
+        }
+    }
+
     /// Same as execute(f, c), but with two containers, where the second one is
     /// modified.
     ///