diff --git a/src/main/java/com/googlesource/gerrit/plugins/gitblit/GitBlitTopMenu.java b/src/main/java/com/googlesource/gerrit/plugins/gitblit/GitBlitTopMenu.java
index 44d62f8..ab15209 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/gitblit/GitBlitTopMenu.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/gitblit/GitBlitTopMenu.java
@@ -21,6 +21,7 @@
 import com.google.gerrit.extensions.annotations.PluginCanonicalWebUrl;
 import com.google.gerrit.extensions.annotations.PluginName;
 import com.google.gerrit.extensions.client.GerritTopMenu;
+import com.google.gerrit.extensions.client.MenuItem;
 import com.google.gerrit.extensions.webui.TopMenu;
 import com.google.gerrit.server.CurrentUser;
 import com.google.gerrit.server.config.PluginConfig;
diff --git a/src/main/java/com/googlesource/gerrit/plugins/gitblit/app/GitBlitSettings.java b/src/main/java/com/googlesource/gerrit/plugins/gitblit/app/GitBlitSettings.java
index e81ef0d..d7f5641 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/gitblit/app/GitBlitSettings.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/gitblit/app/GitBlitSettings.java
@@ -42,22 +42,22 @@
   private static final Logger log = LoggerFactory.getLogger(GitBlitSettings.class);
   private static final String GITBLIT_GERRIT_PROPERTIES = "/gitblit.properties";
 
-  private final LocalDiskRepositoryManager repoManager;
   private final GitBlitUrlsConfig config;
   private final File etcDir;
+  private final File basePath;
 
   private Properties properties;
   private File gitblitPropertiesFile;
 
   @Inject
-  public GitBlitSettings(final LocalDiskRepositoryManager repoManager,
-      final @GerritServerConfig Config config, final SitePaths sitePaths)
+  public GitBlitSettings(@GerritServerConfig Config config,
+      SitePaths sitePaths)
       throws IOException {
     super(GitBlitSettings.class);
     this.properties = new Properties();
-    this.repoManager = repoManager;
     this.config = new GitBlitUrlsConfig(config);
     this.etcDir = sitePaths.etc_dir.toFile();
+    this.basePath = sitePaths.data_dir.toFile();
     load();
   }
 
@@ -112,7 +112,7 @@
   }
 
   public File getBasePath() {
-    return repoManager.getBasePath().toFile();
+    return basePath;
   }
 
   @Override
diff --git a/src/main/java/com/googlesource/gerrit/plugins/gitblit/auth/GerritAuthFilter.java b/src/main/java/com/googlesource/gerrit/plugins/gitblit/auth/GerritAuthFilter.java
index b898ba9..9bd6c62 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/gitblit/auth/GerritAuthFilter.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/gitblit/auth/GerritAuthFilter.java
@@ -89,7 +89,7 @@
 
   public boolean filterSessionAuth(final DynamicItem<WebSession> webSession,
       HttpServletRequest request) {
-    request.setAttribute("gerrit-username", webSession.get().getCurrentUser()
+    request.setAttribute("gerrit-username", webSession.get().getUser()
         .getUserName());
     request.setAttribute("gerrit-token", webSession.get().getSessionId());
     return true;
diff --git a/src/main/java/com/googlesource/gerrit/plugins/gitblit/auth/GerritToGitBlitUserService.java b/src/main/java/com/googlesource/gerrit/plugins/gitblit/auth/GerritToGitBlitUserService.java
index c76065e..5014fa5 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/gitblit/auth/GerritToGitBlitUserService.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/gitblit/auth/GerritToGitBlitUserService.java
@@ -96,7 +96,7 @@
       return null;
     }
 
-    if (!session.getCurrentUser().getUserName().equals(username)) {
+    if (!session.getUser().getUserName().equals(username)) {
       log.warn("Gerrit session " + session.getSessionId()
           + " is not assigned to user " + username);
       return null;
@@ -118,7 +118,7 @@
     try {
       AuthResult authResp = accountManager.authenticate(who);
       webSession.get().login(authResp, false);
-    } catch (AccountException e) {
+    } catch (Exception e) {
       log.warn("Authentication failed for '" + username + "'", e);
       return null;
     }
