   /// Save NSManagedObjectContext
   ///
   /// - Parameters:
-  ///   - block: execute block of code before save
-  ///   - completion: context to save
+  ///   - block: closure invoked before saving NSManagedObjectContext, perform changes on NSManagedObject instances here
+  ///   - completion: closure that will be executed after save operation is finished
   static func saveWithBlock(_ block: @escaping (_ localContext: NSManagedObjectContext) -> Void, completion: @escaping (_ success: Bool) -> Void) {
     let backgroundContext = NSManagedObjectContext.backgroundContext
     

public extension NSManagedObjectContext {
  
  /// Main NSManagedObjectContext of the app.
  /// You can use it safely with UIKit, works on the main thread of the app.
  /// It's a singleton - always returns the same instance.
  public static var mainContext: NSManagedObjectContext {
    return CoreDuck.quack.mainContext

  
  /// Background NSManagedObjectContext.
  /// Returns new instance of NSManagedObjectContext each time you access this variable.
  /// Use it for persisting changes to CoreData.
  public static var backgroundContext: NSManagedObjectContext {
    return CoreDuck.quack.backgroundContext
  }
