diff --git a/src/main/java/com/gerritforge/gerrit/plugins/account/AccountLoginRedirectFilter.java b/src/main/java/com/gerritforge/gerrit/plugins/account/AccountLoginRedirectFilter.java
index 157e1dd..97895ce 100644
--- a/src/main/java/com/gerritforge/gerrit/plugins/account/AccountLoginRedirectFilter.java
+++ b/src/main/java/com/gerritforge/gerrit/plugins/account/AccountLoginRedirectFilter.java
@@ -14,21 +14,6 @@
 
 package com.gerritforge.gerrit.plugins.account;
 
-import java.io.IOException;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.util.Arrays;
-import java.util.Optional;
-
-import javax.servlet.FilterChain;
-import javax.servlet.FilterConfig;
-import javax.servlet.ServletException;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
-import javax.servlet.http.Cookie;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
 import com.google.gerrit.common.Nullable;
 import com.google.gerrit.extensions.annotations.PluginCanonicalWebUrl;
 import com.google.gerrit.extensions.registration.DynamicItem;
@@ -38,6 +23,19 @@
 import com.google.inject.Inject;
 import com.google.inject.Provider;
 import com.google.inject.Singleton;
+import java.io.IOException;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.util.Arrays;
+import java.util.Optional;
+import javax.servlet.FilterChain;
+import javax.servlet.FilterConfig;
+import javax.servlet.ServletException;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+import javax.servlet.http.Cookie;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
 
 @Singleton
 public class AccountLoginRedirectFilter extends AllRequestFilter {
@@ -49,22 +47,24 @@
   private final DynamicItem<WebSession> webSession;
 
   @Inject
-  public AccountLoginRedirectFilter(@CanonicalWebUrl @Nullable Provider<String> urlProvider,
-      @PluginCanonicalWebUrl Provider<String> pluginUrlProvider, DynamicItem<WebSession> webSession) {
+  public AccountLoginRedirectFilter(
+      @CanonicalWebUrl @Nullable Provider<String> urlProvider,
+      @PluginCanonicalWebUrl Provider<String> pluginUrlProvider,
+      DynamicItem<WebSession> webSession) {
     this.urlProvider = urlProvider;
     this.webSession = webSession;
     this.pluginUrlProvider = pluginUrlProvider;
   }
 
   @Override
-  public void init(FilterConfig filterConfig) throws ServletException {
-  }
+  public void init(FilterConfig filterConfig) throws ServletException {}
 
   @Override
   public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
       throws IOException, ServletException {
-    Optional<String> redirectUrl = getRedirectUrlFromCookie((HttpServletRequest) request)
-        .filter(r -> webSession.get().isSignedIn());
+    Optional<String> redirectUrl =
+        getRedirectUrlFromCookie((HttpServletRequest) request)
+            .filter(r -> webSession.get().isSignedIn());
     String requestUri = ((HttpServletRequest) request).getRequestURI();
     String pluginUri = getPluginUri();
     HttpServletResponse httpResponse = (HttpServletResponse) response;
@@ -98,7 +98,9 @@
       return Optional.empty();
     }
 
-    return Arrays.stream(cookies).filter(c -> c.getName().equals(REDIRECT_COOKIE)).findFirst()
+    return Arrays.stream(cookies)
+        .filter(c -> c.getName().equals(REDIRECT_COOKIE))
+        .findFirst()
         .flatMap(c -> resolveUrl(urlProvider.get(), c.getValue()));
   }
 
@@ -114,7 +116,8 @@
     return Optional.empty();
   }
 
-  private void redirectAndResetCookie(HttpServletResponse response, String redirectUrl) throws IOException {
+  private void redirectAndResetCookie(HttpServletResponse response, String redirectUrl)
+      throws IOException {
     Cookie clearCookie = new Cookie(REDIRECT_COOKIE, "");
     clearCookie.setMaxAge(0);
     response.addCookie(clearCookie);
@@ -122,6 +125,5 @@
   }
 
   @Override
-  public void destroy() {
-  }
+  public void destroy() {}
 }
