     /**
      Executes the provided operation in background
     
-     - parameter write: true if the context has to persist the changes
      - parameter operation: operation to be executed
+     - parameter save:      closure to be called to persist the changes
      - parameter completed: closure called when the execution is completed
      */
-    func operation(write: Bool, operation: (context: Context) -> Void, completed: (() -> Void))
+    func operation(operation: (context: Context, save: Saver) -> Void, completed: (() -> Void)?)
     
     /**
      Executes the provided operation in a given queue

 *  Protocol that identifies a persistence storage
 */
public protocol Storage: CustomStringConvertible {
    
    /// Storage type
    var type: StorageType { get }

     Some storages require propagating these saves across the stack of contexts (e.g. CoreData)
     
     - parameter queue:     queue where the operation will be executed
     - parameter operation: operation to be executed
     - parameter save:      closure to be called to persist the changes
     - parameter completed: closure called when the execution is completed
     */
    func operation(queue: dispatch_queue_t, operation: (context: Context, save: Saver) -> Void, completed: (() -> Void)?)
}


