diff --git a/BUCK b/BUCK
index a66e8d2..7f845a1 100644
--- a/BUCK
+++ b/BUCK
@@ -9,31 +9,44 @@
     'Gerrit-ReloadMode: restart',
   ],
   deps = [
-    '//lib/commons:httpcore',
-    '//lib/commons:net',
-    '//lib/commons:codec',
+    ':gitblit-properties-jar',
+    '//lib/httpcomponents:httpcore',
+    '//plugins/gitblit/lib:confluence-core',
+    '//plugins/gitblit/lib:force-partner-api',
+    '//plugins/gitblit/lib:freemarker',
     '//plugins/gitblit/lib:gitblit-jar',
-    '//plugins/gitblit/lib:wicket',
-    '//plugins/gitblit/lib:wicket-extensions',
-    '//plugins/gitblit/lib:wicketstuff',
-    '//plugins/gitblit/lib:javax-mail',
     '//plugins/gitblit/lib:groovy',
-    '//plugins/gitblit/lib:beust-jcommander',
+    '//plugins/gitblit/lib:ivy',
+    '//plugins/gitblit/lib:javax-mail',
     '//plugins/gitblit/lib:jdom',
-    '//plugins/gitblit/lib:lucene-core',
+    '//plugins/gitblit/lib:jsoup',
+    '//plugins/gitblit/lib:libpam4j',
     '//plugins/gitblit/lib:lucene-highlighter',
     '//plugins/gitblit/lib:lucene-memory',
     '//plugins/gitblit/lib:markdownpapers',
+    '//plugins/gitblit/lib:mediawiki-core',
+    '//plugins/gitblit/lib:pf4j',
     '//plugins/gitblit/lib:rome',
+    '//plugins/gitblit/lib:textile-core',
+    '//plugins/gitblit/lib:tika',
+    '//plugins/gitblit/lib:tracwiki-core',
+    '//plugins/gitblit/lib:twiki-core',
     '//plugins/gitblit/lib:unboundid',
-    ':gitblit-properties-jar',
+    '//plugins/gitblit/lib:waffle-jna',
+    '//plugins/gitblit/lib:wicket',
+    '//plugins/gitblit/lib:wicket-extensions',
+    '//plugins/gitblit/lib:wikitext-core',
+  ],
+  provided_deps = [
+    '//lib/commons:codec',
+    '//lib/commons:net',
+    '//plugins/gitblit/lib:lucene-core',
   ]
 )
 
 prebuilt_jar(
   name = 'gitblit-properties-jar',
-  binary_jar = genfile('gitblit-properties.zip'),
-  deps = [':gitblit-properties'],
+  binary_jar = ':gitblit-properties',
 )
 
 genrule(
diff --git a/README.md b/README.md
index 08d468b..b5111b6 100644
--- a/README.md
+++ b/README.md
@@ -14,16 +14,8 @@
 build parameters and constraints (i.e. shaded-jar) that are
 needed for a Gerrit plugin to work properly.
 
-### Wicket
-You need to clone and build a modified version of Wicket that
-is currently published on GitHub under the GerritCodeReview
-organisation: https://github.com/GerritCodeReview/wicket.git
-
-    $ git clone https://github.com/GerritCodeReview/wicket.git
-    $ git checkout wicket-1.4.23-gerrit
-    $ mvn clean install -DskipTests
-
 ### Gitblit
+
 You need to clone Gitblit from GitHub and build it locally
 using the installMaven ANT target.
 
@@ -32,6 +24,7 @@
     $ ant -DresourceFolderPrefix=static installMaven
 
 ### Gitblit plugin
+
 You are ready now to clone and build the Gitblit plugin: the
 Wicket and Giblit dependencies will be taken from your local
 Maven repository.
@@ -46,10 +39,11 @@
     [gitweb]
         type = custom
         linkname = Gitblit
-        url = plugins/
-        revision = gitblit/commit/?r=${project}&h=${commit}
-        project = gitblit/summary/?r=${project}
-        branch = gitblit/log/?r=${project}&h=${branch}
-        filehistory = gitblit/history/?f=${file}&r=${project}&h=${branch}
-        file = gitblit/blob/?r=${project}&h=${commit}&f=${file}
-        roottree = gitblit/tree/?r=${project}&h=${commit}
+        url = plugins/gitblit/
+        revision = commit/?r=${project}&h=${commit}
+        project = summary/?r=${project}
+        branch = log/?r=${project}&h=${branch}
+        filehistory = history/?f=${file}&r=${project}&h=${branch}
+        file = blob/?r=${project}&h=${commit}&f=${file}
+        roottree = tree/?r=${project}&h=${commit}
+
diff --git a/lib/BUCK b/lib/BUCK
index f3892f0..28e3144 100644
--- a/lib/BUCK
+++ b/lib/BUCK
@@ -2,60 +2,52 @@
 GERRITFORGE = 'http://gerritforge.com/snapshot'
 
 maven_jar(
+  name = 'pf4j',
+  id = 'ro.fortsoft.pf4j:pf4j:0.9.0',
+  sha1 = 'ff412cadfee820c50bf02723187eda6165d70379',
+  license = 'Apache2.0',
+)
+
+maven_jar(
   name = 'gitblit-jar',
-  id = 'com.gitblit:gitblit:1.4.0-SNAPSHOT',
-  sha1 = '5d1a6df0ed4ee0517e1f61cdf92b7fb47b4b1119',
+  id = 'com.gitblit:gitblit:1.7.0-SNAPSHOT',
+  sha1 = 'bf24e3a78f5421908326ec4e5a522a0bc7af3903',
   license = 'Apache2.0',
   repository = GERRITFORGE,
 )
 
 maven_jar(
   name = 'wicket',
-  id = 'org.apache.wicket:wicket:1.4.21-selfload',
-  sha1 = 'b822e4ce05232f39cc60adc59d3866452f919d6d',
+  id = 'org.apache.wicket:wicket:1.4.23',
+  sha1 = '304d9e23e52e9488308644093663b568952abd0b',
   license = 'Apache2.0',
-  repository = GERRITFORGE,
 )
 
 maven_jar(
   name = 'wicket-auth-roles',
-  id = 'org.apache.wicket:wicket-auth-roles:1.4.21',
+  id = 'org.apache.wicket:wicket-auth-roles:1.4.23',
   sha1 = '1b130dbf5578ace37507430a4a523f6594bf34fa',
   license = 'Apache2.0',
 )
 
 maven_jar(
   name = 'wicket-extensions',
-  id = 'org.apache.wicket:wicket-extensions:1.4.21',
-  sha1 = 'fac510c7ee4399a29b927405ec3de40b67d105d8',
-  license = 'Apache2.0',
-)
-
-maven_jar(
-  name = 'wicketstuff',
-  id = 'org.wicketstuff:googlecharts:1.4.21',
-  sha1 = '73d7540267afc3a0e91ca6148d3073e050dba180',
+  id = 'org.apache.wicket:wicket-extensions:1.4.23',
+  sha1 = '9ca61ca2273289d648dbb430e9033693c9b5eed3',
   license = 'Apache2.0',
 )
 
 maven_jar(
   name = 'javax-mail',
-  id = 'javax.mail:mail:1.4',
-  sha1 = '1aa1579ae5ecd41920c4f355b0a9ef40b68315dd',
+  id = 'com.sun.mail:javax.mail:1.5.1',
+  sha1 = '9724dd44f1abbba99c9858aa05fc91d53f59e7a5',
   license = 'Apache2.0',
 )
 
 maven_jar(
   name = 'groovy',
-  id = 'org.codehaus.groovy:groovy-all:1.8.8',
-  sha1 = '98a489343d3c30da817d36cbea5de11ed07bef31',
-  license = 'Apache2.0',
-)
-
-maven_jar(
-  name = 'beust-jcommander',
-  id = 'com.beust:jcommander:1.17',
-  sha1 = '219a3540f3b27d7cc3b1d91d6ea046cd8723290e',
+  id = 'org.codehaus.groovy:groovy-all:2.4.1',
+  sha1 = 'a9ca9c9de09361ec2a18d2c058d2524fbd8eae0c',
   license = 'Apache2.0',
 )
 
@@ -66,25 +58,24 @@
   license = 'Apache2.0',
 )
 
