 
 /// Default animator for scene coordinators.
 public struct SceneAnimator: Animator {
+
+    public init() {}
     
     public func animate<T, U>(from source: SceneCoordinator<T>, to destination: SceneCoordinator<U>, completion: AnimationCallback? = nil) {
         source.rootViewController.present(destination.rootViewController, animated: true, completion: completion)


/// Coordinator animator protocol. Any object that conforms to this should be able to display and dismiss a coordinator.
public protocol Animator {
    
    func animate<T, U>(from source: SceneCoordinator<T>, to destination: SceneCoordinator<U>, completion: AnimationCallback?)
    func dismiss<T>(coordinator: SceneCoordinator<T>, completion: AnimationCallback?)


/// Animator used by the `NavigationCoordinator` class.
public struct NavigationAnimator: Animator {

    public init() {}
    
    public func animate<T, U>(from source: SceneCoordinator<T>, to destination: SceneCoordinator<U>, completion: AnimationCallback? = nil) {
        guard let navigationController = source.rootViewController as? UINavigationController else { return }
