diff --git a/divine/mc/weaver.hpp b/divine/mc/weaver.hpp
index 6e9282827a057752ae9057587272dc6f03cbc007..3bd43d8042c1b40ef2b8847cfdf84debefc1d0dc 100644
--- a/divine/mc/weaver.hpp
+++ b/divine/mc/weaver.hpp
@@ -114,6 +114,13 @@ namespace divine::mc
             return Extend< ExMachines... >( std::tuple_cat( _machines, ext ) );
         }
 
+        template< typename... ExMachines >
+        auto prepend( ExMachines... exm )
+        {
+            std::tuple< ExMachines... > ext( exm... );
+            return Weaver< TQ, ExMachines..., Machines... >( std::tuple_cat( ext, _machines ) );
+        }
+
         template< typename M >
         struct Ref : std::reference_wrapper< M >
         {
@@ -172,6 +179,12 @@ namespace divine::mc
             return extend( Lambda< F >( fs ) ... );
         }
 
+        template< typename... F >
+        auto prepend_f( F... fs )
+        {
+            return prepend( Lambda< F >( fs ) ... );
+        }
+
         Weaver( MachineT mt ) : _machines( mt ) {}
         Weaver() = default;