diff --git a/lib/logic/cubit/forms/setup/recovering/recovery_device_form_cubit.dart b/lib/logic/cubit/forms/setup/recovering/recovery_device_form_cubit.dart
new file mode 100644
index 00000000..4486bf14
--- /dev/null
+++ b/lib/logic/cubit/forms/setup/recovering/recovery_device_form_cubit.dart
@@ -0,0 +1,25 @@
+import 'dart:async';
+
+import 'package:cubit_form/cubit_form.dart';
+import 'package:selfprivacy/logic/cubit/server_installation/server_installation_cubit.dart';
+import 'package:selfprivacy/logic/cubit/forms/factories/field_cubit_factory.dart';
+
+class RecoveryDeviceFormCubit extends FormCubit {
+  RecoveryDeviceFormCubit(
+      this.initializingCubit, final FieldCubitFactory fieldFactory) {
+    tokenField = fieldFactory.createServerDomainField();
+
+    super.addFields([tokenField]);
+  }
+
+  @override
+  FutureOr<void> onSubmit() async {
+    // initializingCubit.setDomain(ServerDomain(
+    //     domainName: serverDomainField.state.value,
+    //     provider: DnsProvider.Unknown,
+    //     zoneId: ""));
+  }
+
+  final ServerInstallationCubit initializingCubit;
+  late final FieldCubit<String> tokenField;
+}
diff --git a/lib/ui/pages/setup/initializing.dart b/lib/ui/pages/setup/initializing.dart
index 8e6fd1ec..e1f6203e 100644
--- a/lib/ui/pages/setup/initializing.dart
+++ b/lib/ui/pages/setup/initializing.dart
@@ -18,6 +18,7 @@ import 'package:selfprivacy/ui/components/brand_timer/brand_timer.dart';
 import 'package:selfprivacy/ui/components/progress_bar/progress_bar.dart';
 import 'package:selfprivacy/ui/pages/rootRoute.dart';
 import 'package:selfprivacy/ui/pages/setup/recovering/recovery_domain.dart';
