diff --git a/src/main/java/com/gerritforge/gerrit/plugins/account/AccountPersonalInformation.java b/src/main/java/com/gerritforge/gerrit/plugins/account/AccountPersonalInformation.java
deleted file mode 100644
index a81f4c6..0000000
--- a/src/main/java/com/gerritforge/gerrit/plugins/account/AccountPersonalInformation.java
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright (C) 2018 GerritForge Ltd
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package com.gerritforge.gerrit.plugins.account;
-
-import com.google.gerrit.server.IdentifiedUser;
-import java.util.Set;
-
-public class AccountPersonalInformation {
-  public final String fullname;
-  public final String username;
-  public final Set<String> emails;
-
-  public AccountPersonalInformation(IdentifiedUser user) {
-    this.fullname = user.getName();
-    this.username = user.getUserName();
-    this.emails = user.getEmailAddresses();
-  }
-}
diff --git a/src/main/java/com/gerritforge/gerrit/plugins/account/DeleteAccount.java b/src/main/java/com/gerritforge/gerrit/plugins/account/DeleteAccount.java
index 0f490c0..8e3151a 100644
--- a/src/main/java/com/gerritforge/gerrit/plugins/account/DeleteAccount.java
+++ b/src/main/java/com/gerritforge/gerrit/plugins/account/DeleteAccount.java
@@ -60,7 +60,6 @@
     boolean removed = false;
 
     IdentifiedUser user = resource.getUser();
-    AccountPersonalInformation accountInfo = new AccountPersonalInformation(user);
     int accountId = user.getAccountId().get();
     assertDeletePermission(accountId);
 
@@ -69,7 +68,7 @@
       removed = true;
     }
 
-    return new DeleteAccountResponse(removed, accountInfo);
+    return new DeleteAccountResponse(removed);
   }
 
   private void assertDeletePermission(int accountId) throws AuthException {
diff --git a/src/main/java/com/gerritforge/gerrit/plugins/account/DeleteAccountCommand.java b/src/main/java/com/gerritforge/gerrit/plugins/account/DeleteAccountCommand.java
index 186586a..ea2c048 100644
--- a/src/main/java/com/gerritforge/gerrit/plugins/account/DeleteAccountCommand.java
+++ b/src/main/java/com/gerritforge/gerrit/plugins/account/DeleteAccountCommand.java
@@ -18,7 +18,6 @@
 import com.google.gerrit.server.account.AccountResource;
 import com.google.gerrit.sshd.CommandMetaData;
 import com.google.gerrit.sshd.SshCommand;
-import com.google.gson.Gson;
 import com.google.inject.Inject;
 import java.io.PrintWriter;
 import org.kohsuke.args4j.Argument;
@@ -34,10 +33,9 @@
   private int accountId;
 
   @Option(
-    name = "--yes-really-delete",
-    metaVar = "ACCOUNT-NAME",
-    usage = "confirmation to delete the account"
-  )
+      name = "--yes-really-delete",
+      metaVar = "ACCOUNT-NAME",
+      usage = "confirmation to delete the account")
   private String accountName;
 
   private final AccountResourceFactory accountFactory;
@@ -62,7 +60,6 @@
       @SuppressWarnings("resource")
       PrintWriter out = resp.deleted ? stdout : stderr;
       out.println("Account " + (resp.deleted ? "" : "NOT") + " deleted");
