             //---
             
             return when(dispatcher.accessLog)
-                .tryCompactMap { [weak dispatcher] in
+                .tryCompactMap { [weak dispatcher] mutation in
 
                     guard let dispatcher = dispatcher else { return nil }
 
                     //---
 
-                    return try given(dispatcher, $0)
-                }
-                .handleEvents(
-                    receiveOutput: { [weak dispatcher] in
-
-                        dispatcher?
+                    let result = try given(dispatcher, mutation)
+                    
+                    result.map {
+                        
+                        dispatcher
                             ._internalBindingsStatusLog
                             .send(
-                                .triggered(binding, output: $0)
+                                .triggered(
+                                    binding,
+                                    input: mutation,
+                                    output: $0
+                                )
                             )
                     }
-                )
+                    
+                    return result
+                }
                 .compactMap { [weak dispatcher] (givenOutput: G) -> Void? in
                     
                     guard let dispatcher = dispatcher else { return nil }

        
        /// After passing through `when` (and `given`,
        /// if present) claus(es), right before `then`.
        case triggered(ExternalBinding, output: Any)
        
        /// After executing `then` clause.
        case executed(ExternalBinding, input: Any)

        
        /// After passing through `when` (and `given`,
        /// if present) claus(es), right before `then`.
        case triggered(InternalBinding, input: Any, output: Any)
        
        /// After executing `then` clause.
        case executed(InternalBinding, input: Any)
