diff --git a/js/tools/build/ndn-js-uncomp.js b/js/tools/build/ndn-js-uncomp.js
index 41041a6..c2f610c 100644
--- a/js/tools/build/ndn-js-uncomp.js
+++ b/js/tools/build/ndn-js-uncomp.js
@@ -134,7 +134,7 @@
 		interest.interestLifetime = template.interestLifetime;
     }
     else
-        interest.interestLifetime = 4200;   // default interest timeout value
+        interest.interestLifetime = 4.0;   // default interest timeout value in seconds.
     
     this.transport.expressInterest(this, interest, closure);
 };
@@ -146,8 +146,6 @@
 /** 
  * @author: Wentao Shang
  * See COPYING for copyright and distribution information.
- * Implement getAsync and putAsync used by NDN using nsISocketTransportService.
- * This is used inside Firefox XPCOM modules.
  */
 
 var WebSocketTransport = function WebSocketTransport() {    
@@ -272,7 +270,7 @@
 						//console.log(pitEntry.closure.timerID);
 						
 						// Remove PIT entry from PITTable
-						index = PITTable.indexOf(pitEntry);
+						var index = PITTable.indexOf(pitEntry);
 						PITTable.splice(index, 1);
 						
 						// Raise callback
@@ -301,16 +299,11 @@
 
 		// Fetch ccndid now
 		var interest = new Interest(new Name(ccndIdFetcher));
-		interest.InterestLifetime = 4200;
-		//var hex = encodeToHexInterest(interest);
-		var hex = encodeToBinaryInterest(interest);
+		interest.interestLifetime = 4.0; // seconds
+		var subarray = encodeToBinaryInterest(interest);
 		
-		/*var bytes = new Uint8Array(hex.length / 2);
-		for (var i = 0; i < hex.length; i = i + 2) {
-	    	bytes[i / 2] = '0x' + hex.substr(i, 2);
-		}*/
-		var bytes = new Uint8Array(hex.length);
-		bytes.set(hex);
+		var bytes = new Uint8Array(subarray.length);
+		bytes.set(subarray);
 		
 		self.ws.send(bytes.buffer);
 	}
@@ -369,13 +362,13 @@
 			if (LOG > 3) console.log("Interest time out.");
 			
 			// Remove PIT entry from PITTable
-			index = PITTable.indexOf(pitEntry);
+			var index = PITTable.indexOf(pitEntry);
 			//console.log(PITTable);
 			PITTable.splice(index, 1);
 			//console.log(PITTable);
 			// Raise closure callback
 			closure.upcall(Closure.UPCALL_INTEREST_TIMED_OUT, new UpcallInfo(ndn, interest, 0, null));
-		}, interest.interestLifetime);
+		}, interest.interestLifetime * 1000);  // convert interestLifetime from seconds to ms.
 		//console.log(closure.timerID);
 	}
 	else
@@ -422,7 +415,6 @@
 
 		var interest = new Interest(interestName);
 		interest.scope = 1;
-		//var hex = encodeToHexInterest(int);
 		var binaryInterest = encodeToBinaryInterest(interest);
 		// If we directly use binaryInterest.buffer to feed ws.send(), 
 		// WebSocket will end up sending a packet with 10000 bytes of data.
