diff --git a/js/test-publish-data.html b/js/publish-data.html
similarity index 96%
rename from js/test-publish-data.html
rename to js/publish-data.html
index 664e30c..fe81c27 100644
--- a/js/test-publish-data.html
+++ b/js/publish-data.html
@@ -159,19 +159,21 @@
 </head>
 <body >
 	<form>
-
-		Please Enter a Content Name:<br />
+	<div>
+		<p>Please Enter a Content Name:</p>
 		
-		<input id="contentname" type="text" name="CONTENTNAME" value="/meki" /> 
+		<input id="contentname" type="text" name="CONTENTNAME" value="/demo/message" /> 
 		
 		Please Enter the Content:<br />
 		
-		<textarea id="content" cols="40" rows="5" name="CONTENT" value="cherkaoui"  >cherkaoui</textarea> 
+		<textarea id="content" cols="40" rows="5" name="CONTENT" value="This works!"  >cherkaoui</textarea> 
 		
 		<br />
-		
+		</div>
 	</form>
-	<button onclick="run()">Publish</button>
+	<div>
+		<button onclick="run()">Publish</button>
+	</div>
 	<div >
 		<applet id="JavaSocketBridge" archive="JavaSocketBridge.jar" code="JavaSocketBridge.class" width="0" height="0">
 		</applet>