+import 'package:selfprivacy/ui/pages/setup/recovering/recovery_method_select.dart';
 import 'package:selfprivacy/utils/route_transitions/basic.dart';
 
 class InitializingPage extends StatelessWidget {
@@ -104,8 +105,8 @@ class InitializingPage extends StatelessWidget {
                                 child: BrandButton.text(
                                   title: 'basis.connect_to_existing'.tr(),
                                   onPressed: () {
-                                    Navigator.of(context)
-                                        .push(materialRoute(RecoveryDomain()));
+                                    Navigator.of(context).push(
+                                        materialRoute(RecoveryMethodSelect()));
                                   },
                                 ),
                               )
diff --git a/lib/ui/pages/setup/recovering/recovery_method_device_1.dart b/lib/ui/pages/setup/recovering/recovery_method_device_1.dart
index 73b32354..43b071b8 100644
--- a/lib/ui/pages/setup/recovering/recovery_method_device_1.dart
+++ b/lib/ui/pages/setup/recovering/recovery_method_device_1.dart
@@ -2,7 +2,7 @@ import 'package:easy_localization/easy_localization.dart';
 import 'package:flutter/material.dart';
 import 'package:selfprivacy/ui/components/brand_button/FilledButton.dart';
 import 'package:selfprivacy/ui/components/brand_hero_screen/brand_hero_screen.dart';
-import 'package:selfprivacy/ui/pages/rootRoute.dart';
+import 'package:selfprivacy/ui/pages/setup/recovering/recovery_method_device_2.dart';
 import 'package:selfprivacy/utils/route_transitions/basic.dart';
 
 class RecoveryMethodDevice1 extends StatelessWidget {
@@ -16,8 +16,8 @@ class RecoveryMethodDevice1 extends StatelessWidget {
       children: [
         FilledButton(
           title: "recovering.method_device_button".tr(),
-          onPressed: () =>
-              Navigator.of(context).push(materialRoute(RootPage())),
+          onPressed: () => Navigator.of(context)
+              .push(materialRoute(RecoveryMethodDevice2())),
         )
       ],
     );
diff --git a/lib/ui/pages/setup/recovering/recovery_method_device_2.dart b/lib/ui/pages/setup/recovering/recovery_method_device_2.dart
index c5eac006..e9323803 100644
--- a/lib/ui/pages/setup/recovering/recovery_method_device_2.dart
+++ b/lib/ui/pages/setup/recovering/recovery_method_device_2.dart
@@ -1,25 +1,49 @@
+import 'package:cubit_form/cubit_form.dart';
 import 'package:easy_localization/easy_localization.dart';
 import 'package:flutter/material.dart';
+import 'package:selfprivacy/logic/cubit/forms/factories/field_cubit_factory.dart';
+import 'package:selfprivacy/logic/cubit/forms/setup/recovering/recovery_device_form_cubit.dart';
+import 'package:selfprivacy/logic/cubit/server_installation/server_installation_cubit.dart';
 import 'package:selfprivacy/ui/components/brand_button/FilledButton.dart';
 import 'package:selfprivacy/ui/components/brand_hero_screen/brand_hero_screen.dart';
-import 'package:selfprivacy/utils/route_transitions/basic.dart';
-import 'package:selfprivacy/ui/pages/rootRoute.dart';
 
 class RecoveryMethodDevice2 extends StatelessWidget {
   @override
   Widget build(BuildContext context) {
-    return BrandHeroScreen(
-      heroTitle: "recovering.recovery_main_header".tr(),
-      heroSubtitle: "recovering.method_device_input_description".tr(),
-      hasBackButton: true,
-      hasFlashButton: false,
-      children: [
-        FilledButton(
-          title: "recovering.method_device_button".tr(),
-          onPressed: () =>
-              Navigator.of(context).push(materialRoute(RootPage())),
-        )
-      ],
+    var appConfig = context.watch<ServerInstallationCubit>();
+
+    return BlocProvider(
+      create: (context) =>
+          RecoveryDeviceFormCubit(appConfig, FieldCubitFactory(context)),
+      child: Builder(
+        builder: (context) {
+          var formCubitState = context.watch<RecoveryDeviceFormCubit>().state;
+
+          return BrandHeroScreen(
+            heroTitle: "recovering.recovery_main_header".tr(),
+            heroSubtitle: "recovering.method_device_input_description".tr(),
+            hasBackButton: true,
+            hasFlashButton: false,
+            children: [
+              CubitFormTextField(
+                formFieldCubit:
+                    context.read<RecoveryDeviceFormCubit>().tokenField,
+                decoration: InputDecoration(
+                  border: OutlineInputBorder(),
+                  labelText: "recovering.method_device_input_placeholder".tr(),
+                ),
+              ),
+              SizedBox(height: 16),
+              FilledButton(
+                title: "more.continue".tr(),
+                onPressed: formCubitState.isSubmitting
+                    ? null
+                    : () => context.read<RecoveryDeviceFormCubit>().trySubmit(),
+              )
+            ],
+          );
+        },
+      ),
     );
   }
 }
diff --git a/lib/ui/pages/setup/recovering/recovery_method_select.dart b/lib/ui/pages/setup/recovering/recovery_method_select.dart
index 136ec36c..f92545eb 100644
--- a/lib/ui/pages/setup/recovering/recovery_method_select.dart
+++ b/lib/ui/pages/setup/recovering/recovery_method_select.dart
@@ -5,6 +5,7 @@ import 'package:selfprivacy/ui/components/brand_cards/brand_cards.dart';
 import 'package:selfprivacy/ui/components/brand_hero_screen/brand_hero_screen.dart';
 import 'package:selfprivacy/ui/pages/setup/recovering/recovery_fallback_select.dart';
 import 'package:selfprivacy/ui/pages/setup/recovering/recovery_method_device_1.dart';
+import 'package:selfprivacy/ui/pages/setup/recovering/recovery_method_token.dart';
 import 'package:selfprivacy/utils/route_transitions/basic.dart';
 import 'package:selfprivacy/ui/pages/rootRoute.dart';
 
@@ -36,7 +37,8 @@ class RecoveryMethodSelect extends StatelessWidget {
               style: Theme.of(context).textTheme.titleMedium,
             ),
             leading: Icon(Icons.password_outlined),
-            onTap: () => Navigator.of(context).push(materialRoute(RootPage())),
+            onTap: () => Navigator.of(context)
+                .push(materialRoute(RecoveryMethodToken())),
           ),
         ),
         SizedBox(height: 16),
diff --git a/lib/ui/pages/setup/recovering/recovery_method_token.dart b/lib/ui/pages/setup/recovering/recovery_method_token.dart
new file mode 100644
index 00000000..7b0c2564
--- /dev/null
+++ b/lib/ui/pages/setup/recovering/recovery_method_token.dart
@@ -0,0 +1,49 @@
+import 'package:cubit_form/cubit_form.dart';
+import 'package:easy_localization/easy_localization.dart';
+import 'package:flutter/material.dart';
+import 'package:selfprivacy/logic/cubit/forms/factories/field_cubit_factory.dart';
+import 'package:selfprivacy/logic/cubit/forms/setup/recovering/recovery_device_form_cubit.dart';
+import 'package:selfprivacy/logic/cubit/server_installation/server_installation_cubit.dart';
+import 'package:selfprivacy/ui/components/brand_button/FilledButton.dart';
+import 'package:selfprivacy/ui/components/brand_hero_screen/brand_hero_screen.dart';
+
+class RecoveryMethodToken extends StatelessWidget {
+  @override
+  Widget build(BuildContext context) {
+    var appConfig = context.watch<ServerInstallationCubit>();
+
+    return BlocProvider(
+      create: (context) =>
+          RecoveryDeviceFormCubit(appConfig, FieldCubitFactory(context)),
+      child: Builder(
+        builder: (context) {
+          var formCubitState = context.watch<RecoveryDeviceFormCubit>().state;
+
+          return BrandHeroScreen(
+            heroTitle: "recovering.recovery_main_header".tr(),
+            heroSubtitle: "recovering.method_recovery_input_description".tr(),
+            hasBackButton: true,
+            hasFlashButton: false,
+            children: [
+              CubitFormTextField(
+                formFieldCubit:
+                    context.read<RecoveryDeviceFormCubit>().tokenField,
+                decoration: InputDecoration(
+                  border: OutlineInputBorder(),
+                  labelText: "recovering.method_device_input_placeholder".tr(),
+                ),
+              ),
+              SizedBox(height: 16),
+              FilledButton(
+                title: "more.continue".tr(),
+                onPressed: formCubitState.isSubmitting
+                    ? null
+                    : () => context.read<RecoveryDeviceFormCubit>().trySubmit(),
+              )
+            ],
+          );
+        },
+      ),
+    );
+  }
+}