diff --git a/js/image-loader.html b/js/image-loader.html
new file mode 100644
index 0000000..1cc66c3
--- /dev/null
+++ b/js/image-loader.html
@@ -0,0 +1,283 @@
+<?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 </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 type="text/javascript" src="lwNDN.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 run(){
+
+
+			var contentName = document.getElementById('contentname').value;
+		
+			///////////////////////////////////////
+			//createRoute('131.179.141.15', 9695);
+		    //createRoute('borges.metwi.ucla.edu', 9695);
+		    ///  /ndn/ucla.edu/apps/hydra/mainvideo
+		    ///////////////////////////////////////
+		
+			var connector = new lwNDN('127.0.0.1', 9695);
+		    //var connector = new lwNDN('borges.metwi.ucla.edu', 9695);
+		    
+			var co = connector.get( contentName );
+			
+			///////////////////////////////////////
+			//PRINT OUTPUT
+			///////////////////////////////////////
+			
+			var output ="";
+			
+			if(co==null)
+				output+= "NO CONTENT FOUND"
+			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){
+					
+					output += "TimeStamp: "+ co.SignedInfo.Timestamp.getJavascriptDate();
+					
+					output+= "<br />";
+					output+= "<br />";
+					
+					output += "TimeStamp (MILLISECONDS): "+ co.SignedInfo.Timestamp.msec;
+					
+					output+= "<br />";
+					output+= "<br />";
+				}
+				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 />";
+					
+					document.getElementById('image').src += DataUtils.toString(co.Content);
+					//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" /> <br />
+	</form>
+	<button onclick="run()">Request Data!</button>
+	<div >
+		<applet id="JavaSocketBridge" archive="JavaSocketBridge.jar" code="JavaSocketBridge.class" width="0" height="0">
+		</applet>
+	</div>
+
+		<p id="result"></p>
+		<div>
+			<img id="image" src="data:image/png;base64," alt="Red dot" />
+		</div>
+
+</body>
+</html>
\ No newline at end of file
