diff --git a/js/ccnxProtocol/modules/ndn-js.jsm b/js/ccnxProtocol/modules/ndn-js.jsm
index e15a290..6e1c77a 100644
--- a/js/ccnxProtocol/modules/ndn-js.jsm
+++ b/js/ccnxProtocol/modules/ndn-js.jsm
@@ -90,7 +90,6 @@
 	ret += "\nContentObject: " + this.contentObject;
 	return ret;
 }
-
 /*
  * @author: Meki Cherkaoui, Jeff Thompson, Wentao Shang
  * See COPYING for copyright and distribution information.
@@ -161,7 +160,6 @@
 NDN.prototype.registerPrefix = function(name, closure, flag) {
     return this.transport.registerPrefix(this, name, closure, flag);
 }
-
 /* 
  * @author: Jeff Thompson
  * See COPYING for copyright and distribution information.
@@ -273,7 +271,6 @@
     pump.asyncRead(dataListener, null);
 }
 
-
 /*
  * @author: Meki Cheraoui
  * See COPYING for copyright and distribution information.
@@ -430,7 +427,6 @@
 //TESTING
 //console.log(exports.CCNProtocolDTagsStrings[17]);
 
-
 /*
  * @author: Meki Cheraoui
  * See COPYING for copyright and distribution information.
@@ -534,7 +530,6 @@
 	return out;
 }*/
 	
-
 /*
  * @author: Meki Cheraoui, Jeff Thompson
  * See COPYING for copyright and distribution information.
@@ -667,18 +662,21 @@
  * Return the converted value.
  */
 Name.prototype.add = function(component){
-    var result = null;
+    var result;
     if(typeof component == 'string')
         result = DataUtils.stringToUtf8Array(component);
-	else if(typeof component == 'object' && component instanceof Array)
-        result = new Uint8Array(component);
 	else if(typeof component == 'object' && component instanceof Uint8Array)
         result = new Uint8Array(component);
 	else if(typeof component == 'object' && component instanceof ArrayBuffer)
         // Make a copy.
         result = new Uint8Array(component.slice(0, component.byteLength));
+	else if(typeof component == 'object')
+        // Assume component is a byte array.  We can't check instanceof Array because
+        //   this doesn't work in JavaScript if the array comes from a different module.
+        result = new Uint8Array(component);
 	else 
-		if(LOG>4)console.log('NAME COMPONENT INVALID');
+		throw new Error("Cannot add Name element at index " + this.components.length + 
+            ": Invalid type");
     
 	return this.components.push(result);
 };
@@ -742,7 +740,6 @@
     }
     return result;
 };
-
 /*
  * @author: Meki Cheraoui
  * See COPYING for copyright and distribution information.
@@ -1204,7 +1201,6 @@
 			return false;
 		return true;
 };
-
 /*
  * Date Format 1.2.3
  * (c) 2007-2009 Steven Levithan <stevenlevithan.com>
@@ -1330,7 +1326,6 @@
 Date.prototype.format = function (mask, utc) {
 	return dateFormat(this, mask, utc);
 };
-
  /*
  * @author: Meki Cheraoui
  * See COPYING for copyright and distribution information.
@@ -1351,20 +1346,20 @@
 	this.scope = _scope;
 	this.interestLifetime = _interestLifetime;  // number of seconds
 	this.nonce = _nonce;	
-
-	this.RECURSIVE_POSTFIX = "*";
-
-	this.CHILD_SELECTOR_LEFT = 0;
-	this.CHILD_SELECTOR_RIGHT = 1;
-	this.ANSWER_CONTENT_STORE = 1;
-	this.ANSWER_GENERATED = 2;
-	this.ANSWER_STALE = 4;		// Stale answer OK
-	this.MARK_STALE = 16;		// Must have scope 0.  Michael calls this a "hack"
-
-	this.DEFAULT_ANSWER_ORIGIN_KIND = this.ANSWER_CONTENT_STORE | this.ANSWER_GENERATED;
-
 };
 
+Interest.RECURSIVE_POSTFIX = "*";
+
+Interest.CHILD_SELECTOR_LEFT = 0;
+Interest.CHILD_SELECTOR_RIGHT = 1;
+Interest.ANSWER_CONTENT_STORE = 1;
+Interest.ANSWER_GENERATED = 2;
+Interest.ANSWER_STALE = 4;		// Stale answer OK
+Interest.MARK_STALE = 16;		// Must have scope 0.  Michael calls this a "hack"
+
+Interest.DEFAULT_ANSWER_ORIGIN_KIND = Interest.ANSWER_CONTENT_STORE | Interest.ANSWER_GENERATED;
+
+
 Interest.prototype.from_ccnb = function(/*XMLDecoder*/ decoder) {
 
 		decoder.readStartElement(CCNProtocolDTags.Interest);
@@ -1555,7 +1550,6 @@
 };
 
 ExcludeComponent.prototype.getElementLabel = function() { return CCNProtocolDTags.Component; };
