       return entityDescription
     }
   }
-  
+
   // MARK: Properties 
   
+  /**
+  *  Properties information belonging to Metadata entity.
+  */
   struct Properties {
     struct Data {
       static let name = "data"

import CoreData
import CloudKit

class Metadata: NSManagedObject {
  @NSManaged var entityName: String?
  @NSManaged var data: NSData?
  
  struct Entity {
    static let name = "Seam_Metadata"
    static var entityDescription: NSEntityDescription {

    }
  }
  
  /// Metadata.Manager is a class used to manage metadata by the store.
  class Manager {
    var context: NSManagedObjectContext!
    
    /**
     Initializer to initialize Manager with an instance of NSManagedObjectContext attached to backing instance of NSPersistentStoreCoordinator.
     
     - parameter context: An instance of NSManagedObjectContext.
     
     */
    init(context: NSManagedObjectContext) {
      self.context = context
    }
    
    /**
     Helper method to retrieve metadata belonging to record with unique ID.
     
     - parameter id: Unique id of the record.
     
     - throws: CoreData fetch request error.
     
     - returns: An optional that might or might not contain saved instance of Metadata for the provided unique ID.
     */
    func metadataWithUniqueID(id: String) throws -> Metadata? {
      let fetchRequest = NSFetchRequest(entityName: Entity.name)
      fetchRequest.predicate = NSPredicate(equalsToUniqueID: id)
      return try context.executeFetchRequest(fetchRequest).first as? Metadata
    }
    
    /**
     Helper method to save metadata for a CKRecord.
     
     - parameter record: An instance of CKRecord for which metadata is to be saved.
     
     - throws: CoreData save error.
     */
    func setMetadata(forRecord record: CKRecord) throws {
      let uniqueID = record.recordID.recordName
      let encodedData = record.encodedSystemFields
