             DispatchQueue.main.async {
                 let infoVC = MeshSetupInfoJoinerViewController.loadedViewController()
                 infoVC.setup(didFinishScreen: self.didFinishInfoScreen, setupMesh: self.setupMesh, deviceType: self.targetDeviceType!)
-                self.embededNavigationController.pushViewController(infoVC, animated: true)
+                self.embededNavigationController.setViewControllers([infoVC], animated: true)
             }
         } else {
             switch self.flowManager.targetDeviceActiveInternetInterface()! {

                //this is the end of create network flow
                let successVC = MeshSetupNetworkCreatedViewController.loadedViewController()
                successVC.setup(didSelectDone: self.didSelectSetupDone, deviceName: self.targetDeviceName!)
                self.embededNavigationController.pushViewController(successVC, animated: true)
            } else {
                //this is the end of joiner flow
                let successVC = MeshSetupSuccessViewController.loadedViewController()
                successVC.setup(didSelectDone: self.didSelectSetupDone, deviceName: self.targetDeviceName!)
                self.embededNavigationController.pushViewController(successVC, animated: true)
            }
        }
    }

                DispatchQueue.main.async {
                    let pairingVC = MeshSetupPairingProcessViewController.loadedViewController()
                    pairingVC.setup(didFinishScreen: self.targetDevicePairingScreenDone, deviceType: self.targetDeviceType, deviceName: self.flowManager.targetDeviceBluetoothName() ?? self.targetDeviceType!.description)
                    self.embededNavigationController.setViewControllers([pairingVC], animated: true)
                }
            }
        } else {
