         }
     }
 
+    public required init(reducer: AnyReducer, appState: StateType, middleware: [Middleware]) {
+        fatalError("The current barebones implementation of SwiftFlowRecorder does not support middleware!")
+    }
+
+    public required convenience init(reducer: AnyReducer, appState: StateType) {
+        fatalError("The current Barebones implementation of SwiftFlowRecorder does not support this initializer!")
+    }
+
     func dispatchRecorded(action: Action, callback: DispatchCallback?) {
         super.dispatch(action, callback: callback)
 
         recordAction(action)
     }
 
-    public override func dispatch(action: ActionType, callback: DispatchCallback?) {
+    public override func dispatch(action: Action, callback: DispatchCallback?) -> Any {
         if let actionsToReplay = actionsToReplay where actionsToReplay > 0 {
             // ignore actions that are dispatched during replay
-            return
+            return action
         }
 
         super.dispatch(action) { newState in

    var computedStates: [StateType] = []
    var actionsToReplay: Int?
    let recordingPath: String?

    /// Position of the rewind/replay control from the bottom of the screen
    /// defaults to 100

        }
    }

    public init(reducer: AnyReducer, appState: StateType, typeMaps: [TypeMap], recording: String? = nil) {
        self.initialState = appState
        self.computedStates.append(initialState)
        self.recordingPath = recording

        super.init(reducer: reducer, appState: appState)

        // merge all typemaps into one
        typeMaps.forEach { typeMap in
            for (key, value) in typeMap {
                self.typeMap[key] = value
            }
        }

        if let recording = recording {
            loadedActions = loadActions(recording)