-      out.println(new Gson().toJson(resp.accountInfo));
     } catch (Exception e) {
       stderr.printf("FAILED (%s): %s\n", e.getClass().getName(), e.getMessage());
       stderr.flush();
diff --git a/src/main/java/com/gerritforge/gerrit/plugins/account/DeleteAccountResponse.java b/src/main/java/com/gerritforge/gerrit/plugins/account/DeleteAccountResponse.java
index 97fb1dd..7297d50 100644
--- a/src/main/java/com/gerritforge/gerrit/plugins/account/DeleteAccountResponse.java
+++ b/src/main/java/com/gerritforge/gerrit/plugins/account/DeleteAccountResponse.java
@@ -16,10 +16,8 @@
 
 public class DeleteAccountResponse {
   public final boolean deleted;
-  public final AccountPersonalInformation accountInfo;
 
-  public DeleteAccountResponse(boolean deleted, AccountPersonalInformation accountInfo) {
+  public DeleteAccountResponse(boolean deleted) {
     this.deleted = deleted;
-    this.accountInfo = accountInfo;
   }
 }
diff --git a/src/main/java/com/gerritforge/gerrit/plugins/account/GerritAccountRemover.java b/src/main/java/com/gerritforge/gerrit/plugins/account/GerritAccountRemover.java
index d12830b..6e9ccd3 100644
--- a/src/main/java/com/gerritforge/gerrit/plugins/account/GerritAccountRemover.java
+++ b/src/main/java/com/gerritforge/gerrit/plugins/account/GerritAccountRemover.java
@@ -22,15 +22,16 @@
 import com.google.gerrit.extensions.api.accounts.AccountApi;
 import com.google.gerrit.extensions.api.accounts.Accounts;
 import com.google.gerrit.extensions.common.EmailInfo;
+import com.google.gerrit.extensions.common.NameInput;
 import com.google.gerrit.extensions.common.SshKeyInfo;
 import com.google.gerrit.extensions.restapi.RestApiException;
 import com.google.gerrit.reviewdb.client.Account;
 import com.google.gerrit.server.CurrentUser;
 import com.google.gerrit.server.account.AccountResource;
-import com.google.gerrit.server.account.PutName;
 import com.google.gerrit.server.account.SetInactiveFlag;
 import com.google.gerrit.server.account.externalids.ExternalId;
 import com.google.gerrit.server.permissions.PermissionBackend;
+import com.google.gerrit.server.restapi.account.PutName;
 import com.google.inject.Inject;
 import com.google.inject.Provider;
 import java.util.List;
@@ -92,7 +93,7 @@
 
   @Override
   public boolean canDelete(int accountId) {
-    PermissionBackend.WithUser userPermission = permissionBackend.user(userProvider);
+    PermissionBackend.WithUser userPermission = permissionBackend.user(userProvider.get());
     return userPermission.testOrFalse(
             new PluginPermission(pluginName, DeleteAccountCapability.DELETE_ACCOUNT))
         || (userPermission.testOrFalse(
@@ -101,7 +102,7 @@
   }
 
   private void removeFullName(AccountResource userRsc) throws Exception {
-    putName.apply(userRsc, new PutName.Input());
+    putName.apply(userRsc, new NameInput());
   }
 
   private void removeExternalIds(AccountApi account) throws RestApiException {
diff --git a/src/main/java/com/gerritforge/gerrit/plugins/account/XAuthFilter.java b/src/main/java/com/gerritforge/gerrit/plugins/account/XAuthFilter.java
index bfab314..92953ea 100644
--- a/src/main/java/com/gerritforge/gerrit/plugins/account/XAuthFilter.java
+++ b/src/main/java/com/gerritforge/gerrit/plugins/account/XAuthFilter.java
@@ -32,7 +32,8 @@
 
 @Singleton
 public class XAuthFilter extends AllRequestFilter {
-  public static final String ALLOWED_URI_SUFFIX = "/a/accounts/self";
+  public static final String ALLOWED_GET_URI_SUFFIX = "/a/accounts/self";
+  public static final String ALLOWED_DELETE_URI_SUFFIX = "/a/accounts/self/account~";
 
   private static final Logger log = LoggerFactory.getLogger(XAuthFilter.class);
 
@@ -46,14 +47,22 @@
   @Override
   public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
       throws IOException, ServletException {
-    String uri = ((HttpServletRequest) request).getRequestURI();
+    HttpServletRequest httpRequest = (HttpServletRequest) request;
+    String uri = httpRequest.getRequestURI();
+    String method = httpRequest.getMethod();
 
-    if (uri.endsWith(ALLOWED_URI_SUFFIX)) {
+    if ((method.equals("GET") && uri.endsWith(ALLOWED_GET_URI_SUFFIX))
+        || method.equals("DELETE") && uri.endsWith(ALLOWED_DELETE_URI_SUFFIX)) {
       WebSession session = webSession.get();
       if (session != null && session.isSignedIn() && session.getXGerritAuth() != null) {
-        String currentUser = session.getUser().getUserName();
-        log.info("REST API URI {} allowed for user {}", uri, currentUser);
-        session.setAccessPathOk(AccessPath.REST_API, true);
+        session
+            .getUser()
+            .getUserName()
+            .ifPresent(
+                currentUser -> {
+                  log.info("REST API URI {} allowed for user {}", uri, currentUser);
+                  session.setAccessPathOk(AccessPath.REST_API, true);
+                });
       } else {
         HttpServletResponse httpResponse = (HttpServletResponse) response;
         httpResponse.sendError(HttpServletResponse.SC_FORBIDDEN);
diff --git a/src/main/resources/static/js/account.js b/src/main/resources/static/js/account.js
index 91b0652..0f09f02 100644
--- a/src/main/resources/static/js/account.js
+++ b/src/main/resources/static/js/account.js
@@ -29,10 +29,14 @@
   
   $scope.deleted = "";
   
-  $http.delete('/a/accounts/self', {
+  $http.get('/a/accounts/self', {
     headers: {'X-Requested-With' : 'XMLHttpRequest'}
   }).then(function(response) {
-    $scope.account = response.data.account_info;
+    $scope.account = {
+        "fullname": response.data.name,
+        "username" : response.data.username,
+        "emails" : [ response.data.email ]
+    }
   });
   
   $scope.backToGerrit = function() {
