 
 internal protocol ResetPasswordViewModelErrors {
   /// Emits error message String on generic error
-  var generic: Signal<String, NoError> { get }
+  var resetFail: Signal<String, NoError> { get }
 }
 
 internal protocol ResetPasswordViewModelType {

    resetSuccess = emailSignal
      .takeWhen(resetButtonPressedSignal)
      .switchMap { email in apiService.resetPassword(email: email)
        .demoteErrors()
        .mapConst(email) }

    generic = .empty

    returnToLogin = confirmResetButtonPressedSignal



  // MARK: ResetPasswordViewModelErrors

  internal let resetFail: Signal<String, NoError>

  // MARK: Constructor
  internal init(env: Environment = AppEnvironment.current) {
    let apiService = env.apiService
    let koala = env.koala

    let (resetFailSignal, resetFailObserver) = Signal<ErrorEnvelope, NoError>.pipe()
    resetFail = resetFailSignal.map { envelope in envelope.errorMessages.first ??
      localizedString(key: "forgot_password.error",
        defaultValue: "Sorry, we don’t know that email address. Try again?")
    }

    formIsValid = emailSignal
      .map { email in email.characters.count > 3 }
