diff --git a/Ring/Ring/Features/Me/LinkNewDeviceViewController.swift b/Ring/Ring/Features/Me/LinkNewDeviceViewController.swift
index 9cd7cea819fb9eb08e77da59fb184627963620fc..5778a590bebb5deaf4cf1043f5a64bdae0e7108f 100644
--- a/Ring/Ring/Features/Me/LinkNewDeviceViewController.swift
+++ b/Ring/Ring/Features/Me/LinkNewDeviceViewController.swift
@@ -62,12 +62,6 @@ class LinkNewDeviceViewController: UIViewController, StoryboardBased, ViewModelB
             .bind(to: self.pinLabel.rx.isVisible)
             .addDisposableTo(self.disposeBag)
 
-        passwordField.rx.text
-            .map({!$0!.isEmpty})
-            .shareReplay(1)
-            .bind(to: okButton.rx.isEnabled)
-            .addDisposableTo(self.disposeBag)
-
         self.viewModel.observableState
             .observeOn(MainScheduler.instance)
             .subscribe(onNext: { [weak self] (state) in
@@ -115,3 +109,4 @@ class LinkNewDeviceViewController: UIViewController, StoryboardBased, ViewModelB
         self.explanationMessage.text = self.viewModel.explanationMessage
     }
 }
+
diff --git a/Ring/Ring/Features/Walkthrough/CreateAccount/CreateAccountViewModel.swift b/Ring/Ring/Features/Walkthrough/CreateAccount/CreateAccountViewModel.swift
index 196e4f3a258bf79b01165afad18961e8f2f635cd..5709dc862fd5cd93eb7f419b464e886ae7d38a05 100644
--- a/Ring/Ring/Features/Walkthrough/CreateAccount/CreateAccountViewModel.swift
+++ b/Ring/Ring/Features/Walkthrough/CreateAccount/CreateAccountViewModel.swift
@@ -170,6 +170,10 @@ class CreateAccountViewModel: Stateable, ViewModel {
     lazy var passwordValidationState: Observable<PasswordValidationState> = {
         return Observable.combineLatest(self.password.asObservable(), self.confirmPassword.asObservable())
         { (password: String, confirmPassword: String) -> PasswordValidationState in
+            if password.isEmpty && confirmPassword.isEmpty {
+                return .validated
+            }
+
             if password.characters.count < 6 {
                 return .error(message: L10n.Createaccount.passwordCharactersNumberError)
             }
@@ -186,17 +190,19 @@ class CreateAccountViewModel: Stateable, ViewModel {
         return Observable.combineLatest(self.passwordValidationState.asObservable(),
                                         self.usernameValidationState.asObservable(),
                                         self.registerUsername.asObservable(),
+                                        self.username.asObservable(),
                                         self.createState,
                                         resultSelector:
             { ( passwordValidationState: PasswordValidationState,
                 usernameValidationState: UsernameValidationState,
                 registerUsername: Bool,
+                username: String,
                 creationState: AccountCreationState) -> Bool in
 
                 var canAsk = true
 
                 if registerUsername {
-                    canAsk = canAsk && usernameValidationState.isAvailable
+                    canAsk = canAsk && usernameValidationState.isAvailable && !username.isEmpty
                 }
 
                 canAsk = canAsk && passwordValidationState.isValidated
@@ -220,13 +226,10 @@ class CreateAccountViewModel: Stateable, ViewModel {
             switch status {
             case .lookingUp:
                 self?.usernameValidationState.value = .lookingForAvailibility(message: L10n.Createaccount.lookingForUsernameAvailability)
-                break
             case .invalid:
                 self?.usernameValidationState.value = .invalid(message: L10n.Createaccount.invalidUsername)
-                break
             case .alreadyTaken:
                 self?.usernameValidationState.value = .unavailable(message: L10n.Createaccount.usernameAlreadyTaken)
-                break
             default:
                 self?.usernameValidationState.value = .available
             }
@@ -277,3 +280,4 @@ class CreateAccountViewModel: Stateable, ViewModel {
                                            password: self.password.value)
     }
 }
+
diff --git a/Ring/Ring/Features/Walkthrough/LinkDevice/LinkDeviceViewModel.swift b/Ring/Ring/Features/Walkthrough/LinkDevice/LinkDeviceViewModel.swift
index 8364598fab89cb0a219a066c7d6f1af0c277e1fa..753aa497902a5857a1b5e666d686ca5392b91882 100644
--- a/Ring/Ring/Features/Walkthrough/LinkDevice/LinkDeviceViewModel.swift
+++ b/Ring/Ring/Features/Walkthrough/LinkDevice/LinkDeviceViewModel.swift
@@ -35,13 +35,9 @@ class LinkDeviceViewModel: Stateable, ViewModel {
     }()
 
     lazy var linkButtonEnabledState: Observable<Bool>  = {
-        return Observable.combineLatest(self.password.asObservable(),
-                                        self.pin.asObservable()) {(password, pin) -> Bool in
-                                            if !password.isEmpty && !pin.isEmpty {
-                                                return true
-                                            }
-                                            return false
-        }
+        return self.pin.asObservable().map({ pin in
+            return !pin.isEmpty
+        })
     }()
 
     let pin = Variable<String>("")
@@ -76,3 +72,4 @@ class LinkDeviceViewModel: Stateable, ViewModel {
                                               password: self.password.value)
     }
 }
+