diff --git a/js/ccnxProtocol.xpi b/js/ccnxProtocol.xpi
index 4c4f2e9..c5dd932 100644
--- a/js/ccnxProtocol.xpi
+++ b/js/ccnxProtocol.xpi
Binary files differ
diff --git a/js/ccnxProtocol/chrome.manifest b/js/ccnxProtocol/chrome.manifest
index e9cac71..6357dd3 100644
--- a/js/ccnxProtocol/chrome.manifest
+++ b/js/ccnxProtocol/chrome.manifest
@@ -1,3 +1,5 @@
 component {8122e660-1012-11e2-892e-0800200c9a66} components/ccnxProtocolService.js
 contract @mozilla.org/network/protocol;1?name=ccnx {8122e660-1012-11e2-892e-0800200c9a66}
 content modules modules/
+content toolbar content/
+overlay chrome://browser/content/browser.xul chrome://toolbar/content/toolbar.xul
\ No newline at end of file
diff --git a/js/ccnxProtocol/content/ccnxToolbar.js b/js/ccnxProtocol/content/ccnxToolbar.js
new file mode 100644
index 0000000..a187599
--- /dev/null
+++ b/js/ccnxProtocol/content/ccnxToolbar.js
@@ -0,0 +1,42 @@
+Components.utils.import("chrome://modules/content/ndn-js.jsm");
+
+function CcnxToolbarGetLatest(event){
+  if (window._content.document.location.protocol != "ccnx:") {
+    alert("The addres must start with ccnx");
+    return;
+  }
+
+  // Parse the same as in ccnxprotocolService newChannel.
+  var spec = window._content.document.location.href.trim();
+  var preHash = spec.split('#', 1)[0];
+  var hash = spec.substr(preHash.length).trim();
+  var preSearch = preHash.split('?', 1)[0];
+  var search = preHash.substr(preSearch.length).trim();
+  // Set nameString to the preSearch without the protocol.
+  var nameString = preSearch.trim();
+  if (nameString.indexOf(':') >= 0)
+    nameString = nameString.substr(nameString.indexOf(':') + 1).trim();
+
+  var name = new Name(nameString);
+  var indexOfVersion = getIndexOfVersion(name);
+  if (indexOfVersion < 0) {
+    alert("The ccnx address does not have a version");
+    return;
+  }
+
+  var nameWithoutVersion = new Name(name.components.slice(0, indexOfVersion));
+  var searchWithChildSelector = (search == "" ? "?" : search + "&") + "ccnx.ChildSelector=1";
+    
+  var uri = "ccnx:" + nameWithoutVersion.to_uri() + searchWithChildSelector + hash;
+  window._content.document.location = uri;
+} 
+
+// Return the index of the last component that starts with 0xfd, or -1 if not found.
+function getIndexOfVersion(name) {
+  for (var i = name.components.length - 1; i >= 0; --i) {
+    if (name.components[i].length >= 1 && name.components[i][0] == 0xfd)
+      return i;
+  }
+
+  return -1;
+}
diff --git a/js/ccnxProtocol/content/toolbar.xul b/js/ccnxProtocol/content/toolbar.xul
new file mode 100644
index 0000000..9b7d04a
--- /dev/null
+++ b/js/ccnxProtocol/content/toolbar.xul
@@ -0,0 +1,15 @@
+<?xml version="1.0"?>                 
+<overlay id="Scrapper-Overlay"
+xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
+
+<script type="application/x-javascript" src="chrome://toolbar/content/ccnxToolbar.js" />
+
+<toolbox id="navigator-toolbox">
+  <toolbar id="CcnxToolbar" toolbarname="ccnxToolbar" >
+      <label value="CCNX"/>
+      <toolbarbutton id="CcnxToolbarGetLatestButton"
+        label="Get Latest" oncommand="CcnxToolbarGetLatest(event)" />
+  </toolbar>
+</toolbox>
+
+</overlay>