-# Unfortunately an older version than used by Gerrit itself
 maven_jar(
   name = 'lucene-core',
-  id = 'org.apache.lucene:lucene-core:3.6.0',
-  sha1 = '8a0429de6b7c9918841fa2c441a6ef4cc07f2a18',
+  id = 'org.apache.lucene:lucene-core:4.10.2',
+  sha1 = 'c01e3d675d277e0a93e7890d03cc3246b2cdecaa',
   license = 'Apache2.0',
 )
 
 maven_jar(
   name = 'lucene-highlighter',
-  id = 'org.apache.lucene:lucene-highlighter:3.6.0',
-  sha1 = '9ee691f1dcc60f093df433c165d6a686c6d24553',
+  id = 'org.apache.lucene:lucene-highlighter:4.10.2',
+  sha1 = '7ced704190e1e5b9a9b32edec6dba9116d69ae72',
   license = 'Apache2.0',
 )
 
 maven_jar(
   name = 'lucene-memory',
-  id = 'org.apache.lucene:lucene-memory:3.6.1',
-  sha1 = '8c7ca5572edea50973dc0d26cf75c27047eebe7e',
+  id = 'org.apache.lucene:lucene-memory:4.10.2',
+  sha1 = 'c381123b510dd790e27445430ab8203e5a27f5bc',
   license = 'Apache2.0',
 )
 
