class BaseCoordinator : Coordinator { var childCoordinators : [ Coordinator ] = [] func start () -> Observable < Void > { fatalError ( "Start method should be implemented in inherited class." never () } func coordinate ( _ coordinator : Coordinator ) -> Observable < Void > { self . init () } override func start () -> Observable < Void > { let navigationController = UINavigationController () let router = Router ( navigationController : navigationController ) let myCoordinator = MyCoordinator ( router : router ) window .