         }
         return reaction.performWithArguments((view ?? 0, model, location))
     }
+    
+    public func perform4ArgumentsReaction(of type: ViewType, signature: String, argument: Any, view: Any?, model: Any, location: Any) -> Any {
+        guard let reaction = reaction(of: type, signature: signature, forModel: model, view: view as? UIView) as? FourArgumentsEventReaction else { return 0 }
+        return reaction.performWithArguments((argument, view ?? 0, model, location))
+    }
+    
+    public func perform5ArgumentsReaction(of type: ViewType, signature: String, firstArgument: Any, secondArgument: Any, view: Any?, model: Any, location: Any) -> Any {
+        guard let reaction = reaction(of: type, signature: signature, forModel: model, view: view as? UIView) as? FiveArgumentsEventReaction else { return 0 }
+        return reaction.performWithArguments((firstArgument, secondArgument, view ?? 0, model, location))
+    }
 }

    /// Type-erased reaction with 4 arguments
    open var reaction4Arguments : ((Any, Any, Any, Any) -> Any)?
    
    public override init<T: ModelTransfer>(signature: String, viewType: ViewType, viewClass: T.Type) {
        super.init(signature: signature, viewType: viewType, viewClass: viewClass)
    }

    
    /// Type-erased reaction with 5 arguments
    open var reaction5Arguments : ((Any, Any, Any, Any, Any) -> Any)?
    
    open func make5ArgumentsReaction<View:ModelTransfer, ArgumentOne, ArgumentTwo, ReturnType>(_ block: @escaping (ArgumentOne, ArgumentTwo, View, View.ModelType, IndexPath)-> ReturnType) {
        reaction5Arguments = { argumentOne, argumentTwo, view, model, indexPath in
            guard let model = model as? View.ModelType,
                let indexPath = indexPath as? IndexPath,
                let argument1 = argumentOne as? ArgumentOne,
                let argument2 = argumentTwo as? ArgumentTwo,
                let view = view as? View else { return 0 }
            return block(argument1, argument2, view, model, indexPath)
        }
    }
    
    public override init<T: ModelTransfer>(signature: String, viewType: ViewType, viewClass: T.Type) {
        super.init(signature: signature, viewType: viewType, viewClass: viewClass)
