diff --git a/js/ContentObject.js b/js/ContentObject.js
index ca6a819..52e258a 100644
--- a/js/ContentObject.js
+++ b/js/ContentObject.js
@@ -147,7 +147,7 @@
 		
 		decoder.readEndElement();
 		
-		this.saveRawData(decoder.istream);
+		this.saveRawData(decoder.input);
 };
 
 ContentObject.prototype.to_ccnb = function(/*XMLEncoder*/ encoder)  {
diff --git a/js/encoding/BinaryXMLDecoder.js b/js/encoding/BinaryXMLDecoder.js
index 882a7fc..bf8597b 100644
--- a/js/encoding/BinaryXMLDecoder.js
+++ b/js/encoding/BinaryXMLDecoder.js
@@ -66,16 +66,16 @@
 };
 
 //console.log(stringToTag(64));
-var BinaryXMLDecoder = function BinaryXMLDecoder(istream){
+var BinaryXMLDecoder = function BinaryXMLDecoder(input){
 	var MARK_LEN=512;
 	var DEBUG_MAX_LEN =  32768;
 	
-	this.istream = istream;
+	this.input = input;
 	this.offset = 0;
 };
 
 BinaryXMLDecoder.prototype.initializeDecoding = function() {
-		//if (!this.istream.markSupported()) {
+		//if (!this.input.markSupported()) {
 			//throw new IllegalArgumentException(this.getClass().getName() + ": input stream must support marking!");
 		//}
 }
@@ -209,7 +209,7 @@
 
 //returns a string
 BinaryXMLDecoder.prototype.peekStartElementAsString = function() {
-	//this.istream.mark(MARK_LEN);
+	//this.input.mark(MARK_LEN);
 
 	//String 
 	var decodedTag = null;
@@ -283,7 +283,7 @@
 }
 //returns Long
 BinaryXMLDecoder.prototype.peekStartElementAsLong = function() {
-		//this.istream.mark(MARK_LEN);
+		//this.input.mark(MARK_LEN);
 
 		//Long
 		var decodedTag = null;
@@ -328,7 +328,7 @@
 			
 		} finally {
 			try {
-				//this.istream.reset();
+				//this.input.reset();
 				this.offset = previousOffset;
 			} catch ( e) {
 				Log.logStackTrace(Log.FAC_ENCODING, Level.WARNING, e);
@@ -355,7 +355,7 @@
 BinaryXMLDecoder.prototype.readEndElement = function(){
 			if(LOG>4)console.log('this.offset is '+this.offset);
 			
-			var next = this.istream[this.offset]; 
+			var next = this.input[this.offset]; 
 			
 			this.offset++;
 			//read();
@@ -386,7 +386,7 @@
  *   just read the end element and return null.
  */
 BinaryXMLDecoder.prototype.readBlob = function(allowNull) {
-    if (this.istream[this.offset] == XML_CLOSE && allowNull) {
+    if (this.input[this.offset] == XML_CLOSE && allowNull) {
         this.readEndElement();
         return null;
     }
@@ -438,7 +438,7 @@
 
 	do {
 		
-		var next = this.istream[this.offset ];
+		var next = this.input[this.offset ];
 		
 		
 		if (next < 0) {
@@ -508,7 +508,7 @@
 	
 	//
 	//Uint8Array
-	var bytes = this.istream.subarray(this.offset, this.offset+ blobLength);
+	var bytes = this.input.subarray(this.offset, this.offset+ blobLength);
 	this.offset += blobLength;
 	
 	return bytes;
