 
 public protocol DefaultCoordinator: Coordinator {
     associatedtype ViewController: UIViewController
-    weak var viewController: ViewController? { get }
+    var viewController: ViewController? { get }
 
     var animated: Bool { get }
-    weak var delegate: CoordinatorDelegate? { get set }
+    var delegate: CoordinatorDelegate? { get set }
 }
 
 public protocol PushCoordinator: DefaultCoordinator {

    }

    // default implementation of nil delegate, should be overriden when needed
    weak var delegate: CoordinatorDelegate? {
        get {
            return nil
        }

    func configure(controller: ViewController)
    var navigationController: UINavigationController? { get }
    var presentationStyle: PresentationStyle { get }
    var destinationNavigationController: UINavigationController? { get }
}

public extension DefaultCoordinator {
