diff --git a/js/testing/test-decode-FaceInstance.html b/js/testing/test-decode-FaceInstance.html
index 7d168cc..7818e55 100644
--- a/js/testing/test-decode-FaceInstance.html
+++ b/js/testing/test-decode-FaceInstance.html
@@ -134,7 +134,7 @@
 				output+= "<br />";
 			}
 			
-			/*if(interest.Name!=null && interest.Name.Components!=null){
+			/*if(interest.name!=null && interest.name.Components!=null){
 				output+= "NAME: ";
 				
 				for(var i=0;i<interest.Name.Components.length;i++){
diff --git a/js/testing/test-decode-Interest+Forwarding+Entry.html b/js/testing/test-decode-Interest+Forwarding+Entry.html
index adb7058..0ece80f 100644
--- a/js/testing/test-decode-Interest+Forwarding+Entry.html
+++ b/js/testing/test-decode-Interest+Forwarding+Entry.html
@@ -77,7 +77,6 @@
 
 		
 		function decode(){
-			
 
 			var input = document.getElementById('result').innerHTML;
 
@@ -92,136 +91,125 @@
 			var output ="";
 			
 			
-			if(interest.Name!=null && interest.Name.Components!=null){
+			if(interest.name!=null && interest.name.Components!=null){
 				output+= "NAME: ";
 				
-				for(var i=0;i<interest.Name.Components.length;i++){
-					output+= "/"+ DataUtils.toString(interest.Name.Components[i]);
+				for(var i=0;i<interest.name.Components.length;i++){
+					output+= "/"+ DataUtils.toString(interest.name.Components[i]);
 				}
 				output+= "<br />";
 				output+= "<br />";
 			}
 			
-			if(interest.FaceInstance!=null ){
+			if(interest.faceInstance!=null ){
 				output+= "FaceInstance: ";
 				
-					output+=  interest.FaceInstance;
+					output+=  interest.faceInstance;
 				
 				output+= "<br />";
 				output+= "<br />";
 			}
 			
-			if(interest.Exclude!=null ){
+			if(interest.exclude!=null ){
 				output+= "Exclude: ";
 				
-					output+=  interest.Exclude;
+					output+=  interest.exclude;
 				
 				output+= "<br />";
 				output+= "<br />";
 			}
 			
-			if(interest.ChildSelector!=null ){
+			if(interest.childSelector!=null ){
 				output+= "ChildSelector: ";
 				
-					output+=  interest.ChildSelector;
+					output+=  interest.childSelector;
 				
 				output+= "<br />";
 				output+= "<br />";
 			}
 			
-			if(interest.AnswerOriginKind!=null ){
+			if(interest.answerOriginKind!=null ){
 				output+= "AnswerOriginKind: ";
 				
-					output+=  interest.AnswerOriginKind;
+					output+=  interest.answerOriginKind;
 				
 				output+= "<br />";
 				output+= "<br />";
 			}
 			
-			if(interest.InterestLifetime!=null ){
+			if(interest.interestLifetime!=null ){
 				output+= "InterestLifetime: ";
 				
-					output+=  interest.InterestLifetime;
+					output+=  interest.interestLifetime;
 				
 				output+= "<br />";
 				output+= "<br />";
 			}
 			
-			if(interest.Nonce!=null ){
+			if(interest.nonce!=null ){
 				output+= "Nonce: ";
 				
-					output+=  interest.Nonce;
+					output+=  interest.nonce;
 				
 				output+= "<br />";
 				output+= "<br />";
 			}
 			
 			
-			if(interest.Scope!=null ){
+			if(interest.scope!=null ){
 				output+= "SCOPE: ";
 				
-					output+=  interest.Scope;
+					output+=  interest.scope;
 				
 				output+= "<br />";
 				output+= "<br />";
 			}
 	
-			if(interest.PublisherID!=null ){
-				output+= "PUBLISHER ID: ";
+			if(interest.publisherPublicKeyDigest!=null ){
+				output+= "PUBLISHER PUBLIC KEY DIGEST: ";
 				
-					output+=  interest.PublisherID.PublisherID;
-					
-					output+= "PUBLISHER ID TYPE: ";
-					output+=  interest.PublisherID.PublisherType;
+				output+=  interest.publisherPublicKeyDigest.PublisherPublicKeyDigest;
+                                        
 				output+= "<br />";
 				output+= "<br />";
 			}
 			
-			if(interest.MaxSuffixComponents!=null ){
+			if(interest.maxSuffixComponents!=null ){
 				output+= "MaxSuffixComponents : ";
 				
-				output+=  interest.MaxSuffixComponents;
+				output+=  interest.maxSuffixComponents;
 
 				output+= "<br />";
 				output+= "<br />";
 			}
 			
-			if(interest.MinSuffixComponents!=null ){
+			if(interest.minSuffixComponents!=null ){
 				output+= "MinSuffixComponents : ";
 				
-				output+=  interest.MinSuffixComponents;
+				output+=  interest.minSuffixComponents;
 
 				output+= "<br />";
 				output+= "<br />";
 			}
 			
-			if(interest.MinSuffixComponents!=null ){
-				output+= "MinSuffixComponents : ";
-				
-				output+=  interest.MinSuffixComponents;
-
-				output+= "<br />";
-				output+= "<br />";
-			}
-			
-			if(interest.Name.Components[3] !=null){
+			if(interest.name.Components[3] !=null){
 				
 				
-				var input = DataUtils.toHex(interest.Name.Components[3]) ;
+				var input = DataUtils.toHex(interest.name.Components[3]) ;
 
 				var contentObject = decodeHexContentObject(input);
 				
-				if(contentObject.Content!=null ){
+				if(contentObject.content!=null ){
 					output+= "Content of content Object: ";
 					
-						output+=  DataUtils.toHex(contentObject.Content);
+						output+=  DataUtils.toHex(contentObject.content);
 						
 					output+= "<br />";
 					output+= "<br />";
 				}
 				
 				
-				var content = DataUtils.toHex(contentObject.Content);
+				var content = DataUtils.toHex(contentObject.content);
 				
 				var co = contentObject;
 				
@@ -229,24 +217,24 @@
 				////////////////////////////////////////
 				
 
-				if(co.Name!=null && co.Name.Components!=null){
+				if(co.name!=null && co.name.Components!=null){
 					output+= "NAME: ";
 					
-					for(var i=0;i<co.Name.Components.length;i++){
-						output+= "/"+ DataUtils.toString(co.Name.Components[i]);
+					for(var i=0;i<co.name.Components.length;i++){
+						output+= "/"+ DataUtils.toString(co.name.Components[i]);
 					}
 					output+= "<br />";
 					output+= "<br />";
 				}
 	
-				if(co.Content !=null){
-					output += "CONTENT(ASCII): "+ DataUtils.toString(co.Content);
+				if(co.content !=null){
+					output += "CONTENT(ASCII): "+ DataUtils.toString(co.content);
 					
 					output+= "<br />";
 					output+= "<br />";
 				}
-				if(co.Content !=null){
-					output += "CONTENT(hex): "+ DataUtils.toHex(co.Content);
+				if(co.content !=null){
+					output += "CONTENT(hex): "+ DataUtils.toHex(co.content);
 					
 					output+= "<br />";
 					output+= "<br />";
@@ -472,7 +460,7 @@
 <body >
 	<form>
 		
-		Please Press decode:<br />
+		Please Press Decode:<br />
 		
 
 	</form>
diff --git a/js/testing/test-encode-decode-ContentObject-bis.html b/js/testing/test-encode-decode-ContentObject-bis.html
index 7956af3..f66cae5 100644
--- a/js/testing/test-encode-decode-ContentObject-bis.html
+++ b/js/testing/test-encode-decode-ContentObject-bis.html
@@ -116,24 +116,24 @@
 			else if (co==-2)
 				output+= "CONTENT NAME IS EMPTY"
 			else{
-				if(co.Name!=null && co.Name.Components!=null){
+				if(co.name!=null && co.name.Components!=null){
 					output+= "NAME: ";
 					
-					for(var i=0;i<co.Name.Components.length;i++){
-						output+= "/"+ toString(co.Name.Components[i]);
+					for(var i=0;i<co.name.Components.length;i++){
+						output+= "/"+ toString(co.name.Components[i]);
 					}
 					output+= "<br />";
 					output+= "<br />";
 				}
 	
-				if(co.Content !=null){
-					output += "CONTENT(ASCII): "+ toString(co.Content);
+				if(co.content !=null){
+					output += "CONTENT(ASCII): "+ toString(co.content);
 					
 					output+= "<br />";
 					output+= "<br />";
 				}
-				if(co.Content !=null){
-					output += "CONTENT(hex): "+ toHex(co.Content);
+				if(co.content !=null){
+					output += "CONTENT(hex): "+ toHex(co.content);
 					
 					output+= "<br />";
 					output+= "<br />";
diff --git a/js/testing/test-encode-decode-Interest.html b/js/testing/test-encode-decode-Interest.html
index 04cbae2..dd3e3b4 100644
--- a/js/testing/test-encode-decode-Interest.html
+++ b/js/testing/test-encode-decode-Interest.html
@@ -76,7 +76,7 @@
 		function encode(){
 			var interest = new Interest( new ContentName(document.getElementById('interest').value ) );
 
-			interest.Scope = 1;
+			interest.scope = 1;
 			
 			var output = encodeToHexInterest(interest);
 			
@@ -100,14 +100,14 @@
 			
 			var output ="";
 			
-			if(interest.Name!=null && interest.Name.Components!=null){
+			if(interest.name!=null && interest.name.Components!=null){
 				output+= "NAME: ";
 				
 				
-				output+= interest.Name.getName();
+				output+= interest.name.getName();
 				
-				/*for(var i=0;i<interest.Name.Components.length;i++){
-					output+= "/"+ DataUtils.toString(interest.Name.Components[i]);
+				/*for(var i=0;i<interest.name.Components.length;i++){
+					output+= "/"+ DataUtils.toString(interest.name.Components[i]);
 				}*/
 				
 				output+= "<br />";
