     // Keys
     private let keyPurchasesOfUser : String = "purchases"
     private let keyUserWhoMadePurchase : String = "userRecordID"
+    private let keyProductIdentifier : String "productIdentifier"
     private let keyPurchaseDate : String = "purchaseDate"
-    private let keyProductIdentifier : String = "purchaseProductIdentifier"
+    private let keyExpirationDate : String = "expirationDate"
     
     // CloudKit Accessors
     private let publicDatabase : CKDatabase = CKContainer.defaultContainer().publicCloudDatabase

    private var purchasePatronageCompletionHandler : PurchaseCompletionHandler? = nil
    private var restorePurchaseCompletionHandler : RestorePurchasesCompletionHandler? = nil
    
    // MARK: - Designated Initializer
    
    private override init() {

    
    func fetchPatronCountWithCompletion(completionHandler completionHandler: (count : NSInteger, error : NSError?) -> Void) {
        
        let predicate : NSPredicate = NSPredicate(format: "TRUEFORMAT") // The documentation says to use this for "all of the given type."
        let query : CKQuery = CKQuery(recordType: "User", predicate: predicate)
        
        self.publicDatabase.performQuery(query, inZoneWithID: self.defaultRecordZone.zoneID) { (records : [CKRecord]?, error : NSError?) -> Void in