diff --git a/js/test-request-data.html b/js/request-data.html
similarity index 100%
rename from js/test-request-data.html
rename to js/request-data.html
diff --git a/js/test-connection.html b/js/testing/test-connection.html
similarity index 100%
rename from js/test-connection.html
rename to js/testing/test-connection.html
diff --git a/js/test-decode-FaceInstance.html b/js/testing/test-decode-FaceInstance.html
similarity index 100%
rename from js/test-decode-FaceInstance.html
rename to js/testing/test-decode-FaceInstance.html
diff --git a/js/test-decode-Interest+Forwarding+Entry.html b/js/testing/test-decode-Interest+Forwarding+Entry.html
similarity index 100%
rename from js/test-decode-Interest+Forwarding+Entry.html
rename to js/testing/test-decode-Interest+Forwarding+Entry.html
diff --git a/js/testing/test-encode-decode-ContentObject-bis.html b/js/testing/test-encode-decode-ContentObject-bis.html
new file mode 100644
index 0000000..a737d3f
--- /dev/null
+++ b/js/testing/test-encode-decode-ContentObject-bis.html
@@ -0,0 +1,271 @@
+<?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 Request Example</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 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 encode(){
+			var contentname = new ContentName( createNameArray(document.getElementById('contentname').value) );
+			
+			var content = document.getElementById('content').value;
+			
+			var signedInfo = new SignedInfo();
+			signedInfo.setFields();
+			//var signatureBits = generateSignatureBits(contentname,content,signedInfo);
+			
+			//witness is null
+			var signature = new Signature();
+			
+			
+			var co = new ContentObject(contentname,signedInfo,content,signature); 
+			
+			co.sign();
+			
+			
+			var output = encodeToHexContentObject(co);
+			
+			document.getElementById('result').innerHTML = output;
+
+		}
+		
+		function decode(){
+			
+			
+			
+			var input = document.getElementById('result').innerHTML;
+
+			
+			var co = decodeHexContentObject(input);
+			
+			if(LOG>3)console.log('CONTENT OBJECT DECODED');
+			if(LOG>3)console.log(co);
+
+			///////////////////////////////////////
+			
+			var output ="";
+			
+			if(co==-1)
+				output+= "NO CONTENT FOUND"
+			else if (co==-2)
+				output+= "CONTENT NAME IS EMPTY"
+			else{
+				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]);
+					}
+					output+= "<br />";
+					output+= "<br />";
+				}
+	
+				if(co.Content !=null){
+					output += "CONTENT(ASCII): "+ toString(co.Content);
+					
+					output+= "<br />";
+					output+= "<br />";
+				}
+				if(co.Content !=null){
+					output += "CONTENT(hex): "+ toHex(co.Content);
+					
+					output+= "<br />";
+					output+= "<br />";
+				}
+				if(co.Signature !=null && co.Signature.Signature!=null){
+					
+					output += "SIGNATURE(hex): "+ toHex(co.Signature.Signature);
+					
+					output+= "<br />";
+					output+= "<br />";
+				}
+				if(co.SignedInfo !=null && co.SignedInfo.Publisher!=null && co.SignedInfo.Publisher.PublisherPublicKeyDigest!=null){
+					
+					output += "Publisher Public Key Digest(hex): "+ toHex(co.SignedInfo.Publisher.PublisherPublicKeyDigest);
+					
+					output+= "<br />";
+					output+= "<br />";
+				}
+				if(co.SignedInfo !=null && co.SignedInfo.Timestamp!=null){
+					
+					output += "TimeStamp(hex): "+ co.SignedInfo.Timestamp.date;
+					
+					output+= "<br />";
+					output+= "<br />";
+				}
+				if(co.SignedInfo!=null && co.SignedInfo.Locator!=null && co.SignedInfo.Locator.PublicKey!=null){
+					
+					var publickey = rstr2b64(toString(co.SignedInfo.Locator.PublicKey));
+					var publickeyHex = toHex(co.SignedInfo.Locator.PublicKey).toLowerCase();
+					var publickeyString = toString(co.SignedInfo.Locator.PublicKey);
+					
+					var signature = toHex(co.Signature.Signature).toLowerCase();
+					
+					
+					var input = toString(co.rawSignatureData);
+					 
+					
+					output += "DER Certificate: "+publickey ;
+					
+					output+= "<br />";
+					output+= "<br />";
+					
+					
+					
+					if(LOG>2) console.log(" ContentName + SignedInfo + Content = "+input);
+					if(LOG>2) console.log(" PublicKey = "+publickey );
+					if(LOG>2) console.log(" PublicKeyHex = "+publickeyHex );
+					if(LOG>2) console.log(" PublicKeyString = "+publickeyString );
+					
+					if(LOG>2) console.log(" Signature "+signature );
+					if(LOG>2) console.log(" Signature NOW IS" );
+					if(LOG>2) console.log(co.Signature.Signature);
+					
+					
+					var x509 = new X509();
+					
+					x509.readCertPEM(publickey);
+					
+					
+					//x509.readCertPEMWithoutRSAInit(publickey);
+
+					var result = x509.subjectPublicKeyRSA.verifyString(input, signature);
+					console.log('result is '+result);
+					/*var rsakey = new RSAKey();
+					
+					var kp = publickeyHex.slice(56,314);
+					
+					output += "PUBLISHER KEY(hex): "+kp ;
+					
+					output+= "<br />";
+					output+= "<br />";
+					
+					console.log('kp is '+kp);
+					
+					var exp = publickeyHex.slice(318,324);
+					
+					console.log('kp size is '+kp.length );
+					output += "exponent: "+exp ;
+					
+					output+= "<br />";
+					output+= "<br />";
+					
+					console.log('exp is '+exp);
+					
+					
+					rsakey.setPublic(kp,exp);
+
+				    var result = rsakey.verifyString(input, signature);*/
+					
+					if(result)
+						output += 'SIGNATURE VALID';
+					else
+						output += 'SIGNATURE INVALID';
+
+						
+					
+					
+					//output += "VALID: "+ toHex(co.SignedInfo.Locator.PublicKey);
+					
+					output+= "<br />";
+					output+= "<br />";
+					
+					
+					if(LOG>4) console.log('str'[1]);
+				}
+			}
+			
+			document.getElementById('result').innerHTML = output;
+			
+		}
+
+	</script>
+
+</head>
+<body >
+	<form>
+		
+		Please Enter a Content Name:<br />
+		
+		<input id="contentname" type="text" name="CONTENTNAME" value="/PARC/abc" /> 
+		
+		Please Enter the Content:<br />
+		
+		<textarea id="content" cols="40" rows="5" name="CONTENT" value="SUCCESS"  >SUCCESS!</textarea> 
+		
+	</form>
+	<button onclick="encode()">Encode</button>
+	<button onclick="decode()">Decode</button>
+	
+	
+
+		<p id="result"></p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/js/test-encode-decode-ContentObject.html b/js/testing/test-encode-decode-ContentObject.html
similarity index 100%
rename from js/test-encode-decode-ContentObject.html
rename to js/testing/test-encode-decode-ContentObject.html
diff --git a/js/test-encode-decode-Interest.html b/js/testing/test-encode-decode-Interest.html
similarity index 100%
rename from js/test-encode-decode-Interest.html
rename to js/testing/test-encode-decode-Interest.html
diff --git a/js/test-image-parsing.html b/js/testing/test-image-parsing.html
similarity index 100%
rename from js/test-image-parsing.html
rename to js/testing/test-image-parsing.html
diff --git a/js/test-request-send-hex.html b/js/testing/test-request-send-hex.html
similarity index 100%
rename from js/test-request-send-hex.html
rename to js/testing/test-request-send-hex.html
diff --git a/js/test-sha256.html b/js/testing/test-sha256.html
similarity index 100%
rename from js/test-sha256.html
rename to js/testing/test-sha256.html
diff --git a/js/test-signature-binary.html b/js/testing/test-signature-binary.html
similarity index 100%
rename from js/test-signature-binary.html
rename to js/testing/test-signature-binary.html
diff --git a/js/test-signature-string.html b/js/testing/test-signature-string.html
similarity index 100%
rename from js/test-signature-string.html
rename to js/testing/test-signature-string.html
