diff --git a/js/ccnxProtocol/components/ccnxProtocolService.js b/js/ccnxProtocol/components/ccnxProtocolService.js
index d3eccb8..2bf369b 100644
--- a/js/ccnxProtocol/components/ccnxProtocolService.js
+++ b/js/ccnxProtocol/components/ccnxProtocolService.js
@@ -1,6 +1,7 @@
 /*
  * @author: ucla-cs
- * This is the ccnx protocol handler.
+ * See COPYING for copyright and distribution information.
+ * This is the ccnx protocol handler for NDN.
  * Protocol handling code derived from http://mike.kaply.com/2011/01/18/writing-a-firefox-protocol-handler/
  */
 
diff --git a/js/ccnxProtocol/modules/ContentChannel.jsm b/js/ccnxProtocol/modules/ContentChannel.jsm
index 2dfb1ed..73a9606 100644
--- a/js/ccnxProtocol/modules/ContentChannel.jsm
+++ b/js/ccnxProtocol/modules/ContentChannel.jsm
@@ -1,3 +1,8 @@
+/*
+ * @author: ucla-cs
+ * See COPYING for copyright and distribution information.
+ */
+
 var EXPORTED_SYMBOLS = ["ContentChannel"];
 
 const Cc = Components.classes;
diff --git a/js/ccnxProtocol/modules/ndn-js-header.txt b/js/ccnxProtocol/modules/ndn-js-header.txt
index cc703e8..63c037c 100644
--- a/js/ccnxProtocol/modules/ndn-js-header.txt
+++ b/js/ccnxProtocol/modules/ndn-js-header.txt
@@ -1,5 +1,8 @@
-/** This file is created by running make-ndn-js.jsm.sh in this directory.
-    It concatenates ndn-js-header.txt with all the ndn-js source files.
+/* This file is created by running make-ndn-js.jsm.sh in this directory.
+ * It concatenates ndn-js-header.txt with all the ndn-js source files to
+ *   make ndn-js.jsm .
+ * author: ucla-cs
+ * See COPYING for copyright and distribution information.
  */
 
 var EXPORTED_SYMBOLS = ["NDN", "DataUtils", "readAllFromSocket"];
diff --git a/js/ccnxProtocol/modules/ndn-js.jsm b/js/ccnxProtocol/modules/ndn-js.jsm
index 32b95f2..eb1ba3a 100644
--- a/js/ccnxProtocol/modules/ndn-js.jsm
+++ b/js/ccnxProtocol/modules/ndn-js.jsm
@@ -1,5 +1,8 @@
-/** This file is created by running make-ndn-js.jsm.sh in this directory.
-    It concatenates ndn-js-header.txt with all the ndn-js source files.
+/* This file is created by running make-ndn-js.jsm.sh in this directory.
+ * It concatenates ndn-js-header.txt with all the ndn-js source files to
+ *   make ndn-js.jsm .
+ * author: ucla-cs
+ * See COPYING for copyright and distribution information.
  */
 
 var EXPORTED_SYMBOLS = ["NDN", "DataUtils", "readAllFromSocket"];
@@ -22,7 +25,11 @@
     }
 };
 
-
+/*
+ * @author: ucla-cs
+ * See COPYING for copyright and distribution information.
+ * This class represents the top-level object for communicating with an NDN host.
+ */
 
 /**
  * host is default '127.0.0.1'.
@@ -179,8 +186,11 @@
 	
 
 }
-/* Implement getAsync and putAsync used by NDN using nsISocketTransportService.
-   This is used inside Firefox XPCOM modules.
+/* 
+ * @author: ucla-cs
+ * See COPYING for copyright and distribution information.
+ * Implement getAsync and putAsync used by NDN using nsISocketTransportService.
+ * This is used inside Firefox XPCOM modules.
  */
 
 // Assume already imported the following:
@@ -301,7 +311,8 @@
 
 /*
  * @author: ucla-cs
- * THis class contains all CCNx tags
+ * See COPYING for copyright and distribution information.
+ * This class contains all CCNx tags
  */
 
 
@@ -457,6 +468,7 @@
 
 /*
  * @author: ucla-cs
+ * See COPYING for copyright and distribution information.
  * This class represents CCNTime Objects
  */
 
@@ -560,6 +572,7 @@
 
 /*
  * @author: ucla-cs
+ * See COPYING for copyright and distribution information.
  * This class represents a Name
  */
  
@@ -670,6 +683,7 @@
 
 /*
  * @author: ucla-cs
+ * See COPYING for copyright and distribution information.
  * This class represents ContentObject Objects
  */
 var ContentObject = function ContentObject(_name,_signedInfo,_content,_signature){
@@ -1244,6 +1258,7 @@
 
  /*
  * @author: ucla-cs
+ * See COPYING for copyright and distribution information.
  * This class represents Interest Objects
  */
 
@@ -1473,6 +1488,7 @@
 
 /*
  * @author: ucla-cs
+ * See COPYING for copyright and distribution information.
  * This class represents Key Objects
  */
 
@@ -1668,6 +1684,7 @@
 
 /*
  * @author: ucla-cs
+ * See COPYING for copyright and distribution information.
  * This class represents Publisher and PublisherType Objects
  */
 
@@ -1764,6 +1781,7 @@
 
 /*
  * @author: ucla-cs
+ * See COPYING for copyright and distribution information.
  * This class represents PublisherPublicKeyDigest Objects
  */
 var PublisherPublicKeyDigest = function PublisherPublicKeyDigest(_pkd){ 
@@ -1816,6 +1834,7 @@
 
 /*
  * @author: ucla-cs
+ * See COPYING for copyright and distribution information.
  * This class represents Face Instances
  */
 
@@ -1977,6 +1996,7 @@
 
 /*
  * @author: ucla-cs
+ * See COPYING for copyright and distribution information.
  * This class represents Forwarding Entries
  */
 
@@ -2080,6 +2100,7 @@
  * This class is used to encode and decode binary elements ( blog, type/value pairs)
  * 
  * @author: ucla-cs
+ * See COPYING for copyright and distribution information.
  */
 
 var XML_EXT = 0x00; 
@@ -2523,6 +2544,7 @@
  * This class is used to encode and decode binary elements ( blog, type/value pairs)
  * 
  * @author: ucla-cs
+ * See COPYING for copyright and distribution information.
  */
 var XML_EXT = 0x00; 
 	
@@ -2794,6 +2816,7 @@
  * This class is used to encode and decode binary elements ( blog, type/value pairs)
  * 
  * @author: ucla-cs
+ * See COPYING for copyright and distribution information.
  */
 
 var XML_EXT = 0x00; 
@@ -3579,10 +3602,10 @@
 		return strElementText;
 };
 
-
 /*
  * This class contains utilities to help parse the data
  * author: ucla-cs
+ * See COPYING for copyright and distribution information.
  */
  
 var DataUtils = function DataUtils(){
@@ -3993,9 +4016,11 @@
 
     return true;
 }
-
-
-
+/*
+ * This file contains utilities to help encode and decode NDN objects.
+ * author: ucla-cs
+ * See COPYING for copyright and distribution information.
+ */
 
 function encodeToHexInterest(interest){
 	
@@ -4347,7 +4372,10 @@
     return output;
 }
 
-
+/*
+ * @author: ucla-cs
+ * See COPYING for copyright and distribution information.
+ */
 
 var KeyManager = function KeyManager(){
 