diff --git a/src/main/java/com/gerritforge/gerrit/plugins/account/AccountTopMenu.java b/src/main/java/com/gerritforge/gerrit/plugins/account/AccountTopMenu.java
new file mode 100644
index 0000000..11f0ef4
--- /dev/null
+++ b/src/main/java/com/gerritforge/gerrit/plugins/account/AccountTopMenu.java
@@ -0,0 +1,44 @@
+// Copyright (C) 2019 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 java.util.Arrays;
+import java.util.List;
+
+import com.google.gerrit.common.Nullable;
+import com.google.gerrit.extensions.annotations.PluginCanonicalWebUrl;
+import com.google.gerrit.extensions.client.MenuItem;
+import com.google.gerrit.extensions.webui.TopMenu;
+import com.google.inject.Inject;
+import com.google.inject.Provider;
+import com.google.inject.Singleton;
+
+@Singleton
+public class AccountTopMenu implements TopMenu {
+
+  private final Provider<String> pluginUrl;
+
+  @Inject
+  public AccountTopMenu(@PluginCanonicalWebUrl @Nullable Provider<String> pluginUrl) {
+    this.pluginUrl = pluginUrl;
+  }
+
+  @Override
+  public List<MenuEntry> getEntries() {
+    return Arrays.asList(new MenuEntry("Account",
+        Arrays.asList(new MenuItem("Personal Information", pluginUrl.get() + "static/account.html", "_self"))));
+  }
+
+}
diff --git a/src/main/java/com/gerritforge/gerrit/plugins/account/Module.java b/src/main/java/com/gerritforge/gerrit/plugins/account/Module.java
index b715154..7278f7e 100644
--- a/src/main/java/com/gerritforge/gerrit/plugins/account/Module.java
+++ b/src/main/java/com/gerritforge/gerrit/plugins/account/Module.java
@@ -20,26 +20,27 @@
 import com.gerritforge.gerrit.plugins.account.permissions.DeleteOwnAccountCapability;
 import com.google.gerrit.extensions.annotations.Exports;
 import com.google.gerrit.extensions.config.CapabilityDefinition;
+import com.google.gerrit.extensions.registration.DynamicSet;
 import com.google.gerrit.extensions.restapi.RestApiModule;
+import com.google.gerrit.extensions.webui.TopMenu;
 import com.google.inject.AbstractModule;
 
 class Module extends AbstractModule {
 
   @Override
   protected void configure() {
-    install(
-        new RestApiModule() {
-          @Override
-          protected void configure() {
-            delete(ACCOUNT_KIND).to(DeleteAccount.class);
-          }
-        });
+    install(new RestApiModule() {
+      @Override
+      protected void configure() {
+        delete(ACCOUNT_KIND).to(DeleteAccount.class);
+      }
+    });
 
-    bind(CapabilityDefinition.class)
-        .annotatedWith(Exports.named(DeleteAccountCapability.DELETE_ACCOUNT))
+    bind(CapabilityDefinition.class).annotatedWith(Exports.named(DeleteAccountCapability.DELETE_ACCOUNT))
         .to(DeleteAccountCapability.class);
-    bind(CapabilityDefinition.class)
-        .annotatedWith(Exports.named(DeleteOwnAccountCapability.DELETE_OWN_ACCOUNT))
+    bind(CapabilityDefinition.class).annotatedWith(Exports.named(DeleteOwnAccountCapability.DELETE_OWN_ACCOUNT))
         .to(DeleteOwnAccountCapability.class);
+
+    DynamicSet.bind(binder(), TopMenu.class).to(AccountTopMenu.class);
   }
 }
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 4dcdf98..bfab314 100644
--- a/src/main/java/com/gerritforge/gerrit/plugins/account/XAuthFilter.java
+++ b/src/main/java/com/gerritforge/gerrit/plugins/account/XAuthFilter.java
@@ -14,24 +14,21 @@
 
 package com.gerritforge.gerrit.plugins.account;
 
-import java.io.IOException;
-
-import javax.servlet.FilterChain;
-import javax.servlet.ServletException;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
 import com.google.gerrit.extensions.registration.DynamicItem;
 import com.google.gerrit.httpd.AllRequestFilter;
 import com.google.gerrit.httpd.WebSession;
 import com.google.gerrit.server.AccessPath;
 import com.google.inject.Inject;
 import com.google.inject.Singleton;
+import java.io.IOException;
+import javax.servlet.FilterChain;
+import javax.servlet.ServletException;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 @Singleton
 public class XAuthFilter extends AllRequestFilter {
