diff --git a/Ring/Ring/Coordinators/AppCoordinator.swift b/Ring/Ring/Coordinators/AppCoordinator.swift
index 98184ae3c19a8a144b6acaac21410a896f6a6d97..fa122d1ab09f69a38570abfa3afa33f9b791941f 100644
--- a/Ring/Ring/Coordinators/AppCoordinator.swift
+++ b/Ring/Ring/Coordinators/AppCoordinator.swift
@@ -102,6 +102,12 @@ final class AppCoordinator: Coordinator, StateableResponsive {
         self.dispatchApplication()
     }
 
+    /// Starts the coordinator
+    func startWithoutLoading() {
+        // ~ Dispatch to the proper screen
+        self.dispatchApplication()
+    }
+
     func migrateAccount(accountId: String) {
         let migratonController = MigrateAccountViewController.instantiate(with: self.injectionBag)
         migratonController.viewModel.accountToMigrate = accountId
@@ -139,22 +145,16 @@ final class AppCoordinator: Coordinator, StateableResponsive {
         let walkthroughCoordinator = WalkthroughCoordinator(with: self.injectionBag)
         walkthroughCoordinator.isAccountFirst = isAccountFirst
         walkthroughCoordinator.withAnimations = animated
+        walkthroughCoordinator.parentCoordinator = self
         walkthroughCoordinator.start()
 
+        self.navigationController.setViewControllers([], animated: false)
         self.addChildCoordinator(childCoordinator: walkthroughCoordinator)
         let walkthroughViewController = walkthroughCoordinator.rootViewController
         self.present(viewController: walkthroughViewController,
                      withStyle: .appear,
                      withAnimation: true,
                      disposeBag: self.disposeBag)
-
-        walkthroughViewController.rx.controllerWasDismissed
-            .subscribe(onNext: { [weak self, weak walkthroughCoordinator] (_) in
-                walkthroughCoordinator?.stateSubject.dispose()
-                self?.removeChildCoordinator(childCoordinator: walkthroughCoordinator)
-                self?.dispatchApplication()
-            })
-            .disposed(by: self.disposeBag)
     }
 
     /// Presents the main interface
diff --git a/Ring/Ring/Features/Walkthrough/WalkthroughCoordinator.swift b/Ring/Ring/Features/Walkthrough/WalkthroughCoordinator.swift
index c03f3107b2c86b40e29f3b1ae1f7f6e3ec7f788b..8d751a6584e9d2cd6220f1b7712c632c7ee39a34 100644
--- a/Ring/Ring/Features/Walkthrough/WalkthroughCoordinator.swift
+++ b/Ring/Ring/Features/Walkthrough/WalkthroughCoordinator.swift
@@ -75,8 +75,12 @@ class WalkthroughCoordinator: Coordinator, StateableResponsive {
                     self.showAddAccount(with: walkthroughType)
                 case .accountCreated, .deviceLinked:
                     if self.rootViewController.presentedViewController != nil {
-                        self.rootViewController.dismiss(animated: true) { [weak self] in // dismiss the pop up form modal view
-                            self?.rootViewController.dismiss(animated: true) // dismiss the welcome view and check for user account state
+                        if let appCoordinator = self.parentCoordinator as? AppCoordinator {
+                            appCoordinator.startWithoutLoading()
+                            appCoordinator.removeChildCoordinator(childCoordinator: self)
+                            rootViewController.presentedViewController?.dismiss(animated: true) {
+                                self.rootViewController.dismiss(animated: false)
+                            }
                         }
                     }
                 case .walkthroughCanceled: