@Override
  protected Payload doInBackground(Payload... params) {
    Payload payload = new Payload();
    payload.setResult(false);
    String csvPath =
        Storage.getStorageLocationRoot(ctx) + File.separator + SessionManager.ACCOUNTS_CSV_FILENAME;
    File csvAccounts = new File(csvPath);

    if (csvAccounts.exists()) {
      BufferedReader reader = null;
      try {
        String line;
        reader = new BufferedReader(new FileReader(csvAccounts));
        DbHelper db = DbHelper.getInstance(ctx);
        int usersAdded = 0;
        while ((line = reader.readLine()) != null) {
          String[] rowData = line.split(CSV_SEPARATOR);

          if (rowData.length < CSV_COLUMNS) {
            Log.d(TAG, "Bad csv line, ignoring: " + line);
            continue;
          }
          User csvUser = new User();
          csvUser.setUsername(rowData[CSV_USERNAME_COLUMN]);
          csvUser.setPasswordEncrypted(rowData[CSV_PASSWORD_COLUMN]);
          csvUser.setApiKey(rowData[CSV_APIKEY_COLUMN]);

          db.addOrUpdateUser(csvUser);
          usersAdded++;
        }

        if (usersAdded > 0) {
          payload.setResult(true);
          payload.setResultResponse(
              ctx.getString(R.string.info_startup_preloaded_accounts, usersAdded));
        }
        Log.d(TAG, usersAdded + " users added");
      } catch (IOException ex) {
        Mint.logException(ex);
        ex.printStackTrace();
        payload.setResult(true);
        payload.setResultResponse(ctx.getString(R.string.error_preloading_accounts));
      } finally {
        try {
          if (reader != null) reader.close();
          boolean deleted = csvAccounts.delete();
          Log.d(TAG, "CSV file " + (deleted ? "" : "not ") + "deleted");
        } catch (IOException e) {
          Mint.logException(e);
        }
      }
    }

    return payload;
  }
  @Override
  protected Payload doInBackground(Payload... params) {
    Payload payload = params[0];

    payload.setResult(false);
    if (!prefs.getBoolean("upgradeV17", false)) {
      upgradeV17();
      Editor editor = prefs.edit();
      editor.putBoolean("upgradeV17", true);
      editor.apply();
      publishProgress(this.ctx.getString(R.string.info_upgrading, "v17"));
      payload.setResult(true);
    }

    if (!prefs.getBoolean("upgradeV20", false)) {
      upgradeV20();
      Editor editor = prefs.edit();
      editor.putBoolean("upgradeV20", true);
      editor.apply();
      publishProgress(this.ctx.getString(R.string.info_upgrading, "v20"));
      payload.setResult(true);
    }

    if (!prefs.getBoolean("upgradeV29", false)) {
      Editor editor = prefs.edit();
      editor.putBoolean("upgradeV29", true);
      editor.apply();
      publishProgress(this.ctx.getString(R.string.info_upgrading, "v29"));
      payload.setResult(true);
    }

    if (!prefs.getBoolean("upgradeV43", false)) {
      upgradeV43();
      Editor editor = prefs.edit();
      editor.putBoolean("upgradeV43", true).apply();
      publishProgress(this.ctx.getString(R.string.info_upgrading, "v43"));
      payload.setResult(true);
    }

    if (!prefs.getBoolean("upgradeV46", false)) {
      Editor editor = prefs.edit();
      editor.putBoolean("upgradeV46", true);
      editor.putString(PrefsActivity.PREF_SERVER, ctx.getString(R.string.prefServerDefault));
      editor.apply();
      publishProgress(this.ctx.getString(R.string.info_upgrading, "v46"));
      payload.setResult(true);
    }

    if (!prefs.getBoolean("upgradeV49b", false)) {
      upgradeV49();
      Editor editor = prefs.edit();
      editor.putBoolean("upgradeV49b", true);
      editor.commit();
      publishProgress(this.ctx.getString(R.string.info_upgrading, "v49"));
      payload.setResult(true);
    }

    if (!prefs.getBoolean("upgradeV54", false)) {
      upgradeV54();
      Editor editor = prefs.edit();
      editor.putBoolean("upgradeV54", true);
      editor.commit();
      publishProgress(this.ctx.getString(R.string.info_upgrading, "v54"));
      payload.setResult(true);
    }

    if (!prefs.getBoolean("upgradeV54a", false)) {
      upgradeV54a();
      Editor editor = prefs.edit();
      editor.putBoolean("upgradeV54a", true);
      editor.commit();
      publishProgress(this.ctx.getString(R.string.info_upgrading, "v54a"));
      payload.setResult(true);
    }

    return payload;
  }