         }
     }
     
-    func purchaseProduct(product: SKProduct, completion: PurchaseProductCompletionBlock) {
+    public func purchaseProduct(product: SKProduct, completion: PurchaseProductCompletionBlock) {
         purchaseProductRequests.append(PurchaseProductRequestInfo(productId: product.productIdentifier, completion: completion))
         let payment = SKPayment(product: product)
         SKPaymentQueue.defaultQueue().addPayment(payment)

}

extension IAPManager: SKProductsRequestDelegate {
    func productsRequest(request: SKProductsRequest, didReceiveResponse response: SKProductsResponse) {
        for product in response.products {
            availableProducts[product.productIdentifier] = product
        }

        request.start()
    }
    
    public func purchaseProductWithId(productId: String, completion: PurchaseProductCompletionBlock) {
        if !canMakePayments() {
            let error = NSError(domain: "inapppurchase", code: 0, userInfo: [NSLocalizedDescriptionKey: "In App Purchasing is unavailable"])
            completion(error)
