diff --git a/js/testing/test-encode-decode-ContentObject.html b/js/testing/test-encode-decode-ContentObject.html
index 52fe138..6818a86 100644
--- a/js/testing/test-encode-decode-ContentObject.html
+++ b/js/testing/test-encode-decode-ContentObject.html
@@ -97,9 +97,6 @@
 		}
 		
 		function decode(){
-			
-			
-			
 			var input = document.getElementById('result').innerHTML;
 
 			input = input.toUpperCase();
@@ -108,283 +105,8 @@
 			
 			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+= "/"+ DataUtils.toString(co.Name.Components[i]);
-					}
-					output+= "<br />";
-					output+= "<br />";
-				}
-	
-				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);
-					
-					output+= "<br />";
-					output+= "<br />";
-				}
-				if(co.Signature !=null && co.Signature.Signature!=null){
-					
-					output += "SIGNATURE(hex): "+ DataUtils.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): "+ DataUtils.toHex(co.SignedInfo.Publisher.PublisherPublicKeyDigest);
-					
-					output+= "<br />";
-					output+= "<br />";
-				}
-				if(co.SignedInfo !=null && co.SignedInfo.Timestamp!=null){
-					var d = new Date();
-					d.setTime( co.SignedInfo.Timestamp.msec );
-					
-					var bytes = [217, 185, 12, 225, 217, 185, 12, 225];
-					
-					output += "TimeStamp: "+d;
-					output+= "<br />";
-					output += "TimeStamp(number): "+ co.SignedInfo.Timestamp.msec;
-					
-					
-					output+= "<br />";
-				}
-				if(co.SignedInfo!=null && co.SignedInfo.Locator!=null && co.SignedInfo.Locator.Certificate!=null){
-					
-					
-					var tmp = DataUtils.toString(co.SignedInfo.Locator.Certificate);
-					
-					
-					var publickey = rstr2b64(tmp);
-					
-					
-					
-					var publickeyHex = DataUtils.toHex(co.SignedInfo.Locator.Certificate).toLowerCase();
-					
-					var publickeyString = DataUtils.toString(co.SignedInfo.Locator.Certificate);
-					
-					var signature = DataUtils.toHex(co.Signature.Signature).toLowerCase();
-					
-					
-					var input = DataUtils.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("HEX OF ContentName + SignedInfo + Content = ");
-					if(LOG>2) console.log(DataUtils.stringtoBase64(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 is");
-					if(LOG>2) console.log( 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.verifyByteArray(co.rawSignatureData, signature);
-					if(LOG>2) console.log('result is '+result);
-
-					
-					var n = x509.subjectPublicKeyRSA.n;
-					
-					var e =  x509.subjectPublicKeyRSA.e;
-					
-					if(LOG>2) console.log('PUBLIC KEY n after is ');
-					if(LOG>2) console.log(n);
-
-					if(LOG>2) console.log('EXPONENT e after is ');
-					if(LOG>2) console.log(e);
-					
-					/*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]);
-				}
-				if(co.SignedInfo!=null && co.SignedInfo.Locator!=null && co.SignedInfo.Locator.PublicKey!=null){
-					
-
-					var publickey = rstr2b64(DataUtils.toString(co.SignedInfo.Locator.PublicKey));
-					var publickeyHex = DataUtils.toHex(co.SignedInfo.Locator.PublicKey).toLowerCase();
-					var publickeyString = DataUtils.toString(co.SignedInfo.Locator.PublicKey);
-					
-					var signature = DataUtils.toHex(co.Signature.Signature).toLowerCase();
-					
-					
-					var input = DataUtils.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 kp = publickeyHex.slice(56,314);
-					
-					output += "PUBLISHER KEY(hex): "+kp ;
-					
-					output+= "<br />";
-					output+= "<br />";
-					
-					console.log('PUBLIC KEY IN HEX is ');
-					console.log(kp);
-
-					var exp = publickeyHex.slice(318,324);
-					
-					console.log('kp size is '+kp.length );
-					output += "exponent: "+exp ;
-					
-					output+= "<br />";
-					output+= "<br />";
-					
-					console.log('EXPONENT is ');
-					console.log(exp);
-
-					
-					
-					/*var c1 = hex_sha256(input);
-					var c2 = signature;
-					
-					if(LOG>4)console.log('input is ');
-					if(LOG>4)console.log(input);
-					if(LOG>4)console.log('C1 is ');
-					if(LOG>4)console.log(c1);
-					if(LOG>4)console.log('C2 is ');
-					if(LOG>4)console.log(c2);
-					var result = c1 == c2;*/
-					
-					var rsakey = new RSAKey();
-					
-					rsakey.setPublic(kp,exp);
-					
-					var result = rsakey.verifyByteArray(co.rawSignatureData,signature);
-				   // var result = rsakey.verifyString(input, signature);
-					
-				    
-				    
-				    console.log('PUBLIC KEY n after is ');
-					console.log(rsakey.n);
-
-					console.log('EXPONENT e after is ');
-					console.log(rsakey.e);
-					
-					
-					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;
-			
+			document.getElementById('result').innerHTML = contentObjectToHtml(co);
 		}
 
 	</script>
@@ -410,4 +132,4 @@
 
 
 </body>
-</html>
\ No newline at end of file
+</html>
