diff --git a/WORKSPACE b/WORKSPACE
index 874766d..eb05a5c 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -3,7 +3,7 @@
 load("//:bazlets.bzl", "load_bazlets")
 
 load_bazlets(
-    commit = "7744d119c623494f7c7ec621e20cd66ea5bc04f6",
+    commit = "bf900bbe58f7a7802799d6d6477567b05ab2f399",
     #local_path = "/home/<user>/projects/bazlets",
 )
 
diff --git a/src/main/java/com/googlesource/gerrit/plugins/adminconsole/ListUsersCommand.java b/src/main/java/com/googlesource/gerrit/plugins/adminconsole/ListUsersCommand.java
index 6d1b8b5..6d5a168 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/adminconsole/ListUsersCommand.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/adminconsole/ListUsersCommand.java
@@ -65,15 +65,13 @@
       queryPredicate = Predicate.or(AccountPredicates.isActive(), AccountPredicates.isNotActive());
     }
     for (AccountState accountState : accountQueryProvider.get().query(queryPredicate)) {
-      Account account = accountState.getAccount();
+      Account account = accountState.account();
       String out =
           new StringBuilder()
               .append(account.id().toString())
               .append(" |")
               .append(
-                  accountState.getUserName().isPresent()
-                      ? ""
-                      : " " + accountState.getUserName().get())
+                  accountState.userName().isPresent() ? "" : " " + accountState.userName().get())
               .append(" |")
               .append(Strings.isNullOrEmpty(account.fullName()) ? "" : " " + account.fullName())
               .append(" |")
diff --git a/src/main/java/com/googlesource/gerrit/plugins/adminconsole/ShowAccountCommand.java b/src/main/java/com/googlesource/gerrit/plugins/adminconsole/ShowAccountCommand.java
index a6d8926..af1fb22 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/adminconsole/ShowAccountCommand.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/adminconsole/ShowAccountCommand.java
@@ -120,21 +120,21 @@
       if (account == null) {
         throw new UnloggedFailure("Account " + id.toString() + " does not exist.");
       }
-      stdout.println("Full name:         " + account.getAccount().fullName());
+      stdout.println("Full name:         " + account.account().fullName());
       stdout.println("Account Id:        " + id.toString());
-      stdout.println("Preferred Email:   " + account.getAccount().preferredEmail());
+      stdout.println("Preferred Email:   " + account.account().preferredEmail());
       Optional<AccountState> accountState = accountCache.get(id);
       if (accountState.isPresent()) {
-        stdout.println("User Name:         " + accountState.get().getUserName().get());
+        stdout.println("User Name:         " + accountState.get().userName().get());
       }
-      stdout.println("Active:            " + account.getAccount().isActive());
-      stdout.println("Registered on:     " + account.getAccount().registeredOn());
+      stdout.println("Active:            " + account.account().isActive());
+      stdout.println("Registered on:     " + account.account().registeredOn());
 
       stdout.println("");
       stdout.println("External Ids:");
       stdout.println(String.format("%-50s %s", "Email Address:", "External Id:"));
       try {
-        for (ExternalId externalId : externalIds.byAccount(account.getAccount().id())) {
+        for (ExternalId externalId : externalIds.byAccount(account.account().id())) {
           stdout.println(
               String.format(
                   "%-50s %s",
diff --git a/src/main/java/com/googlesource/gerrit/plugins/adminconsole/ShowRepoAccountAccessCommand.java b/src/main/java/com/googlesource/gerrit/plugins/adminconsole/ShowRepoAccountAccessCommand.java
index bf7d25c..2f598c1 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/adminconsole/ShowRepoAccountAccessCommand.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/adminconsole/ShowRepoAccountAccessCommand.java
@@ -124,7 +124,7 @@
       for (Account.Id id : idList) {
         userHasPermissionsInProject = false;
         account = accountResolver.resolve(id.toString()).asUnique();
-        stdout.println("Full name:         " + account.getAccount().fullName());
+        stdout.println("Full name:         " + account.account().fullName());
         // Need to know what groups the user is in. This is not a great
         // solution, but it does work.
         List<GroupInfo> groupInfos =