-
 /*
  * @author: Meki Cheraoui
  * See COPYING for copyright and distribution information.
@@ -1751,7 +1745,6 @@
 		// null signedInfo ok
 		return (null != this.contentName);
 };
-
 /*
  * @author: Meki Cheraoui
  * See COPYING for copyright and distribution information.
@@ -1848,7 +1841,6 @@
 
 
 
-
 /*
  * @author: Meki Cheraoui
  * See COPYING for copyright and distribution information.
@@ -1900,7 +1892,6 @@
 PublisherPublicKeyDigest.prototype.validate =function() {
 		return (null != this.publisherPublicKeyDigest);
 };
-
 /*
  * @author: Meki Cheraoui
  * See COPYING for copyright and distribution information.
@@ -2062,7 +2053,6 @@
 
 FaceInstance.prototype.getElementLabel= function(){return CCNProtocolDTags.FaceInstance;};
 
-
 /*
  * @author: Meki Cheraoui
  * See COPYING for copyright and distribution information.
@@ -2164,7 +2154,6 @@
 		};
 
 ForwardingEntry.prototype.getElementLabel = function() { return CCNProtocolDTags.ForwardingEntry; }
-
 /*
  * This class is used to encode ccnb binary elements (blob, type/value pairs).
  * 
@@ -2563,7 +2552,6 @@
 	return this.ostream.subarray(0, this.offset);
 };
 
-
 /*
  * This class is used to decode ccnb binary elements (blob, type/value pairs).
  * 
@@ -3293,7 +3281,6 @@
 ContentDecodingException.prototype = new Error();
 ContentDecodingException.prototype.name = "ContentDecodingException";
 
-
 /*
  * This class uses BinaryXMLDecoder to follow the structure of a ccnb binary element to 
  * determine its end.
@@ -3415,7 +3402,6 @@
         }
     }
 };
-
 /*
  * This class contains utilities to help parse the data
  * author: Meki Cheraoui, Jeff Thompson
@@ -3841,7 +3827,6 @@
     }
     return result.subarray(size - i, size);
 };
-
 /*
  * This class defines MOME types based on the filename extension.
  * author: Jeff Thompson
@@ -4390,7 +4375,6 @@
   "zip": "application/zip",
   "zmt": "chemical/x-mopac-input"
 };
-
 /*
  * This file contains utilities to help encode and decode NDN objects.
  * author: Meki Cheraoui
@@ -4736,7 +4720,6 @@
 
     return output;
 }
-
 /*
  * @author: Meki Cheraoui
  * See COPYING for copyright and distribution information.
@@ -4842,7 +4825,6 @@
 //var KeyPair = { "public" : "PUBLIC KEY" , "private" : "PRIVATE KEY" };
 
 
-
 /*
  * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined
  * in FIPS 180-1
@@ -5173,7 +5155,6 @@
 {
   return (num << cnt) | (num >>> (32 - cnt));
 }
-
 /*
  * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined
  * in FIPS 180-2
@@ -5553,7 +5534,6 @@
   var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
   return (msw << 16) | (lsw & 0xFFFF);
 }
-
 /*
  * A JavaScript implementation of the Secure Hash Algorithm, SHA-512, as defined
  * in FIPS 180-2
@@ -6050,7 +6030,6 @@
    dst.l = (w0 & 0xffff) | (w1 << 16);
    dst.h = (w2 & 0xffff) | (w3 << 16);
 }
-
 /*
  * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
  * Digest Algorithm, as defined in RFC 1321.
@@ -6430,7 +6409,6 @@
 {
   return (num << cnt) | (num >>> (32 - cnt));
 }
-
 /*
  * A JavaScript implementation of the RIPEMD-160 Algorithm
  * Version 2.2 Copyright Jeremy Lin, Paul Johnston 2000 - 2009.
@@ -6790,7 +6768,6 @@
 {
   return (num << cnt) | (num >>> (32 - cnt));
 }
-
 var b64map="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
 var b64pad="=";
 
@@ -6862,7 +6839,6 @@
   }
   return a;
 }
-
 // Depends on jsbn.js and rng.js
 
 // Version 1.1: support utf-8 encoding in pkcs1pad2
@@ -6993,7 +6969,6 @@
 RSAKey.prototype.setPublic = RSASetPublic;
 RSAKey.prototype.encrypt = RSAEncrypt;
 //RSAKey.prototype.encrypt_b64 = RSAEncryptB64;
-
 // Depends on rsa.js and jsbn2.js
 
 // Version 1.1: support utf-8 decoding in pkcs1unpad2
@@ -7135,7 +7110,6 @@
 RSAKey.prototype.generate = RSAGenerate;
 RSAKey.prototype.decrypt = RSADecrypt;
 //RSAKey.prototype.b64_decrypt = RSAB64Decrypt;
-
 /*! rsapem-1.1.js (c) 2012 Kenji Urushima | kjur.github.com/jsrsasign/license
  */
 //
