     }
     
     
-    func presentLoading(animated : Bool = false) {
+    func presentLoading(animated : Bool = false, completion: (() -> Swift.Void)? = nil) {
         if self.currentLoadingView == nil {
             self.createCurrentLoading()
-            self.navigationController.present(self.currentLoadingView!, animated: animated, completion: {})
-        }
-    }
-    
-    func dismissLoading(animated : Bool = false) {
+            self.navigationController.present(self.currentLoadingView!, animated: animated, completion: completion)
+        }
+    }
+    
+    func dismissLoading(animated : Bool = false, completion: (() -> Swift.Void)? = nil) {
         if self.currentLoadingView != nil {
-            self.currentLoadingView!.dismiss(animated: animated, completion: {})
+            self.currentLoadingView!.dismiss(animated: animated, completion: completion)
             self.currentLoadingView?.view.alpha = 0
             self.currentLoadingView = nil
         }

        })
        // Limpiar error anterior
        MercadoPagoCheckoutViewModel.error = nil
        self.dismissLoading()
        self.navigationController.present(errorStep, animated: true, completion: {})
        //self.pushViewController(viewController : errorStep, animated: true)
        
    }
    

    
    func error() {
        // Display error
        let errorStep = ErrorViewController(error: MercadoPagoCheckoutViewModel.error, callback: { (Void) -> Void in
            self.viewModel.errorCallback?()
        }, callbackCancel: {(Void) -> Void in
