     public typealias UseCacheResultClosure  = (result: UseCacheResultType) -> Void
     public typealias UseCacheResult         = (loadAction: CacheLoadAction<T>, completion: UseCacheResultClosure) -> Void
     
-    public var useCacheClosure: UseCacheResult
-    public var cacheLoadAction: LoadAction<T>
-    public var baseLoadAction:  LoadAction<T>
+    public typealias SaveToCacheResultType    = Result<Bool, ErrorType>
+    public typealias SaveToCacheResultClosure = (result: SaveToCacheResultType) -> Void
+    public typealias SaveToCacheResult        = (loadedValue: T, loadAction: CacheLoadAction<T>, completion: SaveToCacheResultClosure) -> Void
+    
+    public var cacheLoadAction:    LoadAction<T>
+    public var baseLoadAction:     LoadAction<T>
+    public var saveToCacheClosure: SaveToCacheResult?
+    public var useCacheClosure:    UseCacheResult
     
     private var useForcedNext: Bool = false
     

    */
    private func loadBase(completion completion: LoadResultClosure) {
        print(owner: "LoadAction[Cache]", items: "Base Load", level: .Info)
        baseLoadAction.load(completion: completion)
    }
    
    /**

    public init(
        baseLoadAction:  LoadAction<T>,
        cacheLoadAction: LoadAction<T>,
        saveToCache:     SaveToCacheResult?,
        useCache:        UseCacheResult,
        delegates:       [LoadActionDelegate] = [],
        dummy:           (() -> ())? = nil)
    {
        self.baseLoadAction     = baseLoadAction
        self.cacheLoadAction    = cacheLoadAction
        self.saveToCacheClosure = saveToCache
        self.useCacheClosure    = useCache
        super.init(
            load:      { _ in },
            delegates: delegates
