diff --git a/js/FaceInstance.js b/js/FaceInstance.js
index dfc44a6..fd4868a 100644
--- a/js/FaceInstance.js
+++ b/js/FaceInstance.js
@@ -42,7 +42,6 @@
 
 /**
  * Used by NetworkObject to decode the object from a network stream.
- * @see org.ccnx.ccn.impl.encoding.XMLEncodable
  */
 FaceInstance.prototype.from_ccnb = function(//XMLDecoder 
 	decoder) {
@@ -114,7 +113,6 @@
 
 /**
  * Used by NetworkObject to encode the object to a network stream.
- * @see org.ccnx.ccn.impl.encoding.XMLEncodable
  */
 FaceInstance.prototype.to_ccnb = function(//XMLEncoder
 	encoder){
diff --git a/js/ForwardingEntry.js b/js/ForwardingEntry.js
index a095516..b223004 100644
--- a/js/ForwardingEntry.js
+++ b/js/ForwardingEntry.js
@@ -66,7 +66,6 @@
 
 		/**
 		 * Used by NetworkObject to encode the object to a network stream.
-		 * @see org.ccnx.ccn.impl.encoding.XMLEncodable
 		 */
 ForwardingEntry.prototype.to_ccnb =function(
 	//XMLEncoder 
diff --git a/js/Name.js b/js/Name.js
index b8a484a..8bd355d 100644
--- a/js/Name.js
+++ b/js/Name.js
@@ -45,7 +45,7 @@
         // Make sure the colon came before a '/'.
         var iFirstSlash = name.indexOf('/');
         if (iFirstSlash < 0 || iColon < iFirstSlash)
-            // Omit the leading protocol such as ccnx:
+            // Omit the leading protocol such as ndn:
             name = name.substr(iColon + 1, name.length - iColon - 1).trim();
     }
     
@@ -152,7 +152,7 @@
 	return this.components.push(result);
 };
 
-// Return the escaped name string according to "CCNx URI Scheme".  Does not include "ccnx:".
+// Return the escaped name string according to "CCNx URI Scheme".
 Name.prototype.to_uri = function() {	
 	var result = "";
 	
diff --git a/js/WebSocketTransport.js b/js/WebSocketTransport.js
index 83f53d9..007e9da 100644
--- a/js/WebSocketTransport.js
+++ b/js/WebSocketTransport.js
@@ -227,9 +227,9 @@
 		co.sign();
 		var coBinary = encodeToBinaryContentObject(co);
 		
-		//var ccnxnodename = unescape('%00%88%E2%F4%9C%91%16%16%D6%21%8E%A0c%95%A5%A6r%11%E0%A0%82%89%A6%A9%85%AB%D6%E2%065%DB%AF');
-		var ccnxnodename = this.ccndid;
-		var interestName = new Name(['ccnx', ccnxnodename, 'selfreg', coBinary]);
+		//var nodename = unescape('%00%88%E2%F4%9C%91%16%16%D6%21%8E%A0c%95%A5%A6r%11%E0%A0%82%89%A6%A9%85%AB%D6%E2%065%DB%AF');
+		var nodename = this.ccndid;
+		var interestName = new Name(['ccnx', nodename, 'selfreg', coBinary]);
 
 		var interest = new Interest(interestName);
 		interest.scope = 1;
diff --git a/js/ccnxProtocol.xpi b/js/ccnxProtocol.xpi
deleted file mode 100644
index c5dd932..0000000
--- a/js/ccnxProtocol.xpi
+++ /dev/null
Binary files differ
diff --git a/js/ccnxProtocol/chrome.manifest b/js/ccnxProtocol/chrome.manifest
deleted file mode 100644
index 6357dd3..0000000
--- a/js/ccnxProtocol/chrome.manifest
+++ /dev/null
@@ -1,5 +0,0 @@
-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/toolbar.xul b/js/ccnxProtocol/content/toolbar.xul
deleted file mode 100644
index 9b7d04a..0000000
--- a/js/ccnxProtocol/content/toolbar.xul
+++ /dev/null
@@ -1,15 +0,0 @@
-<?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>
diff --git a/js/ndnProtocol.xpi b/js/ndnProtocol.xpi
new file mode 100644
index 0000000..834c170
--- /dev/null
+++ b/js/ndnProtocol.xpi
Binary files differ
diff --git a/js/ndnProtocol/chrome.manifest b/js/ndnProtocol/chrome.manifest
new file mode 100644
index 0000000..0d5497e
--- /dev/null
+++ b/js/ndnProtocol/chrome.manifest
@@ -0,0 +1,5 @@
+component {8122e660-1012-11e2-892e-0800200c9a66} components/ndnProtocolService.js
+contract @mozilla.org/network/protocol;1?name=ndn {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/components/ccnxProtocolService.js b/js/ndnProtocol/components/ndnProtocolService.js
similarity index 84%
rename from js/ccnxProtocol/components/ccnxProtocolService.js
rename to js/ndnProtocol/components/ndnProtocolService.js
index 6e7224c..f3a8909 100644
--- a/js/ccnxProtocol/components/ccnxProtocolService.js
+++ b/js/ndnProtocol/components/ndnProtocolService.js
@@ -1,7 +1,7 @@
 /*
  * @author: Jeff Thompson
  * See COPYING for copyright and distribution information.
- * This is the ccnx protocol handler for NDN.
+ * This is the ndn protocol handler.
  * Protocol handling code derived from http://mike.kaply.com/2011/01/18/writing-a-firefox-protocol-handler/
  */
 
@@ -15,11 +15,11 @@
 Components.utils.import("chrome://modules/content/ndn-js.jsm");
 Components.utils.import("chrome://modules/content/ContentChannel.jsm");
 
-function CcnxProtocol() {
+function NdnProtocol() {
 }
 
-CcnxProtocol.prototype = {
-    scheme: "ccnx",
+NdnProtocol.prototype = {
+    scheme: "ndn",
     protocolFlags: nsIProtocolHandler.URI_NORELATIVE |
                    nsIProtocolHandler.URI_NOAUTH |
                    nsIProtocolHandler.URI_LOADABLE_BY_ANYONE,
@@ -39,7 +39,7 @@
 
     newChannel: function(aURI)
     {
-        var thisCcnxProtocol = this;
+        var thisNdnProtocol = this;
         
         try {            
             // Decode manually since nsIURI doesn't have selectors for hash, etc.
@@ -56,7 +56,7 @@
             var template = new Interest(new Name([]));
             // Use the same default as NDN.expressInterest.
             template.interestLifetime = 4200;
-            var searchWithoutCcnx = extractCcnxSearch(search, template);
+            var searchWithoutNdn = extractNdnSearch(search, template);
     
             var requestContent = function(contentListener) {                
                 var name = new Name(nameString);
@@ -65,29 +65,29 @@
                 
                 var ndn = new NDN({ host: "lioncub.metwi.ucla.edu", port: 9695,
                       // Use the same transport object each time.
-                      getTransport: function() { return thisCcnxProtocol.transport; } });
+                      getTransport: function() { return thisNdnProtocol.transport; } });
                 ndn.expressInterest(name, 
                     new ContentClosure(ndn, contentListener, uriEndsWithSegmentNumber, 
-                            aURI.originCharset, searchWithoutCcnx + hash),
+                            aURI.originCharset, searchWithoutNdn + hash),
                     template);
             };
 
             return new ContentChannel(aURI, requestContent);
         } catch (ex) {
-            dump("CcnxProtocol.newChannel exception: " + ex + "\n" + ex.stack);
+            dump("NdnProtocol.newChannel exception: " + ex + "\n" + ex.stack);
         }
     },
 
-    classDescription: "ccnx Protocol Handler",
-    contractID: "@mozilla.org/network/protocol;1?name=" + "ccnx",
+    classDescription: "ndn Protocol Handler",
+    contractID: "@mozilla.org/network/protocol;1?name=" + "ndn",
     classID: Components.ID('{8122e660-1012-11e2-892e-0800200c9a66}'),
     QueryInterface: XPCOMUtils.generateQI([Ci.nsIProtocolHandler])
 }
 
 if (XPCOMUtils.generateNSGetFactory)
-    var NSGetFactory = XPCOMUtils.generateNSGetFactory([CcnxProtocol]);
+    var NSGetFactory = XPCOMUtils.generateNSGetFactory([NdnProtocol]);
 else
-    var NSGetModule = XPCOMUtils.generateNSGetModule([CcnxProtocol]);
+    var NSGetModule = XPCOMUtils.generateNSGetModule([NdnProtocol]);
                 
 /*
  * Create a closure for calling expressInterest.
@@ -121,7 +121,7 @@
         
     var contentObject = upcallInfo.contentObject;
     if (contentObject.content == null) {
-        dump("CcnxProtocol.ContentClosure: contentObject.content is null\n");
+        dump("NdnProtocol.ContentClosure: contentObject.content is null\n");
         return Closure.RESULT_ERR;
     }
 
@@ -153,10 +153,10 @@
             var nameWithoutSegmentNumber = new Name
                 (contentObject.name.components.slice
                  (0, contentObject.name.components.length - 1));
-            contentUriSpec = "ccnx:" + nameWithoutSegmentNumber.to_uri();
+            contentUriSpec = "ndn:" + nameWithoutSegmentNumber.to_uri();
         }
         else
-            contentUriSpec = "ccnx:" + contentObject.name.to_uri();
+            contentUriSpec = "ndn:" + contentObject.name.to_uri();
     
         // Include the search and hash.
         contentUriSpec += this.uriSearchAndHash;
@@ -207,7 +207,7 @@
 };
              
 /*
- * Scan the name from the last component to the first (skipping special CCNx components)
+ * Scan the name from the last component to the first (skipping special name components)
  *   for a recognized file name extension, and return an object with properties contentType and charset.
  */
 function getNameContentTypeAndCharset(name) {
@@ -230,11 +230,11 @@
 }
 
 /*
- * Find all search keys starting with "ccnx." and set the attribute in template.
- * Return the search string including the starting "?" but with the "ccnx." keys removed,
+ * Find all search keys starting with "ndn." and set the attribute in template.
+ * Return the search string including the starting "?" but with the "ndn." keys removed,
  *   or return "" if there are no search terms left.
  */
-function extractCcnxSearch(search, template) {
+function extractNdnSearch(search, template) {
     if (!(search.length >= 1 && search[0] == '?'))
         return search;
     
@@ -243,31 +243,31 @@
     while (i < terms.length) {
         var keyValue = terms[i].split('=');
         var key = keyValue[0].trim();
-        if (key.substr(0, 5) == "ccnx.") {
+        if (key.substr(0, 4) == "ndn.") {
             if (keyValue.length >= 1) {
                 var value = keyValue[1].trim();
                 var nonNegativeInt = parseInt(value);
                 
-                if (key == "ccnx.MinSuffixComponents" && nonNegativeInt >= 0)
+                if (key == "ndn.MinSuffixComponents" && nonNegativeInt >= 0)
                     template.minSuffixComponents = nonNegativeInt;
-                if (key == "ccnx.MaxSuffixComponents" && nonNegativeInt >= 0)
+                if (key == "ndn.MaxSuffixComponents" && nonNegativeInt >= 0)
                     template.maxSuffixComponents = nonNegativeInt;
-                if (key == "ccnx.ChildSelector" && nonNegativeInt >= 0)
+                if (key == "ndn.ChildSelector" && nonNegativeInt >= 0)
                     template.childSelector = nonNegativeInt;
-                if (key == "ccnx.AnswerOriginKind" && nonNegativeInt >= 0)
+                if (key == "ndn.AnswerOriginKind" && nonNegativeInt >= 0)
                     template.answerOriginKind = nonNegativeInt;
-                if (key == "ccnx.Scope" && nonNegativeInt >= 0)
+                if (key == "ndn.Scope" && nonNegativeInt >= 0)
                     template.scope = nonNegativeInt;
-                if (key == "ccnx.InterestLifetime" && nonNegativeInt >= 0)
+                if (key == "ndn.InterestLifetime" && nonNegativeInt >= 0)
                     template.interestLifetime = nonNegativeInt;
-                if (key == "ccnx.PublisherPublicKeyDigest" && nonNegativeInt >= 0)
+                if (key == "ndn.PublisherPublicKeyDigest" && nonNegativeInt >= 0)
                     template.publisherPublicKeyDigest = DataUtils.toNumbersFromString(unescape(value));
-                if (key == "ccnx.Nonce" && nonNegativeInt >= 0)
+                if (key == "ndn.Nonce" && nonNegativeInt >= 0)
                     template.nonce = DataUtils.toNumbersFromString(unescape(value));
                 // TODO: handle Exclude.
             }
         
-            // Remove the "ccnx." term and don't advance i.
+            // Remove the "ndn." term and don't advance i.
             terms.splice(i, 1);
         }
         else
diff --git a/js/ccnxProtocol/content/ccnxToolbar.js b/js/ndnProtocol/content/ndnToolbar.js
similarity index 75%
rename from js/ccnxProtocol/content/ccnxToolbar.js
rename to js/ndnProtocol/content/ndnToolbar.js
index 00b76b5..3716b98 100644
--- a/js/ccnxProtocol/content/ccnxToolbar.js
+++ b/js/ndnProtocol/content/ndnToolbar.js
@@ -1,12 +1,12 @@
 Components.utils.import("chrome://modules/content/ndn-js.jsm");
 
-function CcnxToolbarGetLatest(event){
-  if (window._content.document.location.protocol != "ccnx:") {
-    alert("The address must start with ccnx");
+function ndnToolbarGetLatest(event){
+  if (window._content.document.location.protocol != "ndn:") {
+    alert("The address must start with ndn");
     return;
   }
 
-  // Parse the same as in ccnxprotocolService newChannel.
+  // Parse the same as in ndnProtocolService newChannel.
   var spec = window._content.document.location.href.trim();
   var preHash = spec.split('#', 1)[0];
   var hash = spec.substr(preHash.length).trim();
@@ -20,14 +20,14 @@
   var name = new Name(nameString);
   var indexOfVersion = getIndexOfVersion(name);
   if (indexOfVersion < 0) {
-    alert("The ccnx address does not have a version");
+    alert("The ndn address does not have a version");
     return;
   }
 
   var nameWithoutVersion = new Name(name.components.slice(0, indexOfVersion));
-  var searchWithChildSelector = (search == "" ? "?" : search + "&") + "ccnx.ChildSelector=1";
+  var searchWithChildSelector = (search == "" ? "?" : search + "&") + "ndn.ChildSelector=1";
     
-  var uri = "ccnx:" + nameWithoutVersion.to_uri() + searchWithChildSelector + hash;
+  var uri = "ndn:" + nameWithoutVersion.to_uri() + searchWithChildSelector + hash;
   window._content.document.location = uri;
 } 
 
diff --git a/js/ndnProtocol/content/toolbar.xul b/js/ndnProtocol/content/toolbar.xul
new file mode 100644
index 0000000..3653378
--- /dev/null
+++ b/js/ndnProtocol/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/ndnToolbar.js" />
+
+<toolbox id="navigator-toolbox">
+  <toolbar id="NdnToolbar" toolbarname="ndnToolbar" >
+      <label value="NDN"/>
+      <toolbarbutton id="mdnToolbarGetLatestButton"
+        label="Get Latest" oncommand="ndnToolbarGetLatest(event)" />
+  </toolbar>
+</toolbox>
+
+</overlay>
diff --git a/js/ccnxProtocol/install.rdf b/js/ndnProtocol/install.rdf
similarity index 89%
rename from js/ccnxProtocol/install.rdf
rename to js/ndnProtocol/install.rdf
index 8d390e6..4bc834d 100644
--- a/js/ccnxProtocol/install.rdf
+++ b/js/ndnProtocol/install.rdf
@@ -3,8 +3,8 @@
   <Description about="urn:mozilla:install-manifest">
     <em:id>{8122e660-1012-11e2-892e-0800200c9a66}</em:id>
     <em:type>2</em:type>
-    <em:name>ccnx Protocol</em:name>
-    <em:version>0.1</em:version>
+    <em:name>ndn protocol</em:name>
+    <em:version>0.2</em:version>
     <em:creator>Jeff Thompson</em:creator>
     <em:targetApplication>
       <Description>
diff --git a/js/ccnxProtocol/modules/ContentChannel.jsm b/js/ndnProtocol/modules/ContentChannel.jsm
similarity index 100%
rename from js/ccnxProtocol/modules/ContentChannel.jsm
rename to js/ndnProtocol/modules/ContentChannel.jsm
diff --git a/js/ccnxProtocol/modules/make-ndn-js.jsm.sh b/js/ndnProtocol/modules/make-ndn-js.jsm.sh
similarity index 100%
rename from js/ccnxProtocol/modules/make-ndn-js.jsm.sh
rename to js/ndnProtocol/modules/make-ndn-js.jsm.sh
diff --git a/js/ccnxProtocol/modules/ndn-js-header.txt b/js/ndnProtocol/modules/ndn-js-header.txt
similarity index 100%
rename from js/ccnxProtocol/modules/ndn-js-header.txt
rename to js/ndnProtocol/modules/ndn-js-header.txt
diff --git a/js/ccnxProtocol/modules/ndn-js.jsm b/js/ndnProtocol/modules/ndn-js.jsm
similarity index 99%
rename from js/ccnxProtocol/modules/ndn-js.jsm
rename to js/ndnProtocol/modules/ndn-js.jsm
index 9d39d12..928467f 100644
--- a/js/ccnxProtocol/modules/ndn-js.jsm
+++ b/js/ndnProtocol/modules/ndn-js.jsm
@@ -96,7 +96,7 @@
  * This class represents the top-level object for communicating with an NDN host.
  */
 
-var LOG = 0;
+var LOG = 3;
 
 /**
  * settings is an associative array with the following defaults:
@@ -575,7 +575,7 @@
         // Make sure the colon came before a '/'.
         var iFirstSlash = name.indexOf('/');
         if (iFirstSlash < 0 || iColon < iFirstSlash)
-            // Omit the leading protocol such as ccnx:
+            // Omit the leading protocol such as ndn:
             name = name.substr(iColon + 1, name.length - iColon - 1).trim();
     }
     
@@ -682,7 +682,7 @@
 	return this.components.push(result);
 };
 
-// Return the escaped name string according to "CCNx URI Scheme".  Does not include "ccnx:".
+// Return the escaped name string according to "CCNx URI Scheme".
 Name.prototype.to_uri = function() {	
 	var result = "";
 	
@@ -1958,7 +1958,6 @@
 
 /**
  * Used by NetworkObject to decode the object from a network stream.
- * @see org.ccnx.ccn.impl.encoding.XMLEncodable
  */
 FaceInstance.prototype.from_ccnb = function(//XMLDecoder 
 	decoder) {
@@ -2030,7 +2029,6 @@
 
 /**
  * Used by NetworkObject to encode the object to a network stream.
- * @see org.ccnx.ccn.impl.encoding.XMLEncodable
  */
 FaceInstance.prototype.to_ccnb = function(//XMLEncoder
 	encoder){
@@ -2143,7 +2141,6 @@
 
 		/**
 		 * Used by NetworkObject to encode the object to a network stream.
-		 * @see org.ccnx.ccn.impl.encoding.XMLEncodable
 		 */
 ForwardingEntry.prototype.to_ccnb =function(
 	//XMLEncoder 
@@ -4814,7 +4811,7 @@
 var KeyManager = function KeyManager(){
 
 	
-//Certificate from CCNx
+//Certificate
 
 this.certificate = 'MIIBmzCCAQQCCQC32FyQa61S7jANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd'+
 
@@ -4837,7 +4834,7 @@
 
 //this.publicKey = 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDhfTCn2CirG4QLF1QtyvYgev0iHghrKmDRbLf1REi6nz8IvNCZ2yHdFip3nmGqie7lVNOkfeIwvHrFkNUkBnw4mLum9dxDYLhF7aSMvZzxJqcjRF8OGVLXMlp1+vVWFE+amK9xhrAnhoW44sCL6ocXG03uWFwYKClbU5XrShd3nwIDAQAB';
 this.publicKey ='30819F300D06092A864886F70D010101050003818D0030818902818100E17D30A7D828AB1B840B17542DCAF6207AFD221E086B2A60D16CB7F54448BA9F3F08BCD099DB21DD162A779E61AA89EEE554D3A47DE230BC7AC590D524067C3898BBA6F5DC4360B845EDA48CBD9CF126A723445F0E1952D7325A75FAF556144F9A98AF7186B0278685B8E2C08BEA87171B4DEE585C1828295B5395EB4A17779F0203010001';
-//Private Key from CCNx
+//Private Key
 
 this.privateKey ='MIICXQIBAAKBgQDhfTCn2CirG4QLF1QtyvYgev0iHghrKmDRbLf1REi6nz8IvNCZ2yHdFip3nmGqie7lVNOkfeIwvHrFkNUkBnw4mLum9dxDYLhF7aSMvZzxJqcjRF8OGVLXMlp1+vVWFE+amK9xhrAnhoW44sCL6ocXG03uWFwYKClbU5XrShd3nwIDAQABAoGAGkv6T6jC3WmhFZYL6CdCWvlc6gysmKrhjarrLTxgavtFY6R5g2ft5BXAsCCVbUkWxkIFSKqxpVNl0gKZCNGEzPDN6mHJOQI/h0rlxNIHAuGfoAbCzALnqmyZivhJAPGijAyKuU9tczsst5+Kpn+bn7ehzHQuj7iwJonS5WbojqECQQD851K8TpW2GrRizNgG4dx6orZxAaon/Jnl8lS7soXhllQty7qG+oDfzznmdMsiznCqEABzHUUKOVGE9RWPN3aRAkEA5D/w9N55d0ibnChFJlc8cUAoaqH+w+U3oQP2Lb6AZHJpLptN4y4b/uf5d4wYU5/i/gC7SSBH3wFhh9bjRLUDLwJAVOx8vN0Kqt7myfKNbCo19jxjVSlA8TKCn1Oznl/BU1I+rC4oUaEW25DjmX6IpAR8kq7S59ThVSCQPjxqY/A08QJBAIRaF2zGPITQk3r/VumemCvLWiRK/yG0noc9dtibqHOWbCtcXtOm/xDWjq+lis2i3ssOvYrvrv0/HcDY+Dv1An0CQQCLJtMsfSg4kvG/FRY5UMhtMuwo8ovYcMXt4Xv/LWaMhndD67b2UGawQCRqr5ghRTABWdDD/HuuMBjrkPsX0861';
 
diff --git a/js/security/KeyManager.js b/js/security/KeyManager.js
index 8b4e2dc..2a95114 100644
--- a/js/security/KeyManager.js
+++ b/js/security/KeyManager.js
@@ -6,7 +6,7 @@
 var KeyManager = function KeyManager(){
 
 	
-//Certificate from CCNx
+//Certificate
 
 this.certificate = 'MIIBmzCCAQQCCQC32FyQa61S7jANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd'+
 
@@ -29,7 +29,7 @@
 
 //this.publicKey = 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDhfTCn2CirG4QLF1QtyvYgev0iHghrKmDRbLf1REi6nz8IvNCZ2yHdFip3nmGqie7lVNOkfeIwvHrFkNUkBnw4mLum9dxDYLhF7aSMvZzxJqcjRF8OGVLXMlp1+vVWFE+amK9xhrAnhoW44sCL6ocXG03uWFwYKClbU5XrShd3nwIDAQAB';
 this.publicKey ='30819F300D06092A864886F70D010101050003818D0030818902818100E17D30A7D828AB1B840B17542DCAF6207AFD221E086B2A60D16CB7F54448BA9F3F08BCD099DB21DD162A779E61AA89EEE554D3A47DE230BC7AC590D524067C3898BBA6F5DC4360B845EDA48CBD9CF126A723445F0E1952D7325A75FAF556144F9A98AF7186B0278685B8E2C08BEA87171B4DEE585C1828295B5395EB4A17779F0203010001';
-//Private Key from CCNx
+//Private Key
 
 this.privateKey ='MIICXQIBAAKBgQDhfTCn2CirG4QLF1QtyvYgev0iHghrKmDRbLf1REi6nz8IvNCZ2yHdFip3nmGqie7lVNOkfeIwvHrFkNUkBnw4mLum9dxDYLhF7aSMvZzxJqcjRF8OGVLXMlp1+vVWFE+amK9xhrAnhoW44sCL6ocXG03uWFwYKClbU5XrShd3nwIDAQABAoGAGkv6T6jC3WmhFZYL6CdCWvlc6gysmKrhjarrLTxgavtFY6R5g2ft5BXAsCCVbUkWxkIFSKqxpVNl0gKZCNGEzPDN6mHJOQI/h0rlxNIHAuGfoAbCzALnqmyZivhJAPGijAyKuU9tczsst5+Kpn+bn7ehzHQuj7iwJonS5WbojqECQQD851K8TpW2GrRizNgG4dx6orZxAaon/Jnl8lS7soXhllQty7qG+oDfzznmdMsiznCqEABzHUUKOVGE9RWPN3aRAkEA5D/w9N55d0ibnChFJlc8cUAoaqH+w+U3oQP2Lb6AZHJpLptN4y4b/uf5d4wYU5/i/gC7SSBH3wFhh9bjRLUDLwJAVOx8vN0Kqt7myfKNbCo19jxjVSlA8TKCn1Oznl/BU1I+rC4oUaEW25DjmX6IpAR8kq7S59ThVSCQPjxqY/A08QJBAIRaF2zGPITQk3r/VumemCvLWiRK/yG0noc9dtibqHOWbCtcXtOm/xDWjq+lis2i3ssOvYrvrv0/HcDY+Dv1An0CQQCLJtMsfSg4kvG/FRY5UMhtMuwo8ovYcMXt4Xv/LWaMhndD67b2UGawQCRqr5ghRTABWdDD/HuuMBjrkPsX0861';
 
diff --git a/js/testing/test-decode-Interest+Forwarding+Entry.html b/js/testing/test-decode-Interest+Forwarding+Entry.html
index 5549b17..fe30aa3 100644
--- a/js/testing/test-decode-Interest+Forwarding+Entry.html
+++ b/js/testing/test-decode-Interest+Forwarding+Entry.html
@@ -402,8 +402,6 @@
 	</form>
 	<button onclick="decode()">Decode</button>
 
-		<!-- p id="result-old-from-ccnx">01d2f2faa563636e7800fa0285e0a01e093968f9740ce7f4361babf5bb05a4e55aaca5e58f73eddeb8e013aa8f00fabd73656c6672656700fa1bf5048202aa03b208854a18988c72aee624da28e2e1acbccb209b8e89429041985521ed68f95a1c546872fba3d854b1377dc249b6d8ec5935e5069256c97a7f6d8a62e86222ccd2cfe5097aed3fe5ede6732ce191a8680d78e39d0c5058a2b7bb0f0687994e9f045de346b66c46498547a08da1f2f0cdfafba3afdfe7107931935ede79040137ba94a90000f20001a203e202851a4860caa4991e829bcdc9429fb711d52440968d23560726606050bf147acffc0002bab504fcb3f03aa40001e201da0a9530819f300d06092a864886f70d010101050003818d00308189028181008ed27580e3d1c4c67672208665133a1ba12d8ebf5cad8e054571926b3ff0782a04c71703384021a6cefb6616b66cbd8a679b761d69d6373a851546e26f7105510b4c23be9a3c7f2e652e100ecc1471855730659f1477ce4e8504ad1fd8f44116baaeae2ff67eec33abba790157a79bf5039e5a528a471d9d67c94e70117ed7490203010001000000019a0585058a04cabe73656c6672656700f2faad726f63636f000003e20285e0a01e093968f9740ce7f4361babf5bb05a4e55aaca5e58f73eddeb8e013aa8f0004fa8e330003d2d63231343734383336343700000000000002d28e310000</p-->
-		
 		<p id="result">01d2f2faa563636e7800fa0285e0a01e093968f9740ce7f4361babf5bb05a4e55aaca5e58f73eddeb8e013aa8f00facd70726566697872656700fa29ad048202aa03b208854ddbf69779cdf4ef74be99474478c8bc3ca0873e0ffa1fa60120aa276db122b83404e595a8a3caeaf09630276658ba4e7beaadb4b91a8cc58e19ac4a42289507ed8d609aa9bef61a5a507f349c83d2944b8c16fecfd90d4a40ddb8687592c0a57517564235b2e359db54f51a37e1ac39e518a2196e3ffda7eb2fb301f3c404dd0000f20001a203e20285ef7c4f5d4743a8b8586ea2e741b7fc39d1dc0dbe1b1930e787cfd1d833ea7a610002bab504fce9e253d70001e2018219fd3082019b30820104020900b7d85c906bad52ee300d06092a864886f70d010105050030123110300e060355040313076178656c636476301e170d3132303432383233343433375a170d3132303532383233343433375a30123110300e060355040313076178656c63647630819f300d06092a864886f70d010101050003818d0030818902818100e17d30a7d828ab1b840b17542dcaf6207afd221e086b2a60d16cb7f54448ba9f3f08bcd099db21dd162a779e61aa89eee554d3a47de230bc7ac590d524067c3898bba6f5dc4360b845eda48cbd9cf126a723445f0e1952d7325a75faf556144f9a98af7186b0278685b8e2c08bea87171b4dee585c1828295b5395eb4a17779f0203010001300d06092a864886f70d010105050003818100cb3ab0357d7cd2ae97ed501e51a3a0e2817d418e47fb17906477af61495a7e8d8789141065b082d001f4b15193d0b43fb661cde20a6498372c6abbd3dcb9f0d12659ef07b3c6dbdf8bdf2f65477eed7adcd457d793b1c27badda7c5ade80ce95b7d8827fe78c8a35f3fb4ba648a081be2cfe84231abab3c2b531746df2e0492b000000019a02d5058a04cabe73656c6672656700f2faa56d656b69000004fa8e330003d2d63231343734383336343700000000000002d28e310000</p>
 
 </body>
diff --git a/js/testing/test-encode-decode-ContentObject.html b/js/testing/test-encode-decode-ContentObject.html
index 8f75ebe..04b1a59 100644
--- a/js/testing/test-encode-decode-ContentObject.html
+++ b/js/testing/test-encode-decode-ContentObject.html
@@ -56,7 +56,7 @@
 		
 		Please Enter a Content Name:<br />
 		
-		<input id="contentname" type="text" name="CONTENTNAME" value="/PARC/abc" /> 
+		<input id="contentname" type="text" name="CONTENTNAME" value="/ndn/abc" /> 
 		
 		<br />Please Enter the Content:<br />
 		
diff --git a/js/testing/test-encode-decode-Interest.html b/js/testing/test-encode-decode-Interest.html
index f95ac16..342e92d 100644
--- a/js/testing/test-encode-decode-Interest.html
+++ b/js/testing/test-encode-decode-Interest.html
@@ -108,7 +108,7 @@
 		
 		Please Enter an Interest:<br />
 		
-		<input id="interest" type="text" name="INTEREST" value="/PARC/abc" /> 
+		<input id="interest" type="text" name="INTEREST" value="/ndn/abc" /> 
 		
 	</form>
 	<button onclick="encode()">Encode</button>
diff --git a/js/testing/test-image-parsing.html b/js/testing/test-image-parsing.html
index 749b6fc..910b09b 100644
--- a/js/testing/test-image-parsing.html
+++ b/js/testing/test-image-parsing.html
@@ -82,7 +82,7 @@
 			3OK+u3ivTSj3zwjtpudY5Xo=
 			-----END CERTIFICATE-----"></input>
 
-		Please Enter a Text to sign:<br /><input id="contentname" type="text" name="CONTENTNAME" value="/PARC/CCNX" /> <br />
+		Please Enter a Text to sign:<br /><input id="contentname" type="text" name="CONTENTNAME" value="/ndn/abc" /> <br />
 	
 	</form>
 	<button onclick="sign()">Encode</button>
diff --git a/js/testing/test-interest-matches-name.html b/js/testing/test-interest-matches-name.html
index 99e7d2a..eaa4282 100644
--- a/js/testing/test-interest-matches-name.html
+++ b/js/testing/test-interest-matches-name.html
@@ -27,10 +27,10 @@
 	<form>
 		
 		Please enter the name of an interest:<br />		
-		<input id="interest" type="text" name="INTEREST" value="/ndn/ucla.edu" /> <br/>
+		<input id="interest" type="text" name="INTEREST" value="//domain.com/ndn/ucla.edu" /> <br/>
 		
 		Please enter a name to check if the interest matches the name:<br />		
-		<input id="nameToCheck" type="text" name="NAME_TO_CHECK" value="/ndn/ucla.edu" /> <br/>
+		<input id="nameToCheck" type="text" name="NAME_TO_CHECK" value="/ndn/./ucla.edu/extra" /> <br/>
 		
 	</form>
 	<button onclick="check()">Check</button>
diff --git a/js/testing/test-sha256.html b/js/testing/test-sha256.html
index 09987c1..f695f08 100644
--- a/js/testing/test-sha256.html
+++ b/js/testing/test-sha256.html
@@ -35,7 +35,7 @@
 		
 
 
-		Please Enter Text to Hash:<br /><input id="contentname" type="text" name="CONTENTNAME" value="/PARC/abc" /> <br />
+		Please Enter Text to Hash:<br /><input id="contentname" type="text" name="CONTENTNAME" value="/ndn/abc" /> <br />
 	
 	</form>
 	<button onclick="hash()">Hash</button>
diff --git a/js/testing/test-signature-string.html b/js/testing/test-signature-string.html
index 58fb451..26a1931 100644
--- a/js/testing/test-signature-string.html
+++ b/js/testing/test-signature-string.html
@@ -82,7 +82,7 @@
 			3OK+u3ivTSj3zwjtpudY5Xo=
 			-----END CERTIFICATE-----"></input>
 
-		Please Enter a Text to sign:<br /><input id="contentname" type="text" name="CONTENTNAME" value="/PARC/CCNX" /> <br />
+		Please Enter a Text to sign:<br /><input id="contentname" type="text" name="CONTENTNAME" value="/ndn/abc" /> <br />
 	
 	</form>
 	<button onclick="sign()">Sign</button>
