 public final class RTCoreDataStack {
 	typealias Callback = () -> Void
 
+	/// Until this is true, data store is not available. Do not attempt to access any of the Core Data objects until isReady=true
 	fileprivate(set) var isReady: Bool = false
 
+	/// Managed Model instance used by the stack
 	fileprivate(set) var dataModel: NSManagedObjectModel!
 
+	/// Full URL to the location of the SQLite file
 	fileprivate(set) var storeURL: URL!
 
+	/// Instantiates the whole stack, giving you full control over what model to use and where the resulting file should be.
+	///
+	/// - parameter dataModelName: String representing the name (without extension) of the model file to use. If not supplied,
+	/// - parameter storeURL: Full URL where to create the .sqlite file. Must include the file at the end as well (can't be just directory). If not supplied, user's Documents directory will be used + alphanumerics from app's name. Possible use: when you want to setup the store file into completely custom location. Like say shared container in App Group.
+	/// - parameter callback: A block to call once setup is completed. RTCoreDataStack.isReady is set to true before callback is executed.
+	///
+	/// - returns: Instance of RTCoreDataStack
 	init(withDataModelNamed dataModel: String? = nil, storeURL: URL? = nil, callback: @escaping Callback = {_ in}) {
 		DispatchQueue.main.async { [unowned self] in
 			self.setup(withDataModelNamed: dataModel, storeURL: storeURL, callback: callback)
 		}
 	}
 
+	/// Instance of PersistentStoreCoordinator intended for main thread's contexts
 	fileprivate(set) var mainCoordinator: NSPersistentStoreCoordinator!
 
+	/// Instance of PersistentStoreCoordinator intended for background thread's importing.
 	fileprivate(set) var writerCoordinator: NSPersistentStoreCoordinator!
 
+	/// Main MOC, connected to mainCoordinator. Use it for all the UI
 	fileprivate(set) var mainContext: NSManagedObjectContext!
 
+	/// Make main MOC read-only and thus prevent
 	var isMainContextReadOnly: Bool = false {
 		didSet {
 			if !isReady { return }

		                                       object: nil)
	}

	@objc func handle(notification: Notification) {
		if !shouldMergeIncomingSavedObjects { return }


		}
	}

	/// Enable or disable automatic merge between importerMOCs and mainMOC
	var shouldMergeIncomingSavedObjects: Bool = true

	deinit {