@@ -97,15 +88,105 @@
 
 maven_jar(
   name = 'rome',
-  id = 'rome:rome:1.0-selfload',
-  sha1 = 'e8d80293c9c13b557f4e570d3e12afcaf64ac6d4',
+  id = 'rome:rome:1.0',
+  sha1 = '022b33347f315833e9348cec2751af1a5d5656e4',
   license = 'Apache2.0',
-  repository = GERRITFORGE
 )
 
 maven_jar(
   name = 'unboundid',
-  id = 'com.unboundid:unboundid-ldapsdk:2.3.0',
-  sha1 = '6fde8d9fb4ee3e7e3d7e764e3ea57195971e2eb2',
+  id = 'com.unboundid:unboundid-ldapsdk:2.3.8',
+  sha1 = '1788564d03f0b786a695f4de67b4cb55eda45e14',
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'jsoup',
+  id = 'org.jsoup:jsoup:1.7.3',
+  sha1 = '92568d7167ce1bf9eb1fd815b022d5a2c113547a',
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'tika',
+  id = 'org.apache.tika:tika-core:1.5',
+  sha1 = '194ca0fb3d73b07737524806fbc3bec89063c03a',
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'wikitext-core',
+  id = 'org.fusesource.wikitext:wikitext-core:1.4',
+  sha1 = 'b877ee61d064c01cbf9834ab1b7146cd44acad65',
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'twiki-core',
+  id = 'org.fusesource.wikitext:twiki-core:1.4',
+  sha1 = '00c392027ae056d555040af2d1e0ed217fa94712',
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'textile-core',
+  id = 'org.fusesource.wikitext:textile-core:1.4',
+  sha1 = '9169c4a2865232c7b22137d759fb7ee2cbf019de',
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'tracwiki-core',
+  id = 'org.fusesource.wikitext:tracwiki-core:1.4',
+  sha1 = 'e2c8a5597695dc82256f2a97a505783e5ab5b0cb',
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'mediawiki-core',
+  id = 'org.fusesource.wikitext:mediawiki-core:1.4',
+  sha1 = '30d1b5551bbf97a17abc22d51fe8dd3b4d27f1ab',
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'confluence-core',
+  id = 'org.fusesource.wikitext:confluence-core:1.4',
+  sha1 = '08210b4af6f055ada934753facd27d7abf9d01a8',
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'ivy',
+  id = 'org.apache.ivy:ivy:2.2.0',
+  sha1 = 'f9d1e83e82fc085093510f7d2e77d81d52bc2081',
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'force-partner-api',
+  id = 'com.force.api:force-partner-api:24.0.0',
+  sha1 = 'ce3cd3e2ccd51735f27a83e90018123e8bd10314',
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'freemarker',
+  id = 'org.freemarker:freemarker:2.3.22',
+  sha1 = '473d784b3cd2dcb6d49a287ded0542b7862c7d68',
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'waffle-jna',
+  id = 'com.github.dblock.waffle:waffle-jna:1.7.3',
+  sha1 = '94ba74d3fa15bb61d4901b062b8fd5046c9e99b9',
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'libpam4j',
+  id = 'org.kohsuke:libpam4j:1.8',
+  sha1 = '548d4a1177adad8242fe03a6930c335669d669ad',
   license = 'Apache2.0',
 )
diff --git a/pom.xml b/pom.xml
index 7726835..f94f05b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -21,6 +21,12 @@
   <description>GitBlit for Gerrit integrated as a plugin</description>
   <name>Gerrit - GitBlit Plugin</name>
   <version>2.11-SNAPSHOT</version>
+  <licenses>
+    <license>
+      <name>Apache License 2.0</name>
+      <url>http://www.apache.org/licenses/LICENSE-2.0.html</url>
+    </license>
+  </licenses>
   <properties>
     <Gerrit-ApiType>plugin</Gerrit-ApiType>
     <Gerrit-ApiVersion>${project.version}</Gerrit-ApiVersion>
