     public init<Argument, ReturnType>(argument: Argument.Type, signature: String, _ block: @escaping (Argument) -> ReturnType) {
         self.methodSignature = signature
         modelTypeCheckingBlock = { _ in true }
+        supplementaryKind = nil
         reaction = { argument, _, _ in
             guard let argument = argument as? Argument else {
                 return 0

    }
    
    /// Creates reaction with `signature`, `viewType` and `modelType`.
    public init<ModelType, ReturnType>(modelType: ModelType.Type, signature: String, _ block: @escaping (ModelType, IndexPath) -> ReturnType) {
        self.methodSignature = signature
        modelTypeCheckingBlock = { $0 is ModelType }
        reaction = { model, indexPath, _ in
            guard let model = model as? ModelType,
                let indexPath = indexPath as? IndexPath else {

    public init<View, ModelType, ReturnType>(viewType: View.Type,
                                            modelType: ModelType.Type,
                                            signature: String,
                                            supplementaryKind: String? = nil,
                                            _ block: @escaping (View, ModelType, IndexPath) -> ReturnType) {
        self.methodSignature = signature
        modelTypeCheckingBlock = nil
        self.supplementaryKind = supplementaryKind
        reaction = { view, model, indexPath in
            guard let model = model as? ModelType,
                let indexPath = indexPath as? IndexPath,
