         completionHandler = nil
     }
     
+    //MARK: - Helpers
+    
+    public func canMakePurchase() -> Bool {
+        return SKPaymentQueue.canMakePayments()
+    }
+    
+    public class func formatPrice(price: NSNumber, locale: NSLocale) -> String {
+        var formattedString = ""
+        
+        let numberFormatter = NSNumberFormatter()
+        numberFormatter.formatterBehavior = NSNumberFormatterBehavior.Behavior10_4
+        numberFormatter.numberStyle = NSNumberFormatterStyle.CurrencyStyle
+        numberFormatter.locale = locale
+        formattedString = numberFormatter.stringFromNumber(price)!
+        
+        return formattedString
+    }
+    
 }
                storeRequest.HTTPBody = requestData
                
                let queue = NSOperationQueue()
 
                NSURLConnection.sendAsynchronousRequest(storeRequest, queue: queue, completionHandler: { (response, data, error) -> Void in
                    if (error != nil) {
                        print("Validation Request Error: \(error)")
                        completion(valid: false)
                    } else {
                        self.checkStatus(data, completion: completion)

    
    public let ProductPurchasedNotification = "IAPPurchasedNotification"
    
    public static let sharedInstance = InAppFw()
    
    var productIdentifiers: Set<String>?
    var productsRequest: SKProductsRequest?
    
    var completionHandler: ((success: Bool, products: [SKProduct]?) -> Void)?
    
    var purchasedProductIdentifiers = Set<String>()
    
    public var hasValidReceipt = false
    
    public override init() {
        super.init()
        SKPaymentQueue.defaultQueue().addTransactionObserver(self)
        //loadPurchasedProducts(true)
        productIdentifiers = Set<String>()
    }
    
    public func addProductId(id: String) {