@@ -28,8 +34,8 @@
     <Gerrit-InitStep>com.googlesource.gerrit.plugins.gitblit.GitBlitInitStep</Gerrit-InitStep>
     <Gerrit-Module>com.googlesource.gerrit.plugins.gitblit.GitBlitModule</Gerrit-Module>
     <Gerrit-HttpModule>com.googlesource.gerrit.plugins.gitblit.GitBlitServletModule</Gerrit-HttpModule>
-    <dagger.version>1.1.0</dagger.version>
-    <wicket.version>1.4.23-gerrit</wicket.version>
+    <wicket.version>1.4.23</wicket.version>
+    <GitBlit-Version>1.7.0-SNAPSHOT</GitBlit-Version>
   </properties>
   <dependencies>
     <dependency>
@@ -41,24 +47,52 @@
     <dependency>
       <groupId>com.gitblit</groupId>
       <artifactId>gitblit</artifactId>
-      <version>1.7.0-SNAPSHOT</version>
-      <exclusions>
-        <exclusion>
-          <groupId>org.apache.wicket</groupId>
-          <artifactId>wicket</artifactId>
-        </exclusion>
-      </exclusions>
+      <version>${GitBlit-Version}</version>
     </dependency>
     <dependency>
       <groupId>org.apache.wicket</groupId>
       <artifactId>wicket</artifactId>
