diff --git a/js/test-encode-decode-Interest.html b/js/test-encode-decode-Interest.html
index 37b9f23..8fdffe0 100644
--- a/js/test-encode-decode-Interest.html
+++ b/js/test-encode-decode-Interest.html
@@ -4,7 +4,7 @@
 <html xmlns = "http://www.w3.org/1999/xhtml">
 
 <head>
-	<title>NDN Request Example</title>
+	<title>NDN Encocde/Decode Interest</title>
 	
 	<script type="text/javascript" src="java_socket_bridge.js"></script>
 	
@@ -50,6 +50,8 @@
 	
 	<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>
@@ -74,6 +76,8 @@
 		function encode(){
 			var interest = new Interest( new ContentName(document.getElementById('interest').value ) );
 
+			interest.Scope = 1;
+			
 			var output = encodeToHexInterest(interest);
 			
 			document.getElementById('result').innerHTML = output;
@@ -99,13 +103,65 @@
 			if(interest.Name!=null && interest.Name.Components!=null){
 				output+= "NAME: ";
 				
-				for(var i=0;i<interest.Name.Components.length;i++){
-					output+= "/"+ toString(interest.Name.Components[i]);
-				}
+				
+				output+= interest.Name.getName();
+				
+				/*for(var i=0;i<interest.Name.Components.length;i++){
+					output+= "/"+ DataUtils.toString(interest.Name.Components[i]);
+				}*/
+				
 				output+= "<br />";
 				output+= "<br />";
 			}
 	
+			
+			if(interest.Scope!=null ){
+				output+= "SCOPE: ";
+				
+					output+=  interest.Scope;
+				
+				output+= "<br />";
+				output+= "<br />";
+			}
+	
+			if(interest.PublisherID!=null ){
+				output+= "PUBLISHER ID: ";
+				
+					output+=  interest.PublisherID.PublisherID;
+					
+					output+= "PUBLISHER ID TYPE: ";
+					output+=  interest.PublisherID.PublisherType;
+				output+= "<br />";
+				output+= "<br />";
+			}
+			
+			if(interest.MaxSuffixComponents!=null ){
+				output+= "MaxSuffixComponents : ";
+				
+				output+=  interest.MaxSuffixComponents;
+
+				output+= "<br />";
+				output+= "<br />";
+			}
+			
+			if(interest.MinSuffixComponents!=null ){
+				output+= "MinSuffixComponents : ";
+				
+				output+=  interest.MinSuffixComponents;
+
+				output+= "<br />";
+				output+= "<br />";
+			}
+			
+			if(interest.MinSuffixComponents!=null ){
+				output+= "MinSuffixComponents : ";
+				
+				output+=  interest.MinSuffixComponents;
+
+				output+= "<br />";
+				output+= "<br />";
+			}
+			
 			document.getElementById('result').innerHTML = output;
 			
 		}
@@ -124,9 +180,11 @@
 	<button onclick="encode()">Encode</button>
 	<button onclick="decode()">Decode</button>
 	
+			<p id="result">01D2F2FAA574657374000000</p>
+	
 	
 
-		<p id="result"></p>
+		<!--  p id="result">01d2f2fafdc12e4d2e532e6c6f63616c686f737400fabdc12e4d2e53525600faa563636e6400fa9d4b4559000002d28e310000</p-->
 
 </body>
 </html>
\ No newline at end of file
