 
     func provider(_ provider: CXProvider, perform action: CXStartCallAction) {
         NSLog("provider:performStartCallAction:")
-
-        guard let accessToken = fetchAccessToken() else {
-            action.fail()
-            return
-        }
-
-        TwilioVoice.sharedInstance().configureAudioSession()
-
-        call = TwilioVoice.sharedInstance().call(accessToken, params: [:], delegate: self)
-
-        guard let call = call else {
-            NSLog("Failed to start outgoing call")
-            action.fail()
-            return
-        }
-
-        call.uuid = action.callUUID
-
+        
         toggleUIState(isEnabled: false)
         startSpin()
 
-        action.fulfill(withDateStarted: Date())
+        TwilioVoice.sharedInstance().configureAudioSession()
+        
+        provider.reportOutgoingCall(with: action.callUUID, startedConnectingAt: Date())
+        
+        self.performVoiceCall(uuid: action.callUUID, client: "") { (success) in
+            if (success) {
+                provider.reportOutgoingCall(with: action.callUUID, connectedAt: Date())
+                action.fulfill()
+            } else {
+                action.fail()
+            }
+        }
     }
 
     func provider(_ provider: CXProvider, perform action: CXAnswerCallAction) {

        NSLog("call:didFailWithError: \(error.localizedDescription)")

        performEndCallAction(uuid: (call?.uuid)!)

        self.call = nil
        toggleUIState(isEnabled: true)


    var callInvite:TVOCallInvite?
    var call:TVOCall?
    var callKitCompletionCallback: ((Bool)->Swift.Void?)? = nil

    let callKitProvider:CXProvider
    let callKitCallController:CXCallController