@@ -115,48 +115,39 @@
 			}
 	
 			
-			if(interest.Scope!=null ){
+			if(interest.scope!=null ){
 				output+= "SCOPE: ";
 				
-					output+=  interest.Scope;
+					output+=  interest.scope;
 				
 				output+= "<br />";
 				output+= "<br />";
 			}
 	
-			if(interest.PublisherID!=null ){
+			if(interest.publisherID!=null ){
 				output+= "PUBLISHER ID: ";
 				
-					output+=  interest.PublisherID.PublisherID;
+					output+=  interest.publisherID.PublisherID;
 					
 					output+= "PUBLISHER ID TYPE: ";
-					output+=  interest.PublisherID.PublisherType;
+					output+=  interest.publisherID.PublisherType;
 				output+= "<br />";
 				output+= "<br />";
 			}
 			
-			if(interest.MaxSuffixComponents!=null ){
+			if(interest.maxSuffixComponents!=null ){
 				output+= "MaxSuffixComponents : ";
 				
-				output+=  interest.MaxSuffixComponents;
+				output+=  interest.maxSuffixComponents;
 
 				output+= "<br />";
 				output+= "<br />";
 			}
 			
-			if(interest.MinSuffixComponents!=null ){
+			if(interest.minSuffixComponents!=null ){
 				output+= "MinSuffixComponents : ";
 				
-				output+=  interest.MinSuffixComponents;
-
-				output+= "<br />";
-				output+= "<br />";
-			}
-			
-			if(interest.MinSuffixComponents!=null ){
-				output+= "MinSuffixComponents : ";
-				
-				output+=  interest.MinSuffixComponents;
+				output+=  interest.minSuffixComponents;
 
 				output+= "<br />";
 				output+= "<br />";
diff --git a/js/testing/test-get.html b/js/testing/test-get.html
index ad4886c..8053655 100644
--- a/js/testing/test-get.html
+++ b/js/testing/test-get.html
@@ -75,7 +75,7 @@
 
 		function getAction(){
 			var interest = new Interest( new ContentName(document.getElementById('interest').value));
-			interest.Scope = 1;
+			interest.scope = 1;
 			
 			var received = get('127.0.0.1', 9695, encodeToHexInterest(interest));	
 
diff --git a/js/testing/test-interest-matches-name.html b/js/testing/test-interest-matches-name.html
new file mode 100644
index 0000000..111789f
--- /dev/null
+++ b/js/testing/test-interest-matches-name.html
@@ -0,0 +1,104 @@
+<?xml version = "1.0" encoding="utf-8" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+"DTD/xhtml1-strict.dtd">
+<html xmlns = "http://www.w3.org/1999/xhtml">
+
+<head>
+	<title>NDN Interest Matches Name</title>
+	
+	<script type="text/javascript" src="../java_socket_bridge.js"></script>
+	
+	<script type="text/javascript" src="../CCNProtocolDTags.js"></script>
+	
+	<script type="text/javascript" src="../CCNTime.js"></script>
+	
+	<script type="text/javascript" src="../ContentName.js"></script>
+	
+	<script type="text/javascript" src="../ContentObject.js"></script>
+	
+	<script type="text/javascript" src="../DateFormat.js"></script>
+	
+	<script type="text/javascript" src="../Exclude.js"></script>
+
+	<script type="text/javascript" src="../ExcludeAny.js"></script>
+
+	<script type="text/javascript" src="../ExcludeComponent.js"></script>
+
+	<script type="text/javascript" src="../Interest.js"></script>
+	
+	<script type="text/javascript" src="../KeyLocator.js"></script>
+	
+	<script type="text/javascript" src="../KeyName.js"></script>
+
+	<script type="text/javascript" src="../PublisherID.js"></script>
+	
+	<script type="text/javascript" src="../Signature.js"></script>
+	
+	<script type="text/javascript" src="../SignedInfo.js"></script>
+	
+	<script type="text/javascript" src="../PublisherPublicKeyDigest.js"></script>
+	
+	<script type="text/javascript" src="../FaceInstance.js"></script>
+
+	<script type="text/javascript" src="../ForwardingEntry.js"></script>
+	
+	<script type="text/javascript" src="../encoding/BinaryXMLEncoder.js"></script>
+	
+	<script type="text/javascript" src="../encoding/BinaryXMLCodec.js"></script>
+	
+	<script type="text/javascript" src="../encoding/BinaryXMLDecoder.js"></script>
+	
+	<script type="text/javascript" src="../encoding/DataUtils.js"></script>
+	
+	<script type="text/javascript" src="../encoding/EncodingUtils.js"></script>
+	
+	<script language="JavaScript" type="text/javascript" src="../security/KeyManager.js"></script>
+	
+	<script language="JavaScript" type="text/javascript" src="../securityLib/jsbn.js"></script>
+	<script language="JavaScript" type="text/javascript" src="../securityLib/jsbn2.js"></script>
+	<script language="JavaScript" type="text/javascript" src="../securityLib/rsa.js"></script>
+	<script language="JavaScript" type="text/javascript" src="../securityLib/rsa2.js"></script>
+	
+	<script language="JavaScript" type="text/javascript" src="../securityLib/sha1.js"></script>
+	<script language="JavaScript" type="text/javascript" src="../securityLib/sha256.js"></script>
+	<script language="JavaScript" type="text/javascript" src="../securityLib/sha512.js"></script>
+	<script language="JavaScript" type="text/javascript" src="../securityLib/md5.js"></script>
+	<script language="JavaScript" type="text/javascript" src="../securityLib/ripemd160.js"></script>
+	<script language="JavaScript" type="text/javascript" src="../securityLib/base64.js"></script>
+	
+	<script language="JavaScript" type="text/javascript" src="../securityLib/rsapem-1.1.js"></script>
+	<script language="JavaScript" type="text/javascript" src="../securityLib/rsasign-1.2.js"></script>
+	<script language="JavaScript" type="text/javascript" src="../securityLib/asn1hex-1.1.js"></script>
+	<script language="JavaScript" type="text/javascript" src="../securityLib/x509-1.1.js"></script>
+
+	<script type="text/javascript">
+	
+		function check(){
+			var interest = new Interest( new ContentName(document.getElementById('interest').value));
+			interest.scope = 1;
+                        
+			var nameToCheck = new ContentName(document.getElementById('nameToCheck').value);
+			
+			var output = (interest.matches_name(nameToCheck) ? "matches" : "doesn't match");
+			document.getElementById('result').innerHTML = output;
+		}
+
+	</script>
+
+</head>
+<body >
+	<form>
+		
+		Please enter the name of an interest:<br />		
+		<input id="interest" type="text" name="INTEREST" value="/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/>
+		
+	</form>
+	<button onclick="check()">Check</button>
+	
+	<p id="result"></p>
+
+</body>
+</html>
diff --git a/js/testing/test-request-send-hex.html b/js/testing/test-request-send-hex.html
index f1acb20..3ed1a90 100644
--- a/js/testing/test-request-send-hex.html
+++ b/js/testing/test-request-send-hex.html
@@ -130,7 +130,7 @@
 				
 				co = new ContentObject();
 	        
-				co.decode(decoder);
+				co.from_ccnb(decoder);
 
 				if(LOG>2) console.log(co);
 			
