  The `NavigationViewControllerDelegate` provides methods for configuring the map view shown by a `NavigationViewController` and responding to the cancellation of a navigation session.
  */
 @objc(MBNavigationViewControllerDelegate)
-public protocol NavigationViewControllerDelegate {
+public protocol NavigationViewControllerDelegate: class {
     /**
      Called when the user exits a route and dismisses the navigation view controller by tapping the Cancel button.
      */

    /**
     The receiver’s delegate.
     */
    public var navigationDelegate: NavigationViewControllerDelegate?
    
    /**
     `voiceController` provides access to various speech synthesizer options.

    
    private var didDraw = false
    private func drawRoute() {
        guard !didDraw && coords.count >= 2 else { return }
        didDraw = true

        let routeFeature = MGLPolylineFeature(coordinates: &coords, count: UInt(coords.count))