@@ -7217,7 +7191,6 @@
 }
 
 RSAKey.prototype.readPrivateKeyFromPEMString = _rsapem_readPrivateKeyFromPEMString;
-
 /*! rsasign-1.2.js (c) 2012 Kenji Urushima | kjur.github.com/jsrsasign/license
  */
 //
@@ -7570,7 +7543,6 @@
  * @class
  * @description Tom Wu's RSA Key class and extension
  */
-
 /*! asn1hex-1.1.js (c) 2012 Kenji Urushima | kjur.github.com/jsrsasign/license
  */
 //
@@ -7850,7 +7822,6 @@
 ASN1HEX.getDecendantIndexByNthList = _asnhex_getDecendantIndexByNthList;
 ASN1HEX.getDecendantHexVByNthList = _asnhex_getDecendantHexVByNthList;
 ASN1HEX.getDecendantHexTLVByNthList = _asnhex_getDecendantHexTLVByNthList;
-
 /*! x509-1.1.js (c) 2012 Kenji Urushima | kjur.github.com/jsrsasign/license
  */
 // 
@@ -8122,7 +8093,6 @@
 X509.prototype.getNotBefore = _x509_getNotBefore;
 X509.prototype.getNotAfter = _x509_getNotAfter;
 
-
 // Copyright (c) 2005  Tom Wu
 // All Rights Reserved.
 // See "LICENSE" for details.
@@ -8682,7 +8652,6 @@
 // "constants"
 BigInteger.ZERO = nbv(0);
 BigInteger.ONE = nbv(1);
-
 // Copyright (c) 2005-2009  Tom Wu
 // All Rights Reserved.
 // See "LICENSE" for details.
@@ -9331,4 +9300,3 @@
 // int hashCode()
 // long longValue()
 // static BigInteger valueOf(long val)
-
