diff --git a/src/main/java/com/googlesource/gerrit/plugins/xdocs/Module.java b/src/main/java/com/googlesource/gerrit/plugins/xdocs/Module.java
index 34224ea..65be419 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/xdocs/Module.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/xdocs/Module.java
@@ -63,7 +63,7 @@
     DynamicSet.bind(binder(), BranchWebLink.class)
         .to(XDocWebLink.class);
     DynamicSet.bind(binder(), FileWebLink.class)
-        .to(XDocFileWebLink.class);
+        .to(XDocWebLink.class);
 
     DynamicSet.bind(binder(), TopMenu.class).toInstance(new TopMenu() {
       @Override
diff --git a/src/main/java/com/googlesource/gerrit/plugins/xdocs/XDocFileWebLink.java b/src/main/java/com/googlesource/gerrit/plugins/xdocs/XDocFileWebLink.java
deleted file mode 100644
index c0c35a3..0000000
--- a/src/main/java/com/googlesource/gerrit/plugins/xdocs/XDocFileWebLink.java
+++ /dev/null
@@ -1,48 +0,0 @@
-// 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.xdocs;
-
-import com.google.gerrit.extensions.annotations.PluginName;
-import com.google.gerrit.extensions.webui.FileWebLink;
-import com.google.gerrit.server.git.GitRepositoryManager;
-import com.google.gerrit.server.project.ProjectCache;
-import com.google.inject.Inject;
-
-import com.googlesource.gerrit.plugins.xdocs.formatter.Formatters;
-
-public class XDocFileWebLink extends XDocWebLink implements FileWebLink {
-
-  @Inject
-  XDocFileWebLink(
-      @PluginName String pluginName,
-      GitRepositoryManager repoManager,
-      XDocCache cache,
-      XDocProjectConfig.Factory cfgFactory,
-      ProjectCache projectCache,
-      Formatters formatters) {
-    super(pluginName, repoManager, cache, cfgFactory, projectCache, formatters);
-  }
-
-  @Override
-  public String getLinkName() {
-    return "preview";
-  }
-
-  @Override
-  public String getFileUrl(String projectName, String revision,
-      String fileName) {
-    return super.getPatchUrl(projectName, revision, fileName);
-  }
-}
diff --git a/src/main/java/com/googlesource/gerrit/plugins/xdocs/XDocWebLink.java b/src/main/java/com/googlesource/gerrit/plugins/xdocs/XDocWebLink.java
index 07460d8..400c5d7 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/xdocs/XDocWebLink.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/xdocs/XDocWebLink.java
@@ -15,9 +15,12 @@
 package com.googlesource.gerrit.plugins.xdocs;
 
 import com.google.gerrit.extensions.annotations.PluginName;
+import com.google.gerrit.extensions.common.WebLinkInfo;
 import com.google.gerrit.extensions.restapi.Url;
 import com.google.gerrit.extensions.webui.BranchWebLink;
+import com.google.gerrit.extensions.webui.FileWebLink;
 import com.google.gerrit.extensions.webui.ProjectWebLink;
+import com.google.gerrit.extensions.webui.WebLinkTarget;
 import com.google.gerrit.httpd.resources.Resource;
 import com.google.gerrit.reviewdb.client.Project;
 import com.google.gerrit.server.git.GitRepositoryManager;
@@ -38,10 +41,13 @@
 import java.io.IOException;
 
 @Singleton
-public class XDocWebLink implements ProjectWebLink, BranchWebLink {
+public class XDocWebLink implements ProjectWebLink, BranchWebLink, FileWebLink {
   private static final Logger log = LoggerFactory
       .getLogger(XDocWebLink.class);
 
+  private static final String README = "readme";
+  private static final String PREVIEW = "preview";
+
   private final String pluginName;
   private final GitRepositoryManager repoManager;
   private final XDocCache docCache;
@@ -66,27 +72,35 @@
   }
 
   @Override
-  public String getLinkName() {
-    return "readme";
+  public WebLinkInfo getBranchWebLink(String projectName, String branchName) {
+    return new WebLinkInfo(README, getImageUrl(),
+        getBranchUrl(projectName, branchName), WebLinkTarget.BLANK);
   }
 
   @Override
-  public String getProjectUrl(String projectName) {
-    return getBranchUrl(projectName, Constants.HEAD);
+  public WebLinkInfo getProjectWeblink(String projectName) {
+    return new WebLinkInfo(README, getImageUrl(),
+        getBranchUrl(projectName, Constants.HEAD), WebLinkTarget.BLANK);
   }
 
   @Override
-  public String getBranchUrl(String projectName, String branchName) {
+  public WebLinkInfo getFileWebLink(String projectName, String revision,
+      String fileName) {
+    return new WebLinkInfo(PREVIEW, getImageUrl(),
+        getFileUrl(projectName, revision, fileName), WebLinkTarget.BLANK);
+  }
+
+  private String getBranchUrl(String projectName, String branchName) {
     ProjectState state = projectCache.get(new Project.NameKey(projectName));
     if (state == null) {
       // project not found -> no link
       return null;
     }
-    return getPatchUrl(projectName, branchName,
+    return getFileUrl(projectName, branchName,
         cfgFactory.create(state).getIndexFile());
   }
 
-  public String getPatchUrl(String projectName, String revision,
+  public String getFileUrl(String projectName, String revision,
       String fileName) {
     FormatterProvider formatter = formatters.get(projectName, fileName);
     if (formatter == null) {
@@ -127,13 +141,7 @@
     }
   }
 
-  @Override
-  public String getImageUrl() {
+  private String getImageUrl() {
     return "plugins/" + pluginName + "/static/readme.png";
   }
-
-  @Override
-  public String getTarget() {
-    return Target.BLANK;
-  }
 }