-      <version>1.4.23-gerrit</version>
+      <version>${wicket.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.wicket</groupId>
+      <artifactId>wicket-auth-roles</artifactId>
+      <version>${wicket.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.wicket</groupId>
+      <artifactId>wicket-extensions</artifactId>
+      <version>${wicket.version}</version>
     </dependency>
   </dependencies>
   <build>
+    <resources>
+      <resource>
+        <directory>src/main/resources</directory>
+        <filtering>true</filtering>
+        <includes>
+          <include>**/*.md</include>
+        </includes>
+      </resource>
+      <resource>
+        <directory>src/main/resources</directory>
+        <filtering>false</filtering>
+        <excludes>
+          <exclude>**/*.md</exclude>
+        </excludes>
+      </resource>
+    </resources>
     <plugins>
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-resources-plugin</artifactId>
+        <version>2.7</version>
+        <configuration>
+          <escapeString>\</escapeString>
+        </configuration>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-compiler-plugin</artifactId>
         <version>2.5.1</version>
         <configuration>
@@ -107,7 +141,7 @@
               <exclude>org.apache.commons:commons-compress</exclude>
               <exclude>org.tukaani:xz</exclude>
               <exclude>org.ow2.asm:*</exclude>
-              <exclude>org.eclipse.jetty:*</exclude>
+              <exclude>org.eclipse.jetty.aggregate:*</exclude>
             </excludes>
           </artifactSet>
           <transformers>
diff --git a/src/main/java/com/googlesource/gerrit/plugins/gitblit/GerritWicketFilter.java b/src/main/java/com/googlesource/gerrit/plugins/gitblit/GerritWicketFilter.java
index d6f5aeb..d41a068 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/gitblit/GerritWicketFilter.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/gitblit/GerritWicketFilter.java
@@ -112,6 +112,11 @@
   }
 
   @Override
+  protected ClassLoader getClassLoader() {
+    return getClass().getClassLoader();
+  }
+
+  @Override
   public void doFilter(ServletRequest request, ServletResponse response,
       FilterChain chain) throws IOException, ServletException {
     HttpServletRequest httpServletRequest = (HttpServletRequest) request;
diff --git a/src/main/java/com/googlesource/gerrit/plugins/gitblit/GitBlitInitStep.java b/src/main/java/com/googlesource/gerrit/plugins/gitblit/GitBlitInitStep.java
index 329ef60..2580731 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/gitblit/GitBlitInitStep.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/gitblit/GitBlitInitStep.java
@@ -13,24 +13,31 @@
 // limitations under the License.
 package com.googlesource.gerrit.plugins.gitblit;
 
+import org.eclipse.jgit.lib.Config;
+
 import com.google.gerrit.extensions.annotations.PluginName;
+import com.google.gerrit.pgm.init.api.ConsoleUI;
+import com.google.gerrit.pgm.init.api.InitFlags;
 import com.google.gerrit.pgm.init.api.InitStep;
 import com.google.gerrit.pgm.init.api.Section;
 import com.google.gerrit.pgm.init.api.Section.Factory;
-import com.google.gerrit.pgm.init.api.ConsoleUI;
 import com.google.inject.Inject;
 
 public class GitBlitInitStep implements InitStep {
   private final ConsoleUI ui;
   private final String pluginName;
   private final Factory sections;
+  private final Config cfg;
 
   @Inject
-  public GitBlitInitStep(final ConsoleUI ui, final Section.Factory sections,
-      @PluginName final String pluginName) {
+  public GitBlitInitStep(ConsoleUI ui,
+      Section.Factory sections,
+      @PluginName String pluginName,
+      InitFlags flags) {
     this.ui = ui;
     this.pluginName = pluginName;
     this.sections = sections;
+    this.cfg = flags.cfg;
   }
 
   @Override
@@ -38,24 +45,71 @@
     ui.message("\n");
     ui.header("GitBlit Integration");
 
-    if(ui.yesno(true, "Do you want to use GitBlit as your GitWeb viewer ?")) {
+    if (ui.yesno(true, "Do you want to use GitBlit as your GitWeb viewer?")) {
       configureGitBlit();
     }
+    // If we don't use GitBlit here, we leave a potential [plugin "gitblit"]
+    // section in the config. It won't hurt,
+    // and maybe the user will later re-enable GitBlit, and then he'd be
+    // surprised if his customized settings were
+    // gone.
   }
 
   private void configureGitBlit() {
+    initGitWebConfig();
+    initGitBlitPluginConfig();
+  }
+
+  private void initGitWebConfig() {
     Section gitWeb = sections.get("gitweb", null);
     gitWeb.set("type", "custom");
-    gitWeb.set("url", "plugins/");
-    gitWeb.set("project", pluginName + "/summary/?r=${project}");
-    gitWeb.set("revision", pluginName + "/commit/?r=${project}&h=${commit}");
-    gitWeb.set("branch", pluginName + "/log/?r=${project}&h=${branch}");
-    gitWeb.set("filehistory", pluginName + "/history/?f=${file}&r=${project}&h=${branch}");
-    gitWeb.set("file", pluginName + "/blob/?r=${project}&h=${commit}&f=${file}");
-    gitWeb.set("roottree", pluginName + "/tree/?r=${project}&h=${commit}");
+    gitWeb.set("url", "plugins/" + pluginName + '/');
+    gitWeb.set("project", "summary/?r=${project}");
+    gitWeb.set("revision", "commit/?r=${project}&h=${commit}");
+    gitWeb.set("branch", "log/?r=${project}&h=${branch}");
+    gitWeb.set("filehistory", "history/?f=${file}&r=${project}&h=${branch}");
+    gitWeb.set("file", "blob/?r=${project}&h=${commit}&f=${file}");
+    gitWeb.set("roottree", "tree/?r=${project}&h=${commit}");
     gitWeb.string("Link name", "linkname", "GitBlit");
   }
 
+  private void initGitBlitPluginConfig() {
+    Section pluginCfg = sections.get("plugin", pluginName);
+    // These values are displayed in the UI.
+    pluginCfg.string("\"Repositories\" submenu title", "repositories",
+        "Repositories", true);
+    pluginCfg
+        .string("\"Activity\" submenu title", "activity", "Activity", true);
+    pluginCfg.string("\"Documentation\" submenu title", "documentation",
+        "Documentation", true);
+    String originalValue = pluginCfg.get("search");
+    if (originalValue == null) {
+      pluginCfg
+          .string(
+              "\"Search\" submenu title (makes only sense to set if some projects are indexed in GitBlit)",
+              "search", "", true);
+    } else {
+      String newValue =
+          ui.readString(
+              originalValue,
+              "%s",
+              "\"Search\" submenu title (makes only sense to set if some projects are indexed in GitBlit; single dash unsets)");
+      if (newValue == null || "-".equals(newValue)) {
+        pluginCfg.unset("search");
+      } else if (!originalValue.equals(newValue)) {
+        pluginCfg.set("search", newValue);
+      }
+    }
+    pluginCfg.string(
+        "\"Browse\" submenu title for the \"Projects\" top-level menu",
+        "browse", "Browse", true);
+    // If everything is at the default, then make sure we don't have the section
+    // at all.
+    if (cfg.getNames("plugin", pluginName).isEmpty()) {
+      cfg.unsetSection("plugin", pluginName);
+    }
+  }
+
   @Override
   public void postRun() throws Exception {
   }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/gitblit/GitBlitServletModule.java b/src/main/java/com/googlesource/gerrit/plugins/gitblit/GitBlitServletModule.java
index 3ec851d..9012053 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/gitblit/GitBlitServletModule.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/gitblit/GitBlitServletModule.java
@@ -55,6 +55,7 @@
 import com.google.inject.Inject;
 import com.google.inject.servlet.ServletModule;
 import com.googlesource.gerrit.plugins.gitblit.app.GitBlitSettings;
+import com.googlesource.gerrit.plugins.gitblit.app.ReallyNullTicketService;
 import com.googlesource.gerrit.plugins.gitblit.auth.GerritToGitBlitUserService;
 
 public class GitBlitServletModule extends ServletModule {
@@ -75,7 +76,7 @@
 
     // bind complex providers
     bind(IPublicKeyManager.class).toProvider(IPublicKeyManagerProvider.class);
-    bind(ITicketService.class).toProvider(ITicketServiceProvider.class);
+    bind(ITicketService.class).to(ReallyNullTicketService.class);
     bind(WorkQueue.class).toProvider(WorkQueueProvider.class);
 
     // core managers
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 b4e5778..44d62f8 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/gitblit/GitBlitTopMenu.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/gitblit/GitBlitTopMenu.java
@@ -17,45 +17,70 @@
 import java.util.Arrays;
 import java.util.List;
 
-import com.google.gerrit.extensions.annotations.Listen;
+import com.google.common.collect.Lists;
+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.webui.TopMenu;
-import com.google.gerrit.server.AnonymousUser;
 import com.google.gerrit.server.CurrentUser;
+import com.google.gerrit.server.config.PluginConfig;
+import com.google.gerrit.server.config.PluginConfigFactory;
 import com.google.inject.Inject;
 import com.google.inject.Provider;
 
-@Listen
 public class GitBlitTopMenu implements TopMenu {
+
+  // Not configurable to avoid mis-configurations clashing with predefined top
+  // menus.
+  private static final String GITBLIT_TOPMENU_NAME = "GitBlit";
+
   private final MenuEntry fullMenuEntries;
   private final MenuEntry restrictedMenuEntries;
+  private final MenuEntry extraProjectEntries;
   private final Provider<CurrentUser> userProvider;
 
   @Inject
-  public GitBlitTopMenu(final @PluginName String pluginName,
-      final Provider<CurrentUser> userProvider) {
+  public GitBlitTopMenu(@PluginName String pluginName,
+      @PluginCanonicalWebUrl String pluginUrl,
+      Provider<CurrentUser> userProvider,
+      PluginConfigFactory cfgProvider) {
     this.userProvider = userProvider;
 
-    String gitBlitBaseUrl = "/plugins/" + pluginName + "/";
-    this.restrictedMenuEntries =
-        menu("Gitblit", item("Repositories", gitBlitBaseUrl + "repositories/"));
-    this.fullMenuEntries =
-        menu("GitBlit", item("Repositories", gitBlitBaseUrl + "repositories/"),
-            item("Activity", gitBlitBaseUrl + "activity/"),
-            item("Search", gitBlitBaseUrl + "lucene/"));
-  }
-
-  private MenuEntry menu(String name, MenuItem... items) {
-    return new MenuEntry(name, Arrays.asList(items));
-  }
-
-  private MenuItem item(String name, String url) {
-    return new MenuItem(name, url, "");
+    String gitBlitBaseUrl = pluginUrl;
+    PluginConfig cfg = cfgProvider.getFromGerritConfig(pluginName, true);
+    // We don't have to worry about XSS here; the way these menu item get
+    // created through GWT ensures that these values read from the config
+    // end up as text nodes in the DOM, even if they contain potentially
+    // malicious code. So if somebody sets these values to some HTML snippet,
+    // he'll simply end up with a funny looking menu item, but he can't inject
+    // things here.
+    MenuItem repositories =
+        new MenuItem(cfg.getString("repositories", "Repositories"),
+            gitBlitBaseUrl + "repositories/", "");
+    // GitBlit handles its own "/" url, so Gerrit won't produce any link, not even on the "plugins" page, that would display the documentation.
+    // I've considered simply redirecting "/" to "/Documentation/" since GitBlit's "/" screen is very similar to its "/activity/" screen, but
+    // decided finally to provide an explicit documentation submenu instead.
+    MenuItem documentation = new MenuItem(cfg.getString("documentation", "Documentation"), gitBlitBaseUrl + "Documentation/", "");
+    restrictedMenuEntries = new MenuEntry(GITBLIT_TOPMENU_NAME, Arrays.asList(repositories, documentation));
+    List<MenuItem> fullMenuItems = Lists.newArrayList();
+    fullMenuItems.add(repositories);
+    fullMenuItems.add(new MenuItem(cfg.getString("activity", "Activity"),
+        gitBlitBaseUrl + "activity/", ""));
+    String search = cfg.getString("search");
+    if (search != null && !search.isEmpty()) {
+      fullMenuItems.add(new MenuItem(search, gitBlitBaseUrl + "lucene/", ""));
+    }
+    fullMenuItems.add(documentation);
+    fullMenuEntries = new MenuEntry(GITBLIT_TOPMENU_NAME, fullMenuItems);
+    extraProjectEntries =
+        new MenuEntry(GerritTopMenu.PROJECTS, Arrays.asList(new MenuItem(cfg
+            .getString("browse", "Browse"), gitBlitBaseUrl
+            + "summary?r=${projectName}", "")));
   }
 
   @Override
   public List<MenuEntry> getEntries() {
-    return Arrays.asList(userProvider.get() instanceof AnonymousUser
-        ? restrictedMenuEntries : fullMenuEntries);
+    return Arrays.asList(userProvider.get().isIdentifiedUser()
+        ? fullMenuEntries : restrictedMenuEntries, extraProjectEntries);
   }
 }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/gitblit/app/ReallyNullTicketService.java b/src/main/java/com/googlesource/gerrit/plugins/gitblit/app/ReallyNullTicketService.java
new file mode 100644
index 0000000..14f3fe3
--- /dev/null
+++ b/src/main/java/com/googlesource/gerrit/plugins/gitblit/app/ReallyNullTicketService.java
@@ -0,0 +1,79 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// 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.googlesource.gerrit.plugins.gitblit.app;
+
+import java.util.Collections;
+import java.util.List;
+
+import com.gitblit.manager.INotificationManager;
+import com.gitblit.manager.IPluginManager;
+import com.gitblit.manager.IRepositoryManager;
+import com.gitblit.manager.IRuntimeManager;
+import com.gitblit.manager.IUserManager;
+import com.gitblit.models.RepositoryModel;
+import com.gitblit.tickets.NullTicketService;
+import com.gitblit.tickets.TicketLabel;
+import com.gitblit.tickets.TicketMilestone;
+import com.google.inject.Inject;
+import com.google.inject.Singleton;
+
+/**
+ * The {@link NullTicketService} of GitBlit is not really a null service. It
+ * creates a TicketIndexer, and because it neglects to override some methods
+ * from its base class, that even gets called sometimes, which then produces
+ * exceptions.
+ */
+@Singleton
+public class ReallyNullTicketService extends NullTicketService {
+
+  @Inject
+  public ReallyNullTicketService(IRuntimeManager runtimeManager,
+      IPluginManager pluginManager,
+      INotificationManager notificationManager,
+      IUserManager userManager,
+      IRepositoryManager repositoryManager) {
+    super(runtimeManager, pluginManager, notificationManager, userManager,
+        repositoryManager);
+  }
+
+  @Override
+  public boolean hasTickets(RepositoryModel repository) {
+    return false;
+  }
+
+  @Override
+  public boolean isAcceptingNewPatchsets(RepositoryModel repository) {
+    return false;
+  }
+
+  @Override
+  public boolean isAcceptingNewTickets(RepositoryModel repository) {
+    return false;
+  }
+
+  @Override
+  public boolean isAcceptingTicketUpdates(RepositoryModel repository) {
+    return false;
+  }
+
+  @Override
+  public List<TicketLabel> getLabels(RepositoryModel repository) {
+    return Collections.emptyList();
+  }
+
+  @Override
+  public List<TicketMilestone> getMilestones(RepositoryModel repository) {
+    return Collections.emptyList();
+  }
+}
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 1d0ce9d..a4bbb2c 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
@@ -142,14 +142,15 @@
     String gerritUsername =
         (String) httpRequest.getAttribute("gerrit-username");
     String gerritToken = (String) httpRequest.getAttribute("gerrit-token");
-    if (Strings.isNullOrEmpty(gerritUsername)
-        || Strings.isNullOrEmpty(gerritToken)) {
-      return null;
-    }
-
     httpRequest.getSession().setAttribute(Constants.AUTHENTICATION_TYPE,
         AuthenticationType.CONTAINER);
-    return authenticateSSO(gerritUsername, gerritToken);
+    
+    if (Strings.isNullOrEmpty(gerritUsername)
+        || Strings.isNullOrEmpty(gerritToken)) {
+      return GerritToGitBlitUserModel.getAnonymous(projectControl);
+    } else {      
+      return authenticateSSO(gerritUsername, gerritToken);
+    }
   }
 
   @Override
diff --git a/src/main/resources/Documentation/index.md b/src/main/resources/Documentation/index.md
new file mode 100644
index 0000000..a3a24eb
--- /dev/null
+++ b/src/main/resources/Documentation/index.md
@@ -0,0 +1,76 @@
+# GitBlit plugin
+
+This plugin integrates [GitBlit](https://github.com/gitblit/gitblit) _${GitBlit-Version}_ as a repository browser into [Gerrit](https://code.google.com/p/gerrit/),
+with full SSO through Gerrit.
+
+* License: [Apache Public License 2.0](http://www.apache.org/licenses/LICENSE-2.0)
+* [Home page](https://gerrit.googlesource.com/plugins/gitblit/+/refs/heads/master/README.md)
+* Installed plugin version: _${pom.version}_
+
+# Configuration
+
+There are two different configurations: one for Gerrit so it knows how to generate links that will be processed by the plugin, and
+an optional GitBlit configuration for the plugin itself.
+
+## Gerrit configuration
+
+In Gerrit's `gerrit.config`, define the `[gitweb]` section as follows:
+
+	[gitweb]
+	        type = custom
+	        url = plugins/@PLUGIN@/
+	        linkname = browse
+	        project = summary/?r=${project}
+	        revision = commit/?r=${project}&h=${commit}
+	        branch = log/?r=${project}&h=${branch}
+	        filehistory = history/?f=\${file}&r=${project}&h=${branch}
+	        file = blob/?r=${project}&h=${commit}&f=\${file}
+	        roottree = tree/?r=${project}&h=${commit}
+
+This is normally done automatically if you add the plugin and run through `java -jar gerrit.war init -d site_path`, but you can also
+add this manually to Gerrit's config file. The `linkname` can be adapted to your taste.
+
+### Configuring the top menu
+
+This plugin adds a "GitBlit" top menu to Gerrit, and also a new sub-menu item to the "Projects" top menu. Since v2.11 of this plugin, the link
+texts for all sub-menu items can be configured to your taste in a `[plugin "@PLUGIN@"]` section in your `gerrit.config`. If the section is not present,
+or some values in that section are not defined, the plugin uses built-in default texts. The default configuration would correspond to
+
+	[plugin "@PLUGIN@"]
+	        repositories = Repositories
+	        activity = Activity
+	        documentation = Documentation
+	        search =
+	        browse = Browse
+
+The first four are sub-menu items of the "GitBlit" top menu, the last one is a new "browse" sub-menu item in Gerrit's "Projects" menu that is shown
+for Gerrit's "current" project (since v2.11).
+
+The "search" sub-menu item is by default not set and will thus not be shown. Setting it makes only sense if you enable GitBlit indexing on some of
+your projects.
+
+## GitBlit configuration
+
+The plugin includes in the JAR a minimal default configuration to make GitBlit act only as a repository viewer. You can provide your own
+customized [`gitblit.properties`](http://gitblit.com/properties.html) file located in Gerrit's `$GERRIT_SITE/etc` directory.
+The `$GERRIT_SITE/etc/gitblit.properties` takes precedence over the pre-defined configuration settings.
+
+P.S. The following two GitBlit properties are not configurable as changing them would break the plugin functionality:
+
+- git.repositoriesFolder is hardcoded to point to Gerrit repositories directory
+- realm.userService is hardcoded to resolve GitBlit users using Gerrit authentication realm
+
+Additionally the GitBlit ticket service is not available as would not make sense when used in a read only
+repository viewer.
+
+The built-in configuration is archived in the GitBlit source repository. The latest version on master is
+[`gitblit.properties`](https://gerrit.googlesource.com/plugins/gitblit/+/master/src/main/resources/gitblit.properties).
+
+# Issue tracking
+
+Report bugs or make feature requests at the [Gerrit issue tracker](https://code.google.com/p/gerrit/issues/list).
+
+<hr style="color: #C0C0C0; background-color: #C0C0C0; border-color: #C0C0C0; height: 2px;" />
+<div style="float:right;">
+<a href="https://gerrit-review.googlesource.com/#/admin/projects/plugins/gitblit,dashboards" target="_blank">GitBlit plugin ${pom.version}</a>
+</div>
\ No newline at end of file
